8bd1a6caf8
SwiftUI app, the one-click way to use the local transcription pipeline — installs and runs with no separate manual steps. The Xcode build phase (scripts/embed-binaries.sh) builds audiotee (git submodule, pinned to a commit on our own Gitea fork) and transcriptor-ai + qwen_asr (sibling checkout, which itself vendors qwen-asr as a submodule), then embeds all three binaries in the app bundle. The AI model is the one thing still fetched at runtime, via ModelManager.swift, since it's multi-GB and doesn't belong baked into a build. Also implements: model download with real progress UI, capture source selection (system/mic/both), a Settings window for the transcript save location and a glossary file (biases ASR toward proper nouns/product names via qwen_asr's --prompt), and a live chat-bubble transcript view. See CLAUDE.md for the full architecture, the reasoning behind each decision, and a fairly long list of real bugs found via actual testing (not just code review) — TCC permission escalation through a subprocess tree, SwiftUI Form/Grid layout quirks, @State vs @AppStorage persistence, a prompt-leakage bug in the glossary feature, and more. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
44 lines
1.4 KiB
Swift
44 lines
1.4 KiB
Swift
//
|
||
// transcriptorUITests.swift
|
||
// transcriptorUITests
|
||
//
|
||
// Created by Stéphane Tailland on 08/08/2026.
|
||
//
|
||
|
||
import XCTest
|
||
|
||
final class transcriptorUITests: XCTestCase {
|
||
|
||
override func setUpWithError() throws {
|
||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||
|
||
// In UI tests it is usually best to stop immediately when a failure occurs.
|
||
continueAfterFailure = false
|
||
|
||
// In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
|
||
}
|
||
|
||
override func tearDownWithError() throws {
|
||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||
}
|
||
|
||
@MainActor
|
||
func testExample() throws {
|
||
// UI tests must launch the application that they test.
|
||
let app = XCUIApplication()
|
||
app.launch()
|
||
|
||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||
// XCUIAutomation Documentation
|
||
// https://developer.apple.com/documentation/xcuiautomation
|
||
}
|
||
|
||
@MainActor
|
||
func testLaunchPerformance() throws {
|
||
// This measures how long it takes to launch your application.
|
||
measure(metrics: [XCTApplicationLaunchMetric()]) {
|
||
XCUIApplication().launch()
|
||
}
|
||
}
|
||
}
|