How f/textream works
Textream is a cross-platform teleprompter: users prepare scripts, choose a guidance mode, then read from an overlay or fullscreen prompt while speech tracking or timed scrolling advances the text. On iOS, a prompt session can also capture presenter video and audio, save completed recordings to Photos, and retain recordings for retry or gallery management. The Mac app adds presentation-note import, external displays, and browser-based remote and director control. The graph reflects the README and the sampled source; several feature connections rely on documented capabilities because their implementation was not sampled.
Main entry points: TextreamService.swift Prompt service · PromptSessionController.swift Session controller · CaptureController.swift Capture controller · RootView.swift App screens
Components 22
Mac prompting
- Script editor
Textream/Textream/ContentView.swift - Prompt service
Textream/Textream/TextreamService.swift - Notch overlay
Textream/Textream/NotchOverlayController.swift - Speech tracking
Textream/Textream/SpeechRecognizer.swift - Voice activity
Textream/Textream/VoiceActivityDetector.swift - Notes import
Textream/Textream/PresentationNotesExtractor.swift - External display
Textream/Textream/ExternalDisplayController.swift
Mac integrations
- Browser server
Textream/Textream/BrowserServer.swift - Director server
Textream/Textream/DirectorServer.swift
iOS prompting
- iOS app
Textream/TextreamiOS/TextreamiOSApp.swift - App screens
Textream/TextreamiOS/Views/RootView.swift - Prompt session
Textream/TextreamiOS/Views/PromptSessionView.swift - Session controller
Textream/TextreamiOS/Models/PromptSessionController.swift - Prompt processing
Textream/TextreamiOS/Models/PromptTextProcessor.swift - Speech follower
Textream/TextreamiOS/Speech/SpeechFollower.swift
iOS recording
- Capture controller
Textream/TextreamiOS/Capture/CaptureController.swift - Saved recordings
Textream/TextreamiOS/Capture/SavedRecordingsStore.swift - Recordings gallery
Textream/TextreamiOS/Views/SavedRecordingsGallery.swift
Other components
- Presenter
- Remote browser
- Camera and mic
- Photos library
Connections 26
- Presenter → Script editor: edits script
- Script editor → Prompt service: starts prompt
- Prompt service → Notch overlay: shows text
- Prompt service → Speech tracking: updates text
- Notch overlay → Speech tracking: reads progress
- Notch overlay → Voice activity: uses voice activity
- Presenter → Notes import: imports notes
- Prompt service → Notes import: extracts notes
- Prompt service → External display: shows prompt
- Prompt service → Browser server: publishes content
- Prompt service → Director server: publishes content
- Remote browser → Browser server: opens prompt
- Remote browser → Director server: edits script
- iOS app → App screens: shows app
- Presenter → App screens: chooses mode
- App screens → Prompt session: opens session
- Prompt session → Session controller: prepares session
- Session controller → Prompt processing: processes prompt
- Session controller → Speech follower: prepares speech
- Session controller → Capture controller: controls capture
- Speech follower → Session controller: provides progress
- Capture controller → Camera and mic: captures audio and video
- Capture controller → Photos library: saves recording
- Capture controller → Saved recordings: keeps pending copy
- App screens → Recordings gallery: shows recordings
- Recordings gallery → Saved recordings: reads recordings