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:

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):

  1. It opens from the listed command or menu path.
  2. Tab and Shift+Tab reach every control in a sensible order.
  3. A screen reader announces the dialog title and each control.
  4. Enter activates the default action; Escape (and the close button) cancels.
  5. On close, focus returns to the editor.
  6. The dialog does not trap, freeze, or go silent.

Automated companion tests and the manual QA plan:

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