saltbo
ea26ff0c83
fix(stats): honor traffic ledger history
2026-07-22 12:24:45 -04:00
saltbo
1b82630786
fix(stats): show exact boundary-day data
2026-07-22 11:08:36 -04:00
saltbo
5acbd7e1f8
fix(stats): backfill registration source rollups
2026-07-22 10:40:18 -04:00
saltbo
e4750f84ce
fix(stats): recover activity from authentication sessions
2026-07-22 10:14:52 -04:00
saltbo
e79e03d8fa
fix(stats): preserve missing data in dashboard charts
2026-07-22 00:45:17 -04:00
saltbo
498ce73261
fix(stats): split D1 counter queries within limits
2026-07-21 23:56:45 -04:00
saltbo
9e028f860e
fix(stats): make D1 backfill exact and bounded
2026-07-21 23:37:24 -04:00
saltbo
e55ee53496
refactor(stats): unify audit and fact pipelines
...
Centralize request audit recording, preserve immutable download-task history, and derive hourly statistics and backfills from the same authoritative sources. Add durable user registration facts so admin deletion no longer destroys signup history.
2026-07-21 23:02:52 -04:00
saltbo
40c5f10d48
feat(admin): show storage change trend
2026-07-21 12:04:42 -04:00
saltbo
b6cbc614b8
fix(admin): enforce exact analytics data sources
2026-07-21 02:38:54 -04:00
saltbo
3abf4f231e
fix(storage): preserve purge history and track usage deltas
...
Retain purged matter and image metadata while hiding tombstones from live reads. Record exact storage deltas and build hourly trends only after the opening balance.
2026-07-21 00:29:27 -04:00
Jasper Van
34a801c49b
fix(stats): validate required rollup dimensions ( #514 )
...
* fix(stats): validate required rollup dimensions
* test(stats): cover dimension validation failure
2026-07-20 12:03:17 -04:00
Jasper Van
53ef1664cb
fix(stats): validate snapshot rollup markers by scope ( #511 )
2026-07-20 10:58:17 -04:00
Jasper Van
c85e60f200
fix(analytics): enforce trustworthy offline statistics ( #510 )
...
* fix(analytics): enforce trustworthy offline statistics
Separate immutable counters from point-in-time snapshots, expose incomplete coverage instead of synthetic zeroes, and keep browser analytics result-only.
Restore finite Free quota baselines, fail closed for invalid storage quota, reconcile traffic reports fairly, and add production-safe backfill and data-quality diagnostics.
* fix(analytics): preserve global backfill totals
Group generated hourly backfill rows by their projected values so SQLite cannot resolve output aliases to source organization columns and overwrite cross-organization totals.
2026-07-20 10:23:22 -04:00
saltbo
3dc4b170d6
fix(analytics): snapshot mutable report status
2026-07-19 15:17:41 -04:00
saltbo
ca654b8d03
fix(analytics): rebuild complete historical counters
2026-07-19 14:57:52 -04:00
saltbo
60f8f64481
refactor(analytics): enforce offline result boundaries
...
Build versioned UTC hourly rollups, validate analytics facts, and keep dashboard requests result-only with explicit coverage semantics.
Move derived metrics to the server and simplify the admin dashboard around one reconcilable UTC range without export.
2026-07-18 01:58:34 -04:00
Jasper Van
8bd1e55b5c
refactor(analytics): replace daily stats with hourly rollups ( #505 )
...
* refactor(analytics): replace daily stats with hourly rollups
* fix(analytics): merge hourly inventory sources
* test(analytics): cover rollup failure boundaries
* test(analytics): verify growth dashboard metrics
* test(analytics): cover historical rollup reads
* test(analytics): verify hourly dashboard dimensions
* test(analytics): cover remaining metric boundaries
* test(analytics): cover backfill SQL parsing
2026-07-10 13:26:27 -04:00
Jasper Van
8a8fa3e9e1
fix: repair admin statistics integrity ( #502 )
...
* fix: repair admin statistics integrity
* test: add PR 502 preview evidence
* chore: remove preview evidence artifacts
2026-07-10 01:28:23 -04:00