-
Cover the pure money and data logic, and freeze the rest from growing
-
Require CDN_BASE_URL everywhere so no cover URL can expire
-
server: adopt lint block, fix clippy, fmt
-
Format the tree with rustfmt and add the lint + supply-chain gates
-
Decompose AppState Phase 2: migrate storage to slices
-
server: split public image content into a separate CDN bucket (S1)
-
Scan-then-promote uploads to immutable content keys (C1)
-
server: gallery N+1 + ImageId, de-truncate aggregates, keyset paginator