How tschnorpfeil/nodch works
nodch is a macOS notch interface for a running Nod server, not a separate chat client. The workflow is: invoke the prompt, compose by typing or dictation and attach files, send to Nod, display progress and answers, then respond to questions or explicitly approve/decline actions. Settings configure the server and credentials. The graph includes the client/state and presentation layers; relationships not demonstrated by the excerpts or README are omitted or marked unverified.
Main entry points: IslandController.swift Island controller · NodClient.swift Nod API client · IslandModel.swift Island model · SettingsModel.swift Settings model
Components 26
Mac App
- App startup
app/Sources/Nodch/main.swift - App lifecycle
app/Sources/Nodch/AppDelegate.swift - App commands
app/Sources/Nodch/Settings/AppCommands.swift
Island Experience
- Island controller
app/Sources/Nodch/Island/IslandController.swift - Island presenter
app/Sources/Nodch/Island/IslandPresenter.swift - Island views
app/Sources/Nodch/Island/IslandPanelView.swift - Compact view
app/Sources/Nodch/Island/IslandCompactView.swift - Island model
app/Sources/Nodch/Island/IslandModel.swift - Drop reader
app/Sources/Nodch/Island/DropReader.swift - Dictation capture
app/Sources/Nodch/Voice/MicrophoneVoice.swift - Speech transcription
app/Sources/Nodch/Voice/Transcription.swift - Markdown rendering
app/Sources/Nodch/Island/IslandMarkdown.swift
Nod Integration
- Island geometry
app/Sources/NodchCore/Island/IslandGeometry.swift - Island presentation
app/Sources/NodchCore/Island/IslandPresentation.swift - Prompt draft
app/Sources/NodchCore/Island/PromptDraft.swift - Nod session
app/Sources/NodchCore/Client/NodSession.swift - Nod API client
app/Sources/NodchCore/Client/NodClient.swift - State mapping
app/Sources/NodchCore/Client/NodState.swift - API configuration
app/Sources/NodchCore/Client/NodConfiguration.swift
Connection Settings
- Settings model
app/Sources/Nodch/Settings/SettingsModel.swift - Settings window
app/Sources/Nodch/Settings/SettingsView.swift - Saved connection
app/Sources/NodchCore/Settings/ConnectionSettings.swift - Connection test
app/Sources/NodchCore/Settings/ConnectionCheck.swift - Keychain tokens
app/Sources/Nodch/Settings/KeychainTokenStore.swift
Other components
- Mac user
- Running Nod
Connections 29
- Mac user → App commands: invokes shortcut
- Mac user → Island controller: drops files
- App startup → App lifecycle: starts app
app/Sources/Nodch/main.swift - App lifecycle → Island controller: creates
app/Sources/Nodch/AppDelegate.swift - Island controller → Island model: drives
app/Sources/Nodch/Island/IslandController.swift - Island controller → Island presenter: updates
app/Sources/Nodch/Island/IslandController.swift - Island controller → Drop reader: reads drops
app/Sources/Nodch/Island/IslandController.swift - Island controller → Dictation capture: controls mic
app/Sources/Nodch/Island/IslandController.swift - Island presenter → Island views: presents
app/Sources/Nodch/Island/IslandPresenter.swift - Island presenter → Compact view: presents
app/Sources/Nodch/Island/IslandPresenter.swift - Island views → Island model: reads state
app/Sources/Nodch/Island/IslandPanelView.swift - Island views → Markdown rendering: renders text
app/Sources/Nodch/Island/IslandPanelView.swift - Island model → Prompt draft: applies prompt effects
app/Sources/Nodch/Island/IslandModel.swift - Dictation capture → Speech transcription: transcribes speech
app/Sources/Nodch/Voice/MicrophoneVoice.swift - Island controller → Island geometry: uses layout
app/Sources/Nodch/Island/IslandController.swift - Island controller → Island presentation: derives reactions
app/Sources/Nodch/Island/IslandController.swift - App lifecycle → Settings model: creates
app/Sources/Nodch/AppDelegate.swift - Settings window → Settings model: drives settings
app/Sources/Nodch/Settings/SettingsView.swift - Settings model → Saved connection: resolves connection
app/Sources/Nodch/Settings/SettingsModel.swift - Settings model → Connection test: tests connection
app/Sources/Nodch/Settings/SettingsModel.swift - Saved connection → API configuration: builds config
app/Sources/NodchCore/Settings/ConnectionSettings.swift - Saved connection → Keychain tokens: stores token
- Connection test → Nod API client: checks API
app/Sources/NodchCore/Settings/ConnectionCheck.swift - Nod session → Nod API client: fetches and mutates
app/Sources/NodchCore/Client/NodSession.swift - Nod API client → API configuration: builds requests
app/Sources/NodchCore/Client/NodClient.swift - Nod API client → Running Nod: calls HTTP API
- Nod API client → State mapping: decodes state
app/Sources/NodchCore/Client/NodClient.swift - Nod session → State mapping: maps updates
app/Sources/NodchCore/Client/NodSession.swift - Island model → Nod session: submits actions