Changelog

Updates and improvements we ship with each release.

v0.16.0

Changed
  • ·Single-scroll page model — every planner page now scrolls as one continuous document. The browser scrollbar lives only on the page itself; inner regions no longer create their own competing scroll areas, so the wheel and trackpad always move what you expect.
  • ·Top navigation is now fixed to the top of the viewport above all in-page content, so org switcher, primary nav, and the account menu stay visible no matter how far you scroll on Events, Analytics, Contacts, or any event admin page.
Fixed
  • ·No more page-width snap when sheets, dialogs, or dropdowns open — the reserved scrollbar lane stays put through every overlay state, eliminating the small horizontal jump that used to ripple across cards, tables, and the top navigation when modals appeared.
  • ·Side sheets (Order, Attendee, Ticket, Bundle, Promo, Contact, Host, Edit Event Details, mobile sidebar) all share one scroll-lock model with the rest of the overlay system, so opening a sheet on top of a dialog or while a dropdown is open behaves consistently.
  • ·Bundle pricing in confirmation emails — purchased bundles now appear as a single bundle line with the bundle's real price and contained tickets listed beneath it, instead of one "$0.00" / "Complimentary" line per child ticket. Applies to the customer order confirmation, the planner order notification, and the email templates preview.
Improved
  • ·Event admin layout — the side rail (Overview, Orders, Attendees, etc.) sticks just below the top bar while the main content scrolls under one scrollbar, instead of the column having its own nested scrollbar competing with the page.
  • ·Side-sheet open/close animations restored — Order, Attendee, Ticket, Bundle, Promo, Contact, Host, and Edit Event Details sheets slide in and out smoothly again without any of the layout shifts the previous animation pass had introduced.
  • ·Themed scrollbar continuity — on the create page the document scrollbar (not just inner panels) adopts the active event palette so the colored thumb tracks all the way down the page.

v0.15.0

Added
  • ·Brand-new event creation flow at /create — a fully themed two-column page that mirrors the public event registration layout. The left column hosts the banner upload and theme controls; the right column hosts every event detail (organization, visibility, name, date/time, timezone, description, location, ticketing) in tightly-spaced themed pill rows. Legacy /create-event links transparently redirect to the new route.
  • ·Banner-driven page theming — drop or upload a banner image and the entire create page cross-fades to a palette extracted from the image (background, surfaces, foreground, primary, borders, scrollbars, dropdowns, the rich-text editor, and even the Switch active color). Switch to a custom theme to pick from a curated set of saturated /500 hues, and the swatch label replaces "Custom theme" with the chosen color's name.
  • ·Light / Dark mode override — auto-detects the right mode from the banner image and exposes a manual override so organizers can force the alternate scheme when the auto-pick doesn't match the vibe.
  • ·Inline-editable date and time pills — click directly inside the date or time pill to type a value (e.g. "May 4", "9:30 pm", "21:30", "9p") with permissive parsing, and a popover opens alongside for visual picking. The popover's calendar and half-hour list inherit the active event theme.
  • ·Public-on-org-calendar toggle on event creation — choose at creation time whether the event appears on your public organization calendar/list, with the new is_public_on_org_calendar column persisted on the event.
  • ·In Person / Online location format with smooth show/hide animations — Online events expose a Meeting URL field (persisted in the new online_url column) and hide the in-person rows; In Person events expose Location, Venue Name, and a new optional Location Instructions multi-line field for entry directions, parking, building codes, etc.
  • ·Click-to-open location combobox — clicking the Location row opens a themed search popover; once a place is selected, the row collapses to display the chosen location with an X button to clear and re-open the search for a new entry.
  • ·Click-to-expand event description and location instructions — both rows collapse into compact pills by default and animate open into editors (rich text for description, plain textarea for instructions) so the create page stays scannable.
  • ·New event fields — end_date_time (separate end timestamp distinct from start), online_url, location_format, location_instructions, and is_public_on_org_calendar are now persisted on every event with sensible defaults.
Changed
  • ·The global Switch component is now theme-aware — its active color is blue/500 by default and automatically becomes --event-primary on themed surfaces, with a smoother color/transform transition on toggle.
  • ·Removed donations toggle/goal, registered-guests release mode, refund-policy defaults, and the public-location 3-way radio from the create flow. These remain editable post-creation in the event Settings tab so the create page can stay focused on the essentials.
