QUILL dialog regression checklist
This is the master manual regression checklist for every user-facing dialog in QUILL. Use it to verify that each dialog opens, is fully keyboard and screen-reader operable, has a working Escape and an explicit default, and returns focus to the editor on close.
How to use this file:
- Work through a section, open each dialog with the listed keyboard command (or menu path when there is no default key), and confirm it behaves.
- Tick the checkbox when a dialog passes a full pass on the current build.
- When a dialog fails, leave it unticked and file or reference an issue next to it.
- Keep this file up to date: whenever a dialog is added, removed, or
rebound, update the matching row in the same change. See the contributor
rule in
.github/copilot-instructions.md(“Keep dialogs.md current”).
This manual checklist is the human companion to the machine-enforced
dialog registry. The authoritative, source-of-truth inventory of every
dialog surface is generated from code by
quill/tools/dialog_inventory.py and committed as
tests/unit/ui/fixtures/dialog_inventory.json; the A11Y-4
banned-pattern gate and
tests/unit/ui/test_dialog_inventory.py fail the build if
any dialog is unregistered, unclassified, or on a bespoke surface.
Regenerate the snapshot with
python -m quill.tools.dialog_inventory --write whenever you
add, move, or remove a dialog. See “Dialog Excellence Mandates” in the
copilot instructions.
What “passes” means for every dialog (the A11Y-4 contract):
- It opens from the listed command or menu path.
- Tab and Shift+Tab reach every control in a sensible order.
- A screen reader announces the dialog title and each control.
- Enter activates the default action; Escape (and the close button) cancels.
- On close, focus returns to the editor.
- The dialog does not trap, freeze, or go silent.
Automated companion tests and the manual QA plan:
- Announcement and SR detection tests —
tests/accessibility/test_accessibility_suite.pyandtests/accessibility/test_announcement_grammar.pycover screen-reader announcement capture, SR detection, and announcement grammar. Run withpytest tests/accessibility/ -q. - Manual QA procedure —
docs/QUILL-PRD.md§6 (“Dialog estate pass”) describes the full human-executed pass against this checklist, including the SR coverage matrix (NVDA full, JAWS spot, Narrator sanity) and the A11Y-4 sign-off criteria.
Legend: “QUILL key” is the prefix chord, default
Ctrl+Shift+Grave (backtick). “via menu” means there is no
default keybinding; reach it through the named menu or the command
palette (Ctrl+Shift+P).
A. File: open, save, and session
A.1. Edit over SSH (issue #139)
B. Application settings
C. Navigate
D. Tools: text analysis
E. Tools: accessibility
F. Tools: document intake
G. Tools: read aloud and OCR
H. Tools: sticky notes
I. Tools: formats and external tools
J. Tools: compare documents
J2. Tools: Quillins (extensions)
The Quillins Manager always opens, even when third-party Quillins are
disabled (SEC-8 core.third_party_plugins is locked off for
1.0); it then reports that state and lists any installed Quillins
read-only.
K. Tools: keyboard
L. Tools: appearance and behavior
M. Tools: watch folder
N. Tools: notifications
O. Tools: formatting
P. Tools: macros
Q. Tools: AI and assistant
R. Tools: BITS Whisperer (speech)
R2. Publishing
S. Help: features and profile
T. Help: startup and support
U. Selection and QUILL key
V. Nested and secondary dialogs
These open only from inside another dialog or flow. Test each by reaching its parent first.
W. Power Tools and recirculated editor conveniences
Editor power-tool conveniences (EDS-1..20). These commands carry no
default keybinding; reach each from its conventional menu home (or the
command palette, Ctrl+Shift+P). As of the menu reorg
(menus.md §3.7) these commands were recirculated out of the former
power-tools monolith into their natural menus; the cohesive
editor-behavior remainder lives under Tools > Power
Tools. Only the commands that present a dialog are listed here;
the remaining power-tool commands act directly on the document and
announce their result.
X. Notebook (Workspace) dialogs
Multi-document workspace commands (§10.4 Milestone 2). All custom
surfaces are hardened_custom per the dialog contract.
Y. Startup-only dialogs
These appear only during a specific startup condition. Test by reproducing the trigger.
Maintenance note
This checklist was generated from a full source scrub of
quill/ui/ (chiefly quill/ui/main_frame.py,
plus palette.py, assistant_panel.py,
assistant_tools.py, ai_model_panel.py,
train_style_dialog.py, sticky_notes.py,
preview_dialog.py, and web_form.py) and the
bindings in quill/core/keymap.py. When you add or change a
dialog, update the matching row here in the same change so this file
stays a faithful, complete map.
Cross-references
- Safe Mode — see
quill/stability/safe_mode.py(env-var contract isQUILL_SAFE_MODE=1) andquill/stability/__init__.py(SafeModeConfig,build_safe_mode_config). When safe mode is active, the AI assistant surfaces in section Q, the BITS / Whisperer surfaces in section R, the watch-folder network calls in section M, and the Agent Center all short-circuit. Manual verification: launch withset QUILL_SAFE_MODE=1(cmd) /$env:QUILL_SAFE_MODE=1(PowerShell) /--safe-mode(CLI flag); confirm the status-bar banner and the AI/assistant menu items are disabled.