Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Sources/Capture/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

- `ContextCaptureEngine.swift` — accessibility-backed physical trigger detection,
shortcut debounce, and routing into dictation, paste-last-dictation, or meeting handlers
- `PhysicalShortcutMatcher.swift` — Foundation-pure binding-selection helpers for
exact/fallback shortcut precedence, release matching, and shared-modifier chord checks

## Current Hotkey Flow

Expand Down
4 changes: 4 additions & 0 deletions Sources/Meeting/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@
- `MeetingSTTAdapter.swift` — adapts the app's shared `STTRouter` to `TranscriptedCore.SpeechToTextEngine`
- `MeetingSessionController.swift` — top-level meeting state machine, permission gating, model warmup, capture start/stop, imported-audio handoff, queued transcription handoff, local-speaker-split handoff, failed-meeting actions, and transcript restyling
- `MeetingSessionUIPolicy.swift` — centralizes when queued or active transcription work should keep the meeting overlay in its transcribing/saving state
- `MeetingStartFailureClassifier.swift` — stable analytics classifier for meeting-recording start failures
- `MeetingStoragePaths.swift` — current split meeting storage layout across the capture library, app state, logs, and temp folders
- `MeetingSystemAudioStatusCopy.swift` — Foundation-pure system-audio status copy mapping for fast tests
- `MeetingSystemAudioStatusCopy+SystemAudioStatus.swift` — app-build bridge from `TranscriptedCore.SystemAudioStatus` into the copy mapping
- `MeetingTranscriptStyler.swift` — restyles saved transcripts and renames files after save
- `MeetingArtifactRenamer.swift` — shared rename mechanics for a saved meeting's Markdown, retained `audio/<stem>_audio/` directory, and `<stem>.summary.md` sidecar; builds the canonical `YYYY-MM-dd <title>` stem. Used by both the post-save restyle and the Home title-edit flow so naming and sidecar bookkeeping cannot drift
- `MeetingWarmupStatusPolicy.swift` — centralizes the user-facing warmup progress, copy, visibility, and ready/failure state for dictation + meeting model startup across overlay, menubar, and settings surfaces
Expand Down Expand Up @@ -122,6 +125,7 @@ Relevant direct coverage:
- `Tests/MeetingFailureKindTests.swift`
- `Tests/MeetingPromptHeuristicsTests.swift`
- `Tests/MeetingRecordingStartGateTests.swift`
- `Tests/MeetingStartFailureClassifierTests.swift`
- `Tests/MeetingMicBoostPromptPolicyTests.swift`
- `Tests/MeetingRecordingCleanupTests.swift`
- `Tests/MeetingWarmupStatusPolicyTests.swift`
Expand Down
12 changes: 9 additions & 3 deletions Sources/TranscriptedCore/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@

`Sources/TranscriptedCore/` is the reusable meeting transcription library embedded in this repo. It is consumed by the app through `Sources/Meeting/`, and it can also be tested as a standalone Swift package through the root `Package.swift`.

## Subsystems (67 Swift files)
## Subsystems (71 Swift files)

- `Audio/` (18 files) — mic + system audio capture, imported-audio prep helpers, capture start-state gating, device recovery, Bluetooth-input avoidance for meetings, signal analysis and normalization helpers, real-time AGC, resampling, level metering, process tap, ScreenCaptureKit-backed system-audio capture, backend selection, buffer writing, merge helpers, and privacy-safe pipeline diagnostics snapshots
- `Audio/` (21 files) — mic + system audio capture, imported-audio prep helpers, capture start-state gating, device recovery, Bluetooth-input avoidance for meetings, signal analysis and normalization helpers, real-time AGC, resampling, level metering, process tap, ScreenCaptureKit-backed system-audio capture, backend selection, buffer writing, merge helpers, and privacy-safe pipeline diagnostics snapshots
- `Logging/` (3 files) — shared app logger, JSONL file logger, and log privacy sanitizer
- `Models/` (5 files) — public data types: `TranscriptionResult`, `DisplayStatus`, `FailedTranscription`, `SpeakerMapping`, and recording-health metadata builders
- `Pipeline/` (4 files) — transcription orchestration, pipeline runner, and task queue
- `Protocols/` (7 files) — host-injected seams: `SpeechToTextEngine`, `DiarizationEngine`, `SpeakerStore`, `TranscriptNotifier`, `AudioCaptureEngine`, `StatsStore`, `TranscriptStorage`
- `Services/` (7 files) — DI container (`AppServices`), model bundle / download management, path indirection, recording validation, diarization, and failed-transcription persistence
- `Speaker/` (11 files) — speaker DB, embedding matching / clustering, clip extraction, naming policy / coordinator, people-review policy, profile merging, retroactive transcript updates
- `Speaker/` (12 files) — speaker DB, embedding matching / clustering, clip extraction, naming policy / coordinator, people-review policy, profile merging, simulation, and retroactive transcript updates
- `Stats/` (4 files) — recording stats database, models, queries, and service
- `Storage/` (6 files) — transcript save, scanner, formatter, format options, shared frontmatter parsing, and retained-recording audio archiving
- `Utilities/` (2 files) — date formatting and file permission helpers
Expand Down Expand Up @@ -88,6 +88,9 @@ Current direct core coverage includes:

