Skip to content

Productize guarded tracking, attached overlay, and QA coverage#23

Open
zzw4257 wants to merge 2 commits intof:masterfrom
zzw4257:pr/productize-overlay-tracking
Open

Productize guarded tracking, attached overlay, and QA coverage#23
zzw4257 wants to merge 2 commits intof:masterfrom
zzw4257:pr/productize-overlay-tracking

Conversation

@zzw4257
Copy link

@zzw4257 zzw4257 commented Mar 22, 2026

Summary

  • productize guarded word tracking with a dedicated TrackingGuard, structured speech frames, manual aside controls, and backward-compatible remote state expansion
  • ship attached overlay diagnostics, accessibility onboarding, explicit fallback messaging, and persistent HUD/status integration
  • add QA/debug surfaces, regression docs, CI coverage, and unit/integration/UI/performance tests for tracking, anchoring, HUD, and protocol compatibility

What Changed

  • introduced TrackingGuard, TrackingHotkeyController, WindowAnchorService, OverlayStateProjector, PersistentHUDPresenter, and attached overlay state/types
  • expanded overlay/settings state to support strict tracking defaults, attached fallback behavior, HUD modules, diagnostics, and migration-safe defaults
  • added attached-mode permission guidance, status copy, fallback visibility, and a dedicated QA/debug surface
  • added unit, integration, UI, and performance coverage plus CI scripts to separate unit / integration / ui test layers
  • documented recommended defaults, migration behavior, product copy, and the macOS regression checklist used for manual validation

Why

The previous word tracking path still coupled speech recognition directly to highlighted character advancement. That made it too easy for asides or off-script narration to push the prompt forward and reduced trust in the teleprompter experience.

This PR separates recognition from advancement decisions, makes attached overlay failures visible and diagnosable, and adds the QA/testing surface needed to treat these flows as stable product behavior rather than prototype behavior.

Validation

  • ./scripts/test-all.sh
  • unit.xcresult: /var/folders/hg/v36fg5jx7_l9jzgv4ywz4pn80000gn/T/textream-tests/results/unit.xcresult
  • integration.xcresult: /var/folders/hg/v36fg5jx7_l9jzgv4ywz4pn80000gn/T/textream-tests/results/integration.xcresult
  • ui.xcresult: /var/folders/hg/v36fg5jx7_l9jzgv4ywz4pn80000gn/T/textream-tests/results/ui.xcresult

Covered automatically:

  • TrackingGuard correctness and legacy fallback behavior
  • Browser / Director old-client compatibility
  • overlay mode switching and manual aside hotkey lifecycle
  • HUD visibility, attached anchor updates, and settings-to-overlay propagation
  • performance baselines for tracking decision latency, overlay propagation, and anchor update CPU cost

Covered manually via regression checklist:

  • attached fallback / AX / Quartz diagnosis paths
  • multi-display and screen-corner fallback behavior
  • fullscreen / Stage Manager / Spaces / Mission Control scenarios
  • window move, resize, minimize, hide, close, and cross-screen drag behavior

Backward Compatibility

  • existing Browser / Director clients continue to work because the JSON payload changes are backward-compatible field additions
  • legacy tracking fallback remains available as a guardrail for rollout
  • saved user settings are preserved; only previously unset keys adopt the new defaults

Notes

  • this branch is based directly on upstream/master so the PR excludes fork-only history
  • UI harness activation was stabilized in a follow-up test commit to reduce macOS foreground/background flakiness during CLI-driven UI runs

zzw4257 added 2 commits March 22, 2026 12:01
- add TrackingGuard, persistent HUD state projection, and QA debug surfaces\n- add attached overlay fallback diagnostics, onboarding, and mockable anchoring\n- add unit/integration/ui test layers, CI workflow, and rollout docs
- keep the UI harness app foreground when the SwiftUI root appears\n- make UI tests explicitly relaunch, reactivate, and tear down the app between cases
@zzw4257 zzw4257 force-pushed the pr/productize-overlay-tracking branch from fb6cbe1 to ad128a7 Compare March 22, 2026 04:02
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