Repository navigation
A package per framework: TimbreSpeech, TimbreModel, TimbreReminders (ADR-0015) - #68
Open
ChaliceForAuri wants to merge 1 commit into
Open
ChaliceForAuri wants to merge 1 commit into
ChaliceForAuri wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
…ADR-0015) The companion needs capture, transcription and reading aloud (Mac and iPhone), the on-device model (Mac and iPhone) and the Timbre list in Reminders (all three). They lived in TimbreKit, which is macOS-only. SwiftPM declares platforms per package, so framework-bound code now lives in a package that declares exactly the platforms its framework has: - TimbreSpeech (AVFAudio + Speech; macOS, iOS): AudioCapture, BufferConverter, AudioLevel, InputFallback, Transcriber, TranscriptSnapshot, TranscriptAccumulator, AudioFileInput, ContextualVocabulary, SpeechReader, VoiceCatalog, ReadingSpeed, ReadingWarmup. InputDevices and switchInput(to:) — the Core Audio HAL calls behind the Bluetooth fallback — are the one #if os(macOS). - TimbreModel (FoundationModels; macOS, iOS; depends on Core): OnDeviceModel.availability, the ExampleWriter. The polisher delegates its availability check. - TimbreReminders (EventKit; macOS, iOS, watchOS; depends on Core): ReminderStore, with the read-back ordering extracted into TodoOrdering and tested. TimbreKit depends on all four packages and keeps only what touches a Mac. Nothing moved twice and nothing was lost: Kit's 209 tests became 169 there, 38 in Speech and 2 in Model; Reminders gained 2. CI runs the five suites. CLAUDE.md, the architecture model (three new containers) and University module 14 describe the set. Core 86, Speech 38, Model 2, Reminders 2, Kit 169. Lint clean. The Mac app builds. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
ChaliceForAuri
force-pushed
the
shared-packages
branch
from
October 21, 2026 20:59
ae49a66 to
b50d7e8
Compare
ChaliceForAuri
force-pushed
the
mac-library
branch
from
October 21, 2026 20:59
22f66ac to
056e9d9
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #67. The last structural move before the companion: framework-bound code leaves TimbreKit for packages that declare exactly the platforms their framework has.
The packages
TimbreSpeechTimbreModelOnDeviceModel.availability(one answer; the polisher delegates to it), theExampleWriterTimbreRemindersReminderStore; the read-back ordering extracted intoTodoOrdering, now testedTimbreKit depends on all four and keeps only what touches a Mac: the hotkey, overlay, insertion, the selection, the polisher, command mode, the pipeline. The one
#if os(macOS)isInputDevicesandAudioCapture.switchInput(to:), the Core Audio HAL calls behind the Bluetooth fallback (ADR-0012), documented as the exception in ADR-0015.What this makes possible
The iPhone links Core, Speech, Model and Reminders; the Watch links Core and Reminders. The Watch cannot link Speech or Model, by construction, which is GDR-0026's "nothing on the wrist needs the model" enforced by the compiler.
Verified
swift-format lint --strictclean across six packages and the app.xcodebuildof the Mac app: BUILD SUCCEEDED (the project did not change; TimbreKit resolves the rest).ADR-0015 records the rule and its alternatives. University module 14 gained the paragraph.
🤖 Generated with Claude Code