Changelog
What's new in I Need Invoice
All notable changes to Uphub. Each entry is dated and tied to a merge into main. Newest at the top.
2026-05-01 (calm-hub)
- Calm-hub home. The dashboard is now a calm "what would you like to make today?" screen with two primary CTAs (New invoice, New quote), a softly animated illustration, and nothing else. All widgets have been removed; an insights surface will return later, rebuilt from scratch.
- Finances opens on Invoices. The dashboard tab inside Finances is gone — open Finances and you're already on the invoice list.
1 May 2026
- Scan-to-pay QR code on every invoice PDF (P1.8 sub-slice). PDFs and emailed invoices now carry a QR code in the bottom-right that opens the hosted pay page when scanned with a phone — table-stakes in the EU and increasingly expected in SA via PayShap. Both the in-app PDF and the emailed PDF render the QR identically; quotes and invoices without a public token render no QR (no crash).
- Country-aware tax labels (P1.9). New country picker in Settings → Business; the form, preview, PDF, and hosted invoice page now say "VAT" / "GST" / "Sales Tax" / "Tax" depending on where you operate (30 supported countries with localised tax-ID labels — ABN, GSTIN, EIN, USt-IdNr., NIF, BTW-nummer, etc.). Default stays ZA / VAT, so existing users see no change until they pick a country.
- Branded 404 + root error boundary. Mistyped URLs land on a marketing-styled "Page not found" instead of a confusing redirect to login. Uncaught errors now show a calm "Try again" page with a digest you can quote in support, instead of Next's default overlay.
- SARS-valid Tax Invoices, end-to-end (P1.1). Recipient address is now captured per client and renders on every PDF and preview alongside the recipient VAT number, closing the last § 20(4) gap. All 8 mandatory full-tax-invoice fields render on every template (clean, salon, tech, trade) without manual wiring.
- Real social cards. Pasting
uphub.appinto Slack / WhatsApp / X now renders a proper Open Graph image — brand-blue dot grid, wordmark, and headline — generated dynamically at the edge. - Bug fix: invoice detail page no longer crashes when a payment fully settles the balance. An infinite render loop was triggered by the panel's payment-change callback; the local status update is now reference-stable.
- Marketing site polish. Big readability pass — body copy across the whole page is now AA-contrast, section eyebrows are pills, feature icons get a subtle ring. New "Made for the way you work" section with an operator quote, "How it works" reworked into a 2-column layout with a workspace photo, and "Built for SA" gains a Cape Town aerial alongside the stats.
- Reduced-motion support. The hero dot-grid animation respects your OS-level "Reduce motion" preference and renders a static frame instead of looping.
- Marketing site live at `/`. New public homepage with hero, features grid, "How it works", "Built for SA" compliance section, FAQ, and final CTA. Built from the same brand language as the app — animated dot grid, brand blue, DM Sans + Gabarito.
- Dashboard moved to `/dashboard`. Signed-in users hitting
/are redirected to the dashboard automatically. - Profile menu in the app sidebar. Shows the email you're signed in with and lets you sign out. Visible in the desktop sidebar (collapsed and expanded) and the mobile mega menu.
- Legal pages. Terms of Service at
/legal/termsand a POPIA-aware Privacy Policy at/legal/privacy. - Public changelog at `/changelog`. What you're reading now.
- SEO indexing on. Metadata, OpenGraph, Twitter card, JSON-LD, sitemap, robots — all live.
30 April 2026
- Recurring invoice management + tab integration (P1.15 + P1.16). New "Recurring" tab on Finances with cadence filters and per-template actions.
- Invoice detail layout + action bar + StatusProgress (P1.14). Tighter invoice page chrome with a sticky action bar and a visual status timeline.
- Partial payments / deposits (P1.7). Record part-payments against an invoice; the running balance is reflected everywhere.
- Unified StatusBadge across invoices, quotes, and domain statuses for a consistent visual language.
- Migration fix: invoice totals are now derived from
line_itemsso totals stay in sync after edits.
29 April 2026
- Phase 0 email sending shipped end-to-end. Resend webhooks for delivered/bounced/complained, late-fix for hard-bounce ordering, sending-domain DKIM/SPF verification UI, and full edge-function pipeline.
- Routing fix: "New Recurring" now opens the right route instead of the wrong one.
- PDF parity: the same renderer is used for email and download, with visual polish.
28 April 2026
- Finances tabs animations, empty states, and compact filter dialog.
- Consistent empty states across the app using the shadcn
Emptycomponent. - Hosted-invoice route exempted from auth middleware so
/i/<token>is publicly viewable. - Bug fix: caught a
ReadonlyRequestCookiesErrorin hosted-invoice view recording.
27 April 2026
- UX audit pass — responsive fixes across dashboard, finances, invoices, quotes, credit notes, settings, clients, and the hosted invoice page.
- Credit notes (P1.6).
- Quotes / estimates with one-click → invoice (P1.5).
- Hosted invoice page (P2.1).
Want notable updates as they ship? Bookmark this page — it's updated with every release.