BillTracker/routes
null aace5a4356 feat(bills): "Recently deleted" restore view for the 30-day window (IMP-UX-01)
Bills soft-delete and are retained 30 days, but the only way back was the
transient "Undo" toast — dismiss it and a bill deleted an hour ago was
unrecoverable from the UI (even though the API and retention kept it).

- GET /api/bills/deleted lists soft-deleted bills still inside the recovery
  window, newest first, with days_left (declared before /:id). User-scoped.
- BillsPage shows a "Recently deleted (N)" button when any exist, opening a
  dialog to restore each one; restoring refreshes the active list too.
- The list fetch is non-blocking (never blanks the page); restore is
  try/catch + toast; dialog has empty and per-row busy states.

Tests: tests/billsDeletedRoute.test.js (window filter, ordering, days_left,
money serialization, user isolation). Server 116 pass; client 46; build clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 12:56:45 -05:00
..
about.js v0.28.0 2026-05-15 22:45:38 -05:00
aboutAdmin.js fix(qa): version check is opt-out-able (QA-B16-01) 2026-07-03 10:05:37 -05:00
admin.js fix(admin): admin/profile routes and services 2026-06-07 21:18:02 -05:00
analytics.js v0.28.0 2026-05-16 15:38:28 -05:00
auth.js security: WebAuthn / FIDO2 hardware security key 2FA 2026-06-05 22:05:23 -05:00
authOidc.js fix: login mode card update, OIDC service improvements, auth middleware refinements 2026-06-04 03:53:38 -05:00
bills.js feat(bills): "Recently deleted" restore view for the 30-day window (IMP-UX-01) 2026-07-03 12:56:45 -05:00
calendar.js feat(money): cents migration stage 2 — schema flip to integer cents (batch 0.38.4) 2026-06-11 20:12:31 -05:00
calendarFeed.js feat: iCal feed for bills (Apple/Google calendar export) 2026-06-07 15:53:46 -05:00
categories.js feat(spending): category groups, YNAB-style spending page overhaul, 3-month averages, cover overspending (batch 0.41.0) 2026-06-14 19:21:34 -05:00
dataSources.js feat: bank sync section, data sources route, subscription page updates, package updates 2026-06-07 02:03:00 -05:00
export.js test(qa): export→import round-trip preserves money (B9 data integrity) 2026-07-02 22:26:49 -05:00
import.js chore: version bump to 0.28.01 and update HISTORY format 2026-05-16 21:36:04 -05:00
matches.js feat(money): cents migration stage 2 — schema flip to integer cents (batch 0.38.4) 2026-06-11 20:12:31 -05:00
monthly-starting-amounts.js feat(money): cents migration stage 2 — schema flip to integer cents (batch 0.38.4) 2026-06-11 20:12:31 -05:00
notifications.js feat: push notification channels (ntfy/Gotify/Discord/Telegram) and cash flow projection 2026-06-03 21:43:54 -05:00
payments.js feat(money): cents migration stage 2 — schema flip to integer cents (batch 0.38.4) 2026-06-11 20:12:31 -05:00
privacy.js fix(qa): version check is opt-out-able (QA-B16-01) 2026-07-03 10:05:37 -05:00
profile.js fix(admin): admin/profile routes and services 2026-06-07 21:18:02 -05:00
settings.js v0.28.0 2026-05-15 22:45:38 -05:00
snowball.js feat(money): cents migration stage 2 — schema flip to integer cents (batch 0.38.4) 2026-06-11 20:12:31 -05:00
spending.js feat: copy last month budgets, monthly income section on summary page 2026-06-04 21:57:42 -05:00
status.js feat(auth): add per-username rate limiter, migrate dates to local-time utils (batch 0.38.1) 2026-06-10 19:42:51 -05:00
subscriptions.js feat(money): cents migration stage 2 — schema flip to integer cents (batch 0.38.4) 2026-06-11 20:12:31 -05:00
summary.js fix(qa): bank-tracking unpaid_this_month gates by occurrence (QA-B5-02) 2026-07-02 21:41:33 -05:00
tracker.js feat(tracker): overdue command center with snooze/skip/pay + sidebar badge 2026-05-30 13:19:09 -05:00
transactions.js feat(banking): bank transactions page with merchant/store matching, transaction matching refactor, bank sync improvements (batch 0.40.0) 2026-06-14 15:15:31 -05:00
user.js v0.28.0 2026-05-16 11:42:32 -05:00
version.js security fixes 2026-05-28 03:59:35 -05:00