
Properly mark uploaded subtitles as "errored" in the database if they are invalid
When creating a new page in the CMS, metadata is now a required field and submitting is not possible until it is filled out.
Long checkbox attribute labels overflowed instead of wrapping
Improved relay action error handling. Delete flow now closes the dialog and shows a success message after completion.
Idle database connections no longer cause errors and subsequent sentry reports
Added CMS preview support for gift card checkout, enabling viewing without requiring a checkout query parameter. Gift card checkout forms now support configurable styling for labels, inputs, errors, checkbox, sendout date label, and payment-method headings.
Added gift card redemption form styling options for label, input, error text, checkbox, and send-out date label (with a new section in the editor, collapsed by default). Added a gift card checkout preview scenario so the checkout configuration can be reviewed end-to-end.
Subscription options are now displayed in ascending order by price.
Improved modal layering so dialogs consistently appear above other page content. Preserved backdrop interactions, fullscreen headers, and background scroll prevention when modals are open.
Added immediate confirmation after sending a push notification, including the number sent and timestamp. Added a loading state to the send action for clearer progress feedback.
Make subtitles be turned off by default, remember last selected subtitle language.
Fixing sales analytics not working when data contains missing country code
Added support for scheduled subscription downgrades, including a "Downgrade scheduled” badge showing the effective date. Account settings now display a “Pending downgrade” panel with the downgrade details and a cancel action.
Prevented duplicate push notifications when a device has multiple registered tokens by sending to each device once per notification run. Improved delivery reliability by atomically claiming notifications so concurrent requests can’t send the same notification multiple times.
Added a subscription change page where users can view available plans and switch between them.
Empty watch history results now return a normal 200 response with empty pagination details instead of an error. Improved consistency when no matching videos are found, so users see an empty state rather than a not-found response.
Improved the sign shown for subscriber activity so it now displays + for growth, - for decline, and no symbol when there is no change.
Fix analytics date range queries that were excluding the last selected day due to datetime comparison treating bare date strings as midnight, causing all data after midnight on the end date to be dropped.
Added dedicated embedded login route at /app/login with signed-in and signed-out experiences. Introduced an “Open app” deep-link flow (and logout with return URL) plus a universal-link fallback at `/{platform}/{lang}/app-auth.
Updated sign-out behavior so users are redirected back to the current site after logging out (using the configured base path when available), instead of using the default redirect destination.