This website requires JavaScript.
79d9bca290
feat(panels): peek-open side panels with a docked tab
peter
2026-07-15 20:57:21 +02:00
11451c1af2
refactor(nav): extract the peek-open hook for reuse
peter
2026-07-15 20:57:21 +02:00
759fb41f78
Merge: promote dev to prod
peter
2026-07-15 20:33:56 +02:00
9d9c6894f4
chore(release): 0.43.1 — sidebar no longer latches open after a portaled menu
peter
2026-07-15 20:29:41 +02:00
8191ded159
Merge fix/nav-focus-stuck: rail no longer latches open after a portaled menu closes
peter
2026-07-15 20:29:03 +02:00
bcec462ef6
fix(nav): stop the rail latching open after a portaled menu closes
peter
2026-07-15 20:24:40 +02:00
d6d6a0f717
Merge: promote dev to prod
peter
2026-07-15 19:54:07 +02:00
6456761861
Merge fix/docker-build-cache: keep the heavy image layers cacheable (70s -> 7s rebuilds)
peter
2026-07-15 19:50:28 +02:00
baae29d8b6
perf(docker): keep the heavy layers cacheable (70s -> 7s rebuilds)
peter
2026-07-15 19:40:48 +02:00
b51f2e5f84
Merge feature/e1-header-chrome: E1 header/account/appearance chrome (nav overlay, role tooltip, logout, opt-in glass tuner) into dev for v0.43.0
peter
2026-07-14 21:41:59 +02:00
44926f1c23
chore(release): 0.43.0 — nav overlay sidebar, account chrome, opt-in glass tuner
peter
2026-07-14 21:41:44 +02:00
6a9bf948f9
feat(appearance): opt-in glass tuner toggle in Settings
peter
2026-07-14 21:39:53 +02:00
ad1cc4586a
feat(nav): slim hover-expand sidebar, role tooltip, logout button
peter
2026-07-14 21:39:30 +02:00
a3b62a2535
Merge: promote dev to prod
peter
2026-07-13 05:16:36 +02:00
f96c6a74dd
Merge feature/glass-phase2: glass-over-image UI epic (header, floating side panels, i18n, notifications) into dev for v0.42.0
peter
2026-07-13 05:13:52 +02:00
27b9e83af6
docs(release): expand v0.42.0 notes (header, side panels, i18n, notifications)
peter
2026-07-13 05:13:52 +02:00
facb3ac9cb
feat(ui): unified floating side panels for filters and playlists
peter
2026-07-13 05:13:40 +02:00
c2d914bacb
feat(notifications): coalesce identical notifications with a repeat count
peter
2026-07-13 05:13:18 +02:00
07024de6c2
feat(i18n): retire the German interface language
peter
2026-07-13 05:13:08 +02:00
076a2fbe6f
fix(header): restore inner scroll broken by the floating-header wrapper
peter
2026-07-13 02:39:43 +02:00
d159f35f31
feat(header): floating module header with cyclic nav and shared search
peter
2026-07-13 02:28:06 +02:00
a7f9032e0e
feat(glass): light-theme background images + enable the toggle in light
peter
2026-07-13 00:14:20 +02:00
8019b97ca8
feat(glass): make the dev tuner theme-aware (Sync to current theme)
peter
2026-07-13 00:02:04 +02:00
89b6d8a7bb
fix(glass): give light theme its own translucent tier + unify the Plex filter rail
peter
2026-07-12 23:53:56 +02:00
ec23dafffe
chore(glass): scrub dev-process/hostname refs from tracked comments
peter
2026-07-12 23:30:50 +02:00
06b4411aa4
feat(glass): re-theme the public WatchPage onto the token system (Phase 3)
peter
2026-07-12 23:00:36 +02:00
cb2ad684bd
feat(glass): glassify modal inner panels, dropdowns & list rows (Phase 2)
peter
2026-07-12 22:54:13 +02:00
a625974471
feat(glass): glassify the side rails + back-to-top (Phase 1, feed chrome)
peter
2026-07-12 22:44:57 +02:00
8069cbd4b7
Merge feature/glass-consistency: variable-driven glass, per-scheme backgrounds, Starship/Matrix schemes (0.42.0)
peter
2026-07-12 22:29:07 +02:00
88e6b6a2a0
chore(release): 0.42.0 — glass-over-image look + Starship/Matrix schemes
peter
2026-07-12 22:28:50 +02:00
3f91453254
feat(glass): user-facing Image-fade slider under Settings > Background image
peter
2026-07-12 22:24:09 +02:00
a8b1b26901
feat(glass): per-scheme background images + glass-over-image mode
peter
2026-07-12 21:20:40 +02:00
e1b8916be4
feat(glass): dev-prototype feed backdrop (blurred rotating thumbnail)
peter
2026-07-12 20:40:20 +02:00
96b7650d6a
fix(glass): soften the Matrix scheme accent (neon phosphor → muted emerald)
peter
2026-07-12 20:27:37 +02:00
cfd02ba471
feat(glass): bake two-tier defaults (Adaptive chrome + media scope), add Starship/Matrix schemes
peter
2026-07-12 20:12:25 +02:00
2004ab004e
feat(glass): variable-drive the glass system + dev GlassTuner (Phase 0/0b)
peter
2026-07-12 19:14:40 +02:00
2834056025
Merge: promote dev to prod
peter
2026-07-12 17:59:43 +02:00
08919199c2
chore(release): 0.41.0 — admin audit log + channel About enrichment/fixes
peter
2026-07-12 17:57:39 +02:00
c9949dda42
Merge feature/channel-card-enrich: channel About-tab enrichment + fixes
peter
2026-07-12 17:52:28 +02:00
3c104458d1
fix(channel): no-banner fallback bar matches the banner height (avatar/Back overlap)
peter
2026-07-12 17:01:29 +02:00
26230b52e8
fix(channel): recover a throttled channel banner instead of leaving it broken
peter
2026-07-12 16:54:55 +02:00
763d8533f2
fix(channel): hide the Source (search-results) filter on the channel-scoped feed
peter
2026-07-12 16:36:32 +02:00
05aa70ed33
fix(channel): harden About-enrich edge cases from review
peter
2026-07-12 16:17:17 +02:00
0c26464c90
feat(channel): enrich the About tab + fix the tab-switch header shift
peter
2026-07-12 16:12:39 +02:00
5bad18d571
Merge feature/audit-log: admin audit log (Notification P3)
peter
2026-07-12 08:04:59 +02:00
201b8b00b3
fix(audit): address /code-review findings
peter
2026-07-12 07:47:07 +02:00
911f5100d8
feat(audit): admin audit log (Notification P3)
peter
2026-07-12 07:32:41 +02:00
2840d1b532
Merge: promote dev to prod
peter
2026-07-12 06:56:51 +02:00
2c4d4fa193
chore(release): 0.40.0 — deferred-bugs closeout
peter
2026-07-12 06:54:49 +02:00
2846129363
Merge chore/deferred-bugs: close the code-hygiene sweep's deferred 🟡 /🟢 tails
peter
2026-07-12 06:50:10 +02:00
64a97ede3d
fix(deferred): address /code-review findings on the closeout diff
peter
2026-07-12 06:21:29 +02:00
5ac30abe1f
fix(deferred): close frontend UI/UX tails from the hygiene sweep
peter
2026-07-12 05:59:25 +02:00
229502a61e
fix(deferred): close backend correctness/efficiency tails from the hygiene sweep
peter
2026-07-12 05:59:03 +02:00
70f419edf3
Merge: promote dev to prod
peter
2026-07-12 04:58:45 +02:00
216200eebf
release: v0.39.1
peter
2026-07-12 04:57:06 +02:00
ac0bb19d32
Merge bug/oauth-scope-and-email: OAuth scope-clobber + admin-email fixes
peter
2026-07-12 04:56:24 +02:00
30e6ce74ff
fix(auth): decrypt the access-token fallback before revoking on account deletion
peter
2026-07-12 04:52:31 +02:00
e667fe0776
fix(auth): don't let a re-sign-in clobber the YouTube grant (root cause)
peter
2026-07-12 04:44:37 +02:00
ca10b88bf5
fix(auth): preserve OAuth scopes across re-login + accurate multi-admin request emails
peter
2026-07-12 04:34:07 +02:00
9fa120b09e
Merge feature/auth-loose-ends: close SA5 timing oracles + dedup messages_ws
peter
2026-07-12 04:17:48 +02:00
42bc45a365
chore(auth): drop now-dead session guard in messages_ws epoch read
peter
2026-07-12 04:17:02 +02:00
d939b2efb6
fix(auth): close SA5 timing oracles on register/reset + dedup messages_ws
peter
2026-07-12 04:13:11 +02:00
2fef26cd75
Merge: promote dev to prod
peter
2026-07-12 03:51:36 +02:00
9d3624d51b
release: v0.39.0
peter
2026-07-12 03:49:55 +02:00
ff8e49b8ce
harden(auth): SA3 review follow-ups — IPv6-mapped match + no-proxy-headers guardrail
peter
2026-07-12 03:49:08 +02:00
db2257c5e7
feat(auth): SA3 — trusted-proxy X-Forwarded-For for rate limiting
peter
2026-07-12 03:42:41 +02:00
4b3e83db74
Merge feature/auth-security: SB3 + SA4 (SA3 deferred)
peter
2026-07-12 03:25:54 +02:00
bfcee41f2a
fix(auth): address SA4 review findings (WS epoch check, commit ordering, verify guard)
peter
2026-07-12 03:07:13 +02:00
bfcacb518f
feat(auth): SA4 — server-side session revocation via per-user session epoch
peter
2026-07-12 03:00:16 +02:00
e99ec65721
fix(auth): SB3 — keep reset/verify tokens out of URL query strings
peter
2026-07-12 02:48:40 +02:00
4353327e30
Merge: promote dev to prod
peter
2026-07-12 02:26:55 +02:00
c7ef5a87b2
release: v0.38.0
peter
2026-07-12 02:26:42 +02:00
78fcbb651f
Merge chore/code-hygiene: Phase 4 guardrails (noUnusedLocals + dead-code sweep + ruff.toml)
peter
2026-07-12 02:16:07 +02:00
5c29a383cf
chore(hygiene): Phase 4 guardrails — noUnusedLocals/Parameters + dead-code sweep
peter
2026-07-12 02:15:52 +02:00
ebe77721cd
Merge chore/code-hygiene: Plex filter-sidebar collapse button
peter
2026-07-12 01:55:25 +02:00
2fcef981cd
feat(plex): collapse button in the expanded Plex filter sidebar
peter
2026-07-12 01:55:10 +02:00
0f21f6292f
Merge chore/code-hygiene: Phase 3 — jscpd clones to zero
peter
2026-07-12 00:50:09 +02:00
cddfb909da
chore(ui): dedup last 3 jscpd clones → 0 (collapsed rail, video-card text block, subs column)
peter
2026-07-12 00:46:52 +02:00
2169232d57
Merge chore/code-hygiene: Phase 3 — extract shared inputCls + btnCls to ui/form.tsx
peter
2026-07-12 00:35:48 +02:00
eabfb6e00a
chore(ui): extract shared inputCls + btnCls to ui/form.tsx
peter
2026-07-12 00:29:04 +02:00
d1adec02ad
Merge chore/code-hygiene: fix Plex infinite-scroll dead after drill-in→Back
peter
2026-07-12 00:16:54 +02:00
9a00bd8836
fix(plex): infinite-scroll dead after drill-in → Back (stale sentinel observer)
peter
2026-07-12 00:09:19 +02:00
ca99afe965
Merge chore/code-hygiene: Phase 2 #9 Plex backend pass (watch_sync bugs + backend dedup)
peter
2026-07-11 23:53:29 +02:00
a12f1d8ef7
Plex backend pass (#9 ): watch_sync bugs + backend dedup
peter
2026-07-11 23:48:35 +02:00
bce055b774
Merge chore/code-hygiene: Phase 2 #9 Plex follow-up (frontend player bugs + FE dedup)
peter
2026-07-11 23:22:54 +02:00
4d22349aa6
fix(plex): player marker-skip reset, lang-switch reload, tracks wheel, sidebar badge clamp
peter
2026-07-11 23:13:10 +02:00
d7fbe01f81
chore(plex): dedup frontend formatters + LS key, drop dead wasPlaying pref
peter
2026-07-11 23:10:24 +02:00
ae8bc871f2
Merge chore/code-hygiene: Phase 2 #9 Plex (first pass — transcode config-drift + safe cleanups)
peter
2026-07-11 21:53:25 +02:00
c9a249d922
chore(plex): drop dead _enabled guard, dedup watch-toggle, remove dead i18n
peter
2026-07-11 21:53:24 +02:00
9347d52a54
fix(plex): honor the admin "max concurrent transcodes" setting (config drift)
peter
2026-07-11 21:53:24 +02:00
ce43db9a80
Merge chore/code-hygiene: Phase 2 #8 Auth security fixes (contained batch)
peter
2026-07-11 21:26:39 +02:00
a61a281158
fix(auth): security hardening — token encryption, timing, adoption + isolation
peter
2026-07-11 21:26:39 +02:00
3fb345d825
fix(auth): last-admin guard counts only ACTIVE admins (prevents lockout)
peter
2026-07-11 21:26:39 +02:00
18cf9cd82d
Merge chore/code-hygiene: clear E2EE key on logout (user-approved)
peter
2026-07-11 20:57:30 +02:00
856f39642f
fix(e2ee): clear the device's private key on logout (user-approved: every logout)
peter
2026-07-11 20:57:30 +02:00
022d8262db
Merge chore/code-hygiene: Phase 2 #7 Messages (E2EE crypto fix + UI bugs)
peter
2026-07-11 20:48:38 +02:00
c0f9ce732c
fix(messages-ui): surface silent send failures, stop scroll/render churn (+cleanup)
peter
2026-07-11 20:16:14 +02:00
52197b28fb
fix(e2ee): stop reusing the AES-GCM nonce in setup; drop redundant key_check oracle
peter
2026-07-11 20:16:14 +02:00
60d6fc3fa0
Merge chore/code-hygiene: Phase 2 #6 Admin/Settings/Scheduler (cleanup + bugs)
peter
2026-07-11 19:45:09 +02:00
e91369f827
fix(admin-ui): Plex library toggle inversion + Purge-discovery confirm (+ cleanups)
peter
2026-07-11 19:44:53 +02:00