Skip to content

Feat/dashboard json artifacts - #344

Merged
kiwi0401 merged 8 commits into
stagingfrom
feat/dashboard-json-artifacts
Sep 8, 2026
Merged

Feat/dashboard json artifacts#344
kiwi0401 merged 8 commits into
stagingfrom
feat/dashboard-json-artifacts

Conversation

@kiwi0401

@kiwi0401 kiwi0401 commented Sep 8, 2026

Copy link
Copy Markdown
Member

No description provided.

kiwi0401 and others added 7 commits September 8, 2026 12:08
The artifacts panel was a fixed 46 percent of the chat row. It now has a
grab strip on its left edge: drag to widen or narrow it, double-click to
return to the default, and the width is remembered per browser.

The rules live in artifacts-panel-width.ts so they can be unit tested: a
360px minimum, and a maximum that always leaves a 420px transcript, both
recomputed from the measured row so a stored wide value on a small window
still leaves the transcript readable. The strip is also a keyboard
separator, arrows step (Shift steps further) and Home and End snap to the
bounds; key presses apply as intents against the live width so holding a
key keeps stepping. Until the row has been measured the panel keeps its
CSS width, so the first paint is unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Replace the governed, MCP-driven dashboard system with a single
artifacts/<name>.dashboard.json file the agent writes in the chat sandbox.
The existing file sweep syncs it; the artifacts panel renders it with a new
shared ECharts renderer package.

- signalpilot-plugin/skills/dashboard: JSON Schema (source of truth), skill,
  example dashboard.
- notebook-server: dashboard_sample_data and dashboard_screenshot MCP tools
  (schema validation, dataset loading, shared row-prep and chart checks,
  screenshot via a Node CLI: ECharts SSR SVG + resvg, no browser). The five
  governed authoring tools, readiness probe, and prompt section are removed.
- web/dashboard-renderer: DashboardRenderer (kpi, table, bar, line, area,
  pie, scatter; client-side filters; responsive 12-column layout) plus the
  print path and render-cli bundle used inside the notebook image.
- web: new "dashboard" file kind, DashboardFileView in the artifacts panel,
  tool cards for the two new tools, fixture + Playwright spec; the old
  /dashboards pages, components, lib, and vendored Lightdash contract are
  deleted.
- gateway: gateway/dashboard package, 31 routes, models, manage_dashboard
  MCP tool, and tests removed; migration 0027 drops the five
  gateway_dashboard* tables; connector dialects relocated under
  gateway/connectors; tool projections for the new tools.
- Dockerfile.notebook: node stage builds the render CLI; final image gains
  the node binary, bundle, resvg, and DM Sans.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XfZZecsk7TeJvfaLxD2d3g
…ed refresh

Milestone 2 of the dashboard rework. A chat dashboard file can be published
into an org-scoped gallery, where it has its own URL, immutable versions, and
a refresh schedule that re-produces its datasets.

Gateway: new gateway/dashboards domain (schema, datasets, checks, storage,
store, service, schedule, refresh, scheduler, serializers, prompts),
/api/dashboards* and /api/shared-dashboards routes, the publish route under
the chat file API, migration 0028 (published dashboards, versions,
refreshes), and a replica-safe scheduler tick. Refresh runs in sql mode
through the governed query executor or in agent mode as a seeded chat run;
either validates against the spec before swapping the live version, with
compare-and-set terminal writes and stale-row sweeps. Background loops move
out of main.py into gateway/background.

Web: /dashboards gallery, /dashboards/[slug] page (live filters, Refresh
now with polling, settings drawer for interval/anchor time/timezone/mode/
visibility/notifications, version history with restore and dataset
downloads, refresh history), /dashboards/shared/[token], the Publish dialog
in the chat artifacts panel, a fixture harness at /dashboards/test, and
Playwright coverage. Sidebar nav icons and groups split into their own
modules.

Notebook-server: the screenshot tool sends only the prepared rows of the
requested charts, bounds the payload, and reports unknown_chart and
payload_too_large in the contract envelope. The empty artifact collector
leftover is removed. The notebook image smoke-tests the render CLI in its
final layer.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XfZZecsk7TeJvfaLxD2d3g
The thinking indicator seeded its opening phrase from a module counter, so
the server and the client painted different text and React discarded the
server tree on hydration. The first render now always shows the first
phrase; the per-mount offset is applied in an effect.

The replay artifact spec expected the pre-dashboard fixture file count.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XfZZecsk7TeJvfaLxD2d3g
The file card shrank as a flex child of the scroll container and clipped
its content, so a dashboard taller than the panel could not be scrolled.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XfZZecsk7TeJvfaLxD2d3g
…m only

Everything stays behind the organization login. The share-token route, the
share page, the Share action, and the share_token column are removed
(migration 0029 rewrites any link rows to org and drops the column). The
API rejects visibility "link" with 422.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XfZZecsk7TeJvfaLxD2d3g
Staging's governed-dashboard fixes (MSSQL relation normalization, dbt context
without metric approvals, confirm_dashboard_custom_sql) apply to code this
branch removes; the removal wins. Everything else merges cleanly.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XfZZecsk7TeJvfaLxD2d3g
@vercel

vercel Bot commented Sep 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
signal-pilot Ready Ready Preview Sep 8, 2026 9:42pm UTC
signal-pilot-docs Error Error Sep 8, 2026 9:42pm UTC

Request Review

Drop the tests that only asserted retired tool names are absent, rename a
temp-dir prefix that still said dashboard-authoring, reword renderer
provenance comments that cited a deleted vendored path, and narrow the new
packages' export surface to what other modules actually use.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XfZZecsk7TeJvfaLxD2d3g
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant