Skip to content

feat(dictation): reliability pass and My Words and Phrases window (QUILL Lite 1.1, shared with QUILL) - #1606

Merged
accesswatch merged 2 commits into
mainfrom
feat/lite-dictation-reliability
Sep 29, 2026
Merged

accesswatch merged 2 commits into
mainfrom
feat/lite-dictation-reliability

Conversation

@accesswatch

Copy link
Copy Markdown
Contributor

What

Nine sections of QUILL Lite's dictation plan, implemented in the shared Live Dictation stack so QUILL has each on the same keys:

  • Escape cancels the phrase being heard; the engine's in-flight audio is discarded (both engines).
  • Microphone watchdog: a device that stops or goes digitally silent pauses dictation (a new paused state, still "on"), and it resumes when the device is back.
  • One Ctrl+Z per phrase (replace_as_one_undo).
  • Read-only documents refuse before the microphone opens.
  • Self-healing engine: one silent restart (and one retried decode); the second failure is named with the engine to try instead.
  • One session at a time: Ctrl+F11 in a second document moves dictation there and says so.
  • Ctrl+F11 in Find, Replace and the AI pad's question box dictates into that box.
  • Recent Phrases (Shift+F11): the session's last twenty phrases, Insert Again and Copy.
  • My Words and Phrases (Alt+Shift+F10, and the Dictation Settings button): Add Word, Add Phrase, Add Correction, Edit, Remove over dictation.md; corrections are a new heading the profile parser already folds into replacements.

Also: the starter dictation.md's explanatory sentences were parsed as vocabulary words; the macOS chord helpers moved out of keymap.py into keymap_darwin.py (GATE-11).

Checks

Core, Lite and QUILL dictation suites, command-table, keymap, menu, coverage (0 shape_only), dialog inventory, reachability, access keys, over-announce, banned patterns, listbox activation, docs chords, DOCKEY, site links, keyboard and F1 references, strict mypy on core and io. Full parallel suite: 14674 passed; the 16 failures were the Find, Replace and AI pad stand-ins meeting the new field binding, fixed, plus xdist worker crashes that pass serially.

🤖 Generated with Claude Code

…QUILL Lite 1.1, shared with QUILL)

Nine sections of dict.md, in the shared Live Dictation stack so both editors
have each on the same keys: Escape cancels the phrase being heard (2.2), the
microphone watchdog with a paused state that resumes when the device is back
(2.3), one Ctrl+Z per phrase through replace_as_one_undo (2.5), the read-only
refusal before the microphone opens (2.6), one silent engine restart before a
named failure (2.7), one session at a time that moves to the document you
pressed Ctrl+F11 in (2.8), Ctrl+F11 into Find, Replace and the AI pad's
question box (3.1), Recent Phrases with Insert Again and Copy (3.3, Shift+F11),
and My Words and Phrases -- a window with Add Word, Add Phrase, Add Correction,
Edit and Remove over dictation.md, corrections being a new heading the profile
parser already folds into replacements (5, Alt+Shift+F10).

New modules keep every touched one under GATE-11: core/windows_dictation/
resilience.py and words_file.py, ui/windows_dictation_tools.py,
ui/dictation_words_dialog.py, core/keymap_darwin.py (the macOS chord helpers,
out of keymap.py). Found on the way: the starter dictation.md's explanatory
sentences were parsed as vocabulary words (looks_like_prose).

Tests: core behaviours against a fake recogniser, the words model round trip,
every Lite handler through its window; coverage snapshot at zero shape_only;
strict mypy clean. Docs: Lite changelog, release notes, user guide and PRD,
the QUILL guide, the keyboard reference and the root changelog; dict.md trimmed
of the shipped sections.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ame inventory regenerated

The one-line field test subclassed the fixture's control through a
`from conftest import` that resolves to a different conftest under CI's
rootdir; it now subclasses the control the fixture hands it. The
accessible-name inventory registers the words window's list and fields and
the Recent Phrases list (modal-hook), and follows the volume slider into
quill/ui/radio/volume_row.py, where PR #1601 moved it without regenerating.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@accesswatch
accesswatch merged commit 816724e into main Sep 29, 2026
18 checks passed
@accesswatch
accesswatch deleted the feat/lite-dictation-reliability branch September 29, 2026 02:52
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