QuizWizz UI/UX review — TNDM tandem session harvest

Historical record — 2026-08-25

Preserved as observed, and not superseded by the newer pixel corpus: this is the resolution record for the 36 harvested notes, and it holds the verbatim operator wording that exists nowhere else in the vault. Four of its branches are still open owner decisions — item 02 taxonomy shape, item 15 logged-out navigation, item 09 reachability and the mobile statistics rail height — each listed under Needs user decision below. Current truth: Program Masterplan.

  • source session: 46937fb4893da860
  • source deck: qwizz-2026-08-20 (🎞️ QuizWizz UI/UX Feedback Tour — Complete Shot Gallery, 324 frames)
  • event seq range: 37–134 (kinds: note, scribble; reviewed 2026-08-24)
  • bus tail at harvest close (2026-08-25): seq 135–146 = 11 nav + 1 route_done(tour-yamlsum); no reviewable events beyond 134
  • items: 36 (35 notes + 1 scribble-only)

Each item is verbatim reviewer input joined to its screenshot. Triage into FIX-NOW or DECIDE; record outcomes in ## Resolution summary and ## Needs user decision at the bottom.

g01 — landing/front page g01--landingfront-page

01. g01—landingfront-page/1 — g01 — landing/front page

  • status: fixed — front page (id 2) now embeds [quizwizz_craft] and [quizwizz_my_library] as content elements, so the category grid is the first thing a visitor sees (the intermediate CTA click is gone); the admin Shortcodes grid now advertises all six registered tags. No new shortcode was registered — [quizwizz_my_library] and [quizwizz_my_stats] already existed — files: includes/Admin/views/dashboard-page.php, plus WordPress content of front page id 2 (not a plugin file)
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g01-d.png (alt: Guest homepage fold: nav, hero heading, tagline, CTA buttons.)
  • event seq: 37
  • note (verbatim, multiline preserved):

    Create Quiz and My Quizzes should both be a [shortcode] content element. Create quiz is just the next category step saving one click.

g02 — Builder (craft) g02--builder-craft

02. g02—builder-craft/1 — g02 — Builder (craft)

  • status: verified-correct — no change needed. Surprise me posts the any sentinel, which removes the subject filter entirely (includes/GenerationCriteria.php:84-86), and the sampler draws a uniform random window over the whole enabled pool (includes/QuestionIndex.php:604-641). Replaying the sampler’s exact ORDER BY/LIMIT/OFFSET on the live pool (4711 rows, 477 subject slugs) returned 6–10 distinct subjects per 10-question draw. See Needs user decision for the taxonomy-shape caveat
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g02-d.png (alt: Builder page desktop fold: nav, ‘Create a quiz’ hero, 10 category cards)
  • event seq: 39
  • note (verbatim, multiline preserved):

    surprise me should be random, and then use random category questions (from several different cats if not allready)

03. g02—builder-craft/7 — g02 — Builder (craft)

  • status: fixed — the detached white disc on selected category cards was .qwizz-category__check painting background: var(--qw-v) (collapses to currentColor under Twenty Twenty-Five) behind a white glyph. It now uses the action tokens: measured live at background rgb(17,17,17) with a rgb(255,255,255) glyph — files: assets/css/qwizz-builder.css:781-790 (applied by the earlier 2026-08-25 02:15 pass; verified intact and live in this run)
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g02-d-p03-categories-multi.png (alt: Category grid, two categories (Science + History) selected.)
  • scribble: /home/loca/tndm/sessions/46937fb4893da860/scribbles/g02—builder-craft-7—40.png
  • event seq: 41
  • note (verbatim, multiline preserved):

    top right strange white circle?

04. g02—builder-craft/12 — g02 — Builder (craft)

  • status: fixed — the two Customize-panel <select>s (auto-advance delay, final countdown cue) are now Difficulty-style .qwizz-challenge-grid tile rows with the same value/label pairs; the submitted auto_advance_ms / final_cue hidden inputs are unchanged and the three noscript selects are untouched. Live check: zero <select> elements remain in the builder JS UI — files: includes/Frontend/views/builder-view.php, assets/js/qwizz-builder-controls.js, assets/js/qwizz-builder-state.js
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g02-d-p05-advanced-open.png (alt: Expanded Customize panel: Difficulty, Questions, Shared exp, Print, Player, Completion)
  • event seq: 42
  • note (verbatim, multiline preserved):

    if the drop down select are just a few they should also be pretty buttons like difficulty

05. g02—builder-craft/20 — g02 — Builder (craft)

  • status: fixed — the ring around selected items had three painters sharing one root cause (the --qw-v/--qw-ring accent collapse): the switch halo, the pressed banner-source border and the pressed pill. All three now use flat token treatments; measured live .qwizz-switch[aria-checked=true]::before box-shadow none — files: assets/css/qwizz-builder.css:792-829 (applied by the earlier 2026-08-25 02:15 pass; verified intact and live in this run)
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g02-d-p12-group-shared-on.png (alt: Shared exp group: Banner on, revealing Icon/Site/Upload picker, ‘Banner ready’)
  • scribble: /home/loca/tndm/sessions/46937fb4893da860/scribbles/g02—builder-craft-20—43.png
  • event seq: 44
  • note (verbatim, multiline preserved):

    strange confusing circle around selected stuff

06. g02—builder-craft/26 — g02 — Builder (craft)

  • status: fixed — the four Completion rows (Retry / New quiz / Print / Share) are one row of toggle tiles instead of full-width switch rows; action_retry|new|print|share and the noscript hidden inputs are byte-identical. Live check: four [data-action-toggle] tiles, all aria-pressed=true — files: includes/Frontend/views/builder-view.php, assets/js/qwizz-builder-controls.js, assets/js/qwizz-builder-state.js
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g02-d-p16-group-completion.png (alt: Completion group: Retry, New quiz, Print, Share toggles all ON)
  • event seq: 45
  • note (verbatim, multiline preserved):

    this can simply be a row of buttons/tiny-cards to be toggled on and off, like difficulty for example

07. g02—builder-craft/31 — g02 — Builder (craft)

  • status: fixed — the draft-resume banner is now a quiet inline chip (Resume draft · Discard, measured live: 24px tall, transparent background, 0px border, borderless text buttons), and Discard persists a dismissal so it does not come back: after Discard plus further edits plus a reload the host stayed hidden — files: assets/js/qwizz-builder-state.js, assets/css/qwizz-builder.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g02-d-p21-draft-resume.png (alt: Draft-resume banner: ‘unfinished quiz’ with Resume draft / Discard)
  • event seq: 46
  • note (verbatim, multiline preserved):

    this is some-what unintuitive and annoying at times

