RemindRenew / Changelog

What's new

The build log. Most-recent first.

2026-06-08
v0.19.0

Multi-currency expenses, summary pivots, and spreadsheet import

The expenses ledger now models real-world, multi-currency spending. Each payment captures more context — Country, Account name, Cardholder, and a free-text card label for charges not tied to a tracked card — and you enter the amount once in its native currency while USD / PKR / AED / CAD equivalents are shown as dedicated columns (AED is now a supported currency). Rows expand on click to reveal the full record: entered amount, account, cardholder, country, linked item, description, and notes. A new Summary panel pivots totals across four dimensions — Company, Account, Cardholder, Country — and every summary row is clickable to filter the ledger instantly. A CSV importer at /expenses/import brings your existing spreadsheet in: it collapses the four currency columns to one amount per row, matches or creates companies by name, and keeps only the last 4 digits of any card number (full numbers are never stored). The phone view was reworked so columns no longer truncate — tablets and phones get a clean simplified row that still expands for the details.

expensesbillingimport
2026-05-25
v0.18.0

Email template redesigns

Every transactional email got a redesign. The single-item reminder now leads with a huge countdown numeral (Editorial layout): the days-until-renewal reads as the hero, with the item title, billing meta strip, and Mark renewed / Snooze actions below. Expired items split off into their own escalation template — full-bleed red status bar, type-aware copy (SSL / domain / subscription / card), 3-column impact block, and a suggested-steps checklist. Multi-item sends now use a digest layout with a 28-day urgency sparkline above a sortable item list and a single Open dashboard CTA. The 6-digit sign-in code email was rebuilt with proper OTP cells, an expires timer, and an optional Request-details block that shows device / location / time when the request context is available (hides entirely otherwise — no fake 'Unknown' values). A new Welcome email is ready to fire on first sign-in; wiring it in needs a users.welcomedAt column for idempotency. All templates share a tokens module (hex palette + dark-mode @media block) and route through a single email-links helper so AUTH_URL is read in one place.

emaildesign
2026-05-25
v0.17.0

Expenses workspace

Track what you actually paid for each renewal — not just what you planned to pay. New /expenses ledger groups payments by month with per-month subtotals and a by-company breakdown sidebar. Each row links to its underlying item (domain / SSL / subscription) or stays standalone, with optional company and card attribution. Range pills (Month / Quarter / Year / All) and category / company / card filters drive both the table and the breakdown bars. Mixed-currency totals normalize to a USD-equivalent headline with a 'PKR 2,754.66 + $50 · mixed currencies' subline; single-currency totals stay in their native currency. The item-detail page now lists Payments for that item with a one-click 'Log payment' CTA that seeds the form (category, amount, currency, recurrence) from the item's billing fields.

expensesbillingdashboard
2026-05-16
v0.16.0

Snappier app — optimistic CRUD, leaner queries, code-split imports

In-app navigation and CRUD now feel close to instant. Deletes across items, recipients, groups, and companies hide their row immediately and roll back with a toast on error. Mark-renewed and manual refresh flip the urgency banner without waiting for the server. Under the hood: the cards page dropped an N+1 (one query instead of one-per-card), the companies page stopped over-fetching every meta join just to sum subscription amounts, and the app shell no longer pulls the full user-settings row on every navigation. Each route now has its own loading skeleton that matches the destination layout, and the CSV import bundle (PapaParse) is code-split so it only loads on /items/import. Mark renewed is now hidden until a renewal is within 60 days. Cleanup: dropped unused pg/@types/pg deps, dead listExpiringSoon and deleteItemAction code paths, and the duplicated billing-cycle multiplier across three files.

perfuxcleanup
2026-05-15
v0.15.0

Action toasts, per-item auto-refresh, and dashboard polish

