[1.43.0] — 2026-11-11
Breaking Changes
- payments: Require a Stripe OAuth client ID to connect hosts: self-hosters running meeting payments must set STRIPE_CONNECT_CLIENT_ID (the ca_... client ID from Stripe's Connect settings), add https:///dashboard/payments/connect/callback as an OAuth redirect URI there, and subscribe the Connect webhook endpoint to account.application.deauthorized before hosts can connect. Hosts who are already connected keep working. Remove MEETING_PAYMENTS_DEFAULT_COUNTRY from your environment; it is ignored.
Bug Fixes
- notifications: Stop simultaneous series edits losing what guests were sent
- payments: Show the plain Connect prompt after a host cancels at Stripe
- payments: Satisfy credo and dialyzer for the revocation alert
- payments: Redact OAuth code and state from request logs, and correct payment docs
- admin: Mention the Stripe Connect client ID in the payments setting's help text
- payments: Alert an admin when revoking a Stripe connection keeps failing
- payments: Revoke Stripe access when connecting a host fails after the exchange
- payments: Restore the charge currency of hosts who disconnected Stripe earlier
- payments: Ignore test-mode Stripe Connect events on a live deployment
- payments: Disconnect a host who removes Tymeslot from their Stripe account
- payments: Revoke Stripe access when a host disconnects an OAuth account
- themes: Stop background videos restarting on phones and small tablets
- onboarding: Require the meeting step before the look and live steps
- onboarding: Stop showing busy blocks on days you are away
- embed: Keep the embed when a booking step is entered without a chosen time
- embed: Use the catalogue wording for the Czech, Italian and Portuguese button label
- embed: Clear the preview's loading message when the popup opens
- calendar: Never switch desktop reminders on without the browser's permission
- calendar: Ask for notification permission from the reminders switch
- docs: Tell readers when a code block was copied or could not be
- embed: Show the embed's text in the page's language
- embed: Stop the popup button showing a native alert when the script is missing
- embed: Keep a refused guest inside the embedded booking page
- dashboard: Explain unavailable controls to touch and keyboard users
- forms: Keep what was entered when a submit is refused
- forms: Show the app's inline errors instead of browser validation bubbles
- forms: Remove the browser spinner arrows from number fields
- forms: Honour the rows set on a text area
- booking: Send dead booking links to the booking page instead of an error
- payments: Free a paid booking's slot as soon as the guest cancels checkout
Features
- payments: Let hosts connect an existing Stripe account from the dashboard
- forms: Replace browser date and time pickers with in-house ones
- forms: Replace native dropdowns with an accessible select
- admin: Pick the email accent with the in-house colour picker
- booking: Show every language at once in the language menu
- meeting-types: Invite people with single-use booking links
- guests: Let the host invite up to 25 guests, keep 10 as the booking page default