08. g02—builder-craft/32 — g02 — Builder (craft)

  • status: fixed — the builder toast was background: var(--qw-ink) (i.e. currentColor) with color: var(--qw-card), so text and background resolved to the same near-white. It now uses the action-token pair; measured live: rgb(255,255,255) text on rgb(17,17,17) at opacity 1 — files: assets/css/qwizz-builder.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g02-d-p22-toast.png (alt: Builder toast panel renders with invisible (light-on-light) text at bottom center)
  • scribble: /home/loca/tndm/sessions/46937fb4893da860/scribbles/g02—builder-craft-32—47.png
  • event seq: 47
  • note (verbatim, multiline preserved):

    (scribble only — see overlay)

g02f — Fine-tune print studio modal g02f--fine-tune-print-studio-modal

09. g02f—fine-tune-print-studio-modal/1 — g02f — Fine-tune print studio modal

  • status: fixed — all four defects in the note delivered: the broken top bar rebuilt as one CSS layer (its own .qwizz-editor button{font:inherit} had been beating .qwizz-btn{font-weight:800}, so Undo/Redo rendered at the theme’s 22px/300 body font), clutter cut to step title + one guidance line + counts + Undo/Redo on one row, export/print/cancel moved into one bottom .qwizz-actions row in the builder’s own button vocabulary, the step converted from a position:fixed overlay reparented to document.body into an in-flow section of the builder page, and the editable sheet converged onto PdfGenerator’s screen contract so what you edit matches what prints. Verified live: bar 832×72 on one row, Cancel/Print 50px at the end of the step, position: static under entry-content, site header visible, no overflow, Print still returns 200 application/pdf — files: includes/Frontend/views/finetune-editor.php, assets/css/qwizz-finetune.css, assets/js/qwizz-finetune.js, includes/Pdf/PdfGenerator.php, includes/Frontend/Shortcodes/CraftShortcode.php
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g02f-d-p01-modal.png (alt: Fine-tune modal: toolbar (Undo/Redo/Cancel/Print) over editable Science quiz sheet)
  • scribble: /home/loca/tndm/sessions/46937fb4893da860/scribbles/g02f—fine-tune-print-studio-modal-1—49.png
  • event seq: 50
  • note (verbatim, multiline preserved):

    this is simply trash. broken css top bar and clutter, inconsitent export/print buttons… belong to bottom as in other step. also cant this be on the site instead on new? since the pdf also not even slightly looks alike… ask user to provide reference or files to a previous solved fine-tune editor version

g05 — Single quiz + full player flow g05--single-quiz--full-player-flow

10. g05—single-quiz—full-player-flow/20 — g05 — Single quiz + full player flow

  • status: fixed — the more-panel actions are one line each with one correct icon: new no longer reuses the celebration sparkles glyph, the missing printScore/printUnsolvedQuiz icon keys were added (they resolved to nothing before), the <small> sub-labels are gone and non-primary buttons render as a row. Live check: five secondary actions, each one client rect, each with an SVG — files: includes/Frontend/QuizEmbed.php, assets/js/qwizz-player-renderer.js, assets/js/qwizz-player.js, assets/css/qwizz-player.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g05-d-p14-more-open.png (alt: Expanded ‘more’ details panel showing only a purple ‘Retry’ button.)
  • event seq: 54
  • note (verbatim, multiline preserved):

    new icon missleading, find better one. rest only single line but two word max and proper icons each.

11. g05—single-quiz—full-player-flow/24 — g05 — Single quiz + full player flow

  • status: fixed — nested card-in-card chrome removed (.qwizz-player__card border and shadow, banner border, the whole .qwizz-player__more disclosure box) and the 320–520px title/meta overlap fixed by replacing the white-space: nowrap counter rule with wrapping. Measured live at 390px: card border 0px, shadow none, no horizontal document overflow — files: assets/css/qwizz-player.css, assets/css/qwizz-responsive.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g05-x-full.png (alt: 320px reflow: title/meta row overlaps progress bar and question number)
  • event seq: 57
  • note (verbatim, multiline preserved):

    too much borders and frames and stuff … should be clan and simple full with

g06 — DE-content single quiz g06--de-content-single-quiz

12. g06—de-content-single-quiz/1 — g06 — DE-content single quiz

  • status: fixed — the player runs the full width of its container (the 880px and 920px caps and the big top-margin clamp are gone; measured 1488px of 1600px viewport, 370px of 390px on mobile) and gets usable height through a new rule scoped to the pre-existing zero-consumer hook body.qwizz-has-player, so shortcode/block embeds are unaffected — files: assets/css/qwizz-player.css, assets/css/qwizz-responsive.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g06-d.png (alt: Desktop fold of Allgemeinwissen kompakt Q1/10, sound icon + Check answer)
  • event seq: 59
  • note (verbatim, multiline preserved):

    again, simpler and full hight and width

13. g06—de-content-single-quiz/3 — g06 — DE-content single quiz

  • status: fixed — the standalone quiz page printed the title twice (template <h1> plus an unconditional player header span); the template now signals data-heading="1" and the renderer omits its own title there, while embeds keep theirs. Measured live desktop and 390px mobile: exactly one occurrence of Allgemeinwissen kompakt — files: includes/Frontend/QuizEmbed.php, templates/single-qw_quiz.php, assets/js/qwizz-player.js, assets/js/qwizz-player-renderer.js; status: content-data for the second clause — evidence: quiz 77 carries qw_lang = en and all ten stored questions are English (What does a milliner make and sell?, What does the F stand for in the FBI?, What is Tasmania?) under a German title, so the mixture is corpus content, not a locale-rendering defect
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g06-m.png (alt: Mobile fold of Allgemeinwissen kompakt Q1/10 player card)
  • event seq: 60
  • note (verbatim, multiline preserved):

    again strange look with the white and double “Allgemeinwissen kompakt” Also strange question in english and Quiztitle in german but i guess this is quiz issue not software?!

14. g06—de-content-single-quiz/4 — g06 — DE-content single quiz

  • status: fixed — the always-on three-line auto-advance hint paragraph no longer renders (its string and CSS rule are gone with it) and the header row is omitted when empty; the progress bar and the question counter stay. Measured live at 390px: no .qwizz-player__auto-hint, single-column answers, no overflow — files: assets/js/qwizz-player-renderer.js, includes/Frontend/QuizEmbed.php, assets/css/qwizz-player.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g06-m-full.png (alt: Mobile fullpage of Allgemeinwissen kompakt player, stacked card layout)
  • event seq: 61
  • note (verbatim, multiline preserved):

    too much information. the quiz itself is all that matters, especially in this view

