Skip to content

v2.10.0 — HUD polish + 360 phase C - #41

Merged
StevenACZ merged 4 commits into
mainfrom
feat/hud-polish-and-360-phase-c
Jul 10, 2026
Merged

v2.10.0 — HUD polish + 360 phase C#41
StevenACZ merged 4 commits into
mainfrom
feat/hud-polish-and-360-phase-c

Conversation

@StevenACZ

Copy link
Copy Markdown
Owner

Summary

  • Passive update check against GitHub Releases (daily, ETag-cached, Settings toggle; no auto-install, no telemetry).
  • Cancel works during long re-transcriptions: the sheet's Cancel cuts the MLX decode immediately and leaves the History row intact.
  • Smoother overlay droplet absorb + dock-aware glow flashes.
  • WCAG 1.4.11 non-text contrast pass (spinners, dots, radios, progress, play button; darker accessible green/orange tints).
  • Remaining animation literals moved to shared motion tokens (+ chipReveal).
  • Dictation view model decomposed into five tested collaborators (−370 lines, zero behavior change); the four previously untested critical flows are covered — suite at 349 tests.
  • Apple SpeechAnalyzer evaluated and gated out as a 6th engine (44.8 vs 88.2 weighted, no contextual vocabulary); the fixture bench stays in the test target for future macOS releases.
  • Docs: README highlight for the update check; SECURITY.md clarifies the update check sends no identifiers.

Gates

  • make ci-check — 349 tests, 0 failures.
  • make release-check — lint + Release build + size check passed.
  • make secrets-scan + public-hygiene sweep — clean.

StevenACZ added 4 commits July 9, 2026 18:42
…ancel, a11y polish

Phase C of the 360 round-2 audit, wave 1:

- Extract DictationHistoryPersister, CaptureStartSupervisor (+
  BatchCaptureStarting seam), DoubleTapRecognizer,
  SessionAudioLevelTracker, ResumableDictationStore and PasteDelivering
  from the ViewModel/HotkeyManager (-370 lines in the VM, zero behavior
  change) with 7 new collaborator-level test files covering the four
  previously untested critical flows.
- Passive update check against GitHub Releases (daily, ETag, 20h
  throttle, Settings toggle, menu row + About capsule; no auto-install,
  nothing sent).
- AppleSpeechTranscriber core (macOS 26+, SpeechAnalyzer/SpeechTranscriber,
  forced locale, asset management) + report-only es/en code-switch fixture
  bench; engine NOT wired into the portfolio yet (gated on the bench).
- Cancel for long retranscribes: sheet cancel stays enabled, task handle
  cancels through the armed MLX decode hook, row stays untouched.
- WCAG non-text contrast pass (spinner, dots, radios, progress, play
  button; green/orange prominent tints) + motion literal->token sweep
  (+chipReveal token) + MLX model folder-isolation regression test.
- NetworkReachability Swift-6 pre-hardening; KeychainStore documents the
  deliberate file-based keychain decision (data-protection migration
  re-evaluated as net-negative: requires provisioning-profile-authorized
  access groups no build flavor carries).
…r failed gate

The es/en code-switched fixture gate disqualified SpeechTranscriber as a
6th engine for now: weighted score 44.8 vs MLX turbo's 88.2 on the same
scorer — git/file/brand terms come out mangled and the module accepts no
contextual vocabulary, so the app's dictionary cannot repair it. Speed was
excellent (RTF 0.005) but the guard says terms come first.

The transcriber + fixture bench stay in SapoWhisperTests as a rerunnable
gate harness (SAPO_BENCH=1 downloads assets in-test); promote the file
back to the app target if a future macOS release passes.
@StevenACZ
StevenACZ merged commit a47cabf into main Jul 10, 2026
1 of 2 checks passed
@StevenACZ
StevenACZ deleted the feat/hud-polish-and-360-phase-c branch July 10, 2026 03:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant