Skip to content

Improve speech tracking and macOS prompter readability - #119

Open
osmanartuner wants to merge 1 commit into
f:masterfrom
osmanartuner:contribute/macos-reading
Open

Improve speech tracking and macOS prompter readability#119
osmanartuner wants to merge 1 commit into
f:masterfrom
osmanartuner:contribute/macos-reading

Conversation

@osmanartuner

Copy link
Copy Markdown

Reading longer scripts on a large display exposed two problems: word tracking could stall after skipped or misrecognized words, and scrolling could stop when the active word moved beyond the rendered rows. This contribution adds bounded phrase recovery and supplies positions for offscreen words so the view can catch up, together with persistent window and typography controls for large-display reading.

Changes

  • Add a floating-window drag area and resize grip; save its position and size between sessions and fit a restored frame within an available display.
  • Allow 14–200 pt text and 1.0–2.5× line spacing through a shared Settings/live-popover component. Preserve saved legacy font presets and zero glass opacity. Fullscreen/external displays use the same typography preferences.
  • Keep scroll coordinates available for culled rows and re-anchor the active word after font, spacing, or width changes.
  • Recover from a stalled match using a unique phrase of at least three words within 24 words, or at least five words within 80 words. Reject ambiguous repeated phrases and weak matches; reset the transcript anchor after recovery. No timer-driven advancement is added to Word Tracking.
  • Add isolated preference, geometry, and transcript regression checks. The transcript tests exercise the real SpeechRecognizer matching path without starting microphone capture.

New installations and Reset All now select Floating Window and 48 pt text. A new floating window starts at 720 × 420 points; existing saved mode/font selections are honored. Line spacing defaults to 1.0×, preserving the previous spacing.

The application remains Textream. Bundle identifiers, signing/release configuration, update endpoints, and iOS sources are unchanged. The icon is proposed separately.

Validation

  • ./script/test_preferences.sh: 59 checks passed on this branch, including preference reload in a separate process, disconnected-display recovery, offscreen scroll coordinates, short/long speech recovery, repeated partial transcripts, silence, and the first new word after recovery.

  • macOS Release build passed on Apple Silicon with Xcode 26.1.1:

    xcodebuild -project Textream/Textream.xcodeproj -scheme Textream \
      -configuration Release -destination 'platform=macOS,arch=arm64' \
      -derivedDataPath .build/review build CODE_SIGNING_ALLOWED=NO
  • Earlier manual checks on the personal fork of this behavior covered live resizing, position/size restoration after relaunch, persistent font/spacing settings, and keeping a later reading position visible after changing font size.

  • Live English speech recognition still needs end-to-end confirmation. Physical external displays, Intel, and distribution signing/notarization were not tested.

Related work

There is overlap with the floating-window persistence and drag affordances in #91 and #93. #73 addresses different manual/smooth-scroll anchor behavior, and #68 concerns conservative speech-alignment gating. These are linked for review context; this proposal combines the changes exercised in a personal large-display reading workflow.

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