Skip to content

v1.0.0

Choose a tag to compare

@jadenblack jadenblack released this 30 Oct 17:20
· 272 commits to main since this release
9e6bc85

[1.0.0] - 2026-10-30

Added

  • feat(brand) — the document description is a Brand field (#151) (#153)
  • feat(home) — the AlignSynch build leads with the two questions (#143) (#150)
  • feat(brand) — palette and mark sampled from the AlignSynch logo (#136) (#142)
  • feat(media) — category tiles generated from the slug; delete the 23 duplicates (#130) (#137)
  • feat(assessment) — render the answered Avery/Rowan instance at /assessment/[slug] (#134)
  • feat(data) — assessment templates for three Relationship Types and four instances (#131) (#133)
  • feat(content) — one record type, two templates — a quiz and an assessment (#128) (#129)
  • feat(brand) — a second brand record, and one build flag that selects it (#127)
  • feat(brand) — every QuizHub literal reads the brand record (#126)
  • feat(brand) — data/brand.ts — the record the reskin reads (#125)
  • feat(tournaments) — tournament copy comes from PageCopy, and the domain stays out (#58) (#89)
  • feat(pages) — marketing copy out of JSX into PageCopy (#56) (#94)
  • feat(battle) — modes and daily-challenge rewards are records, and the copy moves to PageCopy (#57) (#92)
  • feat(copy) — shell, auth and 404 copy comes from PageCopy (#54) (#96)
  • feat(copy) — categories and explore copy come from PageCopy fixtures (WU-8, #55) (#88)
  • feat(taxonomy) — labels come from the schema, and data:check E20 enforces it (#50) (#73)
  • feat(leaderboard) — one people fixture instead of six islands of their own records (#48) (#77)
  • feat(quiz) — a record's detail page renders its own leaderboard and reviews (WU-2 follow-up, #75) (#83)
  • feat — fixture generator (npm run gen) (#71)
  • feat(home) — PageCopy fixture + E23 copy ratchet, home copy out of JSX (#53) (#79)
  • feat(quiz) — the quiz surface reads the fixture, not a per-page mock (WU-2, #51) (#76)
  • feat — typed media registry (#65)
  • feat(data) — author the two Science overlays + E14/E15/E16/W6 promotion checks (B-01) (#39)
  • feat(data) — port the 42-record migrated quiz collection into data/ (B-01 prerequisite) (#26)
  • feat(content) — zQuizPromotion — per-slot campaign overlay merged in selectQuizCard (B-01) (#21)

Fixed

  • fix(play) — /quiz//play plays the quiz the URL names (#132) (#135)
  • fix(data) — published quizzes carry questions, a date and a reward window (#124)
  • fix(profile) — /profile/ resolves the handle from data/players.ts (#111) (#123)
  • fix(copy) — QuizHub everywhere the copy renders, and no stray space after it (#122)
  • fix(routes) — unknown ids 404 on /categories, /news and /tournaments (#112) (#116)
  • fix(promotions) — anchor the campaign window to the fixture clock (#110) (#121)
  • fix(metadata) — real document title on every route (#113) (#115)
  • fix(shell) — mobile sidebar is CSS-closed below xl, drawer is its own state (#109) (#119)
  • fix(ci) — fetch origin/main so the lane classifier actually runs in CI (#114)
  • fix(data-check) — one code, one rule — E17 is the media registry, the slot guard is E28 (#103) (#105)
  • fix(images) — the five next/image size bugs, and a gate for the rule (#99)
  • fix(p3) — gen emits quizzes only, and data:check says why (E17/E26) (#100)
  • fix(chat) — format fixture times against one clock, not the wall clock (#23)
  • fix(content) — point the 11 baselined asset refs at files that exist (#28)
  • fix(qa) — the pre-existing 404s and the Next 16 sync params (closes #20) (#25)
  • fix(seo) — generate real metadata for /categories/[slug] (D14) (#17)

Maintenance

  • docs — add the AlignSynch glossary v2 as a reference PDF (#149)
  • docs(glossary) — the glossary page is generated from the schema comments (#138) (#141)
  • chore(issues) — three issue templates — feature, bug, new template type (#139) (#140)
  • docs(lanes) — CI's win is the check's wall time, not contention (#120)
  • docs(gate) — CI classifies now — record the measured lanes (#118)
  • docs(qa) — P4 dogfood pass — every route, defects 1-5 with evidence (#108)
  • docs(p3) — exit record with reproducible evidence (#107)
  • docs(data-model) — tournaments are PageCopy-only and out of scope (#58) (#106)
  • test(vitest) — adopt Vitest and the first app-side units, wired into the one gate (#8) (#98)
  • docs(p1) — refresh ENV-SPEC §5 evidence and record what B-01 actually landed (#43) (#97)
  • docs(p2) — the inventory says WU-7, WU-8 and WU-9 landed (#54/#55/#56) (#102)
  • docs(p2) — the inventory says WU-10 landed, not that it is next (#57) (#101)
  • chore(git) — ignore .worktrees/ (#93)
  • docs(readme) — setup, prerequisites, the gate, the four layers and current phase (#7) (#95)
  • docs(p1) — keep images.unoptimized and record why (#6) (#91)
  • docs — lib/quizhub is vendored and ignored, not generated (#90)
  • build(pnpm) — pin the package manager to 12.16.1 in package.json (#4) (#87)
  • docs(orchestration) — the orchestrator's behavioural contract (#86)
  • docs(p2) — the ranked list records WU-1, WU-2 and WU-4 as landed (#85)
  • docs(p2) — record WU-5 as landed and E20's DUP tier at 0 (#84)
  • ci(gate) — lanes — depth follows the diff, next build capped at 2 slots (#82)
  • P2 WU-4 · invented metrics → computed analytics (#49) (#80)
  • refactor(search) — derive the search index, bind chat to its fixture (WU-3, #52) (#72)
  • docs(p2) — record WU-12's deletion in the inventory, not its dead paths (#74)
  • docs(agents) — rejoin the CI sentence the #33 resolution split (#69)
  • P3: pass the slot campaign into the card projections (shelves + detail-page prize) (#41)
  • chore(components) — delete 14 components no route imports (#47) (#66)
  • ci — one gate script, one caller in CI, one pre-push hook (ORD 0) (#33)
  • docs — P2 literal-string and media inventory (#59)
  • docs(mimo) — MiMo harness guide + reproducible probe suite (#38)
  • ci — trigger on merge_group so the merge queue can report the required check (#44)
  • docs — data model design page (ORD 2) (#45)
  • chore(deps) — pin the 13 "latest" specs to their locked versions (#14)
  • docs(ops) — voice memo → issue → card loop, and where Xiaomi stops (#32) (#34)
  • docs(p1) — record the promotion rules, the W4 code collision and the shelf gap (B-01) (#40)
  • P1: render every card grid from the quiz model (D2 remainder) (#24)
  • docs — verify the command table, record P1 gates, fix the dev-only image crash (#18)
  • ci — enforce data:check in the gate (#36)
  • P1: zod content model as the single source of truth (closes #10) (#16)
  • chore(format) — gate formatting in lint and CI
  • style — reformat the repo at lineWidth 100 with Biome
  • Toolchain: Biome + typecheck + CI (closes #2, #3) (#12)
  • Initial commit

Known limits

  • No authentication and no database. Every route reads the TypeScript fixtures in data/ that are compiled into the build. /login and /register are screens, not a session: the sign-in button routes to /, and there is no app/api, no server action and no database dependency anywhere in the tree.
  • No create, invite or answer flow. Nothing a visitor does is stored — the quiz editor's save is a toast. The alignment screen /assessment/[slug] is a read of a seeded fixture, prerendered at build time.
  • The four templates and four seeded instances exist in data; none of them can be started or answered. All four instances have a read-only screen at /assessment/[slug] (avery-rowan, ruth-sam, marco-priya, noor-iris), and the AlignSynch front page links three of them. There is no invite, no second party, and no way to copy a template into a new Relationship.