Skip to main content
Every released change, generated from Conventional Commit history. Subscribe via RSS, or browse the immutable GitHub Releases for tags and source snapshots.

0.3.2 (2026-10-25)

🐛 Bug Fixes

  • deps: patch compressed request parser denial of service (c1e211e)
  • deps: remediate vulnerable Bun transitive dependencies (6c1c44b)
  • deps: upgrade Bun and patched Node runtimes (bc9d252)
  • deps: upgrade platform dependencies and patch transitive security flaws (8d99b63)

0.3.1 (2026-10-07)

🐛 Bug Fixes

  • ci: maintain security resolutions and workspace updates (15484fc)
  • ci: make workspace dependency updates maintainable (266a1ca)
  • ci: make workspace dependency updates maintainable (266a1ca)
  • ci: validate Payload GraphQL dependency compatibility (f0ccbd2)
  • ci: validate Payload GraphQL dependency compatibility (f0ccbd2)
  • ci: validate Payload GraphQL dependency compatibility (f5b7d8e)
  • deps: remove vulnerable brace parser dependency chains (8a7819f)
  • deps: repair dependency upgrades and CI compatibility (7b1f468)
  • deps: repair dependency upgrades and CI compatibility (5ed8a6a)
  • deps: repair development upgrade security and CI (a6db2ae)
  • deps: repair production upgrade compatibility and security (deab42c)
  • deps: repair Vitest compatibility and remove vulnerable chains (611621b)
  • harden TypeScript migration tooling (ed6876c)
  • test: migrate workspace mocks to MSW 3 (f59200c)

📚 Documentation

  • add hosting migration and invoicing modernization plans (9b8e458)
  • add hosting migration and invoicing modernization plans (f873cf2)
  • record recurring dependency CI causes and repairs (412e019)
  • record reproducible TypeScript 7 benchmarks (57179c8)
  • record successful dependency repair builds (fc97696)

🛠 Refactors

  • remove TypeScript 6 compatibility layer (40664fb)

🧪 Tests

  • deps: isolate ancestor lookup fixtures (1a50f44)

⚙️ CI

  • harden dependency and release automation (e1eda4f)
  • harden dependency and release automation (bc9cf54)

0.3.0 (2026-09-27)

🚀 Features

  • web: add a branch picker to the booking dialog (5962d64)

🐛 Bug Fixes

  • admin: let the browser Sentry SDK reach its ingest host (99ee54e)
  • observability: load Sentry from supported file locations (fea9aee)
  • restore online booking, branch picker, onboarding gate, Sentry (9b5072a)
  • web: answer availability requests that name no branch (e059112)
  • web: ask for a missing profile when Book Now is tapped (f8630fd)
  • web: cap CMS reads at 5 s so a sleeping CMS cannot stall renders (55b2e42)
  • web: only staff can create confirmed walk-in bookings (ef04e7c)
  • web: purge CMS fetch cache tags so owner content edits reach the site (5331703)
  • web: route new customers through onboarding before they can book (a43d4c0)
  • web: save the onboarding name and a consent receipt (f9b7852)

📚 Documentation

  • document /api/branches and the availability branch rule (a5615c8)
  • onboarding comes before the booking dialog (df40f70)
  • web: correct the CMS read-timeout rationale (79475ee)

🧪 Tests

  • pin the onboarded-only rule for walk-in bookings (3597559)

0.2.3 (2026-09-22)

