brackt/app/lib
Claude 1d84cd6949
feat: add commissioner audit log for league transparency (issue #144)
Adds a complete audit log system so league members can verify that
settings, draft order, picks, and time banks have not been quietly
changed without their awareness.

Changes:
- database/schema.ts: new `audit_action` enum + `commissioner_audit_log`
  table (seasonId, leagueId, actorClerkId, actorDisplayName, action,
  affectedTeamIds[], details jsonb, createdAt)
- drizzle/0075: generated migration for the new table
- app/models/audit-log.ts: createAuditLogEntry, getAuditLogForSeason
  (paginated), logCommissionerAction (resolves display name automatically)
- app/lib/audit-log-display.ts: shared formatAuditDetail() helper used by
  both the league home widget and the full audit log page
- app/routes/leagues/$leagueId.audit-log.tsx: new read-only route at
  /leagues/:id/audit-log, accessible to all league members, with
  action-type filter and pagination
- app/routes.ts: registers the new route
- League home page ($leagueId.server.ts / $leagueId.tsx): "Recent Activity"
  summary card showing the last 5 entries with "View all" link
- Settings page ($leagueId.settings.tsx): "View Full Audit Log" link card;
  audit log calls added for league/draft settings changes, draft order
  set/randomized, and draft reset
- API routes: audit log calls added to draft.start, draft.pause,
  draft.resume, draft.rollback, draft.adjust-time-bank, draft.force-autopick,
  draft.force-manual-pick, draft.replace-pick
- Tests: 11 new unit tests for the audit-log model; mocks added to 3
  existing route test files to account for the new logCommissionerAction call

https://claude.ai/code/session_01NdiwK2fbtKhAD3XuD58fTm
2026-04-13 17:48:09 +00:00
..
__tests__ feat: batch qualifying results entry (#290) 2026-04-12 14:52:22 -07:00
audit-log-display.ts feat: add commissioner audit log for league transparency (issue #144) 2026-04-13 17:48:09 +00:00
bracket-templates.ts feat: NBA playoff bracket template and bracket-aware simulator (#291) 2026-04-12 21:51:53 -07:00
color-hash.ts User/chris/bracket UI redesign (#95) 2026-03-09 22:44:33 -07:00
date-utils.ts Consolidate F1/IndyCar simulators into shared AutoRacingSimulator class (#151) 2026-03-16 12:22:08 -07:00
draft-eligibility.ts Implement Omni League Draft Eligibility Rules 2025-10-24 21:12:07 -07:00
draft-order.ts Add browser push notifications toggle to draft page (#11) 2026-02-20 19:30:53 -08:00
draft-timer.ts Add standard draft clock mode (#67) (#189) 2026-03-20 21:36:39 -07:00
fuzzy-match.ts Add golf qualifying points simulator (Plackett-Luce Monte Carlo) (#223) 2026-03-24 21:46:02 -07:00
logger.ts Replace console.* with structured logger, fix no-inferrable-types (closes #98) (#199) 2026-03-21 13:41:39 -07:00
normalize-team-name.ts Add regular season standings for NBA/NHL (fixes #89) (#192) 2026-03-21 00:12:01 -07:00
owner-map.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
parse-results-text.ts feat: batch qualifying results entry (#290) 2026-04-12 14:52:22 -07:00
scoring-types.ts feat: Add scoring rules editor to league settings and creation pages 2025-10-29 00:04:27 -07:00
season-helpers.server.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
standings-display.ts Show tied ranks with T prefix across standings and Discord (#239) 2026-03-27 20:45:15 -07:00
utils.ts feat: add theme system with dark mode support and navbar component 2025-10-10 23:30:26 -07:00