- `Tests/TranscriptedCoreTests/AudioInitializationTests.swift`
- `Tests/TranscriptedCoreTests/AudioDiagnosticsSnapshotTests.swift`
- `Tests/TranscriptedCoreTests/AudioLevelMonitorSilenceTests.swift`
- `Tests/TranscriptedCoreTests/AudioPipelineDiagnosticsSnapshotShapeTests.swift`
- `Tests/TranscriptedCoreTests/AudioResamplerTests.swift`
- `Tests/TranscriptedCoreTests/BluetoothMeetingRouteContractTests.swift`
- `Tests/TranscriptedCoreTests/CoreStoragePathsTests.swift`
- `Tests/TranscriptedCoreTests/DatabaseFilePermissionsTests.swift`
Expand All @@ -97,6 +100,7 @@ Current direct core coverage includes:
- `Tests/TranscriptedCoreTests/MeetingInputDeviceSelectionPolicyTests.swift`
- `Tests/TranscriptedCoreTests/MeetingRecordingJournalTests.swift`
- `Tests/TranscriptedCoreTests/MeetingRouteArtifactFixtureTests.swift`
- `Tests/TranscriptedCoreTests/DiarizationSpeakerIdParsingTests.swift`
- `Tests/TranscriptedCoreTests/MicRecordingFileMergerTests.swift`
- `Tests/MicRecordingMergePlanTests.swift`
- `Tests/TranscriptedCoreTests/QuietMicAttenuationDetectorTests.swift`
Expand All @@ -105,7 +109,9 @@ Current direct core coverage includes:
- `Tests/TranscriptedCoreTests/RecordingHealthInfoOverrideTests.swift`
- `Tests/TranscriptedCoreTests/RetroactiveSpeakerUpdaterTests.swift`
- `Tests/TranscriptedCoreTests/SpeakerMatchingServiceTests.swift`
- `Tests/TranscriptedCoreTests/SpeakerEmbeddingMatcherTests.swift`
- `Tests/TranscriptedCoreTests/SpeakerNamingCoordinatorTests.swift`
- `Tests/TranscriptedCoreTests/SpeakerNamingSimulationRunnerTests.swift`
- `Tests/SpeakerPeopleReviewPolicyTests.swift`
- `Tests/TranscriptedCoreTests/SpeakerProfileMergerTests.swift`
- `Tests/TranscriptedCoreTests/StatsDatabaseTests.swift`
Expand Down
13 changes: 12 additions & 1 deletion Sources/UI/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The directory is grouped by surface so the live UI tree is easier to scan:

Draft-mode UI is not an active product path in this worktree.

## Files (67 Swift files)
## Files (73 Swift files)

### Overlay/

Expand All @@ -33,6 +33,8 @@ Draft-mode UI is not an active product path in this worktree.
- `Overlay/MeetingLiveTranscriptDrawerView.swift` — self-contained drawer container (hover-revealed copy + overflow menu, status line, scrolling transcript, drag-to-resize grip) shown below the recording strip, clipped and faded as one unit while the panel resizes
- `Overlay/MeetingLiveViewAffordancePolicy.swift` — presentation policy for the pill-body transcript toggle, context/overflow menu titles, and drawer status copy, including the one-click enable copy when live meetings is off
- `Overlay/MeetingPillRestPolicy.swift` — rest/bloom policy for the recording pill: when the unattended pill condenses to the dot+timer capsule and when hover renders it full again
- `Overlay/LiveTranscriptPlainTextRenderer.swift` — Foundation-pure copy renderer for the live transcript drawer
- `Overlay/MeetingDurationFormatter.swift` — Foundation-pure timer and inactivity-duration formatting for the meeting overlay
- `Overlay/MeetingOverlayController.swift` — non-activating panel for detected-meeting prompts, model warmup, recording, and transcription status; the recording pill is click-to-toggle for the embedded live transcript drawer (fed by `MeetingSessionController.liveTranscriptFeed`), rests to a compact capsule when unattended, and carries a context menu (transcript toggle, pin, browser view, discard)

The overlay area holds both live transient recording surfaces: the compact
Expand Down Expand Up @@ -73,9 +75,11 @@ onboarding connect stage. Both keep one mental model:
### Settings/

- `Settings/AgentConnectionSettingsPage.swift` — Settings' agent page: detected-agent connect rows (Claude Desktop, Claude Code, Codex, Cursor), the universal copy-prompt row, the live-meetings toggle, and the Advanced disclosure (folders, Codex inbox, config details)
- `Settings/AutoEnterDisplayNameResolver.swift` — Foundation-pure fallback chain for Auto Enter app display names
- `Settings/HomeCanvasGreeting.swift` — time-of-day greeting helper for the Home canvas header
- `Settings/HomeDeleteConfirmationPolicy.swift` — confirmation copy for deleting recent home captures
- `Settings/HomeFailedMeetingInlinePresentation.swift` — presentation policy for failed-meeting inline recovery rows on Home
- `Settings/HomePresentation.swift` — Foundation-pure Home copy, day labels, stable feedback ids, and speaker palette slot selection
- `Settings/HomeMeetingSummaryBetaPresentationPolicy.swift` — presentation gates for the opt-in local AI meeting-summary beta on the Home dashboard
- `Settings/HomeMeetingPreviewFormatter.swift` — formats recent meeting preview metadata for the Settings home dashboard
- `Settings/HomeTranscriptionActivityPresentation.swift` — presentation model derived from `MeetingSessionController` state for the home page's live transcription activity card (tone, progress, transcript URL)
Expand All @@ -96,6 +100,7 @@ onboarding connect stage. Both keep one mental model:
- `Settings/TranscriptedSettingsSidebar.swift` — sidebar section model: content-first primary rows (Home/Dictations/Speakers/Agent); settings pages render as a tab strip in the content pane, reached from the sidebar gear
- `Settings/TranscriptedSettingsView.swift` — main settings view
- `Settings/TranscriptedSettingsWindowController.swift` — NSWindowController for settings
- `Settings/TypingTimeSavedFormatter.swift` — Foundation-pure formatter for Home's typing-time-saved stat

### Shared/

Expand Down Expand Up @@ -187,16 +192,22 @@ Relevant direct coverage:
- `Tests/DictationSoundsTests.swift`
- `Tests/FeedbackIssueBuilderTests.swift`
- `Tests/HomeCanvasGreetingTests.swift`
- `Tests/HomePresentationTests.swift`
- `Tests/HomeMeetingDeletionTests.swift`
- `Tests/HomeMeetingRenameTests.swift`
- `Tests/HomeMeetingSummaryBetaPresentationPolicyTests.swift`
- `Tests/FirstRunExperienceTests.swift`
- `Tests/HomeMeetingPreviewFormatterTests.swift`
- `Tests/MeetingAudioArchiveResolverTests.swift`
- `Tests/MeetingLiveViewAffordancePolicyTests.swift`
- `Tests/MeetingDurationFormatterTests.swift`
- `Tests/LiveTranscriptPlainTextRendererTests.swift`
- `Tests/MeetingPillRestPolicyTests.swift`
- `Tests/RecentCaptureScannersTests.swift`
- `Tests/SettingsContentLayoutPolicyTests.swift`
- `Tests/SettingsRecentCaptureRefreshPolicyTests.swift`
- `Tests/AutoEnterDisplayNameResolverTests.swift`
- `Tests/TypingTimeSavedFormatterTests.swift`
- `Tests/SpeakerReviewQueueScannerTests.swift`
- `Tests/SupportDiagnosticsBundleTests.swift`
- `Tests/UIAutomationSurfaceContractTests.swift`
Expand Down
6 changes: 6 additions & 0 deletions Sources/UI/Settings/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ settings-side agent connection flow.
- `AgentConnectionSettingsPage.swift` - Settings' agent page: one connect row
per detected agent (via `AgentMCPConnector`), the universal copy-prompt row,
the live-meetings toggle, and the Advanced disclosure.
- `AutoEnterDisplayNameResolver.swift` - Foundation-pure fallback chain for
Auto Enter app display names.
- `HomePresentation.swift` - Foundation-pure Home copy, day labels, stable
feedback ids, and speaker palette slot selection.
- `HomeMeetingSummaryBetaPresentationPolicy.swift` - Home dashboard gates for
showing opt-in local AI meeting-summary titles, previews, badges, and menu
actions.
Expand All @@ -35,6 +39,8 @@ settings-side agent connection flow.
queue (one row per distinct voice), compact duplicate-merge suggestions, and
the searchable all-speakers list with per-row play/rename/merge/delete.
- `SpeakerNamingSheet.swift` - completed-meeting speaker review sheet.
- `TypingTimeSavedFormatter.swift` - Foundation-pure formatter for Home's
typing-time-saved stat.

## Guardrails

Expand Down
Loading