Rolled out club_activity content type, rewrite /club page with dynamic activity cards in club.
Landed club_activity to content_type check constraint in db.
Bug Fixes
Fixed broken thumbnail placeholders, auto refresh after upload, clean debug logging, review fixes RPC fallback, IndexedDB state migration, clearCompleted, session state check, and show build time in user's local timezone in footer tooltip.
Documentation
Mapped upload architecture documentation and manual production gates.
Other Changes
Updated harden media upload proxy validate session/variant server side, remove arbitrary URL forwarding, implement real retry/reselect semantics, remove empty File spoofing, and implement real cancel/abort behavior with AbortController.
Wrapped normalize state machine proper transition table, throw on invalid transitions, add tests, misleading optimize checkbox variants always generated, and transactional media_create_upload_intent RPC, update endpoint.
Wrapped harden server side validation and complete upload R2 verification, clean local DB versioning, dismiss, queue action states, reduce polling, and strengthen validation, state machine, retry, and security pattern tests.
Wrapped append new uploads to grid instead of re fetching all photos and footer timezone fix.
Wrapped extract shared media auth/http/validation helpers, refactor all endpoints in auth.
Moved forward resolve merge: regenerate roadmap.generated.json, add fake indexeddb dep in roadmap.