diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1 @@ +{} diff --git a/.gitignore b/.gitignore index b6e380b..9e24eb4 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,15 @@ Config/Signing.xcconfig # Local env files (e.g. SPARK_BACKEND_URL for dev/harness runs) — never commit .env -.env.local +.env.* +!.env.example + +# Claude Code — deny by default, allow-list shared wiring. +# .claude/ also accumulates worktrees, editor configs, and OS cruft; commit +# only the shared parts so new local scratch (or a stray secret) stays out. +.claude/* +!.claude/rules/ +!.claude/agents/ +!.claude/commands/ +!.claude/skills/ +!.claude/settings.json diff --git a/AGENTS.md b/AGENTS.md index b05dfc1..02dd5b1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,6 +2,8 @@ Native macOS **menu-bar app** that detects video calls, records dual-track audio + watches the call window for active-speaker cues, and sends audio + a visual timeline to a self-hosted **SparkControl** backend that does transcription/diarization/naming — producing named transcripts and recaps. +> **Inbox check:** At session start, if `~/Projects/standards/INBOX.md` exists, scan it for items tagged `(ten31-transcripts)` and surface them before proposing next steps; triage with `/triage`. + ## Stack (versions that matter) - **Swift 5.0**, **SwiftUI** + AppKit, macOS **13.0** deployment target. `LSUIElement` (menu-bar only, no Dock icon). - Project is generated by **XcodeGen** from `project.yml` (`brew install xcodegen`). `*.xcodeproj` is **gitignored** — regenerate, don't edit. diff --git a/ROADMAP.md b/ROADMAP.md index 5628aff..c54c6bd 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -10,6 +10,9 @@ Longer-term backlog and deferred decisions. Near-term status + the next few step - 1:1 Signal: audio-pill fallback (no active border ever appears in 1:1). - Accessibility-tree name source for Electron/Meet (cleaner than OCR); `AppAdapter.namesFromAccessibility` hook exists but returns nil. +## Platform support +- Jitsi: add call detection + a `JitsiAdapter` (Jitsi Meet is browser-based like Google Meet — needs `CallDetector` title recognition, an adapter for participant-name reading, and active-speaker visual cues). New platform alongside Meet/Zoom/Teams/Signal. + ## Audio / speakers - Self mic-channel cleanup: tighten self-VAD / smooth self so sub-second junk "self" fragments stop surviving (self is currently protected from fragment-smoothing). - Adaptive chunk sizing from the backend's first-chunk speaker count, instead of the visual participant estimate.