Changelog

What's new.

Every release, fix, and improvement to BrickThink — newest first.

August 2026

Banner for 1.7.0 - Jean Grey - AI Workshop Setup & New Onboarding Flow
Feature1.7.0 - Jean Grey

1.7.0 - Jean Grey - AI Workshop Setup & New Onboarding Flow

Three things changed this month.

An assistant can now build a whole workshop for you while you watch it happen. First-run setup became five questions that actually configure your first session instead of just greeting you. And a lot of plumbing underneath both, which you will never see but which is the reason they work.

New

An assistant that sets up your workshop

  • Describe the workshop you need, in plain language, in a chat. It creates the workshop, the session, all five stages, the scenario for each stage, the brief and the participant invitations.

  • The chat sits on the left and a preview on the right fills in as it works, so you watch the workshop being made rather than waiting for a result.

  • It is part of a subscription. Buying a single report does not include it.

  • Everyone gets one free setup. It only counts once a workshop is genuinely created. If it times out, errors, or you stop it, you have not spent it, and it tells you this before it starts.

  • Anything that emails a person stops and asks you first. Inviting participants or adding someone to a workshop waits for your approval, and it will still be waiting if you close the tab and come back.

  • The assistant cannot delete anything. There is no delete or remove function in it at all, and we have a test that stops one being added by mistake later.

  • It has its own button: a brick in the corner of the app that blinks when idle and bounces while the assistant is thinking. It opens either the assistant or support chat.

Setting up became five questions

  • The old two-card role screen is gone. Instead: your role, how experienced you are with LEGO® SERIOUS PLAY®, what the workshop is for, how many people, and an optional step to invite them.

  • The answers do real work. Your purpose picks scenarios for each stage. Your group size suggests how many rooms you will need. Your experience level shortens the guided tours if you already know the method, and adds a link explaining it if you do not.

  • Invitations you enter here wait quietly until your first session exists, then send themselves.

  • Group size now tells you we recommend a maximum of eight participants, rather than letting you find out the hard way.

Elsewhere in the app

  • Anyone can open the example workshop. It used to be an admin tool. Now any signed-in user gets one: five stages of finished models, the rooms, and what each participant said. It is clearly badged so nobody mistakes it for real work.

  • Your photo appears in the header on workshop and session pages.

  • Delete confirmations have a copy button. One dialogue showed the phrase in capitals but expected lowercase, so typing exactly what you saw failed. You can now copy the exact phrase in one click.

  • My Designs is split into your personal designs and your workshop designs, and the workshop section explains plainly why those cards have no delete button.

  • There is a team page, linked from the footer.

Changed

  • Skipping a tutorial now counts as skipping it. No tick, no celebration, no credit at the end. The card shows a quiet "Skipped" label and an arrow to go again if you change your mind. It used to quietly re-offer skipped tutorials, which was dishonest.

  • The workshop tour starts on your first visit, just as the session tour did.

  • Your answers follow you between devices; your tutorial progress does not. Sign in on a new machine, and you get the tours again without being asked the five questions again.

  • Setup never advertises the assistant. We removed it from the first-run screens. Your first ten minutes should not be a sales pitch.

  • We corrected our own copy about "free". Two places on the site still promise to be free forever: the support card and the open-source heading on the home page. Both are fixed, and the check that was supposed to catch them has been widened so it cannot miss them again.

  • The help page now lists AI-assisted setup as a paid service and explains that the cost covers the AI credits and processing time.

  • The privacy page explains the AI processing: what gets sent, whose account it runs under, that it is not used to train anything, how long it is kept and where it goes.

  • The terms now cover AI features, including labelling AI-generated content and a caveat that it can be wrong.

Fixed

  • The assistant broke completely on launch day, twice. Both faults were invisible to our tests because our tests use a fake AI that never touches the real one. One was a rule we did not know about that rejected the limit we had set on how many people could be invited at once. The other was a database query that failed silently, making every action look like it was happening in the wrong workshop. Both are fixed, both now have tests, and we have written down a rule: try one real request against the live AI before shipping any change to it.

  • Our emails looked broken in Apple Mail. The cream background stopped partway down, leaving a white block under the footer.

  • A button in the new design dialogue looked dead, even though it was working.

Security

  • A flaw in the new workshop creation function could, in theory, have created a workshop owned by the wrong person when no user was signed in. Found in review, fixed before release, with a test that would catch it coming back.

  • The assistant can only touch the workshop it is talking about. This is enforced in code, not by politely asking the AI. We tested it by driving every one of its functions from an account with no access, including using forged details. Nothing got through.

  • Limits on how often the assistant can be called, per account and per network address.

Banner for 1.6.0 - Jubilee - Scenario Authoring, Onboarding Rebuild & the Tech-Debt Drain
Feature1.6.0 - Jubilee

1.6.0 - Jubilee - Scenario Authoring, Onboarding Rebuild & the Tech-Debt Drain

Three storylines in three weeks. Scenarios became user-authorable and then the standalone library disappeared into the per-stage picker. A week-long tech-debt audit drained four tiers of refactors while CI grew real teeth — full e2e in CI, a green-CI gate on migrations, and an axe ratchet that hard-fails the build. The final weekend replaced first-run onboarding with a pathway chooser feeding role-aware tours, gave the app a global role chip, and launched hosted support chat with an admin inbox. Next.js 15 · React 19 · Supabase · Konva · Yjs · Railway.

Added

  • Personal custom scenarios: create, edit, and delete your own scenarios from an editor dialog with no workshop required, backed by a created_by column with authoring RLS policies, draft validation, and integration-tested server actions. Custom scenarios lead the list above a divider, wear a "Custom" chip in the stage picker, and a scope filter separates library from custom. Closes the 1.0.0 "no custom scenario authoring" limitation.

  • Onboarding pathways: a three-card pathway modal and a dedicated first-run role-chooser page decide which tutorial you get; pathway tours run with a persistent progress modal.

  • Role-aware app chrome: a global role chip in the header (facilitator vs participant) doubling as a switcher, role-aware navigation, and a chromeless choose-role page.

  • Support chat (premium, hosted-only): a floating chat button opens a support thread for signed-in users; site admins work a triaged inbox at /app/admin/inbox with categories, status pills, and filters. v1.1 polish shipped in the same release — a11y labels, day separators, triage icons, an admin rate limit, and reply-error surfacing. Open core carries only a ChatWidgetSlot seam.

  • Multi-select and group move in the builder: marquee drag on empty canvas, shift-click on the canvas or in the Layers panel to build a selection, then move the group as one. Closes the 1.0.0 "no multi-brick selection" limitation.

  • Right-click menu on pieces: flip horizontal and reorder layers without leaving the canvas.

  • CI jobs: a full-suite e2e run, a Next build job catching build-only failures before Railway, an integration-test job against a fresh local Supabase stack with all migrations applied, and a unit-test coverage ratchet.

  • Session guardrail: participants can't start their model until the facilitator starts the stage.

