Repository navigation
feat: cozy pixel retheme, a landing page and a cross-repo dashboard - #1
Merged
Merged
Conversation
Reworks the product around a pixel-art visual language: a mint-sage canvas with warm cream cards, a coral accent, deep forest type, and monospace everywhere. Dark mode becomes a forest night rather than reverting to neutral grey. Routing changes shape. `/` was the tool itself — a paste-a-URL form that had to reach the backend before it could render anything useful. It is now a static landing page, and the tool moved to `/analyse` unchanged. The three shells that result (marketing header, app header, dashboard rail) share nothing visually, so the root layout stops rendering chrome and each route group owns its own. New surfaces: - `/` — landing page with a hand-built SVG pixel scene. Light mode is a rabbit fishing from a dock; dark mode is the same rabbit at a campfire. Both are in the DOM and CSS picks one, so the correct scene is in the server-rendered HTML with no hydration mismatch. Four rotating signs per scene on a 36s cycle. The loop starts after mount, not during: an infinite animation stops a Lighthouse filmstrip reaching visual completeness, which is the same reason the skeleton pulse is capped at four iterations. - `/dashboard` — cross-repo analytics. No new endpoint; every figure derives from the existing `listReports` via `lib/reports.ts`, which also absorbs the grouping that was inline in the history page so the two cannot drift. Three bugs found while checking this in a browser, all pre-existing or introduced and fixed here: - `danger` buttons used `text-white`, which measured 2.62:1 against the dark theme's critical pink. The severity ramp's dark values had only ever been checked as foreground text, never as a button background. Now 6.33:1. - The chart's x axis always drew the last tick *and* every nth tick, so with twelve points the final two overprinted into an unreadable smear. - Score-chart labels formatted dates on both sides of hydration, and the server and browser do not share a locale (20:35 vs 08:35 pm). They are now formatted once on the server and passed down. The severity ramp was re-measured from scratch rather than carried over: the canvas is no longer white, and every foreground step now clears 4.5:1 against the canvas, the card surface, and its own chip in both themes. `critical` moved to a deep oxblood so a Critical chip cannot be mistaken for the coral call to action, and the accent split into a text-bearing `--accent` that passes AA and a decorative `--accent-soft` at the artwork's lighter tone. Findings density, the code viewer, the shiki rules and the diff colours are deliberately untouched. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012kY2ubYamHxfA1B49oJr2p
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reworks the product around a pixel-art visual language: a mint-sage canvas with warm cream cards, a coral accent, deep forest type, and monospace everywhere. Dark mode becomes a forest night rather than reverting to neutral grey.
Routing changes shape.
/was the tool itself — a paste-a-URL form that had to reach the backend before it could render anything useful. It is now a static landing page, and the tool moved to/analyseunchanged. The three shells that result (marketing header, app header, dashboard rail) share nothing visually, so the root layout stops rendering chrome and each route group owns its own.New surfaces:
/— landing page with a hand-built SVG pixel scene. Light mode is a rabbit fishing from a dock; dark mode is the same rabbit at a campfire. Both are in the DOM and CSS picks one, so the correct scene is in the server-rendered HTML with no hydration mismatch. Four rotating signs per scene on a 36s cycle. The loop starts after mount, not during: an infinite animation stops a Lighthouse filmstrip reaching visual completeness, which is the same reason the skeleton pulse is capped at four iterations./dashboard— cross-repo analytics. No new endpoint; every figure derives from the existinglistReportsvialib/reports.ts, which also absorbs the grouping that was inline in the history page so the two cannot drift.Three bugs found while checking this in a browser, all pre-existing or introduced and fixed here:
dangerbuttons usedtext-white, which measured 2.62:1 against the dark theme's critical pink. The severity ramp's dark values had only ever been checked as foreground text, never as a button background. Now 6.33:1.The chart's x axis always drew the last tick and every nth tick, so with twelve points the final two overprinted into an unreadable smear.
Score-chart labels formatted dates on both sides of hydration, and the server and browser do not share a locale (20:35 vs 08:35 pm). They are now formatted once on the server and passed down.
The severity ramp was re-measured from scratch rather than carried over: the canvas is no longer white, and every foreground step now clears 4.5:1 against the canvas, the card surface, and its own chip in both themes.
criticalmoved to a deep oxblood so a Critical chip cannot be mistaken for the coral call to action, and the accent split into a text-bearing--accentthat passes AA and a decorative--accent-softat the artwork's lighter tone.Findings density, the code viewer, the shiki rules and the diff colours are deliberately untouched.
Claude-Session: https://claude.ai/code/session_012kY2ubYamHxfA1B49oJr2p
What and why
Checks
npm run lintnpm run typechecknpm run testnpm run build— several App Router mistakes only appear hereIf this changes the API contract
lib/types.tsmatches the backend'sapp/schemas.py, and the backend PRis linked
Interface changes
If this touches security
The markdown renderer, the OAuth callback, or
lib/session.ts— say so here.