feat: add dedicated marketing site - #8
Merged
Conversation
GitHub Pages site at web/ covering the AI review pipeline (multi-provider, line-level severity comments, rules presets, verdicts), reviewer personas, and real CLI/Action install steps. Follows the AxeForge relay brand kit and SEO pattern shared with heyra, rsvp-m5, and gumshoe.
…0/20)
Full 5-dimension impeccable audit (accessibility, performance, theming,
responsive, implementation integrity) on web/index.html. Score: 20/20.
Fixed 2 real bugs found via manual responsive verification (chromium
headless screenshots + scrollWidth checks at 375w/1440w), same bug class
as gumshoe's prior fix -- a grid/flex item's default min-width:auto lets
long unbroken content refuse to shrink below its intrinsic width:
- .usecase-card: the "One workflow, every repo" card's <code> (a long
unbroken uses:... token) grew past the card into the neighboring card
on desktop and blew out the grid to a page-wide horizontal scroll on
mobile. Added min-width:0 on the grid item + max-width:100% on the code.
- .install-step: the CLI install command and Action YAML snippet (inside
<pre white-space:pre>, whose min-content == its full unwrapped line)
pinned the flex item to that width, forcing page-wide horizontal
scroll on mobile. Added min-width:0 to the flex item so its own
pre { overflow-x: auto } correctly scrolls internally instead.
Verified via Playwright: documentElement.scrollWidth now equals
clientWidth at both 375px and 1440px (was 451 vs 375 on mobile before).
Detector (detect.mjs) flags 3 items, all triaged as non-issues:
- codex-grid-background: confirmed intentional cross-site AxeForge brand
convention (same pattern as heyra/rsvp-m5/gumshoe), not generated slop.
- single-font: false positive -- axeforge.css defines and applies both
--af-font-sans (Inter) and --af-font-mono (JetBrains Mono); this page
correctly layers mono declarations for code/terminal/kicker text on
top of the inherited sans body font.
- em-dash-overuse (33 flagged): ~70% is CSS custom-property names
(--af-accent etc.) and real CLI flags (--pr, --dry-run, --save-report,
...) matched by the detector's "-- " proxy, not prose dashes. The
actual 11 prose em-dashes are normal marketing-copy usage, not
saturation.
StructLint — 4 violation(s) found58/62 rules passed · 4 violation(s) detected against Files not matching any allowed naming pattern (3)
Directories not in the allowed list (1)
View full run · Powered by StructLint |
Team credit should stay at the org level, not name a specific contributor -- more people than one work on AxeForging repos.
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
Adds a dedicated marketing site for ReviewForge at
web/index.html(AxeForge brand kit,relayflavor, dark-only), plusrobots.txt/sitemap.xmland a resized OG/Twitter image.reviewforge review --pr 42 --persona eli --dry-runterminal feed (real severity tags critical/warning/suggestion, grounded in the README's learning-report example)go install github.com/AxeForging/reviewforge@latestcommand plus a real GitHub Action snippetdoc/banner.png→og-image.jpg, canonical,SoftwareApplicationJSON-LD)Impeccable audit — 20/20
Ran the mechanical detector plus a full manual 5-dimension audit (each scored 0-4):
:focus-visible, clean h1→h2→h3 hierarchy, emptyalton the decorative logo (adjacent text carries it),prefers-reduced-motionstops the auto-cycling interval but still seeds real content (state preserved, not killed), text contrast ≥6.9:1 for accent-as-text and ≥7.7:1 for muted text against the relay dark background.display=optional(no font-swap CLS), images are small (favicon/icon 7-9KB, OG image only used off-page for social cards).var(--af-*)tokens used throughout; the only hardcoded hex colors are the two severity-status dots (info/warn) — justified, since severity color-coding is core product semantics independent of brand flavor.scrollWidth/clientWidthcheck — found and fixed two real overflow bugs (see below).Bugs found and fixed
Two real page-wide horizontal-overflow bugs, same root-cause class as the one previously found in gumshoe's build — a grid/flex item's default
min-width: autorefuses to shrink below a long unbroken token's intrinsic width:.usecase-card: the "One workflow, every repo" card'suses: your-org/.github/.github/workflows/reviewforge.yml@mainsnippet grew past its card into the neighboring card on desktop, and blew out the whole grid into a page-wide horizontal scrollbar on mobile. Fixed withmin-width: 0on the grid item +max-width: 100%on the code span..install-step: thego install ...command and the GitHub Action YAML snippet live in<pre style="white-space: pre">, whose min-content width equals its full unwrapped line — that pinned the flex item wide enough to push the whole page into horizontal scroll on mobile. Fixed withmin-width: 0on the flex item, so its ownpre { overflow-x: auto }now correctly scrolls the long code line internally instead.Verified via Playwright:
documentElement.scrollWidthnow equalsclientWidthat both 375px and 1440px (was 451 vs 375 on mobile before the fix).Detector flags — all triaged as false positives
codex-grid-background: the hairline dot-grid hero background is an intentional cross-site AxeForge brand convention (same pattern used in heyra, rsvp-m5, gumshoe), not generated-UI slop.single-font: false positive —axeforge.cssdefines and applies both--af-font-sans(Inter) and--af-font-mono(JetBrains Mono); this page correctly layers mono declarations for code/terminal/kicker text on top of the inherited sans body font (verified by greppingaxeforge.css'sfont-familydeclarations).em-dash-overuse(flagged 33): roughly 70% of that count is CSS custom-property names (--af-accent, etc.) and real CLI flags (--pr,--dry-run,--save-report, ...) caught by the detector's--proxy, not prose dashes. The actual 11 prose em-dashes are normal, varied marketing-copy usage — not saturation.Known pre-existing issue (out of scope)
This repo has a known
GEMINI_API_KEYreliability problem (flagged in a prior stage). It's out of scope for this PR — no repo secrets access from this session to fix it — but it should be resolved before driving marketing traffic to this page, since the page markets Gemini as one of the three supported providers.Test plan
node detect.mjs --json web/index.html— 3 flags, all triaged (see above), no real findingsscrollWidth === clientWidthcheck at both breakpoints — passes (no horizontal overflow)