g07 — user surfaces anonymous → sign-in prompt g07--user-surfaces-anonymous--sign-in-prompt

15. g07—user-surfaces-anonymous—sign-in-prompt/1 — g07 — user surfaces anonymous → sign-in prompt

  • status: fixed — the two byte-identical sign-in cards came from one helper reached by both member shortcodes; a per-request guard makes only the first render. Live check on ?page_id=865: occurrences of qwizz-user--sign-in went 2 → 1, logged-in library and stats still render — files: includes/Frontend/UserSurfaces.php
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g07-d.png (alt: Mein QuizWizz page shows two identical sign-in cards side by side, no distinction)
  • event seq: 63
  • note (verbatim, multiline preserved):

    couldnt it be just the page or hidden element instead. so it would not even be offered if not logged in but show if user has… if not easy then leave it as is for now

g15 — denied share-play 404 g15--denied-share-play-404

16. g15—denied-share-play-404/4 — g15 — denied share-play 404

  • status: content-data — evidence: the captured URL is /?qwizz_play=999999, which has no qw_quiz post, so includes/Frontend/QuizQueryViewer.php:14-17 renders nothing and the normal front page is shown. The mixed-language strings in that screenshot are the page’s own stored content (English Build a quiz, play it online, or print the same prepared questions. plus an English Create a quiz CTA next to a German Mein QuizWizz CTA), not plugin output. The real denial renderer uses translation calls throughout (includes/Frontend/QuizEmbed.php:43-55) and iface_lang is en; no hardcoded English plugin string renders inside a German plugin surface
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g15-m-full.png (alt: Mobile denied share-play: homepage renders instead of a 404/denied notice)
  • event seq: 75
  • note (verbatim, multiline preserved):

    again strange english german

g16 — locked single (core password form) g16--locked-single-core-password-form

17. g16—locked-single-core-password-form/1 — g16 — locked single (core password form)

  • status: done on bench — recorded in creds.md. A ## Locked quizzes section now states the standing requirement and the verified current state: no password-protected post of any type exists in this database, and the Tour Locked Quiz g16 fixture was deleted after the 2026-08-19/20 capture with no recoverable plaintext in the harness or capture log
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g16-d.png (alt: Locked quiz fold: ‘Geschützt: Tour Locked Quiz’ heading with password entry form)
  • event seq: 77
  • note (verbatim, multiline preserved):

    assure those are always shared in creds.md for user to be aware of

g18 — PDF inline artifact in browser viewer g18--pdf-inline-artifact-in-browser-viewer

18. g18—pdf-inline-artifact-in-browser-viewer/1 — g18 — PDF inline artifact in browser viewer

  • status: fixed — worksheet answers are 2 per row (odd counts padded with a borderless cell), verified in the actual generated PDF opened in a viewer: every question renders 2×2. Also proved at markup level for 2, 3, 4, 5 and true/false choice counts — files: includes/Pdf/PdfGenerator.php
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/g18-d-full.png (alt: PDF worksheet: title, name/date/class fields, 4 MC questions, footer ‘1/4 · Balli’)
  • event seq: 80
  • note (verbatim, multiline preserved):

    by default the answers always should be 2x2 (two rows 2 coulomns)

s04 — player logged-in (nonce present) s04--player-logged-in-nonce-present

19. s04—player-logged-in-nonce-present/1 — s04 — player logged-in (nonce present)

  • status: fixed — the 2-column answer grid was already the default but had no narrow fallback and presentation.layout_cols was a dead player contract. A single-column rule now applies below 620px (measured: repeat(2,...) at 1600px, one column at 390px) and the dead data-layout write is gone — files: assets/css/qwizz-player.css, assets/js/qwizz-player.js
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/s04-d.png (alt: Player Q1/10 True/False question, admin bar shows ‘Willkommen, qwtour_sub’)
  • event seq: 86
  • note (verbatim, multiline preserved):

    Also by default next to each other

a02 — Settings (full admin, 9 always-visible panels) a02--settings-full-admin-9-always-visible-panels

20. a02—settings-full-admin-9-always-visible-panels/9 — a02 — Settings (full admin, 9 always-visible panels)

  • status: fixed — redundant helper copy cut (the four <small>s restating their own card titles, Used when a visitor does not choose., Example: 5, 10, 20 which duplicated the field’s rendered value, the second interface-language paragraph) with tooltips kept via the existing $info() helper, and the squeezed .qwizz-default-count label given flex:1 1 auto; min-width:0 — files: includes/Admin/views/settings-page.php, assets/css/qwizz-admin-settings-core.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a02-d-p05-qw-essential.png (alt: General defaults panel: sources, outcomes, size, languages, difficulty)
  • event seq: 89
  • note (verbatim, multiline preserved):

    broken beyond comprehension xD this ui ux has too much useless bloat text and arranged like improvable

21. a02—settings-full-admin-9-always-visible-panels/11 — a02 — Settings (full admin, 9 always-visible panels)

  • status: fixed — .qwizz-flow-policy > label > span had no base rule at all: it received only border-width/border-style, stayed display:inline and painted one border fragment per line box, so the radio rows overlapped. Measured before: display:inline, 2 client rects, rows overlapping at y=99. After: display:grid, 1 rect each, y=96/y=182, no overlap. The unstyled siblings .qwizz-segmented-setting and .qwizz-auto-delay were styled too — files: includes/Admin/views/settings-page.php, assets/css/qwizz-admin-settings-core.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a02-d-p07-qw-player.png (alt: Online Player Feedback panel — stray outline boxes on radio labels)
  • event seq: 90
  • note (verbatim, multiline preserved):

    hellish broken feedback thingy

22. a02—settings-full-admin-9-always-visible-panels/11 — a02 — Settings (full admin, 9 always-visible panels)

  • status: fixed — the box that persisted after a click was a :focus (not :focus-visible) outline with !important, duplicated in three places, fighting two different :checked rings across two sheets. Now focus-visible only, one selection treatment. Measured live: mouse click leaves 0px none outline (just the 1px inset selection ring); keyboard Tab still gets a 3px solid ring — files: assets/css/qwizz-admin-responsive.css, assets/css/qwizz-admin-settings-search-preview.css, assets/css/qwizz-admin-settings-core.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a02-d-p07-qw-player.png (alt: Online Player Feedback panel — stray outline boxes on radio labels)
  • event seq: 91
  • note (verbatim, multiline preserved):

    again broken-ish styles and strange borders around chosen/clicked stuff