Every create, update, and delete across items, companies, recipients, and settings now fires a confirmation toast. The toast surface is theme-aware — it adapts to light and dark mode with a colored left-border status accent instead of a saturated background. SSL and domain items gain a per-item auto-refresh toggle in the create and edit forms (defaults on), so the dashboard auto-refresh count accurately reflects what the cron will check. The 'Renewing in 30d' stat now shows a single preferred-currency total rather than a mixed-currency stack. Domains no longer show a 'Mark renewed' button — RDAP handles the date on Refresh. The 'Download sample CSV' button in the import flow now shows a downward arrow.

polishuxnotifications
2026-05-14
v0.14.0

Timeline contrast tokens, icon library, and honest currency display

The horizon timeline now uses design-token chip colors that adapt correctly in dark mode — today's column swapped from a solid clay fill to a danger-colored top rule. The icon set was rebuilt on lucide-react, adding currency, trend, and people glyphs while keeping the same API. The cost trends card now has a Native / USD toggle so mixed-currency spending (e.g. PKR + USD) shows either the true local amounts or a converted single-currency view rather than silently summing incompatible currencies.

designdark modebilling
2026-05-14
v0.13.0

Mark renewed, CSV import, cost trends, and empty states

Items can now be manually marked as renewed directly from the detail page — subscriptions advance by their billing cycle, domains and SSL certs by one year. A new CSV import flow at /items/import lets you paste or upload a spreadsheet of existing renewals; a client-side preview shows what will be imported before commit. The dashboard gained a 12-bar monthly spend sparkline with a per-company breakdown. The horizon timeline was rebuilt as a week-column swimlane and switches to a vertical 'Next 14 days' grouped list on mobile. Empty screens in items, companies, and recipients now have contextual prompts instead of blank space.

renewalsimportdashboardmobile
2026-05-14
v0.12.0

RemindRenew rebrand

The product has been renamed from Renewly to RemindRenew and moved to remindrenew.com. The new name leans into the rhythm of the product itself — remind, renew, repeat. The wordmark, favicon, login + reminder emails, page titles, and footer have all been updated; existing theme preferences carry across automatically on first load. Earlier changelog entries keep the original Renewly name on purpose — they describe what shipped at the time.

brand
2026-05-13
v0.11.0

Renewal links, richer billing context, and management polish

Renewly now supports relationship links between renewals, card payment mapping for every non-card item, domain renewal amounts, duplicate-domain protection, and currency-aware dashboard totals with USD conversion plus original-currency breakdowns. The Companies and Recipients screens now allow corrections after save, buttons have more tactile hover/press feedback, the dashboard timeline uses a cleaner detail strip, and the card cascade is easier to read in dark mode.

linksbillingmanagementpolish
2026-05-13
v0.10.0

Linked renewals and card-wide payment mapping

Items can now be linked to related renewals, so a hosting subscription can connect to multiple domains or SSL certificates and those relationships show from either side. Payment cards are now attachable to every non-card item, not just subscriptions, and the card cascade view shows all domains, SSL certificates, and subscriptions paid with each card.

linkscardsitems
2026-05-12
v0.9.0

Email code sign-in

Magic-link sign-in has been replaced with a 6-digit email code flow. Sign-in emails no longer contain redirect links: enter your email, copy the short code from your inbox, and verify it in Renewly. Codes expire after 10 minutes, are stored hashed, allow a limited number of attempts, and keep the existing 30-second resend cooldown. Google OAuth remains visible as a disabled future option.

authemail
2026-05-12
v0.8.0

Items workspace + faster domain capture

Items now have a dedicated /items workspace with search, type and company filters, sortable columns, mobile-friendly rows, and bulk delete for cleanup. Domain creation got an inline RDAP Check button that fills renewal date and registrar before submit, while subscriptions now accept normal decimal amounts with a currency picker instead of raw cents. Recipient groups can be edited in place, company creation uses a compact color picker, and mobile navigation has been simplified so the user menu is the single destination list.

itemsdomainsrecipientsmobile
2026-05-11
v0.7.0