Changed

  • The scenario library moved into the picker: the standalone Scenarios nav entry is gone and the per-stage picker modal now embeds the full library, including inline create. Stage validation was deliberately removed so you can pick a scenario authored for a different stage type, and a single pill row filters by stage type, source (Library), or Custom. Cross-stage picks and the unified filter row are on staging/test, awaiting the next prod promotion.

  • ActionResult<T,E> everywhere: every server-action family (roster, join, notes, stage controller, feedback, import, narration, scenarios, account, workshops) now returns a shared kind-union result. as unknown as casts eliminated and banned by ESLint.

  • Builder monolith split: BuilderCanvas gave up BrickNode, canvas geometry, and toolbar chrome; the builderState provider became focused hook modules.

  • One realtime channel helper: a single auth-primed helper now backs all 14 subscriptions, and session pages consolidated onto a StageViewModel[] with one stages subscription.

  • Atomic session creation: createSession runs through a create_session_with_stages RPC; per-room can_edit_room checks batched into a single can_edit_rooms RPC; the service-role DB client is properly typed.

  • Shared icons: duplicated inline SVGs collapsed into a components/icons module.

  • Migrations gated on green CI, with the supabase CLI version pinned to the repo's devDependency.

  • Accessibility ratchet: a per-route axe violation check now hard-fails CI; six stray dialogs migrated onto ModalBackdrop; Layers panel rows no longer nest interactive controls.

  • Builder chrome: sidebar breadcrumb replaced with a bold "Back to session" link, and stage-agnostic copy when there's no previous model to bring in.

Removed

  • Standalone Scenarios page and nav entry — superseded by the in-picker library.

  • Unreferenced /landing-preview route — the 1.5.0 redesign preview is retired.

Fixed

  • E2E rot fully drained: collaborative-stage specs rewritten for the stage-rooms model, participant specs enforce read-only, selectors un-rotted, and teardown reuses the real account-delete path — 0 to 77/77 green.

  • Site OG image is now carried on every page-level openGraph block; it was previously lost to Next's shallow metadata merge. /_next/static assets noindexed; premium /pricing got an SEO-tuned title and meta.

  • /app/join is publicly reachable again — invite links for signed-out users had broken.

  • Roster invites accept a typed-but-unconfirmed email, so drafts are no longer silently dropped.

  • Premium reports upload a replacement PDF before deleting the prior one, so a failed upload can't leave a report with no file.

  • Pieces drawer behaves: light-dismiss, correct stacking above canvas chrome, no longer covering the top toolbar, and truly inert when closed.

  • Guests invited into a session never see the tutorial modal, tutorial-guest status survives session deletion, and the welcome modal no longer dismisses on a stray backdrop click.

  • Contact page "working in the open" links point at real URLs.

Known limitations

  • SVG export remains scaffolded only. No join-code rotation UI, async/hybrid modes. Story capture and narration-video export are still roadmap. Capacity tuned for ~8 participants.

July 2026

Banner for 1.5.0 - Havok - Admin Operations & Premium Split
Feature1.5.0 - Havok

1.5.0 - Havok - Admin Operations & Premium Split

The hosted admin panel becomes a real operations surface, then leaves the open-source core entirely. Site admins can manage other site admins, delete any user account, watch a live presence dashboard, and configure signup-fired webhooks. The month closes with the whole /app/admin panel absorbed into the premium overlay, with no routes and no stub in open core. Alongside it, a marketing pass adds three landing pages, retunes titles and meta descriptions, brands the error pages, and stages a landing-page redesign behind a preview route. Next.js 15 · React 19 · Supabase · Konva · Yjs · Railway.

Added

  • Site-admin management (premium): directory at /app/admin/site-admins with search and in-app grant/revoke via server actions, plus a last-admin guard preventing revocation of the final admin. Replaces manual site_admin_emails inserts.

  • Delete any user (premium): row actions at /app/admin/accounts with a type-the-email confirm modal, reusing the existing lib/account/delete.ts deletion path. Sits in the Access group, ungated by billing.

  • Live admin dashboard (premium): full-screen shell with the global header hidden and a sidebar carrying back-to-app and sign-out, KPI tiles, an online-users chart with selectable ranges, and an iconed side nav. Backed by new presence infrastructure: a touch_presence RPC pinged by a heartbeat while the tab is visible, cron-sampled online counts, and live stats polling every 60s.

  • Signup webhooks (premium): configurable webhook endpoints at /app/admin/webhooks firing on user signup, with a per-row Test button that sends a test payload and editable webhook names.

  • Marketing: three landing pages (facilitators, self-host, vs-Miro). Branded 404 and 500 pages with a global-error boundary, so errors no longer fall through to unstyled Next.js defaults.

