Grant Gilliam 11eb82178f Add agent instructions; extract signing/backend secrets from source
- Add AGENTS.md (canonical) + CLAUDE.md symlink + ROADMAP.md
- Move Apple Team ID from project.yml into a gitignored
  Config/Signing.xcconfig via configFiles; commit the .example template
- Replace hardcoded backend host in AppSettings with a neutral
  placeholder + SPARK_BACKEND_URL env-var fallback
- Scrub the Team ID, .local host, and raw LAN IP from README/docs
- Ignore Config/Signing.xcconfig and .env
2026-06-13 12:23:54 -05:00

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):
    brew install xcodegen
    
  3. Set your signing team. The Apple Team ID is kept out of source in a gitignored Config/Signing.xcconfig. Copy the template and set your team:
    cp Config/Signing.xcconfig.example Config/Signing.xcconfig   # then set DEVELOPMENT_TEAM
    
    xcodegen wires it in via configFiles, so Signing & Capabilities shows the team automatically — no manual selection. Keep the value stable so macOS preserves the app's permission (TCC) grants across rebuilds. Edit the xcconfig, not Xcode — xcodegen generate overwrites Xcode-side changes.
  4. Generate the project:
    xcodegen generate
    
    This creates Ten31Transcripts.xcodeproj (git-ignored — regenerate any time).
  5. Open it:
    open Ten31Transcripts.xcodeproj
    
  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 Config/Signing.xcconfig (gitignored), 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 16 (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 backend host is a private LAN address — set it in Settings, or seed it from the SPARK_BACKEND_URL env var; the committed default is only a neutral placeholder (https://your-spark-backend.local).
S
Description
No description provided
Readme 890 KiB
Languages
Swift 100%