You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: open favorited Library queries as a read-only Dashboard (#149 D1)
Phase D1 of the Dashboard epic: a standalone `/sql/dashboard` route (the same
served artifact, reached by a client-side branch) that renders the favorited
subset of the Library as read-only chart tiles. No new runtime dependency, no
build change.
- Route: widen the SPA `http_handlers` regex to `^/sql(/dashboard)?/?$` and
branch on `location.pathname` in `bootstrap` (renderDashboard vs renderApp).
Config/OAuth resolve from the `/sql` base on the dashboard route (configBase).
- Auth: a one-time, same-origin `postMessage` credential handoff from the
opener (both target origin and peer window pinned), re-seeding the child's
in-memory auth (token/authMode/idp/chCtx.origin) and its own per-tab
sessionStorage. A cold/bookmarked visit falls back to the normal login flow.
- Tiles: each favorite runs read-only (`readonly=2`, writes rejected
server-side) and renders via the existing `renderChart`/`autoChart` seam;
single-row (KPI) and non-chartable favorites are skipped with an "N not
shown" header note.
- File menu gains "Open as dashboard" (enabled once ≥1 query is favorited).
Pure logic in `core/dashboard.js` + `core/auth-handoff.js` (100%); net helper
`queryDashboardTile`; render in `ui/dashboard.js`. Tests added to the per-file
coverage gate; README (routes + redirect-URI note) and CHANGELOG updated.
KPI tiles, global filters, drag-to-arrange layout, per-tile controls, and
export follow in #149 D2–D7.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GyLqZGyUkm7mP6WhZCkodj
0 commit comments