Changed

  • Admin panel to premium: the entire /app/admin panel (dashboard, users, site-admins, accounts, webhooks, toast catalogue) moved into the premium overlay. Landed on all four environment branches and premium main the same day. This supersedes the 1.4.0 open-core AdminNavSlot stub.

  • Marketing copy: titles and meta descriptions returned across the site to match current positioning. Free-claims copy corrected to scope "free" to the platform rather than the paid cost-recovery services.

  • Badges: TinyLaunch badge now points at the BrickThink listing.

  • CI: db-migrate workflow moved supabase/setup-cli from v1 to v3, off the deprecated Node 20 runtime.

Removed

  • Admin routes from open core: unauthenticated and self-hosted requests to /app/admin now return a hard 404 with no stub.

Fixed

  • seed.sql Restored the historical public-schema grants so local and remote environments match.

June 2026

Banner for 1.4.0 - Forge - Search & Discoverability
Feature1.4.0 - Forge

1.4.0 - Forge - Search & Discoverability

Search and social discoverability. A full SEO pass gives every public page a canonical URL, social preview art, and structured data, making careers and articles eligible for Google Jobs and rich blog results. A premium AdminNavSlot seam lands in the admin layout, the dev/QA Toast catalog moves under the site-admin gate, and marketing badges are tidied. Next.js 15 · React 19 · Supabase · Konva · Yjs · Railway.

Added

  • SEO & discoverability: site-wide default 1200×630 Open Graph image via the app/opengraph-image.png file convention, so every route without its own cover gets share art; metadataBase set so the image resolves to an absolute URL for crawlers, with Twitter reusing og:image via crawler fallback. Per-page Open Graph, Twitter cards, and canonical URL on every marketing page (about, articles, careers, changelog, contact, help, roadmap, what-is-lsp, privacy, terms, home).

  • Structured data: Organization and WebSite JSON-LD site-wide, BlogPosting on articles, and JobPosting on careers postings; open roles are now Google Jobs eligible. New lib/seo module (site constants, a pageMetadata() helper, and JSON-LD builders) wired across the app, with unit tests on the JSON-LD output.

  • Crawl control: app/sitemap.ts covering static marketing routes, published articles, and open roles, with dynamic fetches best-effort so they never 500 the static routes; robots.ts disallowing /app/, /share/, and /api/ and referencing the sitemap; noindex on the authed /app layout.

  • Admin: AdminNavSlot premium seam in the admin layout (open-core stub and types), the extension point for hosted-only admin features.

Changed

  • Toast harness: moved from the global /app/toast-test to /app/admin/toast-test under a new "UI Elements" section in the admin side-nav; it now inherits the site-admin gate, and the standalone header link was dropped.

  • Marketing: SaaSHub badge swapped to the approved-colour variant.

Banner for 1.3.0 - Nightcrawler - Payment Services
Feature1.3.0 - Nightcrawler

1.3.0 - Nightcrawler - Payment Services

BrickThink becomes a hosted product with a payment model. A full Stripe billing system gates the PDF session report, AI transcript cleanup, and a new white-label report pipeline across three cost-recovery tiers. Per-facilitator bring-your-own Anthropic keys are replaced by a single managed server key, user-facing "organisations" become "workshops", and articles move to sanitised HTML. Next.js 15 · React 19 · Supabase · Konva · Yjs · Railway.

