BillTracker/client
null 6b1ef7dcfa fix: notification privacy leak — per-user bills no longer sent to all recipients (v0.23.2)
CRITICAL security fix: In per-user notification mode, the notification runner
was fetching ALL active bills globally and sending each bill's details to
every opted-in recipient regardless of ownership. This meant User A's bill
names, amounts, and due dates could be emailed to User B.

Fix: Added ownership filter in the recipient loop:
  if (allowUserConfig && bill.user_id !== recipient.id) continue;

Also added a defensive guard for bills with no user_id (orphaned bills),
which are now skipped with a console.warn instead of being broadcast.

Global notification mode (single admin recipient) is unaffected.

Security audit: Private_Hudson confirmed the fix is airtight. All other
routes (bills, payments, tracker, analytics, export, calendar, summary,
categories) properly scope data by user_id.

Version bump: 0.23.1 → 0.23.2 (security patch)
2026-05-10 12:34:53 -05:00
..
components v0.21.1: Loading Skeletons & Async State 2026-05-10 01:35:41 -05:00
contexts initial commit 2026-05-03 19:51:57 -05:00
hooks v0.22.0: React Query Migration 2026-05-10 03:10:43 -05:00
lib fix: notification privacy leak — per-user bills no longer sent to all recipients (v0.23.2) 2026-05-10 12:34:53 -05:00
pages v0.22.0: React Query Migration 2026-05-10 03:10:43 -05:00
public/img logo 2026-05-03 22:33:21 -05:00
App.jsx v0.22.0: React Query Migration 2026-05-10 03:10:43 -05:00
api.js feat: add admin about page with security hardening 2026-05-09 16:25:12 -05:00
index.css v0.20.0: admin dashboard with roadmap and activity log 2026-05-09 21:14:21 -05:00
main.jsx v0.20.7: Keyboard navigation and ARIA accessibility 2026-05-10 00:18:36 -05:00