Improved
  • ·Stable document scrollbar — the page width no longer shifts when resizing the window, opening dropdowns/popovers, or when content grows/shrinks. The scrollbar gutter is reserved on the html element and overrides any library-injected scroll-lock compensation.
  • ·Themed scrollbar — on the create page the scrollbar thumb matches the active event palette and animates color smoothly when the theme changes, so it never jumps back to a neutral gray on themed events.
  • ·Smoother theme cross-fades — the page background, foreground, borders, and themed surfaces transition between palettes over 350–500ms instead of snapping, so banner uploads and custom-color picks feel like one continuous color shift rather than a hard repaint.
  • ·Date and time pill defaults — start defaults to today + the next half-hour interval, end defaults to one hour after start (and rolls over to the next day if the end crosses midnight). End times automatically re-anchor when start moves so end can never sit before start.
  • ·Top navigation on the create page now sits above all in-page surfaces with a translucent themed backdrop and blur, so content scrolls underneath cleanly instead of being visible through the bar.

v0.14.1

Added
  • ·"Back to events" button on the embedded event page — when a visitor opens an event from the embedded organization calendar or list, a small back affordance now appears at the top-left of the event page so they can return to the list without leaving the iframe.
Improved
  • ·Embed view persistence — clicking an event from the calendar view of the embedded org listing now carries view=calendar through the event page and checkout, so the "Back to events" link returns the visitor to the same view (list or calendar) they came from, even after starting and abandoning checkout.

v0.14.0

Added
  • ·Event mode (Paid / Complimentary) — a new per-event setting available in event creation and Settings. Choose Complimentary for free events to hide revenue-focused cards from the overview, and switch back to Paid at any time without restrictions on ticket pricing.
  • ·Customizable checkout button label — every event can now choose the call-to-action shown on its public page from a preset list: Get Tickets, RSVP, Register, Purchase, Checkout, or Donate. Configurable from the Settings tab under Checkout Options.
Changed
  • ·The Net Revenue card on the event Overview is now hidden when an event is in Complimentary mode, keeping the dashboard focused on what matters for free events.
  • ·The word "Free" has been replaced with "Complimentary" everywhere a $0 ticket, bundle, or order is shown to attendees, organizers, and admins — including ticket pages, checkout, the order summary, planner ticket lists, the orders table, recent registrations, the admin transactions view, the admin revenue chart, and confirmation emails.
  • ·Bundles priced at $0 now display "Complimentary" on the public checkout instead of "$0.00", making complimentary bundles read consistently with complimentary individual tickets.

v0.13.0

Added
  • ·Permanent event URLs — new events now get opaque 8-character slugs automatically, while legacy human-readable event links are preserved through aliases and redirected to the canonical URL.
  • ·Overview insights cards for Recent Registrations, Sales Drivers, Ticket Mix, and Net Revenue bring the most important event performance signals directly onto the Overview tab.
Changed
  • ·Event creation no longer asks planners to choose a public URL manually; the platform generates a durable event slug so names and marketing copy can change without breaking links.
Improved
  • ·The event details sheet now includes banner image and theme controls alongside name, date, time, timezone, and location, consolidating the main event identity edits into one place.
Fixed
  • ·Themed public event and checkout loading screens now use neutral skeleton colors until the event theme is known, eliminating the distracting purple flash on non-purple events.

v0.12.0

Added
  • ·Event overview card on the Overview tab — a large, fully themed card that surfaces the event title, date, time, location, location-visibility status, banner image, and quick actions (Edit Event Details, open public Event Page, More menu) in one place.
  • ·More-actions menu on the overview card with Publish/Unpublish, Live Check-in, Copy public link, and Embed — each option uses a themed dropdown that adopts the event's page theme so it reads correctly on light or dark events.
  • ·Edit Event Details slide-out sheet — change the event name, date, time, timezone, venue/address, and public + registered location visibility settings without leaving the Overview tab.
  • ·Change Theme slide-out sheet — update the banner image, page theme color (presets, image-derived, or custom hex), and theme mode (Auto / Light / Dark) inline from the overview card.
  • ·Event-themed dropdown-menu primitive that wires Radix dropdowns into the active event's color tokens, used by the overview card's more menu.
  • ·Event actions section on the Settings tab — a dedicated card surfaces Duplicate event (coming soon) and Delete event, replacing the destructive action that previously lived in the event page header.
