Changelog
What's new, fixed, and improved in RallyPoint.
v2026.08.14
August 14, 2026Bug Fixes
- cf5e7df mobile polish — room emphasis, marketing carousel thumbnails
- 399803e cart quantity edits render without a reload; trashcan per standard
- ce7cd36 draft conventions expose no attendee surfaces
- 2e36028 phone add-to-cart bar no longer hidden under the bottom tabs
v2026.08.13
August 13, 2026Features
- 916d313 split badge payment state from physical status (finding #23)
- 5928ecb per-convention web app manifest and app icon — install the con
v2026.08.11
August 11, 2026Bug Fixes
- 7576e93 api vitest loads its own .env — bare pnpm test ran 39 of 433 silently
Features
- 38edbc5 snapshot hold prices and audit checkout transactions
v2026.08.10.2
August 10, 2026Features
- 8a83508 staff-added notification email for existing accounts
v2026.08.10
August 10, 2026Features
- bb0e0ae kiosk operator pins — mandatory personal pins, widened rosters, desk ux
- 061c908 transactional email rail — invite sends via Postmark (ADR 0016)
Bug Fixes
- 7eac8ab seed heals robot clerkIds across instance splits; signup spec marked slow
- d8a53e9 e2e webservers get dedicated dev:e2e scripts with pinned ports
- 886931b alerts mark-read wedge — confirm before flipping, merge without stomping
- 8d46de5 scope event tag ids to their convention (security #15, final piece)
v2026.08.08.2
August 8, 2026Features
- d60dd3b marketing pass — the site tells the whole story, honestly
- e8561bf sponsorship and booth fees are ledger rows — the last money hole
v2026.08.08
August 7, 2026Bug Fixes
- f14e7df e2e hardening and export filename fixes surfaced by the release gate
Features
- 256e1d5 ledger CSV export — the report as columns, not prose
- a0bce4b badge grant admin tool, and an Attendee Tools page to hold it
- 5eedddc volunteer badge grants, and bundled merch flows through every grant path
- aa185d4 badge_grants — the first-class grant record with value snapshots
- b99f69f grants are line items in the ledger, beside what was sold
- b338b7b convention financials — the audit report over the cart ledger
- f653a0d event tags — organizer-defined, descriptive only
v2026.08.07
August 7, 2026Bug Fixes
- 22180e7 the apex is a first-party origin (production 401 regression)
v2026.08.06
August 6, 2026Bug Fixes
- 092dc37 invites expire after 30 days (security #33)
- 13e3ff7 close the error-envelope and OpenAPI drift (security review, drift)
- ccb4c1e cap the two lists that had no ceiling at all (security #31)
- 4277c2c owesCents reports this badge, not the whole order (security #22)
- 0b2731c the Clerk webhook no longer rebinds an identity on email match (security #28)
- 695e8ca uploads authorization, extension handling, and first tests (security #29)
- a33d341 assert first-party authorized parties, and stop inviting integrator tokens (security #27)
- 0ff6279 unique-violation at confirm is a 409, not a 500 (security #38)
- d46e964 resolveUser ignores soft-deleted accounts (security #37)
- c74cdeb make the public convention shape an explicit projection (security #9)
- 4d17561 stop kiosk search doubling as a roster export (security #7)
- 1d45af5 area-lock the merch fulfillment roster (security #12)
- b3a7343 lock the sponsor level before accepting (security #14)
- c71f249 real forbidden code, invites gate, owner guard (security #39, #36, #34)
- 405b647 assert the Clerk authorized-party claim (security #27)
- 33d7e72 compare-and-set on merch swap and claim (security #13)
- 240e7b9 escape LIKE metacharacters in /users/search (security #5)
- 2e5112d validate body foreign keys against the convention (security #4, #15)
- fa0bb16 cap badge startNumber below the int4 ceiling (security #18)
- 79aa091 wrap the timespans batch in a transaction (security #8)
- 9a7ec75 scheme-validate URL fields and theme colors (security #2, #16, #17, #30)
- 7702c0f bound cart hold lifetime and re-gate confirm (security #1, #15, #20)
Features
- f478430 shared TypeBox primitives for bounded request schemas
v2026.08.05
August 5, 2026Features
- a287ecf attendee-visible signup access — wave calendar, per-badge verdicts, annotated picker
- 4c5b021 rework sales and signup gating — the armed date is the policy, rules are dated modifiers
- ca899c6 event signup rules — staged access windows, caps, and a dry-run preview
- 99e345f badge batch drops — per-type sale windows + the split generator
Bug Fixes
- a3f3e34 signup-rules polish round — one cap per kind, aligned tables, full drop calendar
- 17b3ee8 codex review round — permission drift, CAS desk transitions, public schema, contract truth
v2026.08.01
August 1, 2026Features
- abe84d0 merch audit log — every purchase-lifecycle verb on the record
- 65789d8 cart coherence — shared timer, merch unit editing, kind chips, clear-all
- bfb372f kiosk surfaces — /kiosk desk PWA page and Kiosk Setup registry
- 02eb11d kiosk substrate — device registry, pairing, device-token auth, desk routes
- bbd65c3 pre-attach permission grants to staff invites
Bug Fixes
- 656b61d attendee merch polish — bundle visibility at sale, Ordered status, copy and alignment
- f8d4057 merch cart lines say items, not seats
- 4c1d439 merch adds append per-badge quantities instead of replacing the hold
- 43d5960 kiosk activity entries — reuse checked_out, show operator and device
v2026.07.31.1
July 31, 2026Bug Fixes
- 65b6ba2 invite page resolves the signed-in-but-unprovisioned session race
v2026.07.31
July 31, 2026Features
- 9e58663 bake GotS brand assets into the demo seed
- 3edb94a merch v1 — products, variants, badge-bound sales, bundles, fulfillment
v2026.07.28
July 28, 2026Features
- 4956a76 image pipeline — client downscale, banner focal point, rich-text images
- c509b02 sales arming — datetime triggers with an armed guardrail
v2026.07.27
July 27, 2026Features
- 3bf7366 render the deeper-page banner clean with a breadcrumb bar beneath
- ea74ae7 demo con world seed + weekly reset cron
Bug Fixes
- 80bac5e creation flow saves State/Province to region, not country
v2026.07.24
July 24, 2026Bug Fixes
- fad1808 structural catalog reads open to any organizer grant
- 2d6cb64 outcome-only confirm dialog; reseed owns the staff roster
- 01edd17 passthrough feedback — confirm dialog, blank-dialog bug, pulse spread
Features
- 7ecbcee social icons on public convention pages
- f3a4b14 scoped sidebar + overview filtering (permissions slice 3)
- b62a204 area-grant management + scoped staff access (permissions slice 2)
- a4f387a per-area permission grants — enforcement layer (slice 1)
- c80d7e1 rebuild organizer dashboard as owner overview
v2026.07.23.1
July 23, 2026Features
- 2cb22c9 event share links for non-public events
v2026.07.23
July 23, 2026Bug Fixes
- 524f65f locate the avatar menu trigger by aria-label, not display name
- 9c5606e serialize Unit Tests before E2E to close a shared-DB race
Features
- 40ca5e5 personal event queue for attendee notifications (ADR 0014)
v2026.07.22
July 22, 2026Features
- 4e38644 exhibitor info page, splitting the pitch from the exhibitor roster
- e3da269 sponsorship info page, splitting the pitch from the sponsor roster
- e99f37e sponsor level caps, plus a shared custom-fields-editor bug
- 86d9937 badge-type transferability flag, plus a routing bug sweep
Bug Fixes
- b05a6cf schedule unschedule, decision panel, and submit-event link (Marshall bug batch)
v2026.07.21
July 21, 2026Bug Fixes
- 602044f label the Attendees page's two <select> elements to fix a CI regression
- ea9a5da new-account signup hand-off — /welcome absorbs the post-signup session race
- 58b7fdd convention-staff removal no longer strips the true organizer's Everything grant
Features
- 31a4dcd invite system — staff invites and badge-claim invites
v2026.07.20
July 20, 2026Features
- 20a9e11 everything permission — delegable staff access on top of the roster
- 68da66d convention staff roster with masked-email search-and-pick
v2026.07.18
July 18, 2026Bug Fixes
- ac3d4a3 failed loads fail loud instead of rendering convincing emptiness
Features
- d93c102 volunteer workload warning counts a rolling 24-hour window
- cd7de2f subdomain guardrails — slug validation, reservations, draft lock
v2026.07.17
July 17, 2026Features
- a12efd6 show time v1 mode + attendee nav restructure (ST-1)
- 946a380 organizer nav shell — collapsible sidebar on every management page
Bug Fixes
- 8d3d815 enforce event-type max capacity on every event write path
v2026.07.16
July 16, 2026Features
- bb12e0c neutral room vocabulary, real error pages, morning-review records
- 158da43 event signups + generalized cart — seats, waitlist, ledger, My Events
v2026.07.14.1
July 14, 2026Features
- 03dde74 event submissions — single-table proposals with an explicit event state machine
v2026.07.14
July 14, 2026Features
- 9bd1f45 exhibitor QA round — one-space booths, hall-creating CSV import, batch-save editor
- dd3825e add exhibitor profiles, public showcase, nav, and seeds
- 25bc5d3 add exhibitor review, decisions, extras editing, booth assignment, grants
- 56de518 add exhibitor application track (public form, submissions, config panel)
- 8a64324 booth inventory, extras catalog, and CSV import for exhibitors
- 77288ed room/space purpose system with event-type limiters
- 813a518 exhibitor + room-purpose schema and types
- 170a5c4 show badge number ranges as a column on the badge types list
- ee1edbf designated-pages registry with protection and prefilled deep links
- 521069a sponsors — applications, levels, review, badge grants, and the public page
Bug Fixes
- 793c560 events list updates in place when an event is deleted
v2026.07.11.1
July 11, 2026Features
- 1110ede confirm event deletion inline before it fires
Bug Fixes
- dced0ab return OAuth sign-ins to the page that asked for authentication
- ef8d373 point the API docs token link at the current environment's app URL
v2026.07.11
July 11, 2026Features
- 5135df2 add /token page for grabbing an API bearer token
- 635542c rebrand the API reference with Scalar at /docs
- 0ebdc7a lock crewed shifts against schedule changes while volunteers are assigned
Bug Fixes
- dc31f17 drain in-flight requests on deploy and bound the database pool
v2026.07.10
July 10, 2026Features
- 590130b volunteer management — applications, review, shifts, and CSV import
- 85bfc15 shared timespan-bound date range picker
Bug Fixes
- f228e8a show the last day on timespans for spans crossing midnight
v2026.07.08.3
July 8, 2026Features
- f3dd90b mask legal names on the attendee roster
v2026.07.08.2
July 8, 2026Bug Fixes
- bec49a8 hide the check-in button on cancelled badges
v2026.07.08.1
July 8, 2026Features
- 4ef90f1 badge roster, check-in, and badge numbering
v2026.07.08
July 7, 2026Features
- 9f1f036 user identity setup and badge registration with cart
v2026.07.06.1
July 6, 2026Features
- fede688 convention pages with revision history and public info menu
v2026.07.06
July 6, 2026Features
- e06f30b convention configuration page for status and public switches
- 141d2b3 convention status drives the public site
v2026.07.05.1
July 5, 2026Features
- df813df derived-surface containment for marquee strip and rail
Bug Fixes
- 26acb64 keep sanitize-html external in the api esbuild bundle
v2026.07.05
July 5, 2026Features
- b592deb convention setup checklist, live homepage preview, dashboard polish
- 3acd397 public attendee schedule with filtered table view
- 53f5eb0 dedicated home page settings + marquee right-rail consolidation
- 065142f marquee homepage layout with toggle-driven lifecycle
- 1ea6370 details page coverage for homepage fields + full timezone picker
- a873f2f convention homepage foundation — schema fields, rich description, drop custom CSS
v2026.07.04
July 4, 2026Features
- d24acbd room filter on the schedule grid
- b22af29 15-minute precision in the timespan editor
Bug Fixes
- 7b19426 support timespans crossing multiple midnights in the builder
v2026.07.03
July 3, 2026Bug Fixes
- 2a70bf7 watch workspace package sources in API dev server
Features
- e56aabf public site polish and GCS upload wiring for deployed environments
v2026.07.02.1
July 2, 2026Bug Fixes
- d30a9a5 restore floated transitive deps from playwright bump
- 2c0cb93 apply principle of least information to user emails; alphabetize event hosts
- 6917609 redirect www.rallypoint.events to apex via marketing Worker
Features
- 75acb77 roll paged envelope, sorting, and pagination out to all list endpoints
- 4d8b4ee list toolkit with paged envelope, piloted on GET /events
v2026.07.02
July 2, 2026Bug Fixes
- c3718d0 log verifyToken error and secret key prefix for staging 401 diagnosis
- d737e6e marketing staging at stagingrally.events root to mirror production topology
- e9dc30a move marketing staging to preview.stagingrally.events
- 42a8a38 externalize @google-cloud/storage from esbuild bundle
- 4ac9dac install wrangler via pnpm workspace to avoid npm workspace: conflict
- e5c6fb8 use wrangler-action and pass PUBLIC_APP_URL at marketing build time
Features
- 3e9c9c4 switch staging Clerk instance to production; drop satellite mode
- 446bc2c migrate web and marketing apps from Cloudflare Pages to Workers
- 90ad74b gate Clerk satellite config behind PUBLIC_CLERK_SATELLITE env var
v2026.06.30
June 30, 2026Features
- 5d604f7 public convention site with subdomain routing
- cc0a50f add GCS image upload for convention theme (header + logo)
v2026.06.28
June 28, 2026Features
- f417dc4 add schedule grid with collision detection
v2026.06.25
June 25, 2026Bug Fixes
- 81e2061 update smoke test selectors for revised dashboard layout
Features
- bb3a0aa event hosts, ConventionDateTimePicker, and event edit revamp
v2026.06.24
June 24, 2026Bug Fixes
- 00becb1 collapse migrations 0008-0011 into single clean migration
- 4451930 always use dev:ci for API in Playwright config
- 0258c5f use watchless API dev command in CI
- 189c590 gracefully handle API unreachable on home page
- 6a5983b remove unused PUBLIC_APP_URL import from marketing Header
- 5c4edfe use dynamic public env for PUBLIC_API_URL in marketing footer
- a08572c use named imports from \$env/static/public in web Footer
- d742e12 merge theme patch into existing displayConfig and invalidate layout cache on save
- dc6f31a use data.apiUrl instead of import.meta.env for client-side API calls
- 92b0cba resolve convention list serialization failure
- 4d70591 accept format:date for convention startDate/endDate in request schemas
- ee1b6db skip badge-type integration tests when DATABASE_URL is not set
- 6df3713 pass vitest when no test files found, disable turbo telemetry
- e04968f run svelte-kit sync before tsc in builder typecheck
- 65b08b6 drop standalone typecheck from packages/ui
- fa48344 require Node 22 for pnpm 11 compatibility
- 97d01cf resolve pnpm version conflict and opt into Node 24 actions
- 3e52bfc Change footer layout from column to row flex direction
- 874c75b Add w-full to footer grid for proper container alignment
- 6ab4bc2 Use flexible grid columns to prevent layout overflow
- e66d6ff Correct carousel rotation direction for card positions
- 261aa97 Wrap footer content in proper container styling
- 70999d2 Align all page sections to consistent 1200px grid
- df810e8 Adjust carousel card heights and prevent text overflow
- 2ee4c66 Remove right padding from carousel section to prevent cutoff
- 84a181d Wrap carousel grid in flex container to prevent layout breaking
- 470f644 Refactor carousel to CSS grid layout without overlapping
- 0ee7820 Remove duplicate closing brace in page template
- 25c2dd4 Apply text color to schedule description paragraphs
- b7d091f Wrap carousel card blocks in each loops for reactivity
- 152a775 Resolve carousel, image, and styling issues in components
- 13cac39 Resolve TypeScript and Vite build errors in dev server
- dceb951 Add ./lib to Vite server fs.allow configuration
Features
- f981d32 replace convention days with timespans model and timespan builder UI
- 5b3c2f3 event types, events scaffolding, and days timespan prototype
- 6308bb3 changelog page with auto-generation from conventional commits
- 1655c4f rooms and spaces management with hierarchical venue model
- d081dba convention days management with generate prompt and batch save
- 5f7338d convention details page with venue type and URL fields
- 1edb6c0 stand up API with seeded database in CI for E2E tests
- 443fd97 smoke test suite with Clerk auth and critical path tagging
- 50dc27f responsive design for marketing site
- 06b8b34 add My Conventions link to user dropdown on both apps
- 957fcc6 conditional satellite mode for Clerk cross-domain auth
- fd83366 configure Clerk satellite domain handshake
- ce5ebda user dropdown menu and API docs link in both app headers
- 19adc7e env indicator, auth-aware header, and API docs link
- 723d566 migrate convention dates to date type; expose timezone field
- 641539e dev toast for API error bodies in local development
- 9e8fe48 badge type management — API, UI, types, tests
- d9b7614 restore convention hub, theme editor, and routing
- 0d041c1 convention theme editor, routing refactor, and url architecture
- 11013fd add GET/PATCH/DELETE convention routes, theme field, and openapi auth docs
- c524ce4 add typebox schemas, openapi docs, and api.rallypoint.events routing
- 3bba7f1 add sign-up route and wire create-convention end-to-end (#23)
- 4901cdb add sign-up route and wire create-convention end-to-end
- 7ffa8d7 update ci workflows to deploy to staging and prod (#20)
- 5b2b613 persist conventions — API auth middleware, POST/GET routes, wired frontend
- e9dba65 web app UI — header/footer, create-convention wizard, auth fixes (#17)
- cea9bf2 clerk webhook integration and Cloud Run deployment (#16)
- e22af06 gate web app, add welcome home, and marketing placeholder pages (#15)
- 4bb0b9e core schema design, migration, and test seed data (#14)
- 5261a6a env, deployment, and Clerk auth wiring (#12)
- f47c7db add Playwright e2e test for conventions page
- 53cff20 scaffold apps/marketing SvelteKit marketing site
- b33e0db scaffold apps/web SvelteKit attendee app
- e50481f scaffold apps/api with Fastify, OpenAPI, and Drizzle wiring
- 5855fff scaffold packages/domain with convention business rules
- 1f23cc9 scaffold packages/types with API contract types
- 4d592c8 Set up visual editing mode with Builder.io integration
