Skip to content

v1.2.0

Choose a tag to compare

@jadenblack jadenblack released this 02 Nov 10:05
· 78 commits to main since this release
dd88f00

[1.2.0] - 2026-11-02

Added

  • feat(v1) — the demo seed carries parties, chat, notices and every subscription state (#415) (#418)
  • feat(v1) — template catalogue, template landing, and the relationship report (#409) (#414)
  • feat(assessment) — relationship list and detail as server-rendered DB surfaces (#412)
  • feat(shell) — the surface registry, PendingSurface and nav greying (#409) (#410)
  • feat(v1) — the template page becomes a conversion landing (#404) (#405)
  • feat(v1) — admin console — counts that open their lists, the registry, templates, seats and stated limits (#402)
  • feat(v1) — print the two Opinions behind every Gap, per Aspect (#398)
  • feat(v1) — acceptance first — both sides side by side, reviewable before accepting (#400)
  • feat(v1) — profile and settings for all four personas (#384) (#397)
  • feat(v1) — the relationships list becomes a My Quizzes variation — stage tabs, search, cards, honest metrics (#384) (#396)
  • feat(v1) — template library and shop — role-gated actions, per-relationship subscription, initiator-only billing (#393)
  • feat(v1) — chat and notifications — relationship threads, unread state, blind-safe before scoring (#392)
  • feat(v1) — relationships list, detail, Aspects CRUD, clone, library and invite state (#384) (#390)
  • feat(v1) — seed Basic and Advanced modes, Soft and Full settings, and derive flag counts (#384) (#389)
  • feat(v1) — persona-scoped sidebar, dashboard overview and per-section stubs (#384) (#388)
  • feat(v1) — relationship catalogue — 29 source rows + kept co-founders, grouped by realm, dating gated (#385) (#387)
  • feat(v1) — review list states who each screen is for, per the #384 persona matrix (#386)
  • feat(db) — seed durable platform admins from ADMIN_* env, idempotently (#383)
  • feat(v1) — contain /v1 inside /v1 and add a persisted review list (#374)
  • feat(auth) — grant admin at sign-in from the ADMIN_EMAILS allowlist (#382)
  • feat(shell) — pin control collapses the expanded sidebar; sign-out lands on marketing (#381)
  • feat(v1) — the onboarding panel becomes a stepped wizard (no assistant) (#378)
  • feat(v1) — persona bar becomes a notice banner with environment context (#377)
  • feat(v1) — answer sheet — inline errors, top summary, pinned submit on mobile (#373)
  • feat(v1) — report verdict, relationship types + demo, and the session timeline (three sets, one branch) (#370)
  • feat(ui) — a component template ancestor is a checked header, not a convention (#336) (#345)
  • feat(brand) — the book is the mark, and the icon set is generated from it (#363)
  • feat(coach) — a coach is a role on the relationship, with a hard read-only boundary (#358)
  • feat(db) — a relationship holds sessions — the split, the backfill and the instance rename (#340) (#352)
  • feat(v1) — the template editor — a variation of the quiz editor, store-backed (#343)
  • feat(marketing) — the public top menu, the shell footer and header identity (#335)
  • feat(auth) — name Google-only accounts on the password form (#281) (#333)
  • feat(auth) — a Google button beside the password form (#281) (#330)
  • feat(deploy) — codify the preview rule and add a freshness check that never guesses (#329)

Fixed

  • fix(auth) — /login and the 404 draw the brand's marks, not the quiz product's (#417)
  • fix(auth) — the sign-up screen draws the brand's marks, not the quiz product's (#413)
  • fix(v1) — the acceptance status line says what the blind rule actually hides (#403)
  • fix(v1) — one review control, in the footer, deep-linking to its own review row (#399)
  • fix(shell) — remove the sidebar pin — the rail is always expanded (#394)
  • fix(auth) — measure the flow cookie's age and the verifier's fingerprint at the finish (#351 follow-up) (#362)
  • fix(auth) — capture the Google finish failure before fixing it (#351 follow-up) (#359)
  • fix(auth) — exchange the Neon verifier at our own callback, so Google sign-in ends signed in (#351) (#357)
  • fix(404) — render the brand's heading and drop the empty suggestion band (#351) (#355)
  • fix(auth) — land the post-sign-in destination per brand (#351) (#354)
  • fix(auth) — start the Google handshake on the Neon origin, not the proxy (#350)
  • fix(demo) — the Admin button lands on the console, not the gate proof (#334)

Maintenance

  • R1-E: create, answer and accept as in-progress UI (#409) (#416)
  • DRAFT — V1 create entry, metadata CRUD by Setting, and the Steps primitive (one per Aspect, rewordable, closed status) — for discussion, do not merge (#406)
  • test(v1) — a deterministic demo seeder over every catalogue type, and the test factories that pin the shape (#407)
  • auth — password reset, and a set-password path for Google-only accounts (#395)
  • docs — the UI/UX audit — every surface scored against its template ancestor (#364)
  • docs(deploying) — §1 quotes the widened ignoreCommand and names its one exception (#361)
  • chore(deploy) — one branch builds besides production, and it is named in the file (#360)
  • docs(deploy) — §1 states the production-only rule, not the [preview] opt-in (#353)
  • deploy(vercel) — build production only — previews are local (#348)
  • refactor(css) — one token layer — the second stylesheet's chart and sidebar sets fold into app/globals.css (#347)
  • refactor(marketing) — the landing page's eleven boxes, two CTAs and three chips (#346)
  • refactor(console) — the gap table, the failure panels and the title bands compose the primitives (#344)
  • docs(prototype) — correct the one claim in the wiring plan the board does not support (#342)
  • docs(prototype) — the wiring plan — one screen exists, four cohorts never did (#341)
  • docs(quiz) — the capability map — every quiz surface, what it is made of, what full-stack costs (#338)
  • docs(ui) — the quiz-surface map — every ancestor, its AlignSynch variation, and the mobile mechanics (#337)
  • docs(ui) — the divergence table — every bespoke surface, one verdict per file (#332)
  • docs(deploy) — record that preview creation, not just the build, is disabled upstream (#331)

Known limits

  • Five read surfaces are live: your relationships (/assessment/instances), a relationship (/assessment/instances/[instanceId]), the template catalogue (/assessment/templates), a template (/assessment/templates/[templateId]) and the relationship report (/assessment/instances/[instanceId]/report). They are server-rendered from Postgres and gated at the session: a signed-out request is redirected to /login (the report answers 404 for a relationship id that is not a row). They have not yet been exercised with a signed-in session — nobody has opened the list, the catalogue or a report with real rows on screen. They are wired and gated, and that is the whole of what has been verified.
  • Every write surface is not wired yet. Creating a relationship, answering, accepting, chat, notifications and the admin console cannot record anything. They are not missing pages: create (/assessment/templates/[templateId]/create), answer (/assessment/instances/[instanceId]/answer) and accept (/assessment/instances/[instanceId]/accept) render their real layouts and every write control is visibly disabled, labelled "Not wired yet — … Nothing was saved." Chat, notifications, the admin console, profile, settings and the shop are declared in data/surface-registry.ts and are greyed in the navigation with the reason on the row. The registry declares 14 surfaces: 5 live, 3 shipped-but-unwired (preview), 6 declared and not built (pending).
  • The report is read-only. It renders the two opinions and the gap between them; it has no control that changes the relationship, records an acceptance or edits an answer. It is also blind until both parties have submitted: with the other party unanswered it renders the locked page and nothing about their answers.
  • No deploy follows this tag. The tag fixes the artefact; whether and when it is deployed is a separate decision, so a tag in this repository is not a claim that the site is serving it.