887b4e546c
fix(feed): a malformed saved view cannot break the autotag cleanup, and a foreign private tag reads as missing
peter2026-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
peter2026-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
peter2026-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
peter2026-10-04 00:05:37 +02:00
a486c7521a
docs(gates): the compiler burn-down after E32 S3, and the two idioms that keep it
peter2026-10-03 23:18:33 +02:00
76358a0d77
refactor(ui): the popover engine and every render-phase ref write compile under the React Compiler
peter2026-10-03 23:18:26 +02:00
dc00b55feb
test(auth): warm the Welcome import once so the first case cannot time out under load
peter2026-10-03 21:53:06 +02:00
fb6b56f121
test(api): every filter key the client sends is one the backend reads
peter2026-10-03 21:53:06 +02:00
2e2d6f5746
fix(downloads): the quota editor opens at once and says it is loading or failed
peter2026-10-03 21:53:06 +02:00
2ab9ff6a42
fix(plex): a server without a machine id refuses the collection write by name
peter2026-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
peter2026-10-03 21:53:05 +02:00
8f1208fdfe
fix(feed): a filter on a deleted tag matches nothing and its chip says so
peter2026-10-03 21:53:05 +02:00
52f12e5331
test(e2e): click only a channel link that is the element hit at its centre
peter2026-10-03 21:10:27 +02:00
c4abbe48c1
refactor(sync): the empty-answer rule for a mirror is one function, vanished()
peter2026-10-03 19:45:14 +02:00
4fc307c426
fix(autotag): the orphan cleanup keeps a system tag a saved view filters on
peter2026-10-03 19:37:24 +02:00
328d415cfe
test(e2ee): the DM crypto round-trips, refuses the wrong key, and keeps its nonces apart
peter2026-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
peter2026-10-03 19:33:38 +02:00
5806adda7e
fix(plex): a listing cut short no longer clears watch state or Hungarian text
peter2026-10-03 19:33:30 +02:00
c73761ae39
refactor(plex): one cast row for a show's page and a title's info
peter2026-10-03 19:12:17 +02:00
ca9ca85b18
test: no test throws a response away; the stream session is narrowed, not baselined
peter2026-10-03 19:06:47 +02:00
614d728561
test(e2e): the nav spec opens the admin pages from their rail panel
peter2026-10-03 17:41:26 +02:00
783f6408f9
docs: the gate register, held to the effective config by a test
peter2026-10-03 17:26:42 +02:00
751e1ae5ed
test: a size and complexity ratchet; coverage reported on both sides
peter2026-10-03 17:18:53 +02:00
da554df7c7
build(image): the image passes a Trivy scan: OS security updates, no runtime pip
peter2026-10-03 17:06:28 +02:00
b1ff4058ac
build: CI builds the bundle and audits what ships; the toolchain advisories are cleared
peter2026-10-03 16:50:56 +02:00
7ed2ac4e95
build(frontend): knip also checks what ships; strict indexing in every project
peter2026-10-03 16:44:28 +02:00
cff8fe9a6a
test(frontend): a React Compiler ratchet over everything the build ships
peter2026-10-03 16:38:46 +02:00
471846d784
build(frontend): close the lint gaps the E32 audit measured
peter2026-10-03 16:34:20 +02:00
3c16012524
build(backend): close the lint gaps the E32 audit measured
peter2026-10-03 16:04:06 +02:00
cdfe7a8986
perf(channels): the row menu opens and closes without re-rendering the table
peter2026-10-03 05:10:52 +02:00
3e96211db0
fix(plex): the backdrop crossfade toggle wins over reduced motion once set
peter2026-10-03 04:38:50 +02:00
e9c15baae0
fix(feed): a channel filter's chips name their channels from the first paint
peter2026-10-03 03:29:54 +02:00
a4775e1cd0
fix(ui): the filter rail shows no tag counts until the facets land
peter2026-10-03 02:43:52 +02:00
b40440b825
fix(ui): review round 2 — reveal floor, failed next page, count states, row Play
peter2026-10-03 02:25:15 +02:00
c4c442bc5b
fix(feed): a hand-made relevance cursor is refused, not a crash
peter2026-10-03 02:25:14 +02:00
c74ceb73e3
fix(feed): the count pill dims while a new search's count loads
peter2026-10-03 01:01:46 +02:00
e0e28c006c
perf(feed): relevance ranks the newest 2000 matches, the rest follow newest first
peter2026-10-03 00:28:29 +02:00
f8f22fc985
test(i18n): a language test unmounts its reader before switching the language back
peter2026-10-02 23:48:37 +02:00
90e0baa870
style(db): ruff format the re-runnable index migrations
peter2026-10-02 23:43:21 +02:00
dfd43ae89c
docs: the folding channel header in its e2e, and three comments brought up to date
peter2026-10-02 23:42:32 +02:00
608fde2d55
fix(db): re-running 0095/0096 rebuilds an invalid leftover index
peter2026-10-02 23:42:32 +02:00
0302c466e8
fix(i18n): a failed RSS poll over one channel reads as one, and keeps its stops
peter2026-10-02 23:42:32 +02:00
a50055577a
fix(plex): every small Plex picture asks for its card-size cut
peter2026-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
peter2026-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
peter2026-10-02 23:42:31 +02:00
ac53a3b757
perf(search): a one- or two-letter last word is matched whole, not as a prefix
peter2026-10-02 21:52:47 +02:00
e6de18b8c0
perf(plex): the facets ask the episode rollup once per call, not once per show group
peter2026-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
peter2026-10-02 21:27:13 +02:00
d928d50686
perf(db): each feed sort rides an index, and an ICU upgrade rebuilds the title ones
peter2026-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
peter2026-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
peter2026-10-02 03:16:37 +02:00
e995c664c6
perf(db): the channel manager and the feed sidebar read an index, not the video heap
peter2026-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
peter2026-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
peter2026-10-02 02:13:17 +02:00
98d0ca6eeb
fix(i18n): every counted string is a plural pair, so one reads singular
peter2026-10-02 02:13:17 +02:00
e4c80fb7bb
fix(ui): a page's sub-tab is remembered per browser tab, not forever
peter2026-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
peter2026-10-02 00:07:00 +02:00
25905aa786
fix(audit): fold a job's successful runs whatever ran between them
peter2026-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
peter2026-10-01 22:51:38 +02:00
ab146211fa
fix(scheduler,i18n): a failure a job names reads in the reader's language
peter2026-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
peter2026-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
peter2026-10-01 21:17:09 +02:00
6b86f99249
release: 0.97.0 notes — the app in Hungarian
peter2026-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
peter2026-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
peter2026-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
peter2026-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
peter2026-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
peter2026-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
peter2026-09-30 03:26:57 +02:00
59e6cc027d
fix(plex): a short "Known for" rail sits right beside the text (E30 S6)
peter2026-09-30 02:27:28 +02:00
ca94a716d8
docs(design): composition and the reader — a chapter and a Conformance step (E30 S6)
peter2026-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)
peter2026-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)
peter2026-09-30 02:19:54 +02:00
2819049133
feat(audit): job runs and config changes read in the reader's language (E30 S5)
peter2026-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)
peter2026-09-30 01:08:29 +02:00
12077fbebc
feat(i18n): Hungarian words for the English loanwords, one name per thing (E30 S5)
peter2026-09-30 01:08:29 +02:00
519fbe2a18
feat(i18n): the person page's biography in Hungarian, from TMDB's translation (E30 S4)
peter2026-09-29 23:44:48 +02:00
a39504e617
fix(stats): the full-history ratio counts the requested channels on both sides
peter2026-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)
peter2026-09-29 22:39:57 +02:00
67c9f10153
feat(i18n): every server A→Z list in the reader's alphabet (E30 S3)
peter2026-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)
peter2026-09-29 21:32:29 +02:00
f3a85916ec
feat(i18n): the server's closed English vocabularies named in the reader's language (E30 S2)
peter2026-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)
peter2026-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)
peter2026-09-29 02:12:32 +02:00
13d95ef70e
feat(plex): episodes, taglines and genres in Hungarian from the HU overlay (E30 S1a)
peter2026-09-29 01:52:02 +02:00
0f9ed7cdbf
test: a list key waits for the list's registration, not only its rows
peter2026-09-27 23:01:57 +02:00
a3f8314c9a
chore(release): 0.96.0 — the design constitution
peter2026-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
peter2026-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
peter2026-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
peter2026-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
peter2026-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
peter2026-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
peter2026-09-27 21:56:23 +02:00
2abd4ffcb6
fix(player): a session superseded before it played is reclaimed, not "couldn't start"
peter2026-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
peter2026-09-27 19:58:18 +02:00
740602b9bf
fix(ui): focus, paging and state that a key or a finger can reach
peter2026-09-27 19:43:04 +02:00