What's new
The release record
Every release, dated, in the words the release process generated. Not a roadmap — a record.
Anyone can say a platform is actively developed. This is the list, with dates, and it is generated when a release is cut rather than written afterwards — so it is current when we are shipping and visibly stale when we are not. That seemed the honest way to make the claim.
Most recent release merged into this site: .
Releases
v0.43.0
The brand tokens finally reach the page, a nav menu that closes, and the render gates promoted to blocking (Per-file upgrade map: `WHATS-CHANGED.md` at this version.)
v0.3.0
**New: the quality loop ships with your copy.** Every clone now carries working CI (`.github/workflows/verify.yml`: template contract + accessibility smoke) and a local pre-flight hook (`.githooks/pre-push`, auto-armed by install) — the same checks the upstream template runs on itself, including a ~5s fast path for copy-only changes. **New: the upgrade path is machinery, not words.** `template.lock.json` (core hash-lock) + `npm run upgrade:check` ship in both layouts; `verify` runs the drift check automatically. **New: dashboard self-serve** — Settings → Analytics (GA4/GTM/Meta, live per-org), Settings → Giveaway rules (sweepstakes legal, live on the public entry page), Settings → Launch readiness (the go/no-go checklist), and an auto-tracked "Check you're ready to launch" step in Getting started. **New: the winner moment** — draw winners (confirm-guarded), live entry count, ship-to addresses, one-click CSV export; shared entry links unfurl with the real event's name and image; demo/mock mode covers the full entry → confirmation → share flow. **Action required:** none — additive. If you previously hand-rolled CI, compare it with the shipped workflow and keep whichever you prefer.
v0.2.0
**New: curated public brand palettes** (`tenant.brandPalette` in `site.config.ts`). Pick one of nine palettes designed to work together — `blue`, `navy`, `slate`, `teal`, `emerald`, `forest`, `rose`, `orange`, `violet` — instead of hand-picking a hex. Every curated palette is machine-proven legible on the public pages (link text, CTA fill + hover, focus ring) by the extended `scripts/check-theme-catalog.mjs` public-surface proof, which runs in `pnpm verify`. - `brandColor` (custom hex) still works as the escape hatch and now derives the CTA text color automatically (`readableOn`), so a light custom brand can no longer ship a white-on-light button. - The generated favicon, OpenGraph image, and PWA `theme_color` resolve through the same precedence (`brandPalette` → `brandColor` → default), so assets always match the live brand. - **Touches files you may have modified?** Only if you edited `app/layout.tsx`, `app/icon.tsx`, `app/opengraph-image.tsx`, or `app/manifest.ts` — the brand resolution in each moved to `lib/public-palette.ts` `resolvePublicBrand()`. - **Action required:** none. With neither field set the rendered site is unchanged.
v0.1.0
First versioned release of the give-away template. Everything before this was pre-release scaffolding; if you cloned earlier, treat this as your new baseline. **What you get:** - The full front end: marketing site, operator app (21 toggleable modules), member portal, public event/sponsor/referral pages — Next.js 15 App Router, Tailwind v4. - The owned component kit (`components/ui` — see `/components` live) on a semantic-token design system with five color schemes (light/dark/high-contrast/outdoor/system), WCAG-AA proven on every scheme. - The typed Genesis API client (`lib/api/*`, 25+ domains) decoding the universal envelope — **zero raw `fetch()` in pages**, gate-enforced. - The proof harness: `pnpm verify` (typecheck + self-tested conformance gates + 79 behavioral tests). - The doc kit: `docs/` — quickstart, api, design, conventions, skinning, themes, extend, modify, upgrade, deploy, features (+ machine-readable `features.json`) and the AI prompts (`docs/prompts/` — master prompt + skin / add-a-page / connect tasks). - Deploy path: Vercel + Supabase (`docs/deploy.md`, `vercel.json`). **Action required:** none — this is the baseline. Release-notes template (copy for the next release): ## x.y.z — YYYY-MM-DD **Changed:** … **Touches files you may own:** none | components/ui/… (see docs/modify.md) **Action required:** none | … -->
What a release means for you
Every one of these reached this site through the same upgrade path your site would use, with nothing framework edited. The research page publishes what that costs — measured, with the commands that reproduce it.