Commit Graph

  • 2a70d145e9 Merge: promote dev to prod main peter 2026-07-30 05:27:10 +02:00
  • dfa610a059 chore: bump VERSION to 0.58.1 (ship Gitea-URL change to prod) dev peter 2026-07-30 05:25:21 +02:00
  • df8a2a6d52 chore: point repo/registry URLs at git.b1fr0st.eu (Forgejo->Gitea migration) peter 2026-07-30 03:36:23 +02:00
  • bca67a3547 Merge: promote dev to prod peter 2026-07-29 18:33:57 +02:00
  • 0d1f1c9fa5 Merge welcome-readme-refresh → dev (0.58.0 landing refresh) peter 2026-07-29 18:29:18 +02:00
  • 929a63b8ec chore(release): 0.58.0 — landing refresh + R7.5 API layer peter 2026-07-29 18:28:51 +02:00
  • 9dc7f80305 improvement(welcome): gallery landing, refreshed copy, name-free screenshots peter 2026-07-29 18:28:51 +02:00
  • 18bfcba4ed Merge r7.5-api-layer → dev peter 2026-07-28 23:14:32 +02:00
  • 1fd4c2f7b3 docs(api): note the façade guard's intended scope boundary (type-name clashes are tsc-caught) peter 2026-07-28 23:14:32 +02:00
  • 95db151565 test(api): guard the spread-only façade against interleave regrowth (R7.5 S3) peter 2026-07-28 23:04:39 +02:00
  • 8eb6f13288 refactor(api): extract account/auth/setup/admin; façade is now spread-only (R7.5 S2) peter 2026-07-28 22:59:09 +02:00
  • 8ce1e0230a refactor(api): extract 8 content domains into api/*.ts slices (R7.5 S1) peter 2026-07-28 22:41:34 +02:00
  • 2c7c8e0f8a Merge: promote dev to prod peter 2026-07-28 03:30:44 +02:00
  • 81d0943fdc fix(watch): drop the Web Audio reroute, keep Media Session for iOS background audio (0.57.2) peter 2026-07-28 03:29:48 +02:00
  • 5e2195eb5a Merge: promote dev to prod peter 2026-07-28 03:21:39 +02:00
  • 9187ae56b1 fix(share): use the stable YouTube hqdefault thumbnail for OG on YT shares (0.57.1) peter 2026-07-28 03:20:31 +02:00
  • 53b599271d Merge: promote dev to prod peter 2026-07-28 03:01:00 +02:00
  • 922c18b7c3 Merge fixpack-downloads-channels → 0.57.0 peter 2026-07-28 02:59:19 +02:00
  • b367bc3126 chore(release): 0.57.0 — downloads & channels fixpack peter 2026-07-28 02:59:04 +02:00
  • 7765d19813 fix: code-review round 1 — 4 findings peter 2026-07-28 02:49:34 +02:00
  • d5c9fb9918 feat(watch): keep audio playing in the background on the shared watch page (S4) peter 2026-07-28 02:29:19 +02:00
  • 9d3d69f0e9 feat(channels): press-and-hold priority stepper + inline-editable value peter 2026-07-28 02:22:36 +02:00
  • eb922cb589 feat(channels): surface full-history pull + honest stored/total count on the channel page (S3) peter 2026-07-28 02:22:36 +02:00
  • ae14aa1c6a fix(share): declare og:image dimensions so the FB card includes the image on first scrape peter 2026-07-28 01:54:14 +02:00
  • 40acf104a1 feat(share): spell out og:image:secure_url + type for the Facebook scraper peter 2026-07-28 01:40:22 +02:00
  • cdcffb8c91 feat(downloads): categorize download failures + a readable error dialog (S2) peter 2026-07-28 01:40:22 +02:00
  • 3f15f35256 feat(downloads): S1 UI quick wins — queue default, dates, auto-link, thumb fallback peter 2026-07-28 01:21:50 +02:00
  • ab1272beb4 Merge: promote dev to prod peter 2026-07-28 00:25:52 +02:00
  • 0d655e6f88 fix(api): un-export types used only within their own module (knip gate) peter 2026-07-28 00:24:38 +02:00
  • 4d34322b7c Merge R7 · Frontend API layer → 0.56.0 peter 2026-07-28 00:18:40 +02:00
  • 175e49b361 chore(release): 0.56.0 — R7 frontend API layer peter 2026-07-28 00:18:39 +02:00
  • 1223df6ccc refactor(api): code-review fixes (R7 S3b review round 1) peter 2026-07-27 23:45:02 +02:00
  • 926ebe7ffa refactor(api): extract the messaging domain to api/messaging.ts (R7 S3b·4) peter 2026-07-27 23:26:23 +02:00
  • 3232a53c46 refactor(api): extract the plex domain to api/plex.ts (R7 S3b·3) peter 2026-07-27 23:23:31 +02:00
  • cc38d8bdfa refactor(api): extract the downloads domain to api/downloads.ts (R7 S3b·2) peter 2026-07-27 23:17:12 +02:00
  • 49f8c57c89 refactor(api): extract the shared HTTP machinery to api/core.ts (R7 S3b·1) peter 2026-07-27 23:08:48 +02:00
  • 90749a9e45 refactor(fe): eliminate every explicit any; enforce no-explicit-any (R7 S3a·4) peter 2026-07-27 22:57:33 +02:00
  • 2d4ecdb6c5 refactor(api): honest FeedResponse; derive pageTitleKey from the registry (R7 S3a·2-3) peter 2026-07-27 22:45:30 +02:00
  • 5de6be8fde refactor(api): literal-union the closed-value string fields (R7 S3a·1) peter 2026-07-27 22:40:11 +02:00
  • ca0312d1a1 test(fe): lock query-key factory shapes; unify nullable guard (R7 S2 review) peter 2026-07-27 22:24:48 +02:00
  • 34297b696f refactor(fe): migrate plex/messaging/admin/downloads/notifications to qk (R7 S2b) peter 2026-07-27 22:10:03 +02:00
  • ad86d6d126 refactor(fe): query-key factory + migrate feed/channels/playlists (R7 S2a) peter 2026-07-27 21:48:35 +02:00
  • d0aa1cf9a7 refactor(api): code-review fixes (R7 S1) peter 2026-07-26 22:17:04 +02:00
  • 16585d868d refactor(api): type req<T>() and tighten the error layer (R7 S1) peter 2026-07-26 21:51:24 +02:00
  • 8ee46aac09 Merge: promote dev to prod peter 2026-07-26 21:30:05 +02:00
  • cb925e3ab9 Merge R6 · API contract & transaction ownership → 0.55.0 peter 2026-07-26 21:26:26 +02:00
  • c86a15c252 chore(release): 0.55.0 — R6 API contract & transaction ownership peter 2026-07-26 21:25:36 +02:00
  • 351eb5fd13 test(plex)+cleanup(quota): S2 code-review fixes (R6 S2) peter 2026-07-26 19:08:29 +02:00
  • 5809f3e431 refactor(quota): own the quota session; Plex per-section commit (R6 S2) peter 2026-07-26 15:32:46 +02:00
  • 921c2bf5a4 test(db): harden the DB lane per code-review (R6 S3) peter 2026-07-26 15:09:25 +02:00
  • 39f726a5e6 test(db): /facets regression + S3a jsonb-null normalization (R6 S3) peter 2026-07-26 13:54:42 +02:00
  • 4b6bc54aa8 test(db): stand up the DB-backed pytest lane (R6 S3b) peter 2026-07-26 13:47:07 +02:00
  • 81d21fdeac fix(api): accept fractional progress seconds (R6 S1b code-review round 1) peter 2026-07-26 05:39:32 +02:00
  • b0894a9994 test(api): request-model validation for the S1b 500-fixes (R6 S1b) peter 2026-07-26 05:09:35 +02:00
  • 66f4ac30d0 refactor(api): Pydantic request models for plex routes + status unification (R6 S1b) peter 2026-07-26 05:08:27 +02:00
  • f4bf1bc18f refactor(api): Pydantic request models for downloads routes (R6 S1b) peter 2026-07-26 05:02:49 +02:00
  • 8bf5026e7c refactor(api): Pydantic request models for playlists routes (R6 S1b) peter 2026-07-26 04:58:37 +02:00
  • ab83aae8bb refactor(api): Pydantic request models for setup & admin routes (R6 S1b) peter 2026-07-26 04:56:55 +02:00
  • 99d65cea23 refactor(api): Pydantic request models for saved-views & feed state (R6 S1b) peter 2026-07-26 04:53:45 +02:00
  • a622470a28 refactor(api): Pydantic request models for small route modules (R6 S1b) peter 2026-07-26 04:51:25 +02:00
  • d982e8b9ae refactor(api): Pydantic request models for channels routes (R6 S1b) peter 2026-07-26 04:46:40 +02:00
  • 9fe050279e style(api): complete the S1a import-order fix (R6 S1a follow-up) peter 2026-07-26 04:44:22 +02:00
  • cf8bbad8a1 refactor(api): code-review fixes — widen iso() to date, fix import order (R6 S1a) peter 2026-07-26 04:25:40 +02:00
  • c5533b0ac5 refactor(api): shared serializer + ownership + write-scope helpers (R6 S1a) peter 2026-07-26 04:17:08 +02:00
  • edb0f8a4e1 Merge: promote dev to prod peter 2026-07-26 03:39:41 +02:00
  • a711b51224 Merge R5: data integrity (downloads & sync) + player big-view overhaul → 0.54.0 peter 2026-07-26 03:38:40 +02:00
  • d3a3f41b63 fix(player): left-align the big-view control bar so overflow scrolls from the start peter 2026-07-26 03:34:05 +02:00
  • 375c814bb6 fix(player): dock the big-view control bar in its own strip (UAT follow-up) peter 2026-07-26 03:18:15 +02:00
  • 51193105a7 fix(player): first-class maximise/fullscreen view (UAT round) peter 2026-07-26 02:48:46 +02:00
  • 475bd7fef8 chore(release): 0.54.0 — R5 data integrity (finalize version + release notes) peter 2026-07-26 01:40:43 +02:00
  • 4fe40a92e5 Merge dev (0.53.1 Plex hotfix) into r5-data-integrity peter 2026-07-26 01:39:52 +02:00
  • 3a982b8be8 Merge: promote dev to prod peter 2026-07-26 01:24:30 +02:00
  • 543842e7fb Merge: fix /facets 500 on a metadata-poor Plex library (0.53.1) peter 2026-07-26 01:23:09 +02:00
  • 58f836bcd8 fix(plex): stop /facets 500 on a metadata-poor library peter 2026-07-25 18:22:07 +02:00
  • 5fe6d32d38 fix(plex): give the sweep's boot-time cutoff cross-clock slack peter 2026-07-24 04:52:41 +02:00
  • bdf7c03b59 fix(r5): address the eighth /code-review high round — 7 findings peter 2026-07-24 04:44:20 +02:00
  • a5336d20e0 fix(r5): address the seventh /code-review high round — 7 findings peter 2026-07-24 03:41:29 +02:00
  • aae37591cb fix(player): reclaim keyboard focus when fullscreen ends peter 2026-07-24 03:07:46 +02:00
  • 45654fc7ec fix(player): F maximises without the Fullscreen API, so YouTube's own controls work peter 2026-07-24 02:46:42 +02:00
  • d8d82e47d0 fix(player): give YouTube's own fullscreen a working path + round-6 findings peter 2026-07-24 02:16:58 +02:00
  • c4942eb590 fix(r5): address the fifth /code-review high round — 6 findings peter 2026-07-24 01:50:50 +02:00
  • fc82c8b47a fix(r5): address the fourth /code-review high round — 6 findings peter 2026-07-24 00:45:42 +02:00
  • c0db80d333 fix(r5): address the third /code-review high round — 7 findings peter 2026-07-24 00:17:09 +02:00
  • 53ff61653d fix(r5): address the second /code-review high round — 7 findings peter 2026-07-23 23:59:58 +02:00
  • 2a7f49c981 fix(r5): address the /code-review high round — 10 findings peter 2026-07-23 23:25:06 +02:00
  • 5130584d0a fix(player): R5 S3 — fullscreen controls, volume memory, Ctrl+wheel zoom peter 2026-07-23 22:56:42 +02:00
  • 63a36db116 fix(downloads): probe codecs from ffprobe JSON, not its flat output peter 2026-07-23 22:56:42 +02:00
  • 4209f6bb24 fix(sync): R5 S2 — sync guards peter 2026-07-23 22:36:33 +02:00
  • 2f46947dcf fix(downloads): R5 S1 — downloads robustness peter 2026-07-23 22:32:25 +02:00
  • 9556b33648 Merge: promote dev to prod peter 2026-07-23 04:29:12 +02:00
  • 08049d2aa5 release: 0.53.0 — R4 auth funnel & abuse hardening peter 2026-07-23 04:27:20 +02:00
  • 81fc6c791c Merge R4: auth funnel & abuse hardening peter 2026-07-23 04:24:11 +02:00
  • 10da69c1b9 fix(downloads): confirm before clearing a link password; fix placeholder peter 2026-07-23 04:15:39 +02:00
  • c8cbbb6189 feat(downloads): change/clear a share link's password from the UI peter 2026-07-23 04:03:11 +02:00
  • e49b77dbcd fix(scheduler): move the single-run claim into _job (cover both paths) peter 2026-07-23 03:50:04 +02:00
  • 733b41fd86 feat(security): R4 S3 — abuse & leak hardening peter 2026-07-23 03:38:57 +02:00
  • dce191f1c0 fix(messages): re-review — degrade gracefully when partner has no key peter 2026-07-23 03:21:44 +02:00
  • 26e6562921 fix(messages): address S2 review — partner key refresh + reactive me peter 2026-07-23 03:11:35 +02:00
  • 1119eb0218 feat(messages): R4 S2 — forgotten-passphrase reset for E2EE peter 2026-07-23 02:57:27 +02:00
  • 1af679bfc5 fix(dev): support 127.0.0.1 dev OAuth end-to-end peter 2026-07-23 01:35:53 +02:00