Calendar view + view switcher

The dashboard now has two views. A Timeline/Calendar toggle sits above the horizon strip; switching to calendar shows a full monthly grid where each day with a renewal gets a colored event pill - name visible, left-bordered in the urgency color (danger/clay/warn/safe). Up to three events show per day, with a +N overflow indicator. Dots are used as a compact fallback on mobile. A Today button appears in the month header whenever you navigate away from the current month, snapping you back in one click. Filter pills (company, type) stay active across both views, and the month param survives view switches.

dashboardcalendar
2026-05-11
v0.6.0

Edit + reminder editor + activity feed + mobile polish

Items can now be edited - every field, recipient, and group on a single shared form, with card-expiry edits recomputing the reminder schedule in the same transaction. The detail page got a per-item reminder rule editor (add / remove / save) and an activity feed pulled from the reminder log + refresh + create/update timestamps. Companies create now lands optimistically - the new card appears at 60% opacity while the server settles. The native browser date picker is gone; everywhere we ask for a date now opens a themed calendar popover that respects light/dark and the rest of the design tokens. Mobile polish pass: app header has a real hamburger menu, the landing header collapses cleanly under 640px, the theme switcher is now an inline tri-pill inside the user menu (no more cut-off submenu on small screens), and the favicon is finally the actual Renewly mark.

editingremindersdesignmobile
2026-05-11
v0.5.0

Multi-recipient reminders, real settings, custom colors

Reminders no longer fire to just the account owner - add recipients on the new /recipients page, bundle them into reusable groups (Engineering, Finance, ...), and attach either to any item. The cron fans the email out to everyone, deduped. Settings is fully wired: timezone is captured silently on first sign-in (with a dismissible banner), name / send-time / reminder defaults / auto-refresh toggles all save, and you can now delete your account with typed-email confirmation. Companies got a custom color picker (8 quick swatches + a popover with hex input and HSL sliders). Every dropdown in the app is now theme-aware (Radix Select/Popover) - the old square native lists are gone. Companies create is noticeably faster: dropped a redundant dashboard revalidation, swapped the per-company stats loop for a single aggregated query, and migrated the DB driver to Neon's WebSocket pool.

reminderssettingsdesignperf
2026-05-11
v0.4.3

Sign-in polish + header alignment

Sign-in now shows an inline success card with the email it sent the link to, a 30-second resend cooldown to prevent multi-clicks, and a 'Use a different email' reset. The Send-magic-link button got proper click feedback (cursor, spinner, pending state). Fixed sign-out - it was a no-op due to a Radix dropdown interaction - and fixed the magic-link post-verify redirect to land on the dashboard. App header now matches the landing header's width so it stops bleeding past the page content.

authpolish
2026-05-11
v0.4.2

Dark mode + new typography

Geist replaces Instrument Serif as the display face. Dark mode follows your system preference, with a manual override in the header. New neutral palette across both themes; warm cream/clay direction retired. Avatar now opens a real dropdown - sign-out is one of several actions, not the only one. Landing footer + this changelog page shipped, companies got a curated 8-swatch palette, loading + error screens added across the app.

designdark mode
2026-05-03
v0.4.0

Horizon timeline + triage columns

The dashboard leads with a 12-week renewal horizon. Items group into three urgency triage columns (this week / this month / next 90 days) below.

dashboard
2026-04-21
v0.3.0

Card cascade

When a payment card expires, see every subscription that depends on it before any of them fail. Cards now flow through the same reminder pipeline as everything else.

cards
2026-04-08
v0.2.0

Magic-link sign-in via Resend

Email-based sign-in, no passwords. Magic links use the same Resend account that delivers reminders.

auth
2026-03-30
v0.1.0

First release

Track domains (RDAP), SSL certs (TLS handshake), subscriptions, and payment cards. Daily cron sends reminders at 7-day, 3-day, and day-of intervals.

launch