RDLTR

Notes from every release

This release ships browser extensions for Firefox, Chrome, and Safari; a premium tier with private reading lists and Stripe-powered payments; a new join page with real-time username availability; persistent sort preferences including group-by-domain; improved metadata fetching with retry logic and meta-refresh redirect following; and a range of UI and onboarding improvements.

Breaking changes

  • STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET are now required env varsDeployments that include the Stripe integration must provide STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET. The server now throws an error on use if either is missing rather than failing silently. 4898880 f8f8c2f

New

  • Browser extensions for Firefox, Chrome, and SafariZero-config extensions let you save links to rdltr from a toolbar icon, keyboard shortcuts (Alt+Shift+R/L), or the right-click context menu. Firefox and Chrome extensions are ready to install; Safari support is available by converting the Chrome extension with Xcode's converter tool. 37e40c3 381b81c 62e6691 3dbe482 fd6004f
  • Premium tier with private reading listsUsers can upgrade to a supporter plan to make their reading list private. Private lists are only visible to the owner, and real-time SSE broadcasts are scoped accordingly so other users never see private updates. 6846d35 4eda0d1 b7c5880
  • Stripe checkout for premium upgradesClicking the lock button starts a Stripe-hosted checkout flow. After a successful payment the account is marked as premium via a verified webhook, and a confirmation message is shown on return. STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET must be set in the environment for this to work. 4898880 fe983f0 a1150bf f8fbe4a f8f8c2f 14bb6a3 dd37c17 1bf21a2 856e046
  • Join page with real-time username availability checkA new /join page lets new users register with live feedback on whether their chosen username is available. The Register button is now labelled Join, and error handling has been cleaned up. 572a146 b33a1ac 2a57692 ab79a35
  • New-user onboarding and improved empty-state messagingFirst-time users see a welcome message with a link to the help page. Returning users who have cleared their list see a quote instead. The available-username page copy was also updated. 90f580c 0a60034
  • Persistent sort preference and group-by-domain sortingYour chosen sort order (newest, oldest, shuffle, or domain) is now saved in localStorage and restored on page load. A new group-by-domain sort (g key) groups links by their domain, ordered by count. 8377e16
  • Web app manifest, og:image, and favicon improvementsA web app manifest and root favicon routes were added for better PWA and browser support. An og:image was added for social sharing previews, and favicon assets were refreshed including a 512×512 PNG variant. 6ceb6af e05e3a8 5edf1f2 fd6004f
  • Privacy policy page addedA /privacy page is now live and linked from the help page, covering how user data is handled. 69443f9 e027bfe
  • Triangle indicators added for login stateSmall triangle indicators in the UI now reflect the current login state at a glance. 0418321

Improved

  • Help page updated with extension links and improved copyThe help page now links to both the Firefox and Chrome extensions, includes a link to the privacy policy, and has clearer copy and structure throughout. ede0bca d583e28 4d5c867 eb69b27 59b241e

Fixed

  • Metadata fetching now retries with exponential backoffFailed metadata and Twitter card fetches are retried automatically with configurable attempts and delay, reducing failures caused by transient network errors. ebe1eca
  • Meta-refresh redirects followed during metadata extractionShort-link services like t.co that use HTML meta-refresh redirects are now followed correctly, so titles and descriptions are fetched from the final destination page. f5ace6a
  • SSE connection kept open for empty link listsThe real-time connection is now established even when a user's list is empty, so newly saved links appear instantly without a page reload. 3cfc018
  • Menu closes on click and keyboard shortcutsThe navigation menu now closes when you click a link inside it or trigger a keyboard shortcut, preventing it from staying open unexpectedly on mobile and desktop. 59b241e d304143
  • Lock button hover state no longer sticks on mobileA CSS fix prevents the lock button's hover style from remaining active after a tap on touch devices. 3fce9fb