# Ten31 Transcripts Native macOS menu-bar app that auto-detects conference calls, records local audio, builds a visual-derived speaker timeline, and hands audio + timeline to the SparkControl backend for naming/transcription. See `docs/` for the full spec. This repo is at **Phase 0** (scaffold, permissions, backend health check). ## One-time setup 1. **Install Xcode** from the Mac App Store (free; ~40 GB). Open it once and accept the license prompt. 2. **Install XcodeGen** (generates the Xcode project from `project.yml`): ```sh brew install xcodegen ``` 3. **Generate the project:** ```sh xcodegen generate ``` This creates `Ten31Transcripts.xcodeproj` (git-ignored — regenerate any time). 4. **Open it:** ```sh open Ten31Transcripts.xcodeproj ``` 5. Signing is preconfigured: `project.yml` sets `DEVELOPMENT_TEAM` to the free personal team `BK4Y6CXN35` with automatic signing, so **Signing & Capabilities should already show the team** — no manual selection needed. (If you ever sign with a different Apple ID, update `DEVELOPMENT_TEAM` in `project.yml`, not in Xcode — `xcodegen generate` overwrites Xcode-side changes.) 6. Press **Run** (⌘R). > **Note:** after adding files in a new phase, re-run `xcodegen generate` and let > Xcode reload the project. The signing team persists because it lives in > `project.yml`, so macOS permissions stay granted across rebuilds. ## What Phase 0 does - Launches as a menu-bar-only app (no Dock icon). - Menu panel shows live status for the three permissions it needs — **Microphone**, **Screen Recording**, **Accessibility** — with Grant / Open Settings buttons. - Shows a **backend health check** (`GET /api/status`) against the configured host. - **Settings:** backend base URL, skip-TLS toggle (on by default for the self-signed cert), output folder, and adapter toggles (inert this phase). No audio capture, call detection, screen reading, or backend hand-off yet — those arrive in Phases 1–6 (`docs/04_BUILD_PLAN.md`). ## Project layout ``` project.yml # XcodeGen recipe → generates the .xcodeproj Ten31Transcripts/ App/ Ten31TranscriptsApp.swift, AppDelegate.swift UI/ MenuBarView, SettingsView, PermissionRow Permissions/PermissionsManager.swift Backend/ SparkControlHealth.swift, InsecureTrustDelegate.swift Settings/ AppSettings.swift Support/ Info.plist, Ten31Transcripts.entitlements Ten31TranscriptsTests/ # placeholder; real tests land in Phase 3 ``` ## Notes - **App Sandbox is off** and **Hardened Runtime is off** — this is a personal, LAN-only tool that must observe other apps. Revisit only if distributing. - The default backend host is `https://your-spark-backend.local:62419` (editable in Settings).