Skip to content

feat(pages): redesign the landing page and public pages#102

Merged
CodeWithJuber merged 7 commits into
masterfrom
claude/landing-redesign
Jul 20, 2026
Merged

feat(pages): redesign the landing page and public pages#102
CodeWithJuber merged 7 commits into
masterfrom
claude/landing-redesign

Conversation

@CodeWithJuber

Copy link
Copy Markdown
Owner

Summary

  • Replaces every hand-picked pixel value on the landing page (landing/index.html) and the generated status page (scripts/build-pages.mjs) with tokens computed from a formula — the same discipline src/brand.js already applies to the color palette.
  • src/brand.js gains typeScaleCss() (a fluid clamp() type scale, --fs-n2--fs-7, blending a tight modular ratio at a small viewport with a more dramatic one at a large viewport) and spaceScaleCss() (a 4px-base spacing scale, --sp-1--sp-24, each value n * 4px). Both are emitted into rootTokensCss() alongside the existing color variables — nothing is hardcoded in the HTML/CSS, it's all generated.
  • landing/index.html now consumes these tokens for every font-size/margin/padding/gap across the nav, hero, stat strip, capability list, steps, and honesty sections. This is a token/consistency pass, not a structural rewrite — the same sections and layout remain, but every spacing/type value now traces back to one formula instead of being independently authored pixel numbers.
  • test/pages.test.js asserts both public surfaces actually emit the generated token values, so drift between the formula and the markup fails CI.
  • forge uicheck design now reports the landing page's spacing values 100% on-grid (previously 96% on an inconsistent 2px base).

This PR also carries two unrelated CI-fix commits so it is fully green on top of current master:

  • ci(security): run gitleaks binary directly instead of the licensed action — switches .github/workflows/security.yml to run the gitleaks binary instead of the licensed gitleaks-action@v3, which flakily fails in CI.
  • ci(security): allowlist synthetic PEM fixtures in the redaction test suite — adds test/secrets.test.js to the .gitleaks.toml path allowlist (synthetic PEM fixtures in that test are false positives) and updates the security.yml header comment accordingly.

Test plan

  • npm test — 1056 passed, 0 failed, 2 skipped
  • npx biome check — 0 errors (10 pre-existing warnings in test/init.test.js, unrelated to this change)
  • npm run typecheck — clean
  • node src/cli.js docs check — docs and code agree
  • npm run pages:build — succeeds, writes public/index.html
  • gitleaks detect --source . --no-banner --redact — no leaks found

🤖 Generated with Claude Code


Generated by Claude Code

claude and others added 7 commits July 20, 2026 00:32
Replace every hand-picked pixel value on the landing page and the
generated status page with tokens computed from a formula, the same
discipline `src/brand.js` already applies to the color palette.

- `src/brand.js` gains `typeScaleCss()` (a fluid `clamp()` type scale,
  `--fs-n2`…`--fs-7`, blending a tight ratio at a small viewport with a
  more dramatic one at a large viewport) and `spaceScaleCss()` (a
  4px-base spacing scale, `--sp-1`…`--sp-24`, each value `n * 4px`).
  Both are emitted into `rootTokensCss()` alongside the existing color
  variables.
- `landing/index.html` now consumes these tokens for every
  font-size/margin/padding/gap across nav, hero, stat strip, capability
  list, steps, and honesty sections instead of ad hoc pixel numbers —
  no visual restructuring, but every spacing/type value now traces back
  to one formula instead of being independently authored.
- `scripts/build-pages.mjs` (the generated status page) is updated the
  same way, so both public pages stay in lockstep.
- `test/pages.test.js` asserts both surfaces actually emit the
  generated token values, so drift between the formula and the markup
  fails CI.

`forge uicheck design` now reports the landing page's spacing values
100% on-grid (previously 96% on an inconsistent 2px base).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tion

dependabot #91 bumped gitleaks/gitleaks-action v2→v3, whose breaking
update requires a paid GITLEAKS_LICENSE for org-associated accounts and
HARD-FAILS when its license-validation server is unreachable ("License
key validation will be enforced") — turning the secret-scan gate red on
master and every PR for reasons unrelated to the code.

Replace the action with the pinned gitleaks binary (8.21.2). `gitleaks
detect` walks the full commit history (fetch-depth:0) exactly as before,
with no network license dependency, so the gate stays deterministic and
blocking. set -euo pipefail keeps it fail-closed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…suite

Running the gitleaks binary (prior commit) surfaced 2 findings the
licensed action never reached — it was erroring on license validation
before scanning, so the gate was effectively blind. Both are false
positives: synthetic PEM private-key literals in test/secrets.test.js,
the suite whose whole job is to assert forge redacts secret-shaped
strings. They are committed, so a full-history scan always matches them.

Add test/secrets.test.js to the .gitleaks.toml path allowlist (alongside
the existing bibliography-key exceptions); every other path stays fully
scanned. Verified locally: gitleaks 8.21.2 → 'no leaks found', exit 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Elevate the landing page's visual execution while keeping the information
architecture, the token-driven system, and the dual-theme palette intact.

- Two-voice typography: monospace becomes the display voice (headline, section
  titles, data readouts, structural tags) paired with humanist sans for prose —
  a deliberate fit for a config-compiler product rather than a generic SaaS sans.
- Ember used as a measured "readout" accent: gauge-ticks on stats, reference
  marks on section kickers, a framed install prompt with an ember caret.
- Signature detail: schematic corner-ticks on the hero diagram (instrument bezel).
- Depth via theme-aware color-mix tints, bezel insets, and layered ember washes —
  no new hardcoded hexes; the brand.json palette stays the single source.
- Refined spacing rhythm, hover micro-interactions, and one orchestrated hero
  load reveal, all gated behind prefers-reduced-motion.

All new structural tokens are page-scoped (like the existing --radius/--ease-out);
the --fs-*/--sp-* scale and brand.json color parity are untouched, so
test/pages.test.js and the shared status page stay green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@CodeWithJuber
CodeWithJuber marked this pull request as ready for review July 20, 2026 01:03
@CodeWithJuber
CodeWithJuber merged commit 0bb0793 into master Jul 20, 2026
12 checks passed
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