Changed
  • ·Event admin layout redesigned — the legacy top header (banner, title, share/delete chrome) is gone; the page is now a clean two-column layout with a slim left navigation rail and the overview card anchoring the dashboard.
  • ·Event sidebar navigation rebuilt as a single flat list — Overview, Orders, Attendees, Comms, Hosts, Tickets, Promos, Event Page, Settings — with an "All events" back link at the top and tighter, design-system-aligned button styles. The "Keep up" / "Manage" sections were removed.
  • ·Tickets tab All / Tickets / Bundles filter now uses the new pill-style SegmentedTabs control with an animated indicator, matching the Upcoming / Past switcher on the events list.
  • ·Date, time, timezone, banner image, theme color, theme mode, and event title were removed from the Page Content and basic Settings tabs — all of these now live in the overview card's edit sheets, so each surface only has one canonical entry point.
Improved
  • ·Dropdown menus, command lists, and calendar popovers have a refined visual style — borderless popovers with a softer shadow, white popover background, tighter padding, lighter hover state, and consistent 13–14px medium type for items.
  • ·Calendar (date picker) cells use medium-weight text, rounded-[4px] selection, and the secondary token for hover/today instead of accent — keeps the picker readable on themed surfaces.

v0.11.0

Added
  • ·Embed your organization calendar — a new "Embed calendar" section in organization settings generates an iframe snippet (list or calendar view, configurable width/height) with live preview so you can drop your full upcoming-events list onto any external website.
  • ·Calendar layout for the events list — a third "calendar" toggle joins grid and list on the dashboard, rendering events as a vertical-timeline agenda grouped by day with image cards and quick "Manage Event" actions.
  • ·Calendar/list view switcher on the public organization page (and on its embedded version), letting visitors browse upcoming events as either a compact agenda or a timeline of cards.
  • ·Embed-aware organization page — when loaded with ?embed=1 the org listing hides the brand header, footer, and outer chrome so it sits cleanly inside an iframe; outbound clicks preserve the embed mode all the way through checkout.
Changed
  • ·Dashboard list view redesigned as a compact day-grouped agenda — time on the left, event name, hosts, location, and status pill on a single row, instead of an image-thumbnail card with progress bar.
  • ·Public organization list view redesigned to a compact day-grouped agenda using the app design system, with the same layout used both directly and inside embeds.
  • ·Calendar view (planner and public) now groups by day with a vertical timeline marker per date instead of grouping by month.
Improved
  • ·New URL helpers (getOrgUrl, getOrgEmbedUrl, getFullOrgEmbedUrl, buildOrgEmbedSnippet) and a shared event-grouping module (groupEventsByDay, groupEventsByMonth) power the new agenda layouts and embed flow.

v0.10.0

Added
  • ·Event QR code control — organizers can now turn ticket QR codes on or off per event from checkout settings.
Changed
  • ·When QR codes are disabled for an event, purchaser and guest confirmation emails avoid QR-specific instructions while still linking to ticket details.
  • ·Order and ticket confirmation pages hide QR code images and download actions for events where QR codes are switched off.

v0.9.0

Added
  • ·Public order page (/order/[orderId]) — after completing registration, attendees can view a full summary of their order including all tickets, guests, and amounts at any time using the unique order link.
  • ·"View your order" button appears in the success state on the event page after registration, linking directly to the new order page.
  • ·Order confirmation email — a new order-level summary email can be triggered from the order detail modal, sending the purchaser a full breakdown of every ticket in the order with guest names, QR codes, and totals.
  • ·Apple Pay domain auto-registration — connected Stripe accounts now automatically register the app domain for Apple Pay as soon as charges become enabled, via both the stripe-connect and stripe-webhooks edge functions.
  • ·Email icon assets (calendar and map-pin in light and dark variants) added to the public folder for use in email templates.
Improved
  • ·Email templates preview page now lets you pick a real event and ticket type from your organization so emails render with live event data instead of hardcoded samples.
  • ·All outgoing emails are now mobile-responsive — a CSS media query block in the email shell stacks columns, full-widens buttons, and adjusts padding on screens under 600px.
  • ·Registration success state no longer auto-dismisses after 5 seconds — the confirmation message stays visible until the user navigates away.
  • ·Theme CSS variables are now applied via useLayoutEffect instead of useEffect on the theme test page, eliminating a flash of unstyled content on first render.
  • ·Order detail modal fetches org_id alongside event data and includes donation amounts when sending order confirmation emails.
  • ·getOrderPageUrl and getFullOrderPageUrl URL helpers added alongside the existing event URL helpers for consistent link generation.

v0.8.0

Added
  • ·Host profiles on the event page — each host link can now have an avatar photo, a display order, and a visibility toggle controlling whether they appear on the public event page.
  • ·Event page content settings tab — a new consolidated "Page Content" settings area brings together the description editor, theme, donations, custom fields, and a new hosts management panel all in one place.
  • ·Host ordering in the editor — planners can drag-and-drop or manually reorder hosts and toggle each host's visibility on the event page without affecting their referral link.
  • ·Event theme color picker — a new color swatch panel inside the Page Theme tab lets planners choose from popular preset colors or enter a custom hex value to seed the event's generated color palette.
  • ·Database migration adds avatar_url, display_order, and show_on_event_page columns to host_links, with automatic backfill that preserves the original host ordering from the legacy hosts array.
Improved
  • ·Registration modal and checkout now render tickets and bundles together in a single list sorted by display_order, so the ticket selection order matches what the planner configured.
  • ·Image upload component gains a "Replace image" button alongside the existing remove button, making it easier to swap a banner or avatar without first deleting it.
  • ·Event theme seed color extraction now produces a ranked set of candidate colors and generates fallback variants so the palette has more accurate coverage for images with subtle or low-chroma palettes.
  • ·Host referral codes are now generated from a random UUID instead of a cleaned host name, eliminating collisions on names with special characters or short strings.
  • ·fetchOrderedHostLinks gracefully falls back to creation-order when the display_order column is not yet present, keeping the app functional before the migration runs.
Changed
  • ·Design system token migration — hardcoded hex color values replaced with semantic Tailwind tokens (text-foreground, text-muted-foreground, bg-background, border-border, etc.) across all pages and UI components.
  • ·Next.js config migrated from next.config.js to next.config.ts.

v0.7.0

Added
  • ·Organizer order notification emails — planners now receive an email for every new ticket purchase with purchaser info, guest names, ticket details, total amount, and referral attribution when applicable.
  • ·Event timezone support — events can now have an explicit timezone that is used for displaying dates and times across the app and in emails.
  • ·Promo code "applies to" setting — discounts can now be configured to apply once to the entire order or individually to each ticket.
  • ·Read-only email field on the personal info settings page so planners can see which email their account is under.
Improved
  • ·OAuth sign-up security — uninvited Google sign-ins are now blocked at the database level and gracefully redirected to the waitlist page with a clear message.
  • ·Event slug resolution now correctly handles slug collisions across organizations for event managers.
  • ·Date picker in checkout guest info replaced with a cleaner calendar popover instead of a raw text input.

v0.6.0

Added
  • ·Export attendees to CSV — a new "more options" menu on the attendees tab lets organizers download all attendees or the current filtered view as a CSV file with name, email, phone, order ID, ticket type, check-in status, and amount paid.
Improved
  • ·Column drag-and-drop in both the attendees and orders tables now shows a thin blue drop-indicator line so you can see exactly where the column will land before releasing.
  • ·OG meta descriptions for event pages now strip Lexical rich-text JSON and show clean plain text to social media crawlers and link previews.
  • ·All host referral URLs and event page links throughout the app now correctly use org-scoped paths (/org/[slug]/events/...) instead of the legacy /events/... path.
  • ·Attendees tab toolbar wraps cleanly on narrower screens instead of overflowing.
  • ·Centralized URL helpers (getPublicEventUrl / getFullPublicEventUrl) replace scattered hardcoded URL strings across the codebase, ensuring consistent org-scoped links everywhere.

v0.5.0

Added
  • ·Custom fields now appear in the checkout flow — ticket-scoped fields are shown per guest in the guest info step, and order-scoped fields appear in the purchaser info step.
  • ·All custom field types are supported in checkout: text, email, date, number, textarea, select, multiselect, and checkbox — each rendered with a matching native input.
  • ·Required custom field validation in checkout — guests cannot advance past the guest info or purchaser steps without completing all required fields.
  • ·"Show Tickets Remaining" toggle on each ticket type — organizers can now hide or show the remaining ticket count per ticket on the registration page.
Changed
  • ·Org landing page event cards no longer show the event description excerpt, keeping the card layout cleaner.

v0.4.0

Added
  • ·Full-page checkout flow — "Get Tickets" now opens a dedicated multi-step checkout page instead of a modal, giving the experience more room to breathe.
  • ·Checkout step 1 — ticket selection with quantity controls (plus/minus buttons and direct input), per-ticket sold/remaining progress bar, and bundle "Includes" breakdown.
  • ·Checkout step 2 — guest info form with individual name and email fields for each ticket holder, plus a "Copy to all tickets" shortcut.
  • ·Checkout step 3 — purchaser info form collecting first name, last name, email, and optional phone number.
  • ·Checkout step 4 — review & pay with host referral dropdown, promo code input, full order summary card, purchaser details summary, and Stripe payment form for paid orders.
  • ·Stripe payment form loads automatically when entering the payment step — the bottom bar "Pay $XX.XX" button directly triggers payment with no extra clicks.
  • ·Order confirmation page with a success state, event info card (banner image, date, location), full order summary, email delivery note, and "Add to Calendar" buttons.
  • ·"Add to Google Calendar" button on the confirmation page opens Google Calendar pre-filled with the event name, date, and location.
  • ·"Download .ics file" button on the confirmation page generates a standard calendar file compatible with Apple Calendar, Outlook, and any other calendar app.
  • ·Promo code and host referral attribution are now part of the checkout flow — applied promo codes show a green confirmation tag with the discount amount.
  • ·Host referral links auto-detect via URL ref parameter and pre-select the referring host in the dropdown.
  • ·Individual guest confirmation emails — after a successful registration, each guest whose email differs from the purchaser receives their own email with only their personal ticket and a note stating who purchased it on their behalf.
Improved
  • ·Progress stepper shows the correct line–step–line–step pattern with a line before the first step and after the last step — no duplicate lines between steps.
  • ·Step transitions in the checkout stepper are instant with no animation.
  • ·Checkout page always reserves scrollbar gutter space so the content width doesn't shift between short and tall steps.

v0.3.0

Added
  • ·Completely redesigned public event page — sticky org header with back navigation, full-width hero banner, and a clean two-column layout with the ticket card anchored alongside the event title.
  • ·Event info is now presented in distinct cards: description, hosted-by, location (with an embedded Google Maps preview), and an "Event by" org block.
  • ·Directions button on the event page opens Google Maps (or Apple Maps on iOS) for the event venue.
Fixed
  • ·Sharing an event no longer silently copies the URL to the clipboard when the native share sheet is dismissed.
  • ·Destructive (red) buttons were invisible until hovered — missing color token now defined.
  • ·Cancelling a confirmation dialog no longer leaves the operation hanging — the promise now correctly resolves with false on dismiss.
Improved
  • ·All confirmation dialogs (delete, refund, etc.) now use the standardised shadcn Dialog — consistent look, proper accessibility, and Escape/backdrop-click to close.
  • ·Sidebar collapsed/expanded state is now remembered between page navigations.
  • ·Account name and avatar in the sidebar no longer flash on navigation — profile is cached in session storage and shown immediately.
  • ·Dashboard defaults to grid view for new users; grid is now first in the view toggle.
  • ·Skeleton loading colour changed from blue-tinted to standard neutral grey.
  • ·Removed the button press-shrink animation across the entire app.
  • ·"Event not found" and "Event not available" states are now clean full-screen messages.
  • ·Release Notes "back" button now returns to the previous page instead of always going to the home page.

v0.2.0

Added
  • ·Event publishing and unpublishing — unpublished events now show an "Event not available" page to public visitors while keeping the event URL reserved.
  • ·Rich text editor for event descriptions — format your "About event" text with bold, italic, headings, lists, links, and block quotes.
  • ·Rich text editor available in both the Create Event page and the Event Info settings page.
  • ·Rich text descriptions render beautifully on the public event page, with full backward compatibility for existing plain-text descriptions.
Improved
  • ·Table checkboxes are now more subtle, using a neutral tone instead of the bold brand color.
  • ·Fixed hyperlink popup in the rich text editor — now has a solid background and proper z-index so it doesn't appear transparent or behind text.
  • ·Eliminated layout shift when switching between tabs on the event page — scrollbar gutter is now stable so content width stays consistent.

v0.1.0

Added
  • ·Changelog page to track and communicate app updates.
Fixed
  • ·Stripe refunds now correctly go to the original payer (registrant) instead of the organization account; refund status and amounts sync with Stripe and show correctly in the dashboard.
Improved
  • ·Easier way for users to see what's new in each release.