Added

  • Billing: three-tier catalog (session_report → client_ready → full_findings) with cumulative entitlements, each available as a one-off purchase or a monthly/yearly subscription. Session Report €9 / €29 mo / €290 yr, Client-Ready €45 / €119 / €1,190, Full Findings €60 / €159 / €1,590. Stripe SDK singleton, idempotent customer creation, Checkout and Customer Portal server actions, and a webhook that is the sole writer of entitlement state. Per-session unlock from the upgrade modal without subscribing; tier-aware upgrade and pricing-card modals.

  • Billing tab: subscription card, billing history with invoices, monthly/yearly toggle, per-tier detail modal, cancel-at-period-end shown as a Cancelled pill with active-until date, and a re-activate path into the Customer Portal.

  • White-label reports: brand_profiles table and brand-assets storage bucket with RLS; brand-preset CRUD with logo and font upload. Branding UI at /app/account/branding with a curated font catalog, hex-first colour picker, contrast-aware ink picker, and live preview. Branding-aware PDF pipeline, brand-preset picker, and a branding hub modal opened from the report button. Gated at the client_ready tier.

  • Reports: full-width model cards with per-speaker transcripts.

  • Sessions & navigation: SessionNavLink (a single link for one active session, a dropdown for many), surfaced to attendees and workshop members of a live session between Scenarios and Admin.

  • Marketing: pricing tiers on the home page with clarified free-vs-paid copy; pricing page reframed around four hosted cost-recovery services; hero pause/play control respecting prefers-reduced-motion; footer split into "Featured on" press logos and "Launched on" directories; BetaList badge; refreshed FAQ.

Changed

  • Monetisation stance: the 1.0.0 "free forever, no paid tier" position is superseded. The software stays free and open source (Apache 2.0) and self-hosting costs nothing; managed AI compute is now a paid, usage-billed option, and the hosted PDF session report, transcript cleanup, and white-label branding are entitlements rather than free downloads. This is the explicit reintroduction of a paid offering that the 1.0.0 Removed note committed to recording.

  • Managed AI key: per-facilitator bring-your-own Anthropic keys replaced by a single managed server key (getServerAnthropicClient); reports and narration cleanup now run on it.

  • Workshops rename: user-facing "organisations" renamed to workshops throughout; owner/member role pills coloured (blue owner, orange member).

  • Articles / CMS: articles.body_markdown renamed to body_html with a WYSIWYG (TipTap) editor replacing the markdown textarea, server-side HTML sanitisation on store, a one-time markdown-to-HTML conversion, and author bylines driven from an ARTICLE_AUTHORS env map.

  • Account area: tabbed Settings / Billing navigation moved into the page banner; bento-grid layout with a Contribute tile and tip jar.

  • Narration: participant recorder reworked as a left slide-out drawer with auto-start for returning attendees and saved-text-on-stop; the facilitator live-transcript view was removed in favour of personal-only version saving.

  • Self-host: with billing disabled there is no paywall (e2e-covered).

Removed

  • Bring-your-own Anthropic key: user_integrations and org_integrations tables, the BYO-key settings card, and per-user key crypto helpers; BRICKTHINK_ENCRYPTION_KEY dropped.

  • Free hosted report: the free PDF session report download removed from the hosted free tier. Self-host stays free.

Fixed

  • Live transcript stopping after a few words; the recorder now mounts on non-live session canvases.

  • Auth derives the public origin from x-forwarded-host so staging magic links resolve correctly.

  • Report timestamp formatted after mount to avoid a hydration mismatch.

Infra

  • CI db push --include-all so the out-of-order billing migration applies; dropped supabase from pnpm.onlyBuiltDependencies. Careers CV-purge URL and secret read from Vault; site-admin allowlist bootstrapped via manual SQL.

Banner for 1.2 - Gambit - Voice Narration Added
Feature1.2 - Gambit

1.2 - Gambit - Voice Narration Added

The week of 1 June shipped three new surfaces and a major collaboration feature. A full careers section went live with public role listings, an application form with CV upload, and an admin inbox; a public changelog was added end to end, from an admin rich-text editor to a single-scrolling page with a footer version indicator; and a dismissible site-wide banner system now lets admins post announcements. The headline feature was voice narration — participants can narrate their models by voice, with transcripts cleaned up by Claude, shared with facilitators, and folded into the AI session report. The marketing site also picked up a reworked hero, event banners, and a wave of footer, social, and launch-badge additions.

