Skip to content

feat(sections): PR1 — shared design foundation (tokens, panel primitives, shared.js) [clean]#32

Merged
BunsDev merged 3 commits into
mainfrom
clean/overhaul-foundation
Jul 7, 2026
Merged

feat(sections): PR1 — shared design foundation (tokens, panel primitives, shared.js) [clean]#32
BunsDev merged 3 commits into
mainfrom
clean/overhaul-foundation

Conversation

@BunsDev

@BunsDev BunsDev commented Jul 7, 2026

Copy link
Copy Markdown
Member

Foundation for the five-section overhaul: shared tokens, .panel/.panel-inset primitives, unified --oc-focus-ring, .reveal-stagger, .swap-fade, a section divider, and src/scripts/shared.js (fadeSwap, wireRadioGroup, typewriter, grid2DNav). Purely additive.

Note: this PR's diff also contains the pending hero-redesign commits that are on local main but not yet on origin/main — my work builds on them. Land those on main (or merge this) and the diff clears.


Clean re-cut of the section overhaul: a concurrent session had interleaved two commits (px→rem conversion, multi-screen support) into the original stack (#26#31). Rebuilt in an isolated worktree with only my six signed commits. Supersedes the original PR.

🤖 Generated with Claude Code

BunsDev and others added 3 commits July 6, 2026 22:53
- New thesis headline 'Summon agents that remember.' with Fraunces
  italic as the single display-type moment (new dep:
  @fontsource-variable/fraunces, italic axis only)
- Download CTA collapsed from 4-chip grid + heading + badge into one
  platform-detected primary button and a quiet 'also on' mono row;
  JS retargets the primary and keeps all four platforms one click away
  (works fully without JS)
- Terminal card restructured as a real session: typed command on top,
  familiar state (sigil, role, memory restored) as output, roster tabs
  with arrow-key tablist navigation
- Signature element: continuity timeline across the hero base plotting
  a familiar's memory over 47 days, ending in a pulsing 'today' node;
  replaces the icon feature grid that duplicated ProofGrid; rotates to
  a vertical thread on mobile
- Contrast bumps on small mono labels; reduced-motion and no-JS paths
  verified; verify-static.mjs assertions updated to the new CTA

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Terminal cursor hugs the end of the typed command again (flex: 0 1
  auto instead of grow, still shrinkable for long commands)
- Orchestrated hero load: copy lands, terminal answers (+0.12s), then
  the continuity thread grows node by node left to right (+0.28-0.70s)
- Reword Architecture.astro frontmatter comment — the literal '<script>'
  text tripped vite's dep-scanner on every dev boot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…shared.js

Groundwork for the five-section overhaul (Architecture, HowItWorks,
Compare, QuickStart, Ecosystem). Purely additive; no element consumes
the new utilities yet, so there are no visual changes beyond a subtle
per-section chapter divider.

- global.css: motion/layout tokens (--ease-out, --dur-*, --section-py,
  --gutter), shared panel surfaces (--panel-bg, --panel-shadow, accent
  scale), .panel/.panel--arrival + .panel-inset (with .is-active and
  guarded hover), .swap-fade content-swap, a unified :where() focus ring
  consuming the previously-unused --oc-focus-ring, .section-header--wide,
  a faint .content-section::before chapter divider, and a .reveal-stagger
  utility (existing grids keep working; extended to 6 items).
- shared.js (new): fadeSwap, wireRadioGroup, typewriter, grid2DNav —
  extracted from the hero + HowItWorks so later sections reuse them.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 7, 2026 05:53
@vercel

vercel Bot commented Jul 7, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
coven Ready Ready Preview Jul 7, 2026 5:53am
coven-landing Ready Ready Preview Jul 7, 2026 5:53am

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Establishes a shared design/motion foundation for the upcoming section overhaul (tokens, panel primitives, focus-ring + reveal utilities) and adds a new src/scripts/shared.js helper module; this PR also includes a substantial Hero + Download CTA redesign and updates the static verification script accordingly.

Changes:

  • Add new global tokens and primitives (.panel, .panel-inset, .swap-fade, unified focus ring, .reveal-stagger, section divider) and update Hero styling (terminal/continuity timeline).
  • Introduce src/scripts/shared.js with reusable interaction helpers (fadeSwap, wireRadioGroup, typewriter, grid2DNav).
  • Rework the Download CTA into a single retargetable primary button + “also on” row, and update scripts/verify-static.mjs checks.

Reviewed changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/styles/global.css Adds design tokens/primitives, focus ring + reveal utilities, section divider, and extensive Hero/CTA styling updates.
src/scripts/shared.js New shared interaction helper module for later section PRs.
src/scripts/main.js Updates Hero terminal behavior and rewrites Download CTA platform retargeting logic.
src/pages/index.astro Adds Fraunces variable font import for Hero display emphasis.
src/components/Hero.astro Updates Hero content/structure (terminal output + roster tabs + continuity timeline).
src/components/DownloadCTA.astro Changes CTA markup to single primary link + alt platform row, adds data attributes for JS retargeting.
src/components/Architecture.astro Minor comment tweak (no functional change).
scripts/verify-static.mjs Updates expected CTA labels/order and tightens CTA-scoped assertions.
package.json Adds @fontsource-variable/fraunces dependency.
pnpm-lock.yaml Locks @fontsource-variable/fraunces@5.2.9.
Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/components/Hero.astro
Comment on lines +87 to +90
<div class="hero-card-roster" role="tablist" aria-label="Switch familiar">
<button class="roster-tab active" type="button" data-familiar="forge" role="tab" aria-selected="true">Forge</button>
<button class="roster-tab" type="button" data-familiar="charm" role="tab" aria-selected="false" tabindex="-1">Charm</button>
<button class="roster-tab" type="button" data-familiar="sage" role="tab" aria-selected="false" tabindex="-1">Sage</button>
Comment thread src/scripts/main.js
Comment on lines +322 to 331
if (detected !== 'mac' && releasesUrl) {
var macAlt = document.createElement('a');
macAlt.className = 'download-alt';
macAlt.setAttribute('data-alt-platform', 'mac');
macAlt.href = releasesUrl;
macAlt.textContent = 'macOS';
var altsRow = cta.querySelector('.download-alts');
var kicker = altsRow && altsRow.querySelector('.download-alts-kicker');
if (kicker) kicker.insertAdjacentElement('afterend', macAlt);
}
Comment thread src/styles/global.css
Comment on lines +194 to +197
:where(a, button, [role="button"], [role="tab"], [tabindex="0"]):focus-visible {
outline: none;
box-shadow: var(--oc-focus-ring);
}
Comment thread src/scripts/shared.js
Comment on lines +13 to +24
export function fadeSwap(el, repaint, opts) {
var ms = (opts && opts.ms) || 200;
if (!el || !motionOn()) {
if (repaint) repaint();
return;
}
el.classList.add('is-swapping');
setTimeout(function () {
if (repaint) repaint();
el.classList.remove('is-swapping');
}, ms);
}
Comment thread src/scripts/shared.js
Comment on lines +77 to +101
export function grid2DNav(nodes, cols, onFocus) {
var order = Array.from(nodes);
if (!order.length) return;
function move(idx) {
idx = Math.max(0, Math.min(order.length - 1, idx));
order.forEach(function (n, k) { n.setAttribute('tabindex', k === idx ? '0' : '-1'); });
order[idx].focus();
if (onFocus) onFocus(order[idx], idx);
}
order.forEach(function (node, i) {
node.addEventListener('keydown', function (e) {
var handled = true;
switch (e.key) {
case 'ArrowRight': move(i + 1); break;
case 'ArrowLeft': move(i - 1); break;
case 'ArrowDown': move(i + cols); break;
case 'ArrowUp': move(i - cols); break;
case 'Home': move(0); break;
case 'End': move(order.length - 1); break;
default: handled = false;
}
if (handled) e.preventDefault();
});
});
}
@BunsDev
BunsDev merged commit b94d470 into main Jul 7, 2026
3 checks passed
@BunsDev
BunsDev deleted the clean/overhaul-foundation branch July 7, 2026 11:34
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