diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml
index e34c500..2f77878 100644
--- a/.github/workflows/static.yml
+++ b/.github/workflows/static.yml
@@ -1,28 +1,25 @@
-# Simple workflow for deploying static content to GitHub Pages
+# Deploys the public site to GitHub Pages: the landing page at the site root and the
+# generated live-status page at /status/. Only the assembled _site/ directory is
+# published — never the whole repository. Both pages share one design system and are
+# gated by `forge uicheck design` (see test/pages.test.js and the uicheck suite).
name: Deploy static content to Pages
on:
- # Runs on pushes targeting the default branch
push:
branches: ["master"]
-
- # Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
-# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
-# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
-# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+# Allow only one concurrent deployment, but let in-progress production deploys finish.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
- # Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
@@ -31,13 +28,24 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ - name: Build site
+ # build-pages.mjs is node-stdlib-only — no npm ci needed. BUILD_PAGES_LIVE=1
+ # refreshes public GitHub counters (best-effort; the build succeeds without it).
+ run: |
+ BUILD_PAGES_LIVE=1 node scripts/build-pages.mjs
+ mkdir -p _site/status
+ cp landing/index.html _site/index.html
+ cp public/index.html _site/status/index.html
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
- # Upload entire repository
- path: '.'
+ path: "_site"
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a60133c..422d62b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -47,6 +47,17 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
claim ids. `reconcileFacts` now only tombstones locally-authored claims, so a merged
teammate fact survives `forge recall consolidate`. Legacy formats are still written —
full retirement is the next step.
+- **Professional redesign of the public site, gated by forge's own UI system.** The
+ landing page (`landing/index.html`) and the generated status page
+ (`scripts/build-pages.mjs` → `public/index.html`) are rebuilt on one design system —
+ the `forge dash` eight-color warm-ink/ember palette, a strict 4px spacing base, three
+ radius levels, one shadow — and both now pass `forge uicheck design` **and** the
+ rendered `forge uicheck visual` gate (the old pages failed with 15–19 accumulated
+ colors and 5–9 radius levels; a project fingerprint claim is minted so conformance is
+ checked too). Scroll-reveal is JS-gated progressive enhancement (no-JS UAs, crawlers,
+ and reduced-motion users see the full page), and the Pages workflow (`static.yml`) now
+ builds and deploys an assembled `_site/` — landing at the site root, status page at
+ `/status/` — instead of uploading the entire repository as the artifact.
## [0.6.0] - 2026-07-07
diff --git a/landing/index.html b/landing/index.html
index 640de9c..30454ca 100644
--- a/landing/index.html
+++ b/landing/index.html
@@ -3,39 +3,67 @@
-
- Forge Cortex — the self-correcting memory your AI agent is missing
-
+ forgekit — one brain for every AI coding agent
-
-
-
+
+
+
+
+
+
+
+
+
+
-