- Recent, failed and write runs sort by start time (not insert order).
- Activity by User has four columns (last run moves under the user), the
host readability rule's maximum.
- No widget-permission throw inside the renderer: the middleware checks
widget permissions, and host guards render every widget.
- Notebook record view: plain section titles (Cells, Shared With, Pinned
Results, Versions, Runs) instead of join names; Runs newest first,
Versions newest first; the Open in Runner widget is not a nested card.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner spec: the SQL Workbench app home is an information dashboard like
the other app homes, the notebook UI is its own nav entry ("Runner"), and
the nav lists only the main tables; sub-tables are relations on a notebook.
- Home: summary tiles and links, runs per day, recent notebooks, recent
runs, slowest and failed queries, most-used notebooks, shared notebooks,
committed writes, and (admins only) activity by user. Read through core
actions in the viewer's session, so permissions and record locks apply;
honest empty and no-permission states. Full width, inline styles only.
- Runner: sqlWorkbenchRunner child app showing the SQL_WORKBENCH widget
(/app/sqlWorkbenchRunner?notebook=<id>).
- Nav: Runner, sql_workbench_notebook, sql_workbench_execution. Cells,
versions, pinned results and shares stay standard tables (URL, API) as
child lists on the notebook; new Runs child list (notebook -> execution
join, locked to the viewer's runs) and an Open in Runner widget.
- SqlWorkbenchIntegrations: opt-in ESB and Quick Search hooks for the main
tables, no dependency on either module.
- Tests: home widgets (H2 and Postgres), nav structure, child lists,
hooks. README, CHANGELOG, UPGRADE, CLAUDE/AGENTS.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>