99 Club Studio v1.21.2 QA

Date: 10 September 2026

Issue reproduced

The v1.21.1 screenshot showed the workspace switcher as native browser buttons and retained the old left-heavy Custom grid. This means the new custom-workspace.css deployment asset was not being applied. Without those CSS rules, the view buttons can change classes without any visible panel-width change, making them appear non-functional.

Fix

  • Workspace switcher/layout rules moved into the established Custom-only custom-graphs.css.
  • _pages/99-club-custom.md now loads custom-graphs.css?v=2 and no longer depends on custom-workspace.css.
  • Workspace switching uses persistent delegated click handling on #tt99-root, so Custom UI re-renders cannot lose the handler.

Automated tests

  • node --check assets/99club/custom-app.js: PASS
  • node --check assets/99club/custom-graphs.js: PASS
  • node --check assets/99club/custom-piecharts.js: PASS
  • original tests/smoke.js: PASS
  • tests/custom-visual-smoke.js: PASS

Chromium interaction test

A local in-memory page was built from the actual production CSS/JS with no custom-workspace.css loaded. Chromium 1700 px desktop viewport produced:

  • Balanced: 520 px options / 872 px preview
  • Options: 720 px options / 672 px preview
  • Preview: 420 px options / 972 px preview
  • active-state button updated on every click
  • after forcing a normal Custom UI re-render, the view switcher still worked
  • sticky control remained at 10 px viewport top during scroll
  • JavaScript page errors: none

Regression boundary

No changes to pie/coordinate/graph generation logic, public 99 Club generation, PDF layout, QR logic, or public Help content.