From 77c043c3db0bdb7fe777c6019eee69682597faf2 Mon Sep 17 00:00:00 2001 From: "n.siegfried" Date: Sun, 16 Aug 2026 10:24:41 -0500 Subject: [PATCH] T5.2 - B3: a first-run empty state, then the picker card comes out B3's warning is about ORDER, and it is the whole item: the proposal removes the project-picker card, and the first-run empty state was built inside it. Remove the card first and every brand-new account lands on a page whose only instruction is to choose from a list with nothing in it. So the empty state was built first, as its own thing rather than a branch inside a control that is going away, and only then did the card go. The launcher now shows exactly one of three states: no projects at all what a project is for, the create form already open (it is the only thing to do on this page, so hiding it behind a button is one click of ceremony in front of the only way forward), and the sample offered underneath it none chosen point at the app bar's switcher, which is on every page, plus New project one active the tool cards, as before Switching moved to the app bar's switcher entirely. Its popover footer used to read "All projects / new project" and link to index.html - half of that promise moved into the popover itself and the other half needs a form, so the link now says New project and carries #new-project, which the launcher opens on. The create form was rebuilt, so per C1 it ships accessible: a real
with requestSubmit, every input labelled, and its validation inline at the field with aria-describedby and role="alert" - the same shape T5.8 gives the wizard. That retires the "Project name is required." alert (index.html 6 -> 5). html/index.html three states, rebuilt create form, picker card removed html/wp-chrome.js popover footer link (one line - it named the card) tests/launcher_check.py new - 58 checks, two seeded databases tests/f_items.py F1 rewritten to drive the controls that replaced the select Done when [x] a brand-new account with zero projects sees a clear path to create one [x] the sample project remains discoverable from the empty state [x] the picker card is removed only after the empty state ships [x] switching projects still works from the header for users who have projects Two things the probes caught that I would have shipped F1 went INCONCLUSIVE, not FAIL. Its probe drove `document.querySelector ('select')` on the launcher - the picker card's dropdown. It refused to guess rather than reporting a silent pass, which is the behaviour f_items was written for. Rewritten to drive both replacements, because they fail differently: the switcher RELOADS with ?project=, so its two labels cannot drift apart whatever subscribes to what; creating a project changes the active project IN PAGE, and that is the interaction F1's mechanism actually applies to. It is now the only in-page change on the launcher, so it is the arm that matters. Both pass - the bar subscribes through ProjectData.onActiveChange. launcher_check reported "no focus ring" on the rebuilt form's inputs. That was trap 5 in reverse: without CDP focus emulation the headless document is not the focused one, :focus-visible never matches, and every control reports NO ring - a false red where a11y_check would get a false green. With emulation on they draw 2px --cds-focus from T4.7's app-wide floor. Verified one at a time launcher_check 58/58 new (38 empty-account + 20 populated) stepper_check 70/70 browser_check 71/71 aggregates 16/16 a11y 22/22 launcher 29 focusable elements, all >= 3:1 url_state 23/23 autosave 34/34 f_items F1-F5 FIXED, F6 REPRODUCES (T7.2) No colour literal added: 0 across all five page sheets and all seven inline