Skip to content

fix(web): color charts by format/engine, date x-axis, ms y-axis, subtler grid#2

Merged
connortsui20 merged 10 commits into
developfrom
ct/chart-readability
Jun 20, 2026
Merged

fix(web): color charts by format/engine, date x-axis, ms y-axis, subtler grid#2
connortsui20 merged 10 commits into
developfrom
ct/chart-readability

Conversation

@connortsui20

@connortsui20 connortsui20 commented Jun 20, 2026

Copy link
Copy Markdown
Member

Reworks the benchmark chart styling around an importance hierarchy, per review iteration. The four series that matter most — Vortex and Parquet on the datafusion/duckdb engines — get vivid, thicker lines so they pop; everything else (Lance, Arrow, vortex-compact, the DuckDB native format) is muted and thin so it recedes. Vortex owns a vivid green that stands out against the black/white chart chrome; Parquet is blue/cyan a notch quieter. Lines stay solid — color carries the signal.

Colors are theme-aware: a per-mode palette resolved from the page data-theme (or system preference), and open charts recolor when the theme toggles — Vortex's neutral-popping greens need this since one color can't read on both backgrounds. Also bundled: x-axis switched to dates, y-axis capped at ms, subtler gridlines, a pull_request preview deploy in web-deploy.yml (what gives this PR its preview), and a one-line .gitignore for .env*.

🤖 Generated with Claude Code

connortsui20 and others added 2 commits June 19, 2026 22:39
…ler grid

Match the v2 frontend's more-readable chart presentation, per review feedback:

- Series colors come from FORMAT (hue) + ENGINE (shade) -- Vortex is always a
  green, Parquet orange, etc. -- via colorForSeries(), reproducing the v2
  SERIES_COLOR_MAP exactly for known series with a format-hue fallback so any
  Vortex series stays green. Identity-based, so colors are stable across the
  ?n=all reshape without the old index-based assignStableColors machinery.
- X-axis shows datetime labels (Jun 19, 2026) instead of commit SHAs.
- Y-axis time unit caps at ms; a slow benchmark no longer auto-promotes to
  seconds, keeping time axes comparable in one unit.
- Grid lines use a subtle slate color instead of the heavier Chart.js default.

Adds colorForSeries/commitDateLabel tests; updates the ms-cap unit tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Keep local environment files (.env.local, etc.) out of git so secrets and
machine-specific config are never accidentally committed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
@connortsui20 connortsui20 force-pushed the ct/chart-readability branch from 2a3ced8 to 46f8adc Compare June 20, 2026 02:39
Add a pull_request trigger to web-deploy.yml (scoped to web/ and the workflow
itself) that builds and deploys a Vercel PREVIEW for the PR's branch, then posts
the preview URL back to the PR as a single sticky comment. Production deploys on
develop pushes are unchanged; fork PRs are skipped since they have no access to
VERCEL_TOKEN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
@github-actions

github-actions Bot commented Jun 20, 2026

Copy link
Copy Markdown

Vercel preview for 52292ea44b46e3c1b95ac6a9d81f90325a86d2cb: https://benchmarks-website-x8egujvgn-vortex-data.vercel.app

connortsui20 and others added 3 commits June 19, 2026 23:36
Replace the format-hue/engine-shade coloring with a visual hierarchy, all solid
lines. The four hero series (Vortex + Parquet on datafusion/duckdb) get vivid,
thicker lines; everything else (Lance, Arrow, vortex-compact, the DuckDB native
format) is muted and thin, so the comparisons that matter pop and the rest
recede. Vortex owns a vivid green -- a light/dark split per engine -- so it
stands out against the black/white chart chrome; Parquet is blue/cyan a notch
quieter.

Colors are theme-aware: a per-mode palette resolved from the page data-theme (or
system preference), and a MutationObserver + prefers-color-scheme listener
recolor open charts when the theme toggles. Vortex's neutral-popping greens need
this, since one color can't read on both backgrounds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Replace the per-mode tier palette with an explicit color per engine:format
chosen to read on both the light and dark card backgrounds. Vortex is the loud
hero (bright red on datafusion, neon green on duckdb), Parquet the secondary
(light/dark blue), vortex-compact its own purple, the duckdb native format gold,
and the rest muted/thin (lance neutral slate, datafusion:arrow orange).

Because the palette no longer changes with the theme, drop the chart's
theme-recolor path entirely: the MutationObserver on data-theme, the
prefers-color-scheme listener, currentMode(), and recolorForTheme(). seriesStyle
loses its mode parameter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Vercel's git integration is off on this project, so the CLI deploy never
produced GitHub's native "View deployment" button or an in-progress status.
Post them from the workflow itself: open a Deployment against the PR head
before the build (shows the in-progress spinner immediately), then flip it to
success with the preview URL (the button) or to failure. The sticky preview
comment stays as a second, inline surface.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
The palette keyed Vortex on the format string `vortex`, but the data calls it
`vortex-file-compressed`, so every series missed and fell to the gray fallback.
Key the hero on the real name, and add per-format defaults so the engine-less
compression-time series get their format's signature color instead of gray.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
The on-disk Vortex format is stored as `vortex-file-compressed`; render it as
plain `vortex` everywhere it is shown — filter chips, the chart legend and
tooltip, and the summary-card rankings. Presentation only: series keys, filter
allowlists, dataset labels, and overrides keep the real format string, so a
displaySeriesLabel pass rewrites just the displayed text.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Set each dataset's Chart.js draw order by importance: Vortex in front, then
Parquet, vortex-compact, the duckdb native format, lance, and arrow at the back,
with datafusion drawn ahead of duckdb within a format. The format term dominates
the engine term so the whole Vortex pair stays in front of the whole Parquet
pair. Lower order renders on top, and it also orders the legend the same way.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
@connortsui20 connortsui20 marked this pull request as ready for review June 20, 2026 04:47
@connortsui20 connortsui20 merged commit c95ee84 into develop Jun 20, 2026
6 checks passed
@connortsui20 connortsui20 deleted the ct/chart-readability branch June 20, 2026 04:47
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