0.2.63 update

This commit is contained in:
ponzischeme89
2026-08-14 11:47:32 +12:00
parent 9a8ecbdceb
commit 06b6490ac9
41 changed files with 921 additions and 179 deletions
+12 -8
View File
@@ -61,8 +61,8 @@ The server writes one aligned line per event, designed for
`docker compose logs -f server` and for the admin page's live log:
```
2026-08-03 11:33:40 INFO playback requested component=playback user=matt device="Living room" client=0.1.60 title="Severance Good News About Hell" item=184223 type=Episode play_method=DirectStream resume=12m0s runtime=57m0s version=0.1.0
2026-08-03 11:33:40 INFO request component=home user=matt device="Living room" client=0.1.60 protocol=1 method=GET path=/v1/home status=200 duration=412ms cache=miss version=0.1.0
2026-08-03 11:33:40 INFO playback requested component=playback user=matt device="Living room" client=0.1.60 correlation=req-8F2A1C play_session_id=8F2A1C title="Severance Good News About Hell" item=184223 type=Episode play_method=DirectStream resume=12m0s runtime=57m0s version=0.1.0
2026-08-03 11:33:40 INFO request component=home user=matt device="Living room" client=0.1.60 correlation=req-4D91B7 protocol=1 method=GET path=/v1/home status=200 duration=412ms cache=miss version=0.1.0
```
The timestamp is a column rather than a `time=` field, and the fields are always in the
@@ -75,9 +75,11 @@ into the admin log when the gateway starts. Compose mounts that path from the pe
`memby-logs` volume, so replacing the container for a new version keeps the previous
history. The archive is compacted to the configured buffer capacity and remains bounded.
Every line from a request carries the viewer, the television, the app build and the
`component` — the part of the app the call came from, derived from the route, so it is
right even for an APK too old to report anything about itself.
Every line from a request carries the viewer, the television, the app build, a correlation
identifier and the `component` — the part of the app the call came from, derived from the
route, so it is right even for an APK too old to report anything about itself. The same
identifier is returned as `X-Memby-Correlation`; the TV's network diagnostics record it
beside the request outcome. Playback events also carry the Emby play-session identifier.
Beyond the per-request line, these are logged as events in their own right: sign-in,
sign-out and rejected sign-ins; a device removed or renamed from another TV; what
@@ -88,8 +90,10 @@ library imports (start, progress per 500-item page, final counts and duration).
At the default `MEMBY_LOG_LEVEL=INFO`, successful health checks, live maintenance polls,
artwork requests, search terms and ten-second playback progress reports are hidden;
warnings and failures from those routes are still shown. Set `MEMBY_LOG_LEVEL=DEBUG`
temporarily and recreate the server container when they are useful during diagnosis.
warnings and failures from those routes are still shown. Set `MEMBY_LOG_LEVEL=DEBUG` for
diagnostic request and playback detail, or `TRACE` for the deepest negotiation and request
trace, then recreate the server container. URLs and sensitive structured attributes are
redacted before they reach either the console or admin log history.
The build that wrote a line is `internal/buildinfo/VERSION`, embedded at compile time —
bump it with a meaningful server change. It is also on `/healthz` and in the admin rail.
@@ -614,7 +618,7 @@ can review and revoke signed-in TVs from the app's Settings screen.
| `MEMBY_DATABASE_URL` | *required* | Postgres DSN |
| `MEMBY_REDIS_URL` | `redis://localhost:6379/0` | |
| `MEMBY_LISTEN_ADDR` | `:8080` outside Compose; `:32768` in the NAS stack | |
| `MEMBY_LOG_LEVEL` | `INFO` | Use `DEBUG` for successful probe, status-poll and artwork requests |
| `MEMBY_LOG_LEVEL` | `INFO` | `DEBUG` adds diagnostic request/playback detail; `TRACE` adds deep negotiation tracing |
| `MEMBY_LOG_BUFFER_CAPACITY` | `5000` | Bounded persistent admin event history; `0` disables capture |
| `MEMBY_LOG_HISTORY_PATH` | `/data/logs/events.jsonl` | JSONL history restored after container replacement |
| `MEMBY_GOMEMLIMIT` | `384MiB` | Compose value passed to Go as `GOMEMLIMIT` |