Skip to content

Redesign MCP dashboard: sleek grayscale notebook view#781

Merged
Andrew Gazelka (andrewgazelka) merged 1 commit into
mainfrom
mcp-dashboard-grayscale-redesign
Jun 6, 2026
Merged

Redesign MCP dashboard: sleek grayscale notebook view#781
Andrew Gazelka (andrewgazelka) merged 1 commit into
mainfrom
mcp-dashboard-grayscale-redesign

Conversation

@andrewgazelka

@andrewgazelka Andrew Gazelka (andrewgazelka) commented Jun 6, 2026

Copy link
Copy Markdown
Member

Completely redesigns the packages/mcp dashboard from the old Tokyo Night palette to a flat, square, grayscale look.

The old design had a glaring white card behind every rich output (DataFrames, plots) sitting on a dark page, plus a colorful blue/green/purple palette that read as busy. This swaps in a layered neutral grayscale where status is conveyed by brightness rather than hue, with a single reserved muted red for errors.

What changed:

  • dashboard.py: CSS-variable grayscale palette, no gradients/glow/rounded corners/animation. Running jobs get a filled light status chip and a white left rail; errors get the one red. Rich notebook output now renders on a dark inset instead of a white box, so tables and plots blend into the page. Sticky top bar with a live running/total counter.
  • view/__init__.py: recolors the polars DataFrame palette to grayscale so tables match the dashboard (dtypes shown by lightness, not color).

Validated by serving the real aiohttp app over a populated SQLite store and screenshotting the rendered page with playwright (running/done/error/cancelled jobs, a DataFrame, a matplotlib plot, and live resources).

Generated with Claude Opus 4.8.

Note

Redesign MCP dashboard with a grayscale notebook view and sticky execution header

  • Replaces the dashboard UI in dashboard.py with a new responsive dark grayscale theme, including a sticky header that shows running and total execution counts updated via api/jobs.
  • Switches the view palette in init.py from a tokyo-night color scheme to a grayscale palette where lightness indicates data type (numbers brightest, null darkest).
  • Moves the shared esc HTML-escaping function to module scope, removing duplicated definitions inside per-job mapping functions.
  • Fixes a JS error when j.output is undefined by defaulting to an empty string before calling String.includes.

Macroscope summarized e7c1c3b.

Replace the Tokyo Night palette with a flat, square, grayscale design.

dashboard.py:
- Layered neutral palette via CSS variables; status conveyed by brightness
  (running = filled light chip + white left rail) with one reserved muted
  red for errors. No gradients, glow, rounded corners, or animation.
- Rich notebook output (DataFrames, HTML) now renders on a dark inset
  instead of a glaring white card, so it blends into the page.
- Sticky top bar with a live running/total counter; uppercase section
  and status labels with letter-spacing.

view/__init__.py:
- Recolor the polars DataFrame `_PAL` to grayscale so tables match the
  dashboard; dtypes are distinguished by lightness, not hue.
@andrewgazelka Andrew Gazelka (andrewgazelka) merged commit 104bf2e into main Jun 6, 2026
10 checks passed
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@andrewgazelka Andrew Gazelka (andrewgazelka) deleted the mcp-dashboard-grayscale-redesign branch June 6, 2026 17:54
@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Blast radius

33 of 1106 checks would rebuild between base 536e64b and head 16c720d.

pie showData title Rebuilt checks by category
  "image" : 15
  "rust" : 15
  "blast" : 1
  "eval" : 1
  "lint" : 1
Loading
flowchart LR
  c0["ix-mcp-view-python-module"]
  c1["ix-notebook-mcp-module"]
  c2["blast-radius-test"]
  c3["lint"]
  c4["rust-mcp.viewSmoke"]
  c0 --> k1["eval"]
  c0 --> k2["image-development-base"]
  c0 --> k3["image-kernel-dev"]
  c0 --> k4["image-minecraft"]
  c0 --> k5["image-minecraft-bedrock"]
  c1 --> k1["eval"]
  c1 --> k2["image-development-base"]
  c1 --> k3["image-kernel-dev"]
  c1 --> k4["image-minecraft"]
  c1 --> k5["image-minecraft-bedrock"]
Loading
changed checks (33)
  • blast-radius-test
  • eval
  • image-development-base
  • image-kernel-dev
  • image-minecraft
  • image-minecraft-bedrock
  • image-minecraft-status
  • image-minecraft_1.21.11-fabric
  • image-minecraft_1.21.11-paper
  • image-minecraft_26.1.2-fabric
  • image-minecraft_26.1.2-paper
  • image-minecraft_26w17a-fabric
  • image-minestom
  • image-neovim-ci
  • image-remote-desktop
  • image-symphony-codex
  • image-test-cluster-bootstrap
  • lint
  • rust-mcp.bindDefaultSmoke
  • rust-mcp.dataLibsBundled
  • rust-mcp.engineBundled
  • rust-mcp.evalSmoke
  • rust-mcp.exaBundled
  • rust-mcp.fffBundled
  • rust-mcp.gmailLibsBundled
  • rust-mcp.googleAuthBundled
  • rust-mcp.ixGoogleBundled
  • rust-mcp.richSmoke
  • rust-mcp.runtimeSmoke
  • rust-mcp.searchBundled
  • rust-mcp.serverTools
  • rust-mcp.tuiBundled
  • rust-mcp.viewSmoke

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