Skip to content

Workbench

The workbench (DEC-0018) is the home for building-process meta: a Stripe-style bar fixed to the bottom of every page — marketing and docs. The site above it reads as a finished product’s site; everything about how it’s being built lives below.

  1. Collapsed bar — always present: “Workbench” + the current open-decision count, plus icon buttons on the right.
  2. Popovers — small widgets above the bar: the theme switcher (presets + custom fork, previews via localStorage) and the version lens (the ?v= slider). One popover open at a time; Escape or clicking elsewhere closes it.
  3. Panel — click Workbench (or the chevron) to expand a resizable panel hosting the mini-app at /workbench/ in an iframe with its own tabs: Decisions and Roadmap (the builder view, with Gate 3 blocker detail). Window controls sit at the panel’s top right: maximize ⤢ / restore ⤡ (a toggle — full height and back, keeping the previous height) and close ✕.

The panel is deliberately separate from the page: navigate the main site while a decision stays open below. Feature links inside the workbench roadmap target the main window (target="_top"); decision links stay in the panel. Open state, panel height, and the panel’s current page persist across main-site navigation (localStorage).

  • Production — the workbench ships (it is not dev-only): preview deployments need it for review and, later, time travel. private: true decisions still strip from production; the bar’s open-decision count counts them (a number leaks no content).
  • Full-page mode — every workbench route also works as a normal page (direct URL); the window controls hide there since there is no panel to control.
  • Maximized state persists like height does; the restore button (or a drag on the resize handle) always brings the previous height back, even after a reload.
  • Old URLs/decisions* redirects to the workbench equivalents.
  • Theme changes apply immediately to the open panel iframe as well as the host page.
  • Resize bounds — the panel clamps between 180px and 85% of the viewport.
4 open decisions