api#412
Retry failed card payments on a backoff schedule
northwind/api · @dana-k · merged 2026-09-24
→ Cited in “Failed card payments are retried for you”
PR DESCRIPTIONCard payments that fail with a soft decline are now retried automatically.
Retries a soft-declined charge up to three times over five days, then emails the customer a payment link.
Hard declines (stolen card, closed account) are never retried.
COMMIT MESSAGESAdd retry schedule table
Email payment link after last retry
web#981
Show retry status on the invoice page
northwind/web · @luis-m · merged 2026-09-25
→ Cited in “Failed card payments are retried for you”
PR DESCRIPTIONAdds a small timeline to the invoice page with each retry attempt and the next scheduled one.
COMMIT MESSAGESInvoice retry timeline component
web#977
Bulk-download invoices as a single ZIP
northwind/web · @priya-s · merged 2026-09-22
→ Cited in “Download many invoices at once”
PR DESCRIPTIONSelect any number of invoices in the list and download them as one ZIP file, named by invoice number.
Closes #940.
COMMIT MESSAGESBulk selection in invoice list
Stream ZIP from the export endpoint
api#405
Stream invoice archives instead of buffering them
northwind/api · @dana-k · merged 2026-09-21
→ Cited in “Download many invoices at once”
PR DESCRIPTIONThe export endpoint now streams the archive, so memory use stays flat for large exports.
COMMIT MESSAGESStream ZIP archive from export endpoint
mobile#233
Scan receipts with the camera
northwind/mobile · @tomas-r · merged 2026-09-26
→ Cited in “Scan receipts with your phone camera”
PR DESCRIPTIONNew "Scan receipt" button on the expense screen. Opens the camera, crops the receipt and attaches it to the expense.
COMMIT MESSAGESCamera capture and auto-crop for receipts
api#409
Fix due dates shifting by one day for UTC-negative timezones
northwind/api · @luis-m · merged 2026-09-23
→ Cited in “Due dates no longer land a day early in the Americas”
PR DESCRIPTIONInvoices created late in the evening in the Americas got a due date one day early.
COMMIT MESSAGESStore due date as a calendar date, not a timestamp
mobile#229
Keep the draft when the app goes to the background
northwind/mobile · @tomas-r · merged 2026-09-20
→ Cited in “Expense drafts survive a phone call”
PR DESCRIPTIONAn expense draft is now kept when you switch apps or take a call, instead of being cleared.
COMMIT MESSAGESPersist expense draft on background
api#407
Bump pg from 8.11 to 8.13
northwind/api · @dependabot · merged 2026-09-22
→ Ignored — reason: dependency update
PR DESCRIPTIONRoutine dependency update. No API changes.
COMMIT MESSAGESBump pg to 8.13
web#979
Split InvoiceTable into smaller components
northwind/web · @priya-s · merged 2026-09-23
→ Ignored — reason: internal refactor
PR DESCRIPTIONNo behaviour change. Makes the table easier to test.
COMMIT MESSAGESExtract InvoiceRow and InvoiceHeader
mobile#231
Add end-to-end tests for the expense flow
northwind/mobile · @tomas-r · merged 2026-09-24
→ Ignored — reason: tests only
PR DESCRIPTIONDetox tests for create, edit and delete expense.
COMMIT MESSAGESDetox tests for expenses