Commit Graph
31 Commits
Author SHA1 Message Date
Cursor AgentandRocky 5b1283c3ed Merge branch 'cursor/pip-keep-alive-2b89' into feature/polish-style-packs
Resolve conflicts in CHANGELOG (keep both entries) and FlowSessionManager
(utterance PCM snapshot + PiP capture release after drain).

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-26 10:39:38 +00:00
Cursor AgentandRocky 70ba3a4359 feat(flow): add Picture in Picture keep-alive mode
- Add FlowKeepAliveMode (Dynamic Island vs PiP) with iCloud sync
- Settings: keep-alive picker; inactivity timeout only for Live Activity
- PiP: waveform sample-buffer controller, mic released between utterances
- PiP sessions have no idle expiry; user closing PiP ends the session
- FlowSessionManager branches hostReady, session start, and utterance paths
- UIBackgroundModes picture-in-picture; bilingual strings and tests

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-26 10:34:52 +00:00
Cursor AgentandRocky f108460302 merge: tail audio ASR fix (P0+P1) into feature/polish-style-packs
Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-26 10:34:05 +00:00
Cursor AgentandRocky f0240c3088 feat(flow): add whole-utterance batch ASR fallback (P1)
- Accumulate utterance PCM in FlowContinuousCapture for batch retry
- Run full-utterance transcribeChunk when stitched final lags partial
- Refactor Mac MLX tail drain to shared FlowUtteranceEndCoordinator
- Add FlowUtterancePCMStore, UtteranceBatchFallbackPolicy, and tests

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-26 10:15:31 +00:00
Cursor AgentandRocky c7ee891a90 fix(flow): improve tail capture and final chunk ASR recovery
- Add FlowUtteranceEndCoordinator with 350ms silence drain and 150ms post-roll
- Extend FinalChunkRecovery for short/empty final chunks in chunked pipeline
- Snapshot partial at mic stop and guard final transcript in FlowSessionManager
- Unify tail drain presets (iosFlow/macMLX) and expand diagnostics

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-26 10:13:40 +00:00
Cursor AgentandRocky f1a811fbf0 docs(asr): add Mac Qwen3 MLX streaming migration plan
Complete phased plan for migrating macOS local dictation from Sherpa
offline CLI to mlx-audio-swift streaming with LocalASRBiasAdapter
vocabulary support.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-14 14:42:46 +00:00
Cursor AgentandRocky 6a01b6cf71 chore(release): bump version to 0.4.1 (build 12)
Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-06 07:53:10 +00:00
Cursor AgentandRocky 13cd7b30f9 feat(flow): implement ABCD session policy and host return whitelist
- Scheme A: on-demand session start, inactivity-based expiry, handoff auto-recording
- Scheme B: cold-start overlay with swipe guidance and return alert
- Scheme C+D: HostAppURLRegistry (20 apps) and sourceApplication capture
- Settings: skip app switch toggle and inactivity duration picker
- Add LSApplicationQueriesSchemes for canOpenURL checks

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-06 07:38:26 +00:00
Cursor AgentandRocky 6489340b2e feat(flow): Live Activity Dynamic Island branding and mis PrimaryLanguage
- Add OSGKeyboardLiveActivity widget extension (ActivityKit) with branded
  compactLeading mark in the Dynamic Island during Flow sessions
- Wire FlowLiveActivityController into FlowSessionManager lifecycle
- Set keyboard PrimaryLanguage to mis in project.yml, Info.plist, and at runtime
- Enable NSSupportsLiveActivities on main app and widget extension targets

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-06 05:53:24 +00:00
Cursor AgentandRocky 8b105430e3 fix(flow): drain trailing audio and harden chunked ASR pipeline
- P0/P1: tail-drain state machine in FlowContinuousCapture with converter
  flush; FlowSessionManager awaits drain before finalize
