Skip to content

Expand activity logging, add filterable feed, and export features#6

Merged
YoyoJesus merged 2 commits into
mainfrom
dev
Jun 2, 2026
Merged

Expand activity logging, add filterable feed, and export features#6
YoyoJesus merged 2 commits into
mainfrom
dev

Conversation

@YoyoJesus
Copy link
Copy Markdown
Member

This pull request implements a major expansion of the activity logging system, including new event types, improved admin tooling, and robust test coverage for the new logic. The changes are organized around three main themes: activity type expansion and metadata, admin feed and export/purge features, and comprehensive testing for all new logic.

Key changes:

1. Activity Type Expansion and Metadata

  • Added a new activityMeta module with a canonical list of activity types, their categories, display labels, and badge classes. This centralizes type definitions and UI metadata for consistent use across the app. (src/lib/activityMeta.ts)
  • Updated the core activity logging system to use the new ActivityType from activityMeta, ensuring type safety and future extensibility. (src/lib/server/activity.ts)
  • Added a detailed design doc outlining the expanded activity logging approach, event types, admin feed requirements, and export/purge design. (docs/superpowers/specs/2026-06-01-activity-logging-expansion-design.md)

2. Admin Feed, Export, and Purge Features

  • Implemented logic for describing bingo win lines and detecting the exact transition into a bingo (to log wins only once per event), supporting the new event types and detailed admin feed. (src/lib/bingo.ts)
  • Added utilities for exporting activity logs as CSV or JSON, with correct quoting and normalization, to support the new admin export endpoint. (src/lib/server/activityExport.ts)
  • Added utilities for parsing and validating admin feed filters and purge requests, including safe handling of query parameters and limits. (src/lib/server/activityQuery.test.ts)

3. Comprehensive Testing

  • Added thorough unit tests for activity type metadata (categories, labels, badge classes, and group completeness). (src/lib/activityMeta.test.ts)
  • Added tests for bingo win transition detection and line description logic, ensuring correct logging of bingo wins. (src/lib/bingo.test.ts)
  • Added tests for CSV/JSON export utilities and admin filter/purge parsing logic, ensuring robust handling of edge cases and correct output. (src/lib/server/activityExport.test.ts, src/lib/server/activityQuery.test.ts) [1] [2]

4. Tooling

  • Added vitest as a dev dependency and provided new test scripts in package.json to enable running and watching tests for all new logic. (package.json) [1] [2]

YoyoJesus added 2 commits June 1, 2026 22:07
…port & purge

Capture new event types (tile_uncomplete, bingo_win, card_reshuffle, and admin
  verify/unverify/reset + tile create/update/delete/bulk_add). Admin-action targets
  are recorded in the detail field, so no schema migration is needed.

  Admin feed:
  - filter by type (grouped) and by user, via URL query params
  - "Load more" pagination using a growing limit
  - live updates through depends('app:activity') + livePoll
  - badges/labels for every event type

  Export & retention:
  - admin-only GET /admin/activity/export (CSV/JSON, honors active filters)
  - slide-to-confirm purge action (clear all, or older than a chosen date)

  bingo_win is detected on the false->true transition (after-state re-query minus
  the toggled tile), so it logs exactly once per win. New logActivity call sites
  keep the best-effort contract: a logging failure never breaks the action.

  Adds vitest with unit coverage for the pure logic (event metadata, win
  transition, filter/purge parsing, CSV/JSON serialization).

  Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
 feat(activity): expand logging with more events, filterable feed, ex…
@YoyoJesus YoyoJesus merged commit c9b7c82 into main Jun 2, 2026
YoyoJesus added a commit that referenced this pull request Jun 3, 2026
Merge pull request #6 from hacksu/dev
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant