Commit Graph

  • b6c6ef0c6d Merge: promote dev to prod main peter 2026-07-31 05:51:51 +02:00
  • 5f00807aac Merge r8-s5-player-fullscreen-res: 1080p start + windowed fullscreen + native-controls phase dev peter 2026-07-31 05:49:22 +02:00
  • 8f1d576341 feat(player): drop to native sizing after 1080p latches (full-size YouTube controls) peter 2026-07-31 05:47:20 +02:00
  • 8349f9338c feat(player): start videos at 1080p + add a windowed fullscreen button (R8 S5) peter 2026-07-31 05:03:34 +02:00
  • 6574a2accf Merge: promote dev to prod peter 2026-07-31 03:53:22 +02:00
  • ee82ddcdae chore(release): 0.59.0 — R8 popover platform peter 2026-07-31 03:45:42 +02:00
  • bcc46028da Merge r8-popover-platform → dev (R8 popover platform) peter 2026-07-31 03:44:05 +02:00
  • 7b6481055c chore(popover): drop the unused AnchoredPopover type export (knip) peter 2026-07-31 03:43:41 +02:00
  • a6e3ef8122 feat(player): download works in fullscreen + de-dup the transport controls (R8 S5) peter 2026-07-31 03:24:49 +02:00
  • 2984aa3240 fix(popover): resolve the R8 platform code-review findings peter 2026-07-31 02:10:14 +02:00
  • 2727b59fa5 feat(popover): player description card on the platform, add-to-playlist works in fullscreen (R8 S4d) peter 2026-07-31 00:16:41 +02:00
  • e35c4be561 feat(popover): migrate the dialog surfaces onto the platform (R8 S4c) peter 2026-07-31 00:11:26 +02:00
  • 280de2e592 feat(popover): migrate the click menus onto the platform (R8 S4b) peter 2026-07-31 00:02:14 +02:00
  • 2756c21dbd feat(popover): fullscreen-aware portal + migrate the hover surfaces (R8 S4a) peter 2026-07-30 23:49:29 +02:00
  • 7ed98956cc feat(overlay): shared layer-stack for topmost-only Escape across modals, popovers, players (R8 S3) peter 2026-07-29 03:29:37 +02:00
  • d950867d26 fix(popover): visible accent highlight on the active menu item (R8 S2 UAT) peter 2026-07-29 03:05:39 +02:00
  • 5d1854b808 feat(popover): keyboard + focus + ARIA layer for the popover platform (R8 S2) peter 2026-07-29 02:54:21 +02:00
  • f091247624 refactor(channels): shared tag-mutation hook + a channel_detail tag_ids test (R8 review) peter 2026-07-29 02:25:17 +02:00
  • 3352d0095c fix(channels): only show the detail-page tag editor on subscribed channels peter 2026-07-29 02:10:00 +02:00
  • 56f95fa626 feat(channels): tag editing on the channel detail page (R8 S1 Part 2) peter 2026-07-29 02:04:18 +02:00
  • 2b70ba7a1f fix(channels): tag-cell review follow-ups — rename-aware fit, measured gap, close reveal-all peter 2026-07-29 01:50:58 +02:00
  • 8ae06ea1fe fix(channels): center table, kill popover top-left flash, exact "+N" count (R8 S1 UAT) peter 2026-07-29 01:37:29 +02:00
  • 0fd95c15a1 fix(channels): stable tag column width, no popover flash, no sync wrap (R8 S1 UAT) peter 2026-07-29 01:05:58 +02:00
  • cfa8be950d feat(channels): fixed-width tag cell with "+N" overflow + inline create (R8 S1) peter 2026-07-29 00:40:33 +02:00
  • e644b4f7d7 feat(popover): add the Floating UI anchored-popover platform + migrate TagsCell pilot (R8 S1) peter 2026-07-28 23:49:44 +02:00
  • 2a70d145e9 Merge: promote dev to prod peter 2026-07-30 05:27:10 +02:00
  • dfa610a059 chore: bump VERSION to 0.58.1 (ship Gitea-URL change to prod) 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