-
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
-
1fc8214f8f
chore(scheduler): dedup token-user query + drop pointless rss lambda
peter
2026-07-11 19:44:53 +02:00
-
7e18d9698f
fix(config): honor DB-overridable download layout + retention (env-vs-DB drift)
peter
2026-07-11 19:44:53 +02:00
-
02d334825b
Merge chore/code-hygiene: Phase 2 #5 YouTube player (1 bug + cleanups)
peter
2026-07-11 18:50:06 +02:00
-
-
6648ba557a
fix(player): short-video auto-watch + player cleanups
peter
2026-07-11 18:49:56 +02:00
-
7f35be1a78
Merge chore/code-hygiene: Phase 2 #4 Playlists (cleanup + bug fixes)
peter
2026-07-11 18:33:28 +02:00
-
-
09a6095363
fix(playlists-ui): surface YouTube 403s + rollback remove; drop dup name/import
peter
2026-07-11 18:33:16 +02:00
-
a7c8b3d0a6
fix(playlists): reorder position collision + dedup remove helper
peter
2026-07-11 18:33:16 +02:00
-
2b2af2aca2
Merge chore/code-hygiene: Phase 2 #3 Channels (cleanup + 2 bug fixes)
peter
2026-07-11 18:11:37 +02:00
-
-
1fb10895cc
fix(channels): ChannelPage subscribe — surface 403 + fix stale caches
peter
2026-07-11 18:11:23 +02:00
-
c06e8462be
chore(channels-ui): Phase 2 #3 frontend cleanup — dedup 403 handler, count cell, LS keys, dead i18n
peter
2026-07-11 18:11:23 +02:00
-
e00fffd000
chore(channels): Phase 2 #3 backend cleanup — extract blocked + summary helpers
peter
2026-07-11 18:11:23 +02:00
-
939ca6ee6d
Merge chore/code-hygiene: Downloads FE follow-up + Phase 2 #2 Feed (cleanup + 2 bug fixes)
peter
2026-07-11 17:44:11 +02:00
-
-
83f5b87424
fix(feed): repair 2 bugs found in the Phase 2 #2 review
peter
2026-07-11 17:43:18 +02:00
-
bafaa5192d
chore(feed-ui): Phase 2 #2 frontend cleanup — hoist, drop wrapper, dedup caches
peter
2026-07-11 17:37:52 +02:00
-
957396aee7
chore(feed): Phase 2 #2 backend cleanup — dead return, dup helpers, shared const
peter
2026-07-11 17:37:52 +02:00
-
c9285b8c25
chore(downloads-ui): FE-C4 follow-up cleanup
peter
2026-07-11 17:10:15 +02:00
-
fef8036d6c
fix(downloads-ui): editor tail no-op + persisted-tab fallback (+ dead ternary)
peter
2026-07-11 16:37:57 +02:00
-
4b22a7fa23
Merge branch 'dev' into chore/code-hygiene
peter
2026-07-11 16:22:39 +02:00
-
-
-
-
a24e77c693
Merge bugfix/downloads: repair 5 Downloads backend bugs (B1-B5)
peter
2026-07-11 16:22:22 +02:00
-
-
006f38382b
fix(downloads): repair 5 confirmed backend bugs (B1-B5)
peter
2026-07-11 16:15:12 +02:00
-
-
39748c394b
chore(downloads): C3-C6 — DRY the source-URL, filename, and serialize helpers
peter
2026-07-11 05:47:51 +02:00
-
efcac631de
chore(downloads): C1+C2 — drop dead target_ext; centralize path-traversal guard
peter
2026-07-11 05:41:43 +02:00
-
0b2740de0f
chore: Phase 1 hygiene — drop unused imports/exports/types (behavior-neutral)
peter
2026-07-11 04:47:08 +02:00
-
-
7842e48952
Merge: promote dev to prod
peter
2026-07-11 03:52:32 +02:00
-
-
2bdccfb8c7
release: v0.37.0 — unified library, series view, adaptive filters, collections picker
peter
2026-07-11 03:50:34 +02:00
-
11bc8bf347
Merge feature/plex-series-view into dev
peter
2026-07-11 03:42:50 +02:00
-
-
196f3bf2f9
fix(plex): genre facet offers only co-occurring genres in AND mode
peter
2026-07-11 03:41:17 +02:00
-
b85d12e0c9
feat(plex): restore Collections filter as a cross-library union picker
peter
2026-07-11 03:30:33 +02:00
-
213145b7bd
perf(plex): batch bulk pushes, cache show enrichment; remove dead code + DRY (F6/F8/F10)
peter
2026-07-11 03:10:02 +02:00
-
d46f55af83
fix(plex): address code-review findings (F1-F3, F5, F9)
peter
2026-07-11 02:25:14 +02:00
-
3c46bc4377
fix(plex): series-page UX fixes from UAT (7 items)
peter
2026-07-11 01:34:30 +02:00
-
819e17536c
feat(plex): series-page polish — season/episode quick actions + glassy art backdrop
peter
2026-07-11 01:01:34 +02:00
-
cb93b698f4
fix(plex): facet + sort refinements
peter
2026-07-11 00:45:05 +02:00
-
59d6ad01b3
feat(plex): adaptive (faceted) filters — each filter narrows the others
peter
2026-07-11 00:31:47 +02:00
-
b526b4d9cc
feat(plex): unify movies + shows into one cross-library browser
peter
2026-07-11 00:15:49 +02:00
-
5fa1c701c2
feat(plex): Plex-web-style 3-level series view (Phase 2 of series view)
peter
2026-07-10 22:08:04 +02:00
-
56799e5bcc
feat(plex): TV-show metadata sync + series filters (Phase 1 of series view)
peter
2026-07-10 21:43:09 +02:00
-
-
1401294ad1
Merge: promote dev to prod
peter
2026-07-10 18:16:15 +02:00
-
-
6397844863
Merge improvement/player-drop-hd-experiment: drop HD flash, clean notes (v0.36.4)
peter
2026-07-10 18:14:32 +02:00
-
-
8279f259bb
revert(player): drop the experimental HD-unlock fullscreen flash
peter
2026-07-10 18:14:32 +02:00
-
-
409f8c0ce8
Merge: promote dev to prod
peter
2026-07-10 17:32:43 +02:00
-
-
f785650269
Merge improvement/player-hd-unlock-flash: experimental windowed-HD unlock (v0.36.3)
peter
2026-07-10 17:30:50 +02:00
-
-
aac03e2c2b
chore(release): 0.36.3
peter
2026-07-10 17:30:50 +02:00
-
fcd58f12c9
feat(player): experimental one-time fullscreen flash to unlock windowed HD
peter
2026-07-10 17:30:49 +02:00
-
-
c3987a8d52
Merge: promote dev to prod
peter
2026-07-10 16:58:07 +02:00
-
-
1d0c77b34a
Merge improvement/player-revert-transform: drop ineffective HD hack (v0.36.2)
peter
2026-07-10 16:56:24 +02:00
-
-
967364b938
chore(release): 0.36.2
peter
2026-07-10 16:56:24 +02:00
-
e678a267ae
revert(player): drop the transform-scale HD hack (didn't beat YouTube's cap)
peter
2026-07-10 16:56:24 +02:00
-
-
92bba3abf2
Merge: promote dev to prod
peter
2026-07-10 16:29:30 +02:00
-
-
05e6554048
Merge improvement/player-windowed-hd: windowed 1080p + scroll-anywhere volume (v0.36.1)
peter
2026-07-10 16:27:43 +02:00
-
-
3a25f8341f
chore(release): 0.36.1
peter
2026-07-10 16:27:43 +02:00
-
d6ce4a0477
feat(player): unlock 1080p in the windowed player + scroll-anywhere volume
peter
2026-07-10 16:27:42 +02:00
-
-
1d908cabb2
Merge: promote dev to prod
peter
2026-07-10 15:54:24 +02:00
-