How mehmetvarol/katip works
Katip is a local-first macOS dictation app for turning Turkish speech mixed with English technical terms into text at the focused cursor. The main workflow starts from the menu-bar icon, global hotkey, or floating card; the controller captures and segments audio, sends it to a locally loaded Whisper model, applies terminology corrections and text expansions, then injects the result and records history. Other documented branches include replaying saved recordings, app-specific language and glossary rules, settings, and user-initiated updates. Relationships reflect the README and sampled excerpts; unsampled subsystem wiring is not inferred beyond those documented capabilities.
Main entry points: DictationController.swift Dictation controller · Transcriber.swift Whisper transcriber · KatipApp.swift App lifecycle · StatusMenu.swift Status menu
Components 24
Interaction
- App lifecycle
app/Sources/Katip/KatipApp.swift - Status menu
app/Sources/Katip/StatusMenu.swift - Global hotkey
app/Sources/Katip/Hotkey.swift - Floating card
app/Sources/Katip/HUDPanel.swift - History window
app/Sources/Katip/HistoryWindow.swift
Dictation
- Dictation controller
app/Sources/Katip/DictationController.swift - Audio capture
app/Sources/Katip/AudioRecorder.swift - Speech segmenter
app/Sources/Katip/SpeechSegmenter.swift - Whisper transcriber
app/Sources/Katip/Transcriber.swift - Segment stitcher
app/Sources/Katip/Stitcher.swift - Text injection
app/Sources/Katip/TextInjector.swift
Text processing
- Glossary
app/Sources/Katip/Glossary.swift - Term correction
app/Sources/Katip/FuzzyTerms.swift - Text snippets
app/Sources/Katip/Snippets.swift - App profiles
app/Sources/Katip/AppProfiles.swift
Local state
- Dictation history
app/Sources/Katip/History.swift - Saved recordings
app/Sources/Katip/Recordings.swift
App support
- Permissions
app/Sources/Katip/Permissions.swift - Manual updater
app/Sources/Katip/Updater.swift - Login item
app/Sources/Katip/LoginItem.swift
Other components
- User
- WhisperKit
- Model download
- GitHub releases
Connections 29
- User → Status menu: clicks
- User → Global hotkey: presses
- User → Floating card: uses
- App lifecycle → Status menu: creates
- App lifecycle → Global hotkey: starts
- App lifecycle → Dictation controller: configures
- Status menu → Dictation controller: controls
- Global hotkey → Dictation controller: signals
- Floating card → Dictation controller: actions
- Dictation controller → Audio capture: captures audio
- Dictation controller → Speech segmenter: segments audio
- Dictation controller → Whisper transcriber: transcribes
- Whisper transcriber → WhisperKit: runs inference
- Whisper transcriber → Model download: downloads model
- Whisper transcriber → Glossary: reads terms
- Whisper transcriber → Segment stitcher: stitches results
- Whisper transcriber → Term correction: corrects terms
- Whisper transcriber → Text snippets: expands phrases
- Dictation controller → App profiles: applies rules
- Dictation controller → Text injection: injects text
- Dictation controller → Dictation history: saves result
- Dictation controller → Saved recordings: saves audio
- History window → Dictation history: reads entries
- History window → Dictation controller: requests replay
- Dictation controller → Whisper transcriber: retranscribes audio
- App lifecycle → Permissions: checks access
- Status menu → Manual updater: checks on request
- Manual updater → GitHub releases: fetches release
- App lifecycle → Login item: configures launch