You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sims-hq/apps/hq-web
Thomas Joise 953cf1dff8 feat(modules): module→client roster, notify-all, CSV export (Phase 10, spec §10)
- listClientsByModule: reverse lookup over active links, ordered by client name,
  paginated with a true total; per-row dated price via priceOn + next renewal;
  footer revenue total spans ALL links (active=0 excluded by design, stated)
- GET /modules/:id/clients (paginated) + /clients.csv (streams every row, no cap)
- POST /modules/:id/notify (owner/manager): resolves the full roster first, sends
  via the Gmail path, one email_log + one audit row per attempted recipient,
  names every unreachable client in the response (warn, never truncate)
- Modules page roster panel: table + revenue footer + Notify-all composer + CSV
- 8 tests; suite green

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5 days ago
..
src feat(modules): module→client roster, notify-all, CSV export (Phase 10, spec §10) 5 days ago
test feat(hq-web): relationship-pulse ribbon on Client 360 overview 5 days ago
index.html feat(hq-web): react shell with login and email-status banner (HQ-1 task 15) 2 weeks ago
package.json feat(hq-web): grouped sidebar shell, top bar, Ctrl+K palette, responsive-lite 5 days ago
tsconfig.json feat(hq-web): react shell with login and email-status banner (HQ-1 task 15) 2 weeks ago
vite.config.ts Split: make this the standalone HQ project (remove Store) 5 days ago