🐛 Bug Fixes

  • security: address five CodeQL alerts (#251) (e18f372)

0.2.2 (2026-09-22)

🐛 Bug Fixes

  • cms: declare the Payload trusted origin in render.yaml (#241) (47355a8)

📚 Documentation

  • commit the per-app repo instruction files (#246) (ca1f661)

0.2.1 (2026-09-10)

Bug Fixes

  • auth: complete Better Auth 1.7.3 cleanup and stabilize CI (abb2b1f)
  • auth: restore provider account identity for Better Auth 1.7.3 (985dac6)

0.2.0 (2026-09-09)

⚠ BREAKING CHANGES

  • deps-dev: migrate to Biome v2.5.5 (#56)
  • deps: bump @hono/node-server 1.14 -> 2.0.12 (batch of #55,#71)
  • deps-dev: migrate to fast-check v4 (batch of #60,#62,#74,#78,#82,#84)

Features

  • add catalogue drift-reconciliation job, migration runbook and docs (49a2ebc)
  • add Kiro CLI steering files for implementation (d7c76fc)
  • add Kiro CLI steering files for project implementation (2612516)
  • add Kiro skills and setup guide for multi-agent development (821e6cb)
  • add Kiro skills and setup guide for multi-agent development (76d191a)
  • add Phase 4 (CRM, leads, memberships, gems) and Phase 5 (scheduling, notifications, offers) (cffc797)
  • add Phase 6 background jobs and automation (be069e0)
  • admin subdomain migration + update dev ports (web:3000, admin:3001, cms:3002, docs:3003) (7e1a85e)
  • admin-web-separation: relocate staff self-service to admin /me/* (15bb2c2)
  • admin: complete admin portal feature set, auth/session fixes, single-source services (b4e91e0)
  • admin: migrate @tanstack/react-table v8 to v9 (#157) (df8d5cf)
  • admin: migrate forms and filters to shadcn/Radix; fix dialog, hydration and filter sizing (d00ae5c)
  • admin: redeem gems at checkout in the complete-booking flow (#6) (b6ad651)
  • admin: redesign admin portal on a shadcn UI system (27ff841)
  • admin: redesign admin portal with shared design-system primitives (119d44b)
  • admin: wire audit-log writing into mutations + seed dev catalogue (7fce2aa)
  • analytics: default PostHog to EU region (0c2367b)
  • auth: add nullable account.issuer + Better Auth schema contract gate (1/2) (1a4f552)
  • auth: add nullable account.issuer and Better Auth schema contract gate (da6fef9)
  • auth: upgrade Better Auth to 1.7.2 + enforce account issuer identity (2/2) (aef0d2a)
  • auth: upgrade Better Auth to 1.7.2 and enforce account issuer identity (c74844d)
  • aws: attach theroyalglow.in and admin.theroyalglow.in to CloudFront (0c110bc)
  • backend-api: complete thin-API layer with full test suite (88c7798)
  • build remaining gaps — service detail pages, profile prefs, contact env, PWA install, customer realtime (8ac8f5e)
  • close all outstanding spec tasks across the repo (643/647) (80f25d7)
  • cms: add Dockerfile + standalone output for Koyeb free-tier deploy (b27ebb1)
  • cms: add forward-only Payload migrations for the service catalogue schema (bceaa8d)
  • cms: add on-demand revalidation, fix admin layout, install caveman steering (d52afbb)
  • cms: add read-only Payload MCP server at /api/mcp (00ea942)
  • cms: add schema-create guard to initial migration and Resend email adapter (f3f1515)
  • cms: add schema-create guard to initial migration and Resend email adapter (fcc3eb2)
  • cms: add schema-create guard to initial migration and Resend email adapter (4f6c4c3)
  • cms: add schema-create guard to initial migration and Resend email adapter (d276ceb)
  • cms: add Testimonial, Offer, and ServiceCard collections (1999c7c)
  • cms: group sidebar, R2 cms/ prefix, fix SSL verify-full (179affc)
  • cms: wire Payload collections into website with migrations and schema isolation (61ce539)
  • complete Phase 0-3 implementation (7e2d074)
  • contact form, server-side Sentry restore, CMS Render blueprint (88968b4)
  • convert all pages/*.md to rich HTML using Claude HTML maximalist approach (a92fb44)
  • Convert pages/*.md to rich HTML (Claude HTML maximalist) (793358a)
  • db: schema-drift-remediation pipeline + migration discipline (8e738db)
  • deploy: add Render free-tier services for web + admin (5456f7c)
  • deploy: migrate web + admin to Cloudflare Workers via OpenNext (cdec206)
  • design: finalize design tokens — Cabinet Grotesk, Clash Grotesk, Plus Jakarta Sans (2975e51)
  • design: Finalize design tokens v2 — new font stack (e809186)
  • docs: organisation-grade design system for the Mintlify docs site (df8d23d)
  • docs: premium Fumadocs theme + path-based multi-version documentation (17f1939)
  • gems-redemption: customer-only online gems redemption (per-spec) (6500dca)
  • invoicing: Cloud Run PDF render service (0aecc5f)
  • jobs+billing: register QStash schedules + send invoice/confirmation email on completion (c0f96fc)
  • make Payload CMS the only write path for the service catalogue (55f7504)
  • move service management to Payload CMS (collections + atomic sync) (81d1bcf)
  • Phase 10 — observability stack + launch assets (1d7fb9e)
  • Phase 7 — SEO, PWA, cookie consent, analytics & legal pages (b16199f)
  • Phase 8 — CMS & Blog (Payload v3 + blog/gallery + SEO) (c780f2f)
  • plan AWS deployment for web + admin on Lambda, retire Cloudflare Workers (06f1a23)
  • platform: standardize releases, merge governance and MCP tooling (4698de7)
  • platform: standardize releases, merge governance and MCP tooling (780d463)
  • realtime booking publishing (#5) + admin notifications route (40fc07e)
  • types,business: invoice-PDF render contract + HMAC signing + amount-in-words (2298ed0)
  • web security perimeter (CSP/CORS, distributed rate limit, Meta CAPI) + admin walk-in booking (e275578)
  • web,admin: wire invoice-pdf job + attach PDF to invoice email (bacb555)
  • web,db: wire real Rayasandra Google Maps Place ID + fix contact map (f96c043)
  • web: add brand favicon, app icons, and PWA manifest icons (4d526c5)
  • web: add default OpenGraph social-share image (4deb30e)
  • web: add Garnier brand between L’Oréal and TRESemmé (c54bf14)
  • web: add TRESemme brand + seamless glitch-free marquee (e029a89)
  • web: decouple the homepage hero image from the announcement strip (9c749a6)
  • web: direct Google sign-in + One Tap, account dropdown, homepage polish (1c2b403)
  • web: One Tap on mobile + remove /sign-in + brand typography marquee (d5b93fc)
  • web: real monochrome SVG brand logos + per-brand optical sizing (5c76634)
  • web: redesign cookie consent as compact pill bar (fa33a4b)
  • web: testimonials carousel — horizontal scroll, auto-advance, functional dots (f4c3b0b)

Bug Fixes

  • admin: harden check-allowed-paths against shell injection (32f68f6)
  • admin: read customers array from search envelope in membership form (ce98bf1)
  • admin: satisfy biome a11y and hook-deps lint in shadcn primitives (c5d3341)
  • admin: unblock admin-design-gates CI on chart primitive (03e5c0e)
  • auth: compile the schema contract test against both 1.6.x and 1.7.x (6216edf)
  • auth: keep shared session cookie storable on local http (49ee426)
  • auth: restore Better Auth 1.6.26 (8c06e37)
  • auth: restore Better Auth 1.6.26 (deaf446)
  • auth: support Better Auth 1.7.2 DB-free builds (7cbd5da)
  • aws: omit unset optional env vars and give admin the delivery keys (9afd259)
  • ci: coordinate dependency upgrades and validate fast-forward promotions (00c70f5)
  • ci: declare environment on jobs that read environment-scoped secrets (57cddc7)
  • ci: guard empty BetterStack webhooks in prod deploy workflows (38bb12f)
  • ci: make path-allowlist gate formatting-aware (AST-based, not text-diff) (eb99491)
  • ci: make path-allowlist gate formatting-aware instead of text-diff based (1330921)
  • ci: make the pprd load/security gates match reality (cd919f5)
  • ci: make the pprd load/security gates match reality (cabcbb1)
  • ci: pass CLOUDFLARE_DEFAULT_ACCOUNT_ID to the deploy (eb8dfe1)
  • ci: pass SKIP_ENV_VALIDATION/BETTER_AUTH_SECRET/NODE_OPTIONS through turbo strict env mode (#92) (7ddadf8)
  • ci: pin Mergify action and enforce CMS unlock access (f86edc8)
  • ci: point Lighthouse at the customer site instead of the admin portal (65c2767)
  • ci: point Lighthouse at the customer site instead of the admin portal (d1bbfea)
  • ci: poll for CI completion in deploy gate + bun install before rollback (075e45e)
  • ci: preserve QStash schedule registration after retiring the deploy workflows (93b31f2)
  • ci: quote wrangler rollback command so deploy workflows can start (b96c8ec)
  • ci: recover dependency checks and enable fast-forward promotions (#226) (a3ba66b)
  • ci: recover dependency checks and preserve commits across environments (a3ba66b)
  • ci: repair the daily pprd replication and make live-fork suites opt-in (7084cc6)
  • ci: scope prod deploy gate to CI workflow + install bun in rollback jobs (6526731)
  • ci: stop the deploy workflow failing after a successful deploy (981e7dc)
  • cms: use exactOptionalPropertyTypes-safe email config on pprd (06c45a6)
  • cms: use exactOptionalPropertyTypes-safe email config on prod (86b93f2)
  • cms: wire Resend email adapter and guard cms schema creation (625f269)
  • converge all Neon branches to canonical and close the drift tooling gaps (f3e2c67)
  • correct README.md inconsistencies — table count, roles, invoice numbering, job inventory, domain, and more (a9ac067)
  • db: keep the lazy client lazy under Better Auth 1.7 adapter construction (bd077e1)
  • db: lazy-init Neon client so next build no longer throws at import (3d7774e)
  • db: retry Neon cold-start fetch failures (d95e3ee)
  • db: use sql.query() in drift catalog reader for neon serverless v1 (sql(text) call form removed) (fd448fd)
  • deploy: add missing NEXT_PUBLIC_APP_URL to both apps and make admin Sentry DSN optional (953887e)
  • deploy: close Tier 0 blockers — required auth secret, pg_cron apply, QStash registration (44d7eca)
  • deps: align @neondatabase/serverless across web/admin to dedupe drizzle-orm (af651e9)
  • deps: clear all 22 audit findings so dependency-audit gate passes (78d2a23)
  • deps: clear all audit findings so dependency-audit gate passes (8382df3)
  • deps: migrate vitest workspace to test.projects + bump plugin-react to v5 for vitest 4/vite 8 (c93b395)
  • deps: patch transitive security advisories from bun audit (78ff0ef)
  • deps: pin better-auth to last good version; close the db/types typecheck gap (23e44fc)
  • deps: raise security overrides so bun audit passes (ac4ca9a)
  • deps: raise security overrides so bun audit passes (7d639c2)
  • deps: resolve @hono/node-server advisory failing the audit gate (d85566f)
  • deps: resync bun.lock with workspace manifests (#152) (c8fe568)
  • docs: correct the page and endpoint-group counts on the docs landing page (7420521)
  • docs: inline root tsconfig so docs builds standalone on Sevalla (2157451)
  • docs: polish brand chrome and dark theme (5e97b8e)
  • docs: restore accessibility = 1.0 on /docs/system-design (0269de4)
  • docs: restore accessibility = 1.0 on /docs/system-design (320e4c2)
  • dx: unbreak bun run dev, de-flake two admin suites, ignore SST generated files (38455e8)
  • env: treat empty strings as unset in both apps (a1e3168)
  • header: SSR auth state + mobile sign-in button + limit offers to 2 (cb4a916)
  • lock dev ports for all apps (web:3000, cms:3001, docs:3002) (4dc47c8)
  • monorepo: enforce web/admin separation — relocate background jobs to admin, remove duplication (1d6e820)
  • ops: add missing anonymize-preprod script (CI break) + refresh stale pg_cron/phase-8 text (2f98658)
  • release: reduce GraphQL history query size (1b82af1)
  • release: reduce GraphQL history query size (979760b)
  • release: reduce GraphQL history query size (#227) (1b82af1)
  • release: retry transient GitHub read-query failures (69a0c2d)
  • release: retry transient GitHub read-query failures (8325aee)
  • release: retry transient GitHub read-query failures (#228) (69a0c2d)
  • resolve 3 remaining doc inconsistencies (02dd9c2)
  • resolve all bun run lint failures (aa2c928)
  • security: override fflate to 0.8.3 to clear CI audit gate (2de5684)
  • standardize gems expiry to 1 year (365 days) across all docs (aba7b3c)
  • suppress root-element hydration warning from browser extensions (faa73a5)
  • web,db: correct Rayasandra geo coordinates to the real listing (93276aa)
  • web: accessible gold text token; defer only the performance threshold (6273d7c)
  • web: correct PWA manifest icon purpose type (build break) (a44b406)
  • web: enforce canonical typography + ship shadcn/Radix primitives (26aa832)
  • web: hero headline — force two-line split on desktop (9c8ae39)
  • web: hero headline guaranteed two lines (3d46ac9)
  • web: make Meta Pixel/CAPI env vars optional for keyless go-live (720f8a2)
  • web: nonce-free CSP on prerendered legal pages; move LHCI comment out of assertions (6117430)
  • web: prevent Google Translate hydration mismatch (358ad1d)
  • web: resolve the real Lighthouse failures the new gate exposed (eab233d)
  • web: restore the homepage hero image and make it owner-managed (c53ebeb)
  • web: services carousel — remove white fade, remove arrow circle, fix card alignment (1f53443)
  • web: skip Google One Tap auto-prompt outside production (a344487)
  • web: stop /staff/.. escaping the /me namespace in the staff redirect (846839b)
  • web: testimonials card hover top-border clipping (48f8673)
  • web: testimonials carousel — replace scrollIntoView with scrollLeft to prevent page hijack (3cac29c)
  • web: use official Google Maps “Embed a map” iframe on contact page (75aa4b8)
  • web: use reliable coordinate-based Google Maps embed on contact page (ab9e0d7)
  • wrap each curl in a bash [ -n WEBHOOK ] guard so an unset webhook logs skipping and exits 0 instead of failing the job. Behaviour unchanged when the secret is set. (38bb12f)

Performance

  • web: load brand fonts via link+preconnect instead of a CSS @import (dfaa946)
  • web: load brand fonts via link+preconnect instead of a CSS @import (b6ec617)
  • web: trim Worker bundle toward Cloudflare free-plan 3 MiB limit (7440091)

Documentation

  • add comprehensive High-Level Design document (HLD) (a310bf4)
  • add comprehensive Low-Level Design (LLD) document (1b3e389)
  • add comprehensive Low-Level Design (LLD) document (ed5b7ca)
  • add comprehensive pages.md route map (702e19e)
  • add design.md — single-file design brief for Stitch/AI agents (641c793)
  • add design.md — single-file design brief for Stitch/AI agents (7935a3a)
  • add design/ folder with 11 elaborative flow documents (50eab1f)
  • add design/ folder with 11 elaborative flow documents (9b87f54)
  • add detailed implementation flows for pre-OAuth UTM storage and Redis availability cache (caa6999)
  • add device-primary strategy (mobile for customers, tablet for a… (842ba78)
  • add device-primary strategy (mobile for customers, tablet for admin) (e337d4a)
  • add Emil Kowalski design skill & Taste Skill (anti-slop) to use-skills.md (8841591)
  • add Emil Kowalski design skill & Taste Skill (anti-slop) to use… (2a2452a)
  • add environment variables setup guide and status (d4d873b)
  • add Favourite Services feature spec (HLD + LLD) (5b6875c)
  • add Favourite Services feature spec (HLD + LLD) (a9c2f88)
  • add HTML versions of all design flow documents (6f8b716)
  • add HTML versions of all design flow documents (3a41e77)
  • add Mintlify docs.json for docs site configuration (c3134b0)
  • add pages.md — complete route map for all ~102 routes (403f18c)
  • add Payload CMS to website integration handoff plan (f26ad95)
  • add Royal Glow design tokens, variables, theme, and DESIGN.md (39ce56e)
  • add Royal Glow design tokens, variables, theme, and DESIGN.md (10a5aac)
  • add sitemap.md — complete site hierarchy and navigation archite… (271f690)
  • add sitemap.md — complete site hierarchy and navigation architecture (ab21a57)
  • add use-skills.md — comprehensive skills, tools & npx commands reference (22c91cf)
  • add use-skills.md — essential skills & npx commands (844f5b0)
  • add Writing PRDs, Grill-with-Docs, Next.js Developer, Deslop (aa19583)
  • add Writing PRDs, Grill-with-Docs, Next.js Developer, Deslop (Hallmark), React Doctor skills (e90cc51)
  • align all docs to codebase (099f572)
  • align all docs to codebase (pprd->prod) (b621172)
  • align all docs to codebase (test->pprd) (84cd48c)
  • align docs to codebase (Cloud Run invoicing, Workers/OpenNext, admin root-path, Next 16.2.9, 6 packages) (7d18162)
  • auth: record the Better Auth 1.7.2 rollout outcome and two defects found (bdf2bb5)
  • aws: record the domain cutover and the CAA trap it set (033f984)
  • aws: record the first successful Lambda deploy and what it exposed (bad9ac2)
  • complete full-fledged Fumadocs documentation site (0975672)
  • consolidate pages, features specs, and system-design into knowledge-base (c53ce0d)
  • convert Fumadocs MDX components to Mintlify equivalents (245115f)
  • establish knowledge-base/ — relocate reference docs + add INDEX (050838b)
  • expand use-skills.md — add Refero, npx skills ecosystem, 90+ co… (050b8b0)
  • expand use-skills.md — add Refero, npx skills ecosystem, 90+ commands, new sections (431664f)
  • full project documentation in Fumadocs (no OpenAPI needed) (ddd527a)
  • readme: add 3-CTA hero and Lead Developer section (9a03a4a)
  • readme: add shields.io badge row under the H1 (34aff20)
  • readme: open external links in a new tab (9942b7c)
  • readme: revert target=“_blank” change (was a no-op) (b60d9f6)
  • readme: update Neon badge to show PostgreSQL 18.6 (ca14ef6)
  • redesign HTML files with visual CSS flowcharts and wireframes (b172881)
  • redesign HTML files with visual CSS flowcharts and wireframes (4044a02)
  • render: specify sslmode=verify-full and document Resend + revalidate env vars (d64b20d)
  • render: specify sslmode=verify-full and document Resend + revalidate env vars (51c4531)
  • render: specify sslmode=verify-full and document Resend + revalidate env vars (e5f96a6)
  • render: specify sslmode=verify-full and document Resend + revalidate env vars (0b37f5b)
  • repo: add compressed Royal Glow hero banner (318 KB) (8381811)
  • repo: add standard trust files and README banner anchor (04c746b)
  • repoint steering + README references to knowledge-base/ (c5ce3fe)
  • retire remaining Fumadocs references from project documentation (5a01b79)
  • rewrite 5 HTML files with SVG diagrams and tabbed layouts (batch 1/2) (57f0773)
  • rewrite pages.md as maximally descriptive implementation reference (d2f24cf)
  • rewrite remaining 5 HTML files with SVG diagrams and tabs (batch 2/2) (2e733f3)
  • scrub all remaining pg_cron references repo-wide (architectural decision follow-through) (270ea68)
  • split pages.md into pages/ folder for maintainability (aad9b04)
  • update all docs to reflect admin subdomain migration + port changes (4a9c7a2)

Code Refactoring

  • admin: rename admin Sentry DSN env var to NEXT_PUBLIC_ADMIN_SENTRY_DSN (3862850)
  • align all environment variable names to canonical spec (65a9ced)
  • blog: consistent grid, CMS read-time, 3x3 from page 2; remove unused cards (f326b3a)
  • jobs: migrate all pg_cron jobs to QStash; drop pg_cron (architectural decision) (21c4d20)
  • SPA membership now branch-locked — sessions at originating branch only (a407956)

Miscellaneous

Last modified on October 25, 2026