Added

Careers — public listings + role detail pages, application form with CV upload, admin role CRUD + applications inbox

Changelog — admin rich-text editor, public scrolling page with per-entry banners, footer version indicator

Site banner — dismissible site-wide announcement system with admin editor

Voice narration — voice capture, Claude transcript cleanup, facilitator access, transcripts in the AI report

Sessions — session card thumbnails, "Create Example Model" relabel, live room-assignment refresh, reworked stage-card controls, spotlight any canvas anytime

Marketing — reworked hero, DACH event + "Featured on" banners, "Buy the Pieces" store link, expanded footer socials (X, LinkedIn, Instagram, TikTok, Slack), launch badges (Uneed, TinyLaunch, SaaSHub, LaunchIgniter)

May 2026

Banner for 1.1 - Rogue - New Admin functions
Feature1.1 - Rogue

1.1 - Rogue - New Admin functions

During the week of 25 May, all of the work landed in a single push on Sunday 31 May, delivering improvements across four areas. The headline was a revamped facilitator onboarding experience: a checklist that now appears on the session and org pages, paired with a guided spotlight tour that walks facilitators through creating a session and starting their first model. The CMS gained an editable published-date picker for articles, the builder now automatically captures design thumbnails as you edit (debounced to track your latest work), and the marketing site got a new phased roadmap page with a tidied-up footer.

Added

Onboarding — facilitator checklist + spotlight tour (the biggest theme)

  • Facilitator checklist now shows on the session page and org pages, not just one surface

  • Spotlight tour walking facilitators through the funnel: step 2 spotlights Create session, step 3 spotlights Start → Start your model

  • A batch of fixes to keep the spotlight glued to its target button and scroll targets into view on step change

Articles / CMS — editable published date

  • New published-date picker in the CMS editor (published rows only)

  • Backed by updateArticleAction editing published_at, with pure date helpers and tests asserting an empty date is a no-op

Builder — design thumbnails

  • Builder now captures a design thumbnail automatically — initially on leave, then refined to capture on a debounce during editing (tuned down to 600ms) so it tracks the latest work

Marketing — roadmap

  • New roadmap page with a phased timeline

  • Footer Roadmap link moved to the Company column; dropped the "on the roadmap" pill from the outputs card

Banner for 1.0 - Xavier - First stable release.
Release1.0 - Xavier

1.0 - Xavier - First stable release.

First stable release. Virtual LEGO® SERIOUS PLAY® facilitation platform: teams run the five-stage LSP methodology online on a shared 2D brick canvas, in real time. Apache 2.0, free forever, no paid tier. Pairs with an external video call. Next.js 15 · React 19 · Supabase · Konva · Yjs · Railway.

Added

  • Auth & account — Magic-link + Google sign-in, profile, colourblind mode, encrypted BYO Anthropic key, account deletion.

  • Onboarding — Welcome modal, facilitator checklist, spotlights, replayable tour.

  • Sessions — Five auto-generated stages, join code, live timer state machine, pre-session checklist, 20-scenario library, private notes.

  • Participants & rooms — Code join, roster (spotlight/kick/restore), email invites, partition + composed breakout rooms, bring-in-previous-model.

  • Builder — Konva canvas, 58 bricks, layer groups, live Yjs collaboration, brick reactions + comments, autosave, version snapshots.

  • Designs & orgs — My Designs library with filter/search/tags, 30-day trash, organisations with roles and invites.

  • Export & share — PNG export, JSON export/import, revocable public share links.

  • Notifications — In-app bell with live unread count and toasts.

  • Reports — Facilitator AI PDF for completed sessions via own Claude key.

  • Public site — Marketing pages, articles, site-admin CMS.

  • Platform — Railway web + Yjs worker, health endpoint, RLS access, WCAG 2.2 AA, EU/GDPR.