- P2: FlowCaptureTailDrain policy/tracker, pipeline diagnostics, unit tests
- P3: short final chunk merged re-transcription in ChunkedUtterancePipeline
- P4: UtteranceTranscriptStitcher composedSafely fallback; preview path parity
  in LiveDictationController

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-06 05:13:58 +00:00
Cursor AgentandRocky c750646e8d fix: use View-backed background for HomeStatsCard gradient
Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 10:02:24 +00:00
Cursor AgentandRocky 0bccb3c353 fix: import OSGKeyboardShared in UsageStatisticsStore
Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 10:00:36 +00:00
Cursor AgentandRocky b909e9082b feat(home): add usage statistics card above preview field
Track dictation duration, dictation/translation character counts, and
personal dictionary size. Record metrics when Flow finalizes utterances.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 09:54:13 +00:00
Cursor AgentandRocky 2169274dd0 chore: bump version to 0.3.2 (build 7)
Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 09:37:40 +00:00
Cursor AgentandRocky 35e5ec2a76 fix: remove stale syncAppContextFromAppGroup call after chip removal
Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 09:35:19 +00:00
Cursor AgentandRocky 4ab60ba3dc Remove manual polish scenario UI; rely on auto AppContext only
- Hide AppContext chip and remove manual override from keyboard
- Remove polish scenario picker and custom system prompt from settings
- Remove scenario section from onboarding
- Translation prompt uses auto-detected AppContext instead of polish scenario
- Delete ScenarioPrompt, ScenarioStyleDirective, PolishScenario, and related views

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 09:26:51 +00:00
Cursor AgentandRocky bdf2d627ad Simplify settings UI and fix personal dictionary page styling
- Remove polish intensity and personal dictionary description subtitles
- Use consistent surface background on personal dictionary page
- Change empty state icon to library (menuBook) style
- Remove polish scenario and translation rows from onboarding

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 09:14:37 +00:00
Cursor AgentandRocky 1fc91f5e0b fix: patch XcodeGen 2.45 wrapper.icon AppIcon single-line PBX
XcodeGen 2.45 writes AppIcon.icon as a one-line PBXFileReference with
lastKnownFileType = wrapper.icon. Add a fast in-place upgrade to
folder.iconcomposer.icon before the generic brace-matching fallback.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 09:00:36 +00:00
Cursor AgentandRocky b3f68151d1 fix: rely on XcodeGen native AppIcon.icon; harden patch fallback
Remove fileTypes icon override and explicit type:file so XcodeGen 2.37+
emits folder.iconcomposer.icon directly. Skip patch when native output is
valid; otherwise run patch v3 with broader PBX discovery and validation.

Fixes persistent 'AppIcon.icon entry has unexpected shape' on Xcode 26.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:53:28 +00:00
Cursor AgentandRocky 7c83b351aa fix: harden AppIcon.icon patch for newer XcodeGen layouts
Brace-match the AppIcon.icon PBX object instead of relying on fixed
regex shapes. Fixes 'AppIcon.icon entry has unexpected shape' when
XcodeGen/Xcode 26 emits a different PBXFileReference format.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:50:43 +00:00
Cursor AgentandRocky 265b4c9f13 feat(ui): simplify keyboard chips and reorganize settings preferences
- Remove polish scenario and ASR locale chips from keyboard top bar
- Fix polish intensity labels via SharedL10n (Shared.strings table)
- Merge polish intensity and personal dictionary into preferences card
- Personal dictionary: no list icon; detail view uses nav bar + back

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:30:20 +00:00
Cursor AgentandRocky b03bbb7efe fix: remove stale SettingsView section references
languageAndModelsSection and systemPromptLinkSection were renamed/
merged into languageAndPolishSection in v0.3 polish scenarios work,
but body still referenced the old symbols after intelligent-polish
changes were merged.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:20:36 +00:00
Cursor AgentandRocky a115d90da7 fix: PersonalDictionaryView preview and AppGroupStore dictionary writes
Use ThemedRoot in preview instead of inaccessible ThemePalette().
Add setPersonalDictionary(_:) for let AppGroupStore bindings; use
it from PersonalDictionaryView and DictionaryLearner.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:19:28 +00:00
Cursor AgentandRocky 87708e7976 fix: use AppGroupStore setter methods from keyboard extension
AppGroupStore is a struct; property setters are mutating and cannot
be called on a let binding. Add setOnboardingPage and
setHasCompletedOnboarding helpers (like setDetectedAppContext).

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:17:55 +00:00
Cursor AgentandRocky 56fb399e89 fix: ExtL10n String vs Text misuse and replace caption1 with caption
ExtL10n.text returns Text; use ExtL10n.string where String is
required (computed properties, Text/Button initializers). TypeStyle
has caption, not caption1 — align onboarding and dictionary views.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:16:22 +00:00
Cursor AgentandRocky 3f60436d84 fix: check indentation with substring contains, not per-character
contains(where:) on String iterates Characters; comparing each to
multi-character strings like "\n    " is a type error. Use
tail.contains("\n    ") || tail.contains("\t") instead.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:14:50 +00:00
Cursor AgentandRocky 693ea8962e fix: correct PersonalDictionary init parameter syntax
Use 'version: Int = 1' instead of invalid 'version: 1' so Swift
synthesizes the default initializer and PersonalDictionary() compiles.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:13:15 +00:00
Cursor AgentandRocky c9a1213cd9 fix: auto-create Signing.local.xcconfig for xcodegen generate
XcodeGen fails when project.yml references a missing config file.
Add Signing.local.xcconfig.example and have generate-xcodeproj.sh
copy it on first run so fresh clones can generate the project.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 08:11:26 +00:00
Cursor AgentandRocky 5ef29f4c0c Merge branch 'cursor/setup-dev-environment-bcd2' into main
Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 07:56:07 +00:00
Cursor AgentandRocky 8ce84d2339 Merge branch 'audit/appstore-prep' into main
Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-07-03 07:56:07 +00:00
Cursor AgentandRocky 2ba36e710e docs: add AGENTS.md with Cursor Cloud setup notes (iOS-only project, SwiftLint on Linux)
Co-authored-by: Rocky <hkgood@users.noreply.github.com>
2026-06-18 04:43:13 +00:00