b2ae3a62b9
Native SwiftUI menu-bar app (LSUIElement, macOS 13+), generated from project.yml via XcodeGen. Includes: - PermissionsManager (Microphone / Screen Recording / Accessibility) + UI - SparkControlHealth: GET /api/status over self-signed TLS (InsecureTrustDelegate) - AppSettings persistence (host, TLS-skip, output folder, adapter toggles) - Menu-bar panel + Settings, app sandbox & hardened runtime off (LAN tool)
65 lines
2.5 KiB
Markdown
65 lines
2.5 KiB
Markdown
# 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. In Xcode, select the **Ten31Transcripts** target → **Signing & Capabilities**:
|
||
- Check **Automatically manage signing**.
|
||
- For **Team**, pick your personal team (sign in with your Apple ID — free; no
|
||
paid developer account needed). A stable team keeps macOS from re-asking for
|
||
permissions on every rebuild.
|
||
6. Press **Run** (⌘R).
|
||
|
||
## 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).
|