feat(pages): redesign the landing page and public pages#102
Merged
Conversation
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>
…sign # Conflicts: # CHANGELOG.md
CodeWithJuber
marked this pull request as ready for review
July 20, 2026 01:03
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.
Summary
landing/index.html) and the generated status page (scripts/build-pages.mjs) with tokens computed from a formula — the same disciplinesrc/brand.jsalready applies to the color palette.src/brand.jsgainstypeScaleCss()(a fluidclamp()type scale,--fs-n2…--fs-7, blending a tight modular ratio at a small viewport with a more dramatic one at a large viewport) andspaceScaleCss()(a 4px-base spacing scale,--sp-1…--sp-24, each valuen * 4px). Both are emitted intorootTokensCss()alongside the existing color variables — nothing is hardcoded in the HTML/CSS, it's all generated.landing/index.htmlnow consumes these tokens for everyfont-size/margin/padding/gapacross 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.jsasserts both public surfaces actually emit the generated token values, so drift between the formula and the markup fails CI.forge uicheck designnow 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.ymlto run the gitleaks binary instead of the licensedgitleaks-action@v3, which flakily fails in CI.ci(security): allowlist synthetic PEM fixtures in the redaction test suite— addstest/secrets.test.jsto the.gitleaks.tomlpath allowlist (synthetic PEM fixtures in that test are false positives) and updates thesecurity.ymlheader comment accordingly.Test plan
npm test— 1056 passed, 0 failed, 2 skippednpx biome check— 0 errors (10 pre-existing warnings intest/init.test.js, unrelated to this change)npm run typecheck— cleannode src/cli.js docs check— docs and code agreenpm run pages:build— succeeds, writespublic/index.htmlgitleaks detect --source . --no-banner --redact— no leaks found🤖 Generated with Claude Code
Generated by Claude Code