Commit Graph

  • 595490cb98 release: 0.87.0 (improvement/watch-background-audio) v0.87.0 peter 2026-09-15 03:02:19 +02:00
  • 7537882235 chore(release): 0.87.0 peter 2026-09-15 03:01:59 +02:00
  • 47d968eeea fix: review round 4 — an account switch unloads as the old account, a share link's lockout costs five networks peter 2026-09-15 02:53:22 +02:00
  • e7f38396a2 fix: review round 3 — a new tab keeps its account's notices, a revoked tab account lands on the default peter 2026-09-15 02:25:00 +02:00
  • f569b19c49 fix: review round 2 — a signed-out tab acts as nobody, honest share-page failures peter 2026-09-15 01:35:25 +02:00
  • e795d191c5 fix(boot): review round 1 — reconcile the tab pin, one loading clock, honest probe failures peter 2026-09-15 00:53:15 +02:00
  • 4ad7183102 feat(players): keep a video playing in the background on Brave iOS; repeat on the watch page peter 2026-09-14 23:58:30 +02:00
  • 2c3aaec62d feat(watch): prototype background sound for a shared video on iPad (dev only) peter 2026-09-14 23:40:51 +02:00
  • 70598d47a3 fix(dev): proxy the messages WebSocket through Vite, which stops a reset killing the dev server peter 2026-09-14 23:08:41 +02:00
  • 5858e7b513 test(e2e): run the net on WebKit and an iPad profile; opt the account out of Home peter 2026-09-14 22:29:33 +02:00
  • 5346efcd10 fix(boot): a new tab knows its account before anything renders peter 2026-09-14 22:29:33 +02:00
  • 6169e32ca5 fix(downloads): a signed-in Facebook reel keeps its title, and an mp3 stays an mp3 peter 2026-09-14 17:46:46 +02:00
  • 90523284ab release: 0.86.0 (feature/e11.5-download-failures) v0.86.0 peter 2026-09-14 01:53:06 +02:00
  • 17bfea8754 release: 0.86.0 notes peter 2026-09-14 01:52:34 +02:00
  • 2a9ddb78ac fix(downloads): E11.5 epic-end review round 2 peter 2026-09-14 01:42:57 +02:00
  • e887233210 fix(downloads): E11.5 epic-end review round 1 peter 2026-09-14 00:50:05 +02:00
  • b17d92d7c2 fix(downloads): confirm dialogs name the action on their confirm button peter 2026-09-13 23:38:11 +02:00
  • 90ee34a1b4 feat(downloads): a Facebook group post downloads its own video, or says it has none peter 2026-09-13 23:38:11 +02:00
  • 118fc70e08 fix(downloads): take the duration from the file when yt-dlp gives none peter 2026-09-13 23:12:16 +02:00
  • 636372511b chore: remove the unreferenced backend/Dockerfile peter 2026-09-13 23:12:16 +02:00
  • 1354f5b503 feat(downloads): a Facebook cookie download stuck at "Cannot parse data" is retried as Chrome peter 2026-09-13 22:48:21 +02:00
  • 98ec1ffcab fix(downloads): Retry and Re-download take a cookie added after the failure peter 2026-09-13 22:31:49 +02:00
  • 18c11ca437 feat(downloads): a per-site failure catalog — Facebook's walls say why and what to do peter 2026-09-13 21:53:25 +02:00
  • ca5e446fbd release: 0.85.0 (feature/e11-power-navigation) v0.85.0 peter 2026-09-13 21:02:22 +02:00
  • 4c7ab12a3e release: 0.85.0 — E11 Power Navigation peter 2026-09-13 21:02:22 +02:00
  • c6b552e75f fix(keys): epic-end review round 3 — the part-way clip count shows, busy buttons keep focus, cards say their names peter 2026-09-13 20:47:13 +02:00
  • 3cd0c525e2 fix(keys): epic-end review round 2 — focus comes back to the card, the right rail and the reason peter 2026-09-13 19:18:04 +02:00
  • f130a1c05a fix(keys): epic-end review round 1 — Back, menus and dialogs keep the focus where it belongs peter 2026-09-13 17:17:49 +02:00
  • bbd31c7143 feat(keys): Back returns focus to the item a view was opened from; "Feed" everywhere; every backend id named peter 2026-09-13 07:36:41 +02:00
  • 8731508645 feat(keys): the conversation list walks with j/k; the cheat sheet names keys in the reader's language peter 2026-09-13 07:00:51 +02:00
  • b5d37ca142 feat(keys): j/k and the arrows walk the channel, playlist and download lists peter 2026-09-13 06:08:05 +02:00
  • eb0507f942 fix(keys): a card reached by Tab rings the whole card, not just its poster peter 2026-09-13 05:47:43 +02:00
  • 6d09b94bbb feat(keys): j/k and the arrows walk Home's rails and every Plex grid and rail peter 2026-09-13 05:38:36 +02:00
  • 5274216981 feat(ui): PageUp/PageDown page through every dropdown list, not just the palette peter 2026-09-13 05:20:53 +02:00
  • 75d89613d0 feat(palette): PageUp/PageDown move a page of results at a time peter 2026-09-13 05:03:35 +02:00
  • 8fb276aa90 feat(keys): j/k walk the feed, s finds the search box, g jumps to a module peter 2026-09-13 04:16:20 +02:00
  • 78a9324381 fix(ui): the palette ranks what you typed, and lib stops leaning on components peter 2026-09-13 02:14:07 +02:00
  • 8a50538275 fix(ui): a write that fails says what failed and why, wherever it fails peter 2026-09-13 01:45:28 +02:00
  • b4aea7fa5b fix(ui): dialogs, menus and busy buttons keep the keyboard focus where it belongs peter 2026-09-13 01:04:11 +02:00
  • 92c305bab9 fix(nav): a navigation closes every overlay before it pushes peter 2026-09-13 00:17:09 +02:00
  • 32fe0768b6 release: 0.84.0 (bug/hunt-2026-09) v0.84.0 peter 2026-09-12 16:44:01 +02:00
  • 415a6c16f9 release: 0.84.0 — the owner's sixteen-item bug hunt peter 2026-09-12 16:43:54 +02:00
  • 8c51062e5b fix(api,ui): the demo refusal says why at every site, and the contract guard cannot fail open peter 2026-09-12 16:22:27 +02:00
  • 63bf1bca78 fix(plex): an accepted reorder refetches the detail it just wrote peter 2026-09-12 16:22:27 +02:00
  • c7a377396b fix(ui): a closing dialog leaves the focus to the dialog standing above it peter 2026-09-12 16:22:06 +02:00
  • 8036251589 fix(plex): the reclaim window rolls, and a refused finish is not performed through a third route peter 2026-09-12 16:21:51 +02:00
  • 71d7646bf1 fix(plex): a name this session cannot write fails at once, and the layout has one spelling peter 2026-09-12 16:21:37 +02:00
  • 3eb0f41962 fix(plex): a Plex reorder the server accepted is the order the cache holds peter 2026-09-12 05:50:40 +02:00
  • a0114deff1 fix(api,ui): a refused write says why, wherever the refusal happens peter 2026-09-12 05:50:31 +02:00
  • d89d887a9b fix(plex): the reclaim budget bounds what it says it bounds, and a refused finish is not performed anyway peter 2026-09-12 05:50:11 +02:00
  • f8a31d48cf fix(ui): a dialog keeps the focus it was given, and hands it back where it took it from peter 2026-09-12 05:49:58 +02:00
  • 7f17b17c13 fix(plex): an HLS session's file names are one vocabulary, and a name it cannot produce fails at once peter 2026-09-12 05:49:38 +02:00
  • 1f81684b6e fix(ui,plex): a dialog keeps the focus its child asked for, and a hopeless segment fails at once peter 2026-09-12 04:31:51 +02:00
  • 33fddacee2 test(plex): the over-long-name guard is asserted the same way on every OS peter 2026-09-12 04:18:35 +02:00
  • 12121255dd fix(playlists): a rejected reorder goes back to the order the server accepted peter 2026-09-12 04:15:15 +02:00
  • 4a7b65d187 fix(api): a refused write is named, in the reader's language peter 2026-09-12 04:07:25 +02:00
  • 47af4d5c05 fix(plex): an HLS artifact names the session it belongs to, and a paused viewer says so peter 2026-09-12 03:57:52 +02:00
  • 8a83bc0e9f fix(plex): a finished item is finished when the server says so, and a lost session is reclaimed a bounded number of times peter 2026-09-12 03:47:42 +02:00
  • 41b652f8fd fix(ui): a dialog opens focused where it said it would, and the wizard is a dialog peter 2026-09-12 03:41:37 +02:00
  • 545996f807 fix(ui): a toast host ranks by when its overlay opened, and an overlay keeps its Escape, its dialog and its navigation straight peter 2026-09-11 23:43:23 +02:00
  • 267fd7f70f fix(playlists): a refused edit is taken back on screen, and a gone list or tag is said, not swallowed peter 2026-09-11 23:34:33 +02:00
  • 6d49da17fe fix(api): a write that hit a connection failure is still reported, and every failure is reported once peter 2026-09-11 23:27:08 +02:00
  • 6a92585098 fix(plex): the player restarts a reaped session, finishes a played-through item as watched, and starts each item once peter 2026-09-11 23:18:33 +02:00
  • 31dc4184f5 fix(api): a paused viewer keeps its HLS session, a refused subtitle publish backs off, and a NUL is a 422 everywhere peter 2026-09-11 23:08:11 +02:00
  • 86971c574d fix(api): progress checkpoints past the int4 column are a 422, and idle HLS sessions are reaped on a timer peter 2026-09-11 18:05:30 +02:00
  • 785080f3da fix(plex): a Surprise card whose watched toggle failed is put back peter 2026-09-11 18:05:30 +02:00
  • 76b5f7c93e fix(playlists): a failed background refetch keeps the list on screen, and the player outlives every branch peter 2026-09-11 18:05:19 +02:00
  • 1cfe6a7f59 fix(api): a gone row and a refused playlist action are said in the reader's language, and a failure is reported once peter 2026-09-11 18:05:19 +02:00
  • 33fe895539 fix(ui): every full-screen overlay hosts its own toasts, above the players' controls, without re-announcing them peter 2026-09-11 18:04:54 +02:00
  • 5c5cabbe5a fix(plex): the player drops a session answer that lands late, and Next neither loses nor lends a position peter 2026-09-11 18:04:41 +02:00
  • 4f37c41021 fix(plex): a subtitle failure about one position no longer ends the track, and windows are read ahead and never wait behind a full pass peter 2026-09-11 18:04:30 +02:00
  • f7faa19ee2 fix(plex): the player starts, and resumes after a session-restart seek, when React mounts it twice peter 2026-09-11 03:47:36 +02:00
  • 0b4b268678 test(feed): pin the sort options' default directions as literals peter 2026-09-11 03:19:17 +02:00
  • d349bc9084 fix(plex): a collection's failed watched toggle is put back the way it was peter 2026-09-11 03:19:17 +02:00
  • dcd8a9566a fix(playlists): the player's Remove follows the list it was launched from, the player survives a change of selection, and a gone list is said in the reader's language peter 2026-09-11 03:19:07 +02:00
  • 6de2cd950d fix(ui): toasts raised while a full-screen player is open show inside it, not under its scrim peter 2026-09-11 03:18:55 +02:00
  • 645d14f45d fix(plex): a subtitle track's failed load is heard and retried with a pause, and the poll asks about the right item, position and failure peter 2026-09-11 03:18:42 +02:00
  • 7360339039 fix(api): a non-finite number in a JSON body is refused with a 422, not a 500 peter 2026-09-11 03:18:17 +02:00
  • 473d9f02f2 fix(plex): subtitle windows land where the full pass does, and the extractor stops re-reading, respawning and outliving the process peter 2026-09-11 03:18:08 +02:00
  • d2e225666b test(playlists): let react-query's notify tick run inside act before the reopen click peter 2026-09-11 01:42:17 +02:00
  • efd95fca01 fix(ui): the card's channel name is a real link too; call sites the bug hunt left untested now have tests peter 2026-09-11 01:38:31 +02:00
  • 060deb89d2 fix(playlists): "remove" inside the player targets the list it came from, reports failure, and keeps the cursor and focus honest peter 2026-09-11 01:28:27 +02:00
  • 4869d6c108 fix(player): the resume position reaches the playlist page and live search, not just the feed peter 2026-09-11 01:19:14 +02:00
  • d20317e0f1 fix(plex): the collection page's watched toggle and Sort control survive the sort joining the query key peter 2026-09-11 01:12:51 +02:00
  • d2ba65e383 fix(plex): the subtitle poll backs off on errors, a failed <track> is replaced, and a resume asks for the right window peter 2026-09-11 01:08:27 +02:00
  • cf7ec5e9ec fix(plex): the subtitle extractor's seams — doubled cues, a truncated track cached as whole, a poll that respawned ffmpeg peter 2026-09-11 00:52:59 +02:00
  • f76a2afbf1 feat(ui): the four small gaps — player delete, repeat-move, a real channel link, YT search sorting peter 2026-09-10 22:34:12 +02:00
  • 889d2acf52 feat(plex): the collection page sorts, and a linked collection has a name peter 2026-09-10 22:05:39 +02:00
  • 782362b808 fix(channels): the video grid follows a running backfill instead of freezing until F5 peter 2026-09-10 20:56:16 +02:00
  • 5a42d76e8a feat(plex): an off-by-default loudness normalisation toggle for playback peter 2026-09-10 20:02:06 +02:00
  • ed4ab4e13c fix(plex): subtitles stop blocking the request, and stop re-reading the file peter 2026-09-10 19:31:05 +02:00
  • b8bff504d8 fix(plex): "Clear resume point" now tells Plex about an in-progress item peter 2026-09-09 23:55:51 +02:00
  • 1630a3df3c fix(player): the YT progress checkpoint reaches the cache, so a reopen cannot rewind it peter 2026-09-09 23:55:51 +02:00
  • 14b5fe2e31 release: 0.83.0 (feature/e24-anti-paralysis) v0.83.0 peter 2026-09-09 22:04:14 +02:00
  • d260aabfd7 chore(release): 0.83.0 — the Home surface peter 2026-09-09 22:01:33 +02:00
  • d832bb19ce fix(e24): review round 4 — a test that pinned nothing, and prose still ahead of the code peter 2026-09-09 01:02:22 +02:00
  • 59efc8f2e8 fix(e24): review round 3 — the holes round 2's own fixes left peter 2026-09-09 00:39:37 +02:00
  • e4ffd59ca7 fix(e24): review round 2 — a buried history entry, a stale hero, and a spinner that was not ours peter 2026-09-09 00:12:53 +02:00
  • 3709b71a94 fix(e24): the review's low findings — dead constants, honest labels, a 500 that should be a 404 peter 2026-09-08 03:23:59 +02:00
  • cedebe0ffb test(e24): close the review's coverage gaps, and correct a comment that was untrue peter 2026-09-08 03:14:21 +02:00