Skip to content

Redesign jcamd.com as a title sequence: opening card, work as frames, one accent, light + dark - #19

Merged
jcdavis131 merged 10 commits into
masterfrom
claude/eye-jcamd-geospatial-layers-c2xpyx
Sep 23, 2026
Merged

jcdavis131 merged 10 commits into
masterfrom
claude/eye-jcamd-geospatial-layers-c2xpyx

Conversation

@jcdavis131

Copy link
Copy Markdown
Owner

What changed and why

Every page now sits on one shared design layer, assets/frame.css + assets/frame.js. The home page opens on the principal's name, set like a title card, and the work follows as a sequence of composed frames. All real links and claims are kept. No clients or metrics were invented.

Shared layer (all pages)

  • Tokens: a type scale, 8pt spacing, grid, easing (cubic-bezier(.2,.7,.1,1)) and one accent (#c23a22 in light, #e8553b in dark). Both palettes are checked for AA contrast.
  • Themes: pages follow prefers-color-scheme by default. A header toggle saves the viewer's choice in localStorage, and a head script applies it before first paint so there is no flash.
  • Type: Jost (OFL, latin subset, 26 KB) is self-hosted with font-display: swap, so the CSP is unchanged. It is used only for tracked titles and labels. Body text uses a tuned system stack with tabular numerals.
  • Header: symmetric: links on the left, the name centred, links and the theme toggle on the right. On mobile it becomes a centred menu that closes on Esc and still works without JS.
  • Footer: a centred footer, shared by every page.
  • Details: skip link, focus rings, selection colour, scrollbar, print styles, and scroll reveals that only run when reduced motion is off.
  • Icons and social cards: a new favicon set (SVG, favicon.ico, apple-touch icon, 192/512 icons, site.webmanifest). Each page gets a 1200×630 OG/Twitter card.

Home (index.html, assets/portfolio.css)

  • Opening card: a one-point-perspective line field with crop marks. The name, rule, lede and CTAs sit at the vanishing point. The title sequence plays once per session, any input skips it, it never runs under reduced motion, and it never hides content.
  • Work: six numbered frames (01/06 … 06/06): Embedding Atlas (eye.jcamd.com), Dottie, Vector Hoops (hoops.dumbmodel.com), the vector game suite, scout-cli, and Arxiviq (arxiviq.com). Each is centred with a small line-drawn plate.
  • Other sections: the timeline becomes a ledger, the principles a I–IV grid, and the stack a two-column list. Contact is a closing card that keeps the Alamo St Advisors link.
  • Lab: the Chips page now appears in the Lab. Before, it was only in the nav.

404 (404.html, new)

Uses the same opening-card composition, is marked noindex, and Vercel serves it automatically.

Family (family/)

  • The drafting-board tokens now point at the shared palette, so the page follows light/dark.
  • Heavy 2px borders and block shadows are replaced with hairlines.
  • The hero is a centred title card with an on-page contents row. The wheel SVG uses theme colours.
  • All tool behaviour (profiles, feed, chart) is unchanged.

Graphify (graphify/)

  • Restyled on the shared tokens in both themes.
  • The header badges are gathered into one quiet facts row; every fact is kept.
  • Inputs and selects have labels, and the tabs are a sticky, tracked row.
  • The vis-network graph re-renders with theme colours when the theme changes.

Chips (chips/)

  • Shared header and footer. The text sections follow the theme.
  • The 3D stage and scale canvases re-declare the dark token set, so they stay dark screens in both themes.
  • The 3D .label class is scoped so it no longer collides with the shared labels.

Smoke (scripts/smoke.py)

It now also checks every page for title, description, viewport, skip link and OG image. It also checks that every local asset a page references exists, and that each indexable page is in sitemap.xml.

Screenshots

docs/redesign/{home,chips,family,graphify,404}-{desktop,mobile}-{light,dark}.png (1440×900 and 390×844).

Verification

  • python3 scripts/smoke.py → smoke ok: 22 links, 3 required present, no retired hosts, 5 pages checked
  • Served with python3 -m http.server and captured every page with Playwright (Chromium) at 1440 and 390, in light and dark. scrollWidth equals the viewport on every page (no horizontal scroll), with no page or console errors.
  • Scripted interaction test: the mobile menu opens and closes (Esc works), the theme toggle persists across pages, and the first Tab lands on the skip link.

Notes

🤖 Generated with Claude Code

https://claude.ai/code/session_01WH1hPpf3u1xWecEhS6AHD2


Generated by Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WH1hPpf3u1xWecEhS6AHD2
The game-suite links were removed from index.html on purpose; the smoke
list still required all six, so smoke failed on master.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WH1hPpf3u1xWecEhS6AHD2
One display face (self-hosted Jost) for titles and labels, a tuned system
stack for text, a single accent, and composed light and dark palettes.
Shared header with theme toggle and mobile menu, shared footer, focus,
selection, scrollbar, reduced-motion gate and print styles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WH1hPpf3u1xWecEhS6AHD2
Name set as an opening title card over a one-point-perspective field,
flagship projects as numbered centred frames, a ledger timeline, principles,
lab, stack and a closing contact card. Same links and copy as before; the
chips page now also appears in the Lab. 404 page in the same system.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WH1hPpf3u1xWecEhS6AHD2
Aliases the drafting-board tokens onto the shared palette so the page follows
light/dark, swaps heavy borders and block shadows for hairlines, sets titles
and labels in the display face, and centres the hero as a title card with
an on-page contents row. Shared header/footer; all tool behaviour unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WH1hPpf3u1xWecEhS6AHD2
Restyles the viewer on the shared tokens in both themes, gathers the header
badges into one quiet facts row, labels the inputs, and re-renders the
vis-network graph with theme colours when the theme changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WH1hPpf3u1xWecEhS6AHD2
Text sections follow the shared light/dark theme; the 3D stage and scale
canvases re-declare the dark token set so they stay composed as screens.
Scopes the 3D label class so it no longer collides with shared labels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WH1hPpf3u1xWecEhS6AHD2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WH1hPpf3u1xWecEhS6AHD2
@vercel

vercel Bot commented Sep 23, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated
jcamd Ready Ready Preview Sep 23, 2026 5:22pm UTC

Request Review

@jcdavis131
jcdavis131 marked this pull request as ready for review September 23, 2026 17:27
@jcdavis131
jcdavis131 merged commit 6b73a4d into master Sep 23, 2026
4 checks passed

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved. Cursor Bugbot was not present after the first check poll, so that signal was skipped; no approval policy requires human review, and this automation had no prior approval. No reviewers were assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router and Approver

This branch was successfully deployed

1 active deployment
Preview — f6c4da70 Deployed Sep 23, 2026 by vercel[bot]
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.

2 participants