Commit Graph

  • 887b4e546c fix(feed): a malformed saved view cannot break the autotag cleanup, and a foreign private tag reads as missing peter 2026-10-04 02:14:04 +02:00
  • df4a79a1f1 fix(sync): an empty answer the remote's own count contradicts is not believed, one level down peter 2026-10-04 02:13:53 +02:00
  • 5d10a521a8 docs(gates): react-hooks/refs is on, the compiler skips one function, and the async-cleanup idiom that keeps it so peter 2026-10-04 00:05:37 +02:00
  • d7fb7075b8 refactor(ui): every function compiles under the React Compiler but VirtualGrid, and react-hooks/refs is on peter 2026-10-04 00:05:37 +02:00
  • a486c7521a docs(gates): the compiler burn-down after E32 S3, and the two idioms that keep it peter 2026-10-03 23:18:33 +02:00
  • 76358a0d77 refactor(ui): the popover engine and every render-phase ref write compile under the React Compiler peter 2026-10-03 23:18:26 +02:00
  • dc00b55feb test(auth): warm the Welcome import once so the first case cannot time out under load peter 2026-10-03 21:53:06 +02:00
  • fb6b56f121 test(api): every filter key the client sends is one the backend reads peter 2026-10-03 21:53:06 +02:00
  • 2e2d6f5746 fix(downloads): the quota editor opens at once and says it is loading or failed peter 2026-10-03 21:53:06 +02:00
  • 2ab9ff6a42 fix(plex): a server without a machine id refuses the collection write by name peter 2026-10-03 21:53:06 +02:00
  • 378c4daf0f fix(youtube): the scrape search never pins a stale key, and an unknown shape is an error peter 2026-10-03 21:53:05 +02:00
  • 8f1208fdfe fix(feed): a filter on a deleted tag matches nothing and its chip says so peter 2026-10-03 21:53:05 +02:00
  • 52f12e5331 test(e2e): click only a channel link that is the element hit at its centre peter 2026-10-03 21:10:27 +02:00
  • c4abbe48c1 refactor(sync): the empty-answer rule for a mirror is one function, vanished() peter 2026-10-03 19:45:14 +02:00
  • 4fc307c426 fix(autotag): the orphan cleanup keeps a system tag a saved view filters on peter 2026-10-03 19:37:24 +02:00
  • 328d415cfe test(e2ee): the DM crypto round-trips, refuses the wrong key, and keeps its nonces apart peter 2026-10-03 19:35:36 +02:00
  • 43e4929b45 fix(sync): an empty answer no longer empties a mirror; maintenance checks each video once a run peter 2026-10-03 19:33:38 +02:00
  • 5806adda7e fix(plex): a listing cut short no longer clears watch state or Hungarian text peter 2026-10-03 19:33:30 +02:00
  • c73761ae39 refactor(plex): one cast row for a show's page and a title's info peter 2026-10-03 19:12:17 +02:00
  • ca9ca85b18 test: no test throws a response away; the stream session is narrowed, not baselined peter 2026-10-03 19:06:47 +02:00
  • 614d728561 test(e2e): the nav spec opens the admin pages from their rail panel peter 2026-10-03 17:41:26 +02:00
  • 783f6408f9 docs: the gate register, held to the effective config by a test peter 2026-10-03 17:26:42 +02:00
  • 751e1ae5ed test: a size and complexity ratchet; coverage reported on both sides peter 2026-10-03 17:18:53 +02:00
  • da554df7c7 build(image): the image passes a Trivy scan: OS security updates, no runtime pip peter 2026-10-03 17:06:28 +02:00
  • b1ff4058ac build: CI builds the bundle and audits what ships; the toolchain advisories are cleared peter 2026-10-03 16:50:56 +02:00
  • 7ed2ac4e95 build(frontend): knip also checks what ships; strict indexing in every project peter 2026-10-03 16:44:28 +02:00
  • cff8fe9a6a test(frontend): a React Compiler ratchet over everything the build ships peter 2026-10-03 16:38:46 +02:00
  • 471846d784 build(frontend): close the lint gaps the E32 audit measured peter 2026-10-03 16:34:20 +02:00
  • 3c16012524 build(backend): close the lint gaps the E32 audit measured peter 2026-10-03 16:04:06 +02:00
  • cdfe7a8986 perf(channels): the row menu opens and closes without re-rendering the table peter 2026-10-03 05:10:52 +02:00
  • 3e96211db0 fix(plex): the backdrop crossfade toggle wins over reduced motion once set peter 2026-10-03 04:38:50 +02:00
  • e9c15baae0 fix(feed): a channel filter's chips name their channels from the first paint peter 2026-10-03 03:29:54 +02:00
  • 6edb22988c release: 0.98.0 (feature/e31-design-review-2) v0.98.0 peter 2026-10-03 02:58:46 +02:00
  • f9c3714025 release: 0.98.0 notes — design review 2 peter 2026-10-03 02:58:07 +02:00
  • a4775e1cd0 fix(ui): the filter rail shows no tag counts until the facets land peter 2026-10-03 02:43:52 +02:00
  • b40440b825 fix(ui): review round 2 — reveal floor, failed next page, count states, row Play peter 2026-10-03 02:25:15 +02:00
  • c4c442bc5b fix(feed): a hand-made relevance cursor is refused, not a crash peter 2026-10-03 02:25:14 +02:00
  • c74ceb73e3 fix(feed): the count pill dims while a new search's count loads peter 2026-10-03 01:01:46 +02:00
  • e0e28c006c perf(feed): relevance ranks the newest 2000 matches, the rest follow newest first peter 2026-10-03 00:28:29 +02:00
  • f8f22fc985 test(i18n): a language test unmounts its reader before switching the language back peter 2026-10-02 23:48:37 +02:00
  • 90e0baa870 style(db): ruff format the re-runnable index migrations peter 2026-10-02 23:43:21 +02:00
  • dfd43ae89c docs: the folding channel header in its e2e, and three comments brought up to date peter 2026-10-02 23:42:32 +02:00
  • 608fde2d55 fix(db): re-running 0095/0096 rebuilds an invalid leftover index peter 2026-10-02 23:42:32 +02:00
  • 0302c466e8 fix(i18n): a failed RSS poll over one channel reads as one, and keeps its stops peter 2026-10-02 23:42:32 +02:00
  • a50055577a fix(plex): every small Plex picture asks for its card-size cut peter 2026-10-02 23:42:32 +02:00
  • e16cdbd16f fix(ui): a card's Play clears its hover row at a large text size; Downloads links and the player description peter 2026-10-02 23:42:31 +02:00
  • 15ec67b029 fix(ui): a read-ahead waits out a background refetch, and a revealed row is mounted before it is focused peter 2026-10-02 23:42:31 +02:00
  • ac53a3b757 perf(search): a one- or two-letter last word is matched whole, not as a prefix peter 2026-10-02 21:52:47 +02:00
  • e6de18b8c0 perf(plex): the facets ask the episode rollup once per call, not once per show group peter 2026-10-02 21:32:49 +02:00
  • fb2e3d8490 perf(plex): a card fetches its picture at a card's size, not the detail page's peter 2026-10-02 21:27:13 +02:00
  • d928d50686 perf(db): each feed sort rides an index, and an ICU upgrade rebuilds the title ones peter 2026-10-02 21:17:41 +02:00
  • 540822d2b0 perf(ui): a next-page fetch joins the one in flight instead of sending the cursor again peter 2026-10-02 20:46:30 +02:00
  • b4ef07d28e perf(ui): a long table page paints its first rows at once and the rest in steps peter 2026-10-02 03:16:37 +02:00
  • e995c664c6 perf(db): the channel manager and the feed sidebar read an index, not the video heap peter 2026-10-02 03:16:37 +02:00
  • 20010178b0 fix(ui): the Plex detail poster keeps its 2:3, and a long crew shows its first names peter 2026-10-02 02:37:20 +02:00
  • 78fdcda6bb feat(ui): E31 S4c — the channel header folds, the Plex pages fill their hero, the player gets a side panel peter 2026-10-02 02:13:17 +02:00
  • 98d0ca6eeb fix(i18n): every counted string is a plural pair, so one reads singular peter 2026-10-02 02:13:17 +02:00
  • e4c80fb7bb fix(ui): a page's sub-tab is remembered per browser tab, not forever peter 2026-10-02 00:49:46 +02:00
  • be156fc52b feat(ui): E31 S4b — the admin pages behind one rail row, Configuration as a sectioned list, Statistics as tiles and bars peter 2026-10-02 00:07:00 +02:00
  • 25905aa786 fix(audit): fold a job's successful runs whatever ran between them peter 2026-10-01 23:05:38 +02:00
  • 87d71e3762 feat(ui): E31 S4a — rail rows are links, the channel page opens on unwatched, users and audit tidied peter 2026-10-01 22:51:38 +02:00
  • ab146211fa fix(scheduler,i18n): a failure a job names reads in the reader's language peter 2026-10-01 22:51:37 +02:00
  • ec22eefd31 fix(ui): E31 S2 — the tab names the object, the channel header wraps, the player fits a short window peter 2026-10-01 21:17:20 +02:00
  • 2543d44860 fix(messages): the welcome reads in the reader's language, not the one it was created in peter 2026-10-01 21:17:09 +02:00
  • 29c0715237 release: 0.97.0 (feature/e30-app-in-hungarian) v0.97.0 peter 2026-10-01 10:44:40 +02:00
  • 6b86f99249 release: 0.97.0 notes — the app in Hungarian peter 2026-10-01 10:44:39 +02:00
  • 3563858fd1 fix(ui,i18n): E30 review round 3 — the stored language follows the screen, a fresh text starts collapsed, Retry waits again peter 2026-10-01 10:43:59 +02:00
  • 08e62bbb16 fix(plex): E30 review round 3 — a dead headshot breaks the Plex-failing streak, 410 held by a test peter 2026-10-01 10:43:59 +02:00
  • 9454717f47 fix(ui,i18n): E30 review round 2 — honest bio failure, a full show summary, one HU name per thing peter 2026-10-01 08:31:04 +02:00
  • 6ac9ffd45e fix(plex,audit): E30 review round 2 — only a missing file is a dead headshot, one spelling per portrait peter 2026-10-01 08:31:03 +02:00
  • fa55e01ef0 fix(ui,i18n): E30 review round 1 — audit rows in the reader's language, one HU name per thing peter 2026-09-30 03:26:58 +02:00
  • ab963c81d2 fix(plex,audit): E30 review round 1 — the people job keeps going, HU genres everywhere, results as data peter 2026-09-30 03:26:57 +02:00
  • 59e6cc027d fix(plex): a short "Known for" rail sits right beside the text (E30 S6) peter 2026-09-30 02:27:28 +02:00
  • ca94a716d8 docs(design): composition and the reader — a chapter and a Conformance step (E30 S6) peter 2026-09-30 02:19:54 +02:00
  • 63d01babe5 feat(plex): the person page in two columns; a bio on its way holds its place (E30 S6) peter 2026-09-30 02:19:54 +02:00
  • 705377c797 feat(plex): the people are local — bios and portraits fetched ahead, not on the click (E30 S6) peter 2026-09-30 02:19:54 +02:00
  • 2819049133 feat(audit): job runs and config changes read in the reader's language (E30 S5) peter 2026-09-30 01:08:29 +02:00
  • 95b94a1d72 fix(ui): a longer label fits its control — pill value truncates, headers get their room (E30 S5) peter 2026-09-30 01:08:29 +02:00
  • 12077fbebc feat(i18n): Hungarian words for the English loanwords, one name per thing (E30 S5) peter 2026-09-30 01:08:29 +02:00
  • 519fbe2a18 feat(i18n): the person page's biography in Hungarian, from TMDB's translation (E30 S4) peter 2026-09-29 23:44:48 +02:00
  • a39504e617 fix(stats): the full-history ratio counts the requested channels on both sides peter 2026-09-29 22:46:04 +02:00
  • aac79ffa53 fix(i18n): numbers, units, dates and order in the UI language, and after a switch (E30 S3) peter 2026-09-29 22:39:57 +02:00
  • 67c9f10153 feat(i18n): every server A→Z list in the reader's alphabet (E30 S3) peter 2026-09-29 22:39:57 +02:00
  • 584d082b6b feat(inbox): a run notice from before the result rode along reads its one-liner back into one (E30 S2) peter 2026-09-29 21:32:29 +02:00
  • f3a85916ec feat(i18n): the server's closed English vocabularies named in the reader's language (E30 S2) peter 2026-09-29 21:21:19 +02:00
  • f6298d29af fix(plex): the recs rail's anchor and a held recommendation are named in the reader's language (E30 S1b) peter 2026-09-29 02:25:36 +02:00
  • 632e39d458 feat(plex): every card rail in the reader's language; an episode in a poster rail stands as its show (E30 S1b) peter 2026-09-29 02:12:32 +02:00
  • 13d95ef70e feat(plex): episodes, taglines and genres in Hungarian from the HU overlay (E30 S1a) peter 2026-09-29 01:52:02 +02:00
  • 0f9ed7cdbf test: a list key waits for the list's registration, not only its rows peter 2026-09-27 23:01:57 +02:00
  • ffcea0cb07 release: 0.96.0 (feature/e28-design-constitution) v0.96.0 peter 2026-09-27 22:46:39 +02:00
  • a3f8314c9a chore(release): 0.96.0 — the design constitution peter 2026-09-27 22:46:39 +02:00
  • d5ccb1091a fix(player): a held key on faded bands stays one blind press; a play asked for mid-restart is the new session's peter 2026-09-27 22:34:14 +02:00
  • 528774d640 fix(playlists): a push stops at a list deleted mid-way, and a rename made during it stays unsynced peter 2026-09-27 22:34:14 +02:00
  • 3a9ea9e330 test: the side panel's focus step is held in its commit; the MenuCheck contract counts chosen roles peter 2026-09-27 21:56:24 +02:00
  • 25f2d9d0e4 fix(ui): a removed chip's focus outlives its neighbour; a scroll restore yields to the reader peter 2026-09-27 21:56:23 +02:00
  • 5ab6778b97 fix(player): a Restart of the paused film plays the new session; a key on faded bands only shows them peter 2026-09-27 21:56:23 +02:00
  • 26697472cf fix(playlists): every sync path locks the list before its items, and holds it to the write peter 2026-09-27 21:56:23 +02:00
  • 2abd4ffcb6 fix(player): a session superseded before it played is reclaimed, not "couldn't start" peter 2026-09-27 20:22:43 +02:00
  • a9ac303d3e fix(side-panel): the key's focus steps into the peeked card in the commit that opens it peter 2026-09-27 19:58:18 +02:00
  • 740602b9bf fix(ui): focus, paging and state that a key or a finger can reach peter 2026-09-27 19:43:04 +02:00