23. a02—settings-full-admin-9-always-visible-panels/16 — a02 — Settings (full admin, 9 always-visible panels)

  • status: fixed — all four Data & Lifecycle headings were missing the $icon() prefix every other panel uses (Feedback, Completion actions, Category hierarchy and Support diagnostics had the same omission); icons added and the ad-hoc 36px icon-only button box replaced by one shared icon-button rule sized with its 44px neighbours. Live check: all four Data headings now carry an SVG. Also retargeted four heading slugs absent from IconPaths that silently rendered a book glyph — files: includes/Admin/views/settings-page.php, assets/css/qwizz-admin-settings-core.css, assets/css/qwizz-admin-settings-layout.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a02-d-p12-qw-data.png (alt: Data & Lifecycle panel: retention, portability, imports, backups card)
  • event seq: 92
  • note (verbatim, multiline preserved):

    strange icon padding in portability and some icons missing

24. a02—settings-full-admin-9-always-visible-panels/17 — a02 — Settings (full admin, 9 always-visible panels)

  • status: fixed — root cause was a positional grid (#qw-advanced … .qwizz-subcard:nth-child(2)) that pinned the heading to column 1 and auto-placed the two unplaced icon links into columns 2 and 3, i.e. flush against the card’s right edge. The positional grid is gone and both icon links now sit in the shared portability container. Measured live: buttons at x=507/559 with the heading at x=507 and the card’s right edge at 758 — files: includes/Admin/views/settings-page.php, assets/css/qwizz-admin-settings-layout.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a02-d-p13-qw-advanced.png (alt: Advanced settings panel: category-hierarchy toggles and support-diagnostics JSON download)
  • event seq: 93
  • note (verbatim, multiline preserved):

    again icons pushed to right somehow

a02x — editor-role import-only variant (qwtour_editor) a02x--editor-role-import-only-variant-qwtour_editor

25. a02x—editor-role-import-only-variant-qwtour_editor/1 — a02x — editor-role import-only variant (qwtour_editor)

  • status: fixed — the nag suppression existed but covered only the Settings screen id; it now runs from the class that already owns admin-screen ownership and covers all eight QuizWizz screen ids, removing update_nag and maintenance_nag by name at their core priorities. Deliberately not removed: recovery-mode, paused-plugin/theme and account-security notices. Live check: zero foreign notices on Settings, on the quiz list and on the quiz editor. Note the bench core is current, so the nag itself cannot be made to render for a visual before/after — files: includes/Bootstrap/SurfaceProvider.php, includes/Admin/SettingsPage.php
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a02x-d.png (alt: Editor-role Settings desktop fold: same import-only Portability card above the fold)
  • event seq: 95
  • note (verbatim, multiline preserved):

    is the Wordpress update notice relevant in here? if not get rid of it.

a03 — quiz list table a03--quiz-list-table

26. a03—quiz-list-table/1 — a03 — quiz list table

  • status: fixed — the column was already flag-only; the residuals are closed: a title with the language name (hover affordance), the vestigial gap: 7px removed, and the readiness/source column widths rebalanced with a wrapping badge row so translated status labels no longer overlap. Live check: visible text empty, title="English", no readiness overflow — files: includes/Admin/ListTables.php, assets/css/qwizz-admin-shell.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a03-d.png (alt: Quiz list table default view, full page — same ‘Ready’/‘Prepared’ badge overlap visible)
  • event seq: 97
  • note (verbatim, multiline preserved):

    language flag only is enough rather then flag + english. and what ever else can be prttified

a05 — quiz editor (58 questions) a05--quiz-editor-58-questions

27. a05—quiz-editor-58-questions/1 — a05 — quiz editor (58 questions)

  • status: fixed — the site-statistics rail no longer eats the fold of a record editor (removed on qw_quiz/qw_question editors only, untouched on dashboard, lists, settings and subjects), and a @media(max-width:782px) order:-1 rule that pushed the quiz title below the entire 6501px question list on mobile now orders title → questions → sidebar. Verified live on fixture 99: rail absent, #wpbody top 42 → 32px, no console or page errors — files: includes/Admin/views/statistics-rail.php, includes/Admin/MetaBoxes.php, assets/css/qwizz-admin-editor.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a05-d.png (alt: Quiz editor fold: admin bar, dashboard stats, ‘World Quiz — English’ title, question list)
  • event seq: 100
  • note (verbatim, multiline preserved):

    this is just bade (much worse then we used to have) ask user to provide references

28. a05—quiz-editor-58-questions/1 — a05 — quiz editor (58 questions)

  • status: fixed — question rows are one dense wp-admin-native line (49px, uniform 4-glyph control strip, flat separators) and three measured glitches are gone: an invalid background:var(--qw-card)1f1 declaration that silently dropped the delete button’s hover affordance, two dead rule groups targeting [data-move-up]/[data-move-down] while the markup emits data-qwizz-move-* (0 matches against 58 rows), and an undo control with no glyph because the localized icon map had no undo key. Verified live: 10 rows at 49px with 44×44 controls, roving tabindex intact, zero console errors — files: assets/css/qwizz-admin-editor.css, assets/js/qwizz-admin-editor.js, includes/Admin/MetaBoxes.php
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a05-d.png (alt: Quiz editor fold: admin bar, dashboard stats, ‘World Quiz — English’ title, question list)
  • event seq: 104
  • note (verbatim, multiline preserved):

    nbloat, cluttery, glitchi … dunno what to say xD

a07 — subjects taxonomy screen a07--subjects-taxonomy-screen

29. a07—subjects-taxonomy-screen/8 — a07 — subjects taxonomy screen

  • status: fixed — the 451-entry surface is the subjects list table under ?qw_supply=under, and hierarchy-aware ordering already existed but interleaved each parent with its own children. The comparator now puts every parent subject first as one block, then their children grouped by parent name, with the ungrouped bucket last. Live check: the first five rows are top-level subjects, children follow — files: includes/Subject/SubjectSupplyFilter.php
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/a07-d-x01-supply-under.png (alt: Notice: subjects with <10 usable questions — 451 entries listed)
  • event seq: 106
  • note (verbatim, multiline preserved):

    wtf are those categories xD should be somehow simply sort parent categories first

v02 — AI ON — settings v02--ai-on--settings

30. v02—ai-on—settings/1 — v02 — AI ON — settings

  • status: fixed — three measurable faults, not taste: the money input overflowed its card at ordinary desktop widths (its stacking rescue only existed below 782px), the Block/Allow privacy cards truncated their copy in a two-column grid, and the whole limits body sat inside a collapsed <details> above a panel-height void. Measured after: no overflow of the money control, policy cards minmax(0px, 1fr), no <details> wrapper — files: includes/Admin/views/settings-page.php, assets/css/qwizz-admin-settings-core.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/v02-d-p01-ai-expanded.png (alt: AI panel expanded: Enable AI on, access/privacy + budget fields)
  • event seq: 123
  • note (verbatim, multiline preserved):

    just ugly

31. v02—ai-on—settings/2 — v02 — AI ON — settings

  • status: fixed — .qwizz-guest-ai had no CSS outside a max-width: 782px query: the help text inherited font-weight: 800 and read as a heading, and stretched two-row label grids left a dead gap above the requests/hour input. Measured after: <small> weight 400, label align-content: start — files: includes/Admin/views/settings-page.php, assets/css/qwizz-admin-settings-core.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/v02-d-p02-guest-wizard.png (alt: Quiz Wizzard for visitors: assistant toggle on, guest budget fields)
  • event seq: 125
  • note (verbatim, multiline preserved):

    ugly and broken xD

v03 — auto-advance ceiling ON — builder player-options row + player countdown timer panel v03--auto-advance-ceiling-on--builder-player-options-row--player-countdown-timer-panel

32. v03—auto-advance-ceiling-on—builder-player-options-row—player-countdown-timer-panel/1 — v03 — auto-advance ceiling ON — builder player-options row + player countdown timer panel

  • status: fixed — the player-options rows (Instant feedback, Explanations, Sound, Score animation) became one tile row like Difficulty, with the sound → final-cue dependency preserved and every instant_feedback / player_explanations / sound_default / score_animation field name unchanged; the stray switch halo was already neutralised and is verified intact. Live check: four toggle tiles present, zero selects left in the panel — files: includes/Frontend/views/builder-view.php, assets/js/qwizz-builder-controls.js, assets/js/qwizz-builder-state.js, assets/css/qwizz-builder.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/v03-d-p01-builder-player-options.png (alt: Player settings: Instant feedback on, Auto-advance Manual, Explanations on)
  • event seq: 128
  • note (verbatim, multiline preserved):

    again, this could be much nicew

33. v03—auto-advance-ceiling-on—builder-player-options-row—player-countdown-timer-panel/2 — v03 — auto-advance ceiling ON — builder player-options row + player countdown timer panel

  • status: fixed — the countdown was a banner because .qwizz-player__countdown claimed a full-width row (flex: 1 1 100%) and two 44px bordered buttons grew to fill it. It is now a subtle inline note with borderless controls; measured live: flex-basis auto, timing-button border 0px, text Next question in 2 seconds. with Pause / Add 10 seconds inline. The feature itself is unchanged — see Needs user decision — files: assets/css/qwizz-player.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/v03-d-p02-player-timer.png (alt: Countdown banner ‘Next question in 2 seconds’ with Resume/Add 10s buttons)
  • event seq: 129
  • note (verbatim, multiline preserved):

    i dont get why this is even a thing oO

v04 — reduced-motion player — Q1 manual-advance note + result (no score animation) v04--reduced-motion-player--q1-manual-advance-note--result-no-score-animation

34. v04—reduced-motion-player—q1-manual-advance-note—result-no-score-animation/1 — v04 — reduced-motion player — Q1 manual-advance note + result (no score animation)

  • status: fixed — there was no click-to-check path at all: the only trigger was the form submit event, so every answer needed a second click on Check answer. Clicking an answer now checks it immediately and the button only appears afterwards, as Next question. Verified live end to end: no visible button before answering, one click produced Not quite / Correct answer: Hats with correct/incorrect marks, and the intro reads Answers are checked as you go. The player.instant_feedback setting is untouched — files: includes/Frontend/QuizEmbed.php, assets/js/qwizz-player.js, assets/js/qwizz-player-renderer.js, assets/css/qwizz-player.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/v04-d-p01-question-note.png (alt: Reduced-motion Q2/10 with manual-advance note instead of timer animation)
  • event seq: 131
  • note (verbatim, multiline preserved):

    default must always be: click answer = check answer simple

35. v04—reduced-motion-player—q1-manual-advance-note—result-no-score-animation/2 — v04 — reduced-motion player — Q1 manual-advance note + result (no score animation)

  • status: fixed — share/print/restart were buried in a bordered <details> disclosure placed above the answer review, each button a three-line column tile. They are now one borderless icon+label row rendered after the review. Verified live DOM order: score → Retry → review → secondary actions, five single-line buttons of 44px with an icon each, no .qwizz-player__more — files: assets/js/qwizz-player-renderer.js, assets/js/qwizz-player.js, assets/css/qwizz-player.css, assets/css/qwizz-responsive.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/v04-d-p02-result.png (alt: Quiz complete: static 7/10 (70%) score, Retry button, answer review list)
  • event seq: 132
  • note (verbatim, multiline preserved):

    share print restart bla shoul be below and simple buttons/icons

v05 — noscript — builder server form section.qwizz-no-js + settings fallback form.qwizz-settings-fallback v05--noscript--builder-server-form-sectionqwizz-no-js--settings-fallback-formqwizz-settings-fallback

36. v05—noscript—builder-server-form-sectionqwizz-no-js—settings-fallback-formqwizz-settings-fallback/1 — v05 — noscript — builder server form section.qwizz-no-js + settings fallback form.qwizz-settings-fallback

  • status: fixed — the noscript topics form renders the topics as tiny cards in the category grid, reusing the JS-free .qwizz-choice-card pattern with the server-sanitised per-topic icon, and the :has(input:checked) state was given a visible filled treatment (it also relied on the collapsed accent token). Verified with JavaScript disabled: 12 cards, 12 icons, two-column grid, category[] names unchanged, Surprise me visibly selected — files: includes/Frontend/views/builder-view.php, assets/css/qwizz-builder.css
  • screenshot: /home/loca/tndm/decks/qwizz-2026-08-20/assets/shots/v05-d-p01-builder-noscript.png (alt: Noscript builder fallback: JS-unavailable notice, topics, Print/Play)
  • event seq: 134
  • note (verbatim, multiline preserved):

    this should be pretty tiny cards always

Resolution summary

All work is bench-local and releaseEligible: false. The canonical delivery vehicle is still open (see Needs user decision).

Counts

statusitemscount
fixed01, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 3633
verified-correct (no change needed)021
content-data (not a software defect)16, and the i18n clause of 131
done on bench (recorded in creds.md)171
blocked— (09, 27, 28 were unblocked by the 2026-08-25 ruling and are fixed)0
deferred(build-artifact)0

Nothing was deferred to the release pipeline: every located defect lived in editable includes/, assets/ or templates/ source. build/quiz/render.php is a two-line delegator and build/quiz/style-index.css carries no player rules, so no compiled artifact had to be touched.

Items 03, 05 and the switch-halo half of 32 were already fixed on disk by an earlier pass on 2026-08-25 at 02:10–02:15, before this run’s backup marker was created; they were verified live rather than re-fixed, and this run’s find -newer gate therefore does not list qwizz-builder.css as changed by those particular rules. Items 25, 26 and 29 were partially implemented by the same pass; only their residuals were closed here.

Root causes by cluster

clusteritemsdefectfixstrongest evidence
Public accent-token collapse03, 05, 08, 36Twenty Twenty-Five defines no --wp--preset--color--primary and no --wp--style--color--link, so --qw-v and --qw-ink collapse to currentColor; any element using them as a background while setting its own color renders invisiblefilled states switched to the --qw-action-bg / --qw-action-ink pair in the leaf sheet, never in qwizz-tokens.cssassets/css/qwizz-builder.css:781-790; measured live toast rgb(255,255,255) on rgb(17,17,17)
Builder controls that were not the Difficulty pattern04, 06, 32two native <select>s plus eight full-width switch rows, while the Difficulty row was the intended patternrichChoice tile rows in .qwizz-challenge-grid with one delegated listener each; every submitted field name preservedincludes/Frontend/views/builder-view.php:244-266; live DOM shows zero selects and 4 action tiles
Nested player chrome10, 11, 12, 13, 14, 33, 35a card border plus a 55px shadow, per-element borders, a double width cap, a duplicated title, an always-on hint paragraph, a full-width countdown row and a bordered <details> above the reviewchrome flattened, width caps removed, height scoped to body.qwizz-has-player, title emitted once, hint removed, actions moved below the review as an icon rowassets/css/qwizz-player.css:6,10,66,89; assets/js/qwizz-player-renderer.js:103-106,324-351
Missing player interaction default34no click-to-check code path existed at all — the only trigger was form submitchange listener on the answer radios; Check answer only renders when click-to-check is off, then becomes Next questionassets/js/qwizz-player.js:415 (the sole pre-fix trigger)
Admin controls with no base CSS21, 30, 31.qwizz-flow-policy > label > span, .qwizz-segmented-setting, .qwizz-auto-delay and .qwizz-guest-ai received border fragments or media-query-only rules but had no base rulereal base blocks modelled on the working .qwizz-policy-cards treatmentmeasured display:inline with 2 client rects and overlapping rows before, display:grid with 1 rect and no overlap after
Selection chrome fighting itself in wp-admin22a :focus (not :focus-visible) outline with !important, duplicated three times, plus two competing :checked rings across two sheetsfocus-visible only, one selection treatmentmouse click now leaves 0px none; keyboard Tab still yields 3px solid
Copy-paste icon-button twins23, 24a positional :nth-child(2) grid pushed icons to the card’s right edge, and two near-identical icon-button boxes (34px and 36px) fought a 44px minimumone shared icon-button rule; positional grid deleted; icons flush-leftassets/css/qwizz-admin-settings-layout.css:433-462 before; buttons at x=507 beside a heading at x=507 after
Single-column answer sheet18answers were a one-cell-per-row <table>, independent of layout_cols (which controls question columns)two <td> per <tr> with a padded trailing cell, .opt{width:50%}, table-layout:fixedthe generated PDF, opened in a viewer, renders every question 2×2
Duplicate rendering15, 13one sign-in helper called by two shortcodes; one title printed by both template and rendererper-request guard; data-heading signal from the templateqwizz-user--sign-in count 2 → 1; one title occurrence at 1600px and at 390px
Discoverability, not absence01, 02, 26, 29six shortcodes existed but four were advertised; the sampler already spanned categories; the language column was already flag-only; hierarchy ordering already existedadvertise all six, embed the craft shortcode on the front page, close the residuals (hover title, badge overlap, parents-first comparator)runtime shortcode_tags enumeration; 6–10 distinct subjects per Surprise-me draw

Changed files

First pass, 23 plugin files — none under vendor/, build/ or languages/, and that holds for all 33:

  • assets/css/qwizz-admin-responsive.css
  • assets/css/qwizz-admin-settings-core.css
  • assets/css/qwizz-admin-settings-layout.css
  • assets/css/qwizz-admin-settings-search-preview.css
  • assets/css/qwizz-admin-shell.css
  • assets/css/qwizz-builder.css
  • assets/css/qwizz-player.css
  • assets/css/qwizz-responsive.css
  • assets/js/qwizz-builder-controls.js
  • assets/js/qwizz-builder-state.js
  • assets/js/qwizz-player-renderer.js
  • assets/js/qwizz-player.js
  • includes/Admin/ListTables.php
  • includes/Admin/SettingsPage.php
  • includes/Admin/views/dashboard-page.php
  • includes/Admin/views/settings-page.php
  • includes/Bootstrap/SurfaceProvider.php
  • includes/Frontend/QuizEmbed.php
  • includes/Frontend/UserSurfaces.php
  • includes/Frontend/views/builder-view.php
  • includes/Pdf/PdfGenerator.php
  • includes/Subject/SubjectSupplyFilter.php
  • templates/single-qw_quiz.php

Second pass added 10 more (PdfGenerator.php was touched in both), for 33 plugin files in total:

  • assets/css/qwizz-admin-stats.css
  • assets/css/qwizz-finetune.css
  • assets/js/qwizz-admin-editor.js
  • assets/css/qwizz-admin-editor.css
  • assets/js/qwizz-finetune.js
  • includes/Admin/AdminMenu.php
  • includes/Admin/MetaBoxes.php
  • includes/Admin/views/statistics-rail.php
  • includes/Frontend/views/finetune-editor.php
  • includes/Frontend/Shortcodes/CraftShortcode.php
  • includes/Pdf/PdfGenerator.php (second edit: localized_labels made public for the fine-tune sheet)

Outside the plugin: creds.md (item 17), evidence/2026-08-20-ui-tour/review-session.json (bus-tail truth pass), and the WordPress content of front page id 2 (item 01). No probe expectation needed editing — scripts/ is unchanged.

Gate results

  • php -l in-container: clean on all 11 changed PHP files.
  • node --check: clean on all 4 changed JS files.
  • plugin reactivated through WP-CLI after the wiring change (SurfaceProvider now owns the notice hook): quizwizz active 1.10.0.
  • ./scripts/quizwizz-probe.sh --wave all: 1..46, # assertions=46 failures=0. Identical to the pre-fix baseline taken at the start of this run, so no contract regressed and no probe expectation had to be adjusted.
  • scripts/quizwizz-browser-smoke.js: 19 of 19 behavioural assertions passed (Builder H1 semantics and overflow on both viewports, settings dirty → saving → saved with reversible restoration to the original count.default of 10, dirty beforeunload), zero console errors, zero page errors, settingsRestored: true. The run then aborted on a Chromium Runtime.callFunctionOn protocol timeout before its editor-tabindex and contrast tail — an environment limit on this bench, not an assertion failure. Those tails were covered manually instead: mobile Settings at 390×844 has no horizontal overflow and a reachable 44px save control, the quiz editor loads with zero console and page errors, and the contrast-sensitive surfaces were measured directly (toast, selection badge, focus rings).
  • logs/debug.log: 38522 lines before the fixes and 38522 after, i.e. no new notice, warning or fatal from any changed path.

Verification screenshots

Captured cache-disabled at desktop 1600×1000 and mobile 390×844. Relocated out of /tmp into evidence/2026-08-25-tndm-verify/ so these citations survive a reboot; digests.json there pins all 21 artifacts by sha256:

  • 01-builder-tiles-toast-desktop.webp — items 03, 04, 06, 08, 32
  • 02-player-2x2-fullwidth-desktop.webp — items 11, 12, 13, 14, 19
  • 03-player-clicktocheck-countdown-inline.webp — items 33, 34
  • 04-player-result-icon-row-below-review.webp — items 10, 35
  • 05-player-mobile-390.png — items 11, 13, 14, 19 on mobile
  • 06-settings-general-desktop.webp — items 20, 21, 23, 24, 25
  • 07-settings-ai-data-panels.webp — items 30, 31
  • 08-subjects-parents-first.webp — item 29
  • 09-quiz-list-flag-only.webp — item 26
  • 10-noscript-topic-cards.webp — item 36 (JavaScript disabled)
  • 11-worksheet.pdf + 12-pdf-2x2-answers.webp — item 18
  • 13-settings-mobile-390.webp — mobile settings reachability
  • browser-smoke.json — the smoke gate’s machine-readable record

Second pass, 2026-08-25 — items 09/27/28 and the defaults

The operator lifted the reference block: proceed on best-practice reference and the patterns established in the first pass. Items 09, 27 and 28 are therefore closed, and the five decisions that were only recommendations are now applied or explicitly left open above.

itemdeliveredevidence
09 fine-tune print studiofour named defects, all four fixed: the top bar rebuilt as one authored CSS layer (four override passes were fighting, and the file’s own .qwizz-editor button{font:inherit} beat .qwizz-btn{font-weight:800}, so Undo/Redo rendered at the theme’s 22px/300 body font); export/print/cancel moved into one bottom .qwizz-actions row using the builder’s own button vocabulary; the step converted from a position:fixed overlay reparented to document.body with every other body child inert into an in-flow section of the builder page; and the editable sheet converged onto PdfGenerator’s own screen contractmeasured live: bar 832×72 on ONE row with Undo/Redo at 46px and font-weight 800, Cancel/Print 50px sharing y=3164 at the end of the step, position: static with parent entry-content, site header still visible, builder form display:none while open and back to block after Cancel, no horizontal overflow; the sheet renders the dark serif PDF look with 2-up bordered option cards, matching the generated PDF; Print still returns 200 application/pdf
27 + 28 quiz editorthe five-card site-statistics rail no longer renders on the record editors (it is untouched on dashboard, quiz list, settings and subjects); a @media(max-width:782px) rule that set order:-1 on the sidebar had been pushing the quiz title below the entire 6501px question list on mobile, now explicitly ordered title → questions → sidebar; question rows are one dense wp-admin-native line with a uniform control stripmeasured live on fixture 99: rail absent, #wpbody top 32px (was 42px), 10 rows at 49px each with 44×44 icon controls, roving tabindex intact, zero console and page errors, no horizontal overflow
28 glitches, found by measurementan invalid declaration background:var(--qw-card)1f1 (a mangled #fff1f1) that silently dropped every background longhand, leaving the delete button with no hover affordance; two dead rule groups targeting [data-move-up]/[data-move-down] while the markup emits data-qwizz-move-up/down (0 matches against 58 rows); an undo control with no glyph because the localized icon map had no undo keyCSSOM before/after captured per defect; the dead rules were removed rather than resurrected because their opacity:.62 dim computed to roughly 2.7:1 and would have failed WCAG 1.4.11’s 3:1 for non-text UI

Three defects of the same class, found by the editor slice outside its own ownership and fixed in a follow-up slice:

Out of scope for the 36 review items — droppable independently

The three defects below were found by the quiz-editor slice’s own measurements, not by the operator, and they are not part of the 36 harvested items. The operator ruled on 2026-08-25 to keep them, tagged separately, so the release owner can accept or drop them without touching the in-scope work. Boundary for the handoff patch: assets/css/qwizz-admin-stats.css (23 changed lines) and includes/Admin/AdminMenu.php (13 changed lines) are touched by nothing else and revert cleanly from handoff/2026-08-25-tndm/baseline-quizwizz-pre.tar.gz; the .qwizz-choice-row track-count change lives inside assets/css/qwizz-admin-editor.css alongside in-scope item-28 work and needs a surgical ~3-line revert rather than a file restore.

  • the statistics rail laid its five segments out as a 750px carousel inside a 366px container at 390px, so segments 3–5 were off-screen behind an intra-rail swipe on every remaining QuizWizz admin screen. Now wraps into the two-column template already present at the 1100px breakpoint, with the fifth segment spanning the row. Measured: stats.scrollWidth == clientWidth (366) and worst segment overflow −1px on dashboard, quiz list, question list, settings and subjects; desktop unchanged at 5 × 279.19px in one row.
  • AdminMenu::render_stats_rail() still echoed an empty <div class="wrap qwizz-admin-rail"> on the record editors. Gated with a new is_record_editor() helper mirroring the guard in the view. Measured: #wpbody top 42 → 32px on desktop, and at 390px core’s own 46px admin-bar clearance correctly returns (heading top 106px, admin bar bottom 46px), so nothing moved under the admin bar.
  • .qwizz-choice-row in the question editor declared three grid tracks for five in-flow children, wrapping its three controls onto a second track. Track count corrected; row height 103 → 57px at both viewports, 38×38 controls deliberately preserved there.

Applied defaults: player.auto_advance_ms 2500 → 0 (item 33) and presentation.layout_cols 2 → 1 (item 18), both verified by re-reading qw_exposure_settings; quiz 77 retitled Allgemeinwissen kompaktGeneral Knowledge Compact with its slug intact (items 13/16). Live player re-check after those writes: title renders once in English, no countdown panel appears after answering, click-to-check still produces Not quite / Correct answer: Hats and the button becomes Next question.

Second-pass gates: php -l clean on all 6 changed PHP files, node --check clean on both changed JS files, ./scripts/quizwizz-probe.sh --wave all1..46, # assertions=46 failures=0, and one new logs/debug.log line — a Cron-Unschedule-Event-Fehler for qw_process_portability_job written during the probe run’s own portability packet. No changed file touches portability, and Wave 5 (which owns that surface, including its zero-residue assertions) passed, so it is a core cron-array write race under the harness’s concurrent requests, not a regression from this work.

Bench hygiene: the temp administrators created for verification were deleted (qwverify, qwv2, and the slices’ own), and a stray qwfix_css administrator left behind by the earlier 02:10 pass was removed after confirming it authored zero posts. wp user list --role=administrator now returns only admin.

Two disclosures. To browser-verify item 09 at all, matrix.editor.def had to be flipped from false to true for the duration of the check, because with the shipped default there is no visitor-facing control that reaches the fine-tune step — Print goes straight to PDF. It was restored to false and re-read to confirm. That missing opt-in is itself worth a ruling: the step is implemented and now good, but unreachable as configured. Separately, the mobile statistics rail is now 383px tall (previously 192px with three of five segments off-screen), which pushes list-screen content to y=473 in an 844px viewport — everything is on-screen and reachable, but whether the mobile rail should collapse is an operator design call, not a defect.

Needs user decision

  • items 09, 27, 28 — RULED 2026-08-25: no reference material will be supplied; proceed on best-practice reference and the patterns established in this session. Implemented as two slices (fine-tune print studio; quiz editor) — see the 2026-08-25 second pass below.
  • item 33 — RESOLVED 2026-08-25: countdown kept, shipped off by default. player.auto_advance_ms set from 2500 to 0 on the bench, verified by re-reading qw_exposure_settings. The inline-note styling stays for sites that switch it back on.
  • item 02 — OPEN (taxonomy shape, not a sampler bug). Surprise me already spans 6–10 distinct subjects per draw, but the qw_subject taxonomy is nearly flat (398 top-level terms against 85 children), so most fine-grained subjects are not descendants of any of the 12 builder cards and are reachable only through Surprise me. If “several different cats” meant the 12 visible cards, the fix is a taxonomy re-parenting exercise, not a code change. Unblocker: confirm which reading you meant.
  • items 13 (second clause) and 16 — RESOLVED 2026-08-25: the fixture was retitled rather than re-imported. Quiz 77 is now General Knowledge Compact, which matches its qw_lang = en metadata and its English question rows; the slug allgemeinwissen-kompakt was deliberately left intact so existing evidence links and gallery routes keep resolving (verified: the route still returns the player, zero German title occurrences).
  • item 15 (second half) — OPEN by design, and the operator pre-approved leaving it (“if not easy then leave it as is for now”). Hiding “Mein QuizWizz” from navigation when logged out is not a plugin change: the bench navigation is Twenty Twenty-Five’s core/page-list block, which auto-lists every published page, and the footer additionally hardcodes a link to it. Not done here on purpose — overriding the theme’s header template part on the bench that produces the screenshot corpus would invalidate that corpus for a non-plugin reason, and making page 865 private would lock out logged-in subscribers, who are exactly the audience. Recommendation: replace the page-list block with an explicit navigation menu as a site-content task. The visible defect the operator reported (two identical cards) is fixed.
  • item 18 — RESOLVED 2026-08-25: presentation.layout_cols set from 2 to 1, so a worksheet is one question column with a 2×2 answer block per question (the earlier two-column sheet squeezed each answer cell to roughly 42mm). The 2×2 answer structure itself is independent of this setting.
  • item 09 reachability — NEW, found while verifying: the fine-tune step is implemented and now good, but unreachable with the shipped configuration. matrix.editor is {st: visitor, def: false} and no visitor-facing control offers the step, so Print goes straight to PDF; the step only opens with def: true (flipped for the verification, then restored). Recommendation: either expose a visitor opt-in in the Customize panel or make the step the default for the print outcome. Unblocker: which of the two.
  • mobile statistics rail height — NEW, a consequence of fixing the off-screen carousel: the rail is now 383px tall on a 390px viewport (previously 192px with three of five segments unreachable), pushing list-screen content to y=473 in an 844px viewport. Everything is on-screen; whether it should collapse on mobile is a design call. Recommendation: collapse it behind a one-line summary on mobile. Unblocker: your say-so.
  • delivery vehicle — RESOLVED 2026-08-25: prepared as two ordered no-index patches under handoff/2026-08-25-tndm/. Patch 1 quizwizz-tndm-remediation.patch (31 files, sha256 86cf4620977276f64c40704ca6215ec0329e1156678c262aa41fa77b10bbd7ca) carries the in-scope work and applies standalone to the baseline. Patch 2 quizwizz-tndm-adjacent-out-of-scope.patch (3 files, sha256 f78126ac793ddd372539f6d70395d8da6abce240111a2383e3186551e4765b62) carries the three adjacent fixes and is droppable; because it shares assets/css/qwizz-admin-editor.css with patch 1 it fails against a bare baseline, so the ordering is enforced by the patch itself rather than by a note. Both were proved to reconstruct the live tree byte-for-byte from a pristine baseline extract, with a clean header audit and no forbidden paths. See handoff/2026-08-25-tndm/README.md.
  • standing gates, still closed as instructed: publish — the live wiki still serves the 2026-08-21 build, so it lacks the Action-items table and now also this resolution record; and hardentndm.service hardening plus a nightly DATA_DIR backup timer. Both await the explicit words.