0.2.45 - Server side git commits

This commit is contained in:
ponzischeme89
2026-08-10 20:39:26 +12:00
parent 56c1167382
commit 4c47a5f8a0
12 changed files with 321 additions and 132 deletions
+10 -4
View File
@@ -319,8 +319,8 @@ leaves the server. `MEMBY_RADARR_TTL` controls the shared calendar cache lifetim
## Admin interface
`https://mserver.sublogue.com/admin/` — a single self-contained page for library imports, the
maintenance switch and row engagement. Set `MEMBY_ADMIN_TOKEN` to enable it; unset, every
`https://mserver.sublogue.com/admin/` — a self-contained console for library imports,
maintenance, engagement and journeys. Set `MEMBY_ADMIN_TOKEN` to enable it; unset, every
`/admin` route 404s so it cannot be left exposed by accident. The page first uses the same
discreet Emby login gate as the private installer. After successful verification it
establishes the HttpOnly admin cookie, but browser API requests require both that cookie
@@ -349,6 +349,7 @@ the sign-in form with `next` pointing back at the page rather than as an error b
| POST | `/admin/api/features` | Publish feature overrides, enter safe mode, reset defaults, or roll back one revision |
| POST | `/admin/api/mdblist-settings` | Enable MDBList, replace/clear its API key, and select visible rating sources |
| GET | `/admin/api/analytics?days=7` | Row engagement |
| GET | `/admin/api/journeys?days=30&userId=…` | Journey health, feature use, paths and event history |
The **Features** admin page is the recovery surface for optional TV behaviour. Flags are
registered in the server catalogue and persist only explicit overrides; clearing an
@@ -567,6 +568,13 @@ Raw events are pruned after `MEMBY_ANALYTICS_RETENTION` (90 days) and aggregates
computed at read time, so nothing survives the prune. This is tuning telemetry, not a
record of what anyone watched.
Journey events are ingested separately at `POST /v1/analytics/events` and have their own
**Journeys** admin page. The gateway derives completion, abandonment, active visits,
feature use, significant actions and common paths from the retained events. An unfinished
visit remains active for 30 minutes before it counts as abandoned. Selecting one profile
reveals its ordered event history; search text, content titles and setting values are never
accepted into this stream.
## Caching
Redis holds everything user-scoped under `u:<embyUserId>:*`, plus session lookups under
@@ -648,5 +656,3 @@ can review and revoke signed-in TVs from the app's Settings screen.
- **Cache warming.** Rows go cold after `MEMBY_HOME_TTL`; the first TV to ask pays for the
refresh. A background refresher per active session would hide that.
- **Rate limiting** on `/v1/auth/login`.
- **Per-user analytics breakdown.** Events carry a user id, but the admin page only shows
totals per row.