cde5a98fd2
refactor(frontend): each module defines itself in its folder; rails load lazily and keep their own state
peter2026-10-23 04:00:58 +02:00
e83c5e2d97
fix(frontend): the content is padded by the filled header before paint, not when the observer catches up
peter2026-10-23 03:24:23 +02:00
6a0c1d377f
fix(frontend): the channels, files and playlists faces stop exporting the stores' read hooks only the old header used
peter2026-10-23 00:30:14 +02:00
4ef963b005
refactor(frontend): each page fills the floating header itself; the header knows no page
peter2026-10-23 00:23:38 +02:00
0b24f2d8fa
fix(frontend): the chunk guard's logic lives in the guard, so no file sits in two TypeScript projects
peter2026-10-22 23:48:16 +02:00
d5867bacca
feat(frontend): the folders are layers — an import only goes down, a module is reached through its index.ts
peter2026-10-22 23:30:27 +02:00
63a0fecc8b
refactor(frontend): the flat components/ folder moves into shell/, modules/<page>/ and features/<name>/
peter2026-10-22 23:12:45 +02:00
6287fc9cf8
chore(release): 0.109.0 — one account per browser, settings that follow the account, a tab that names its account
peter2026-10-21 02:54:28 +02:00
3c6c23507b
fix(frontend): a page opened at a //path boots, and the account-switch copy reads right in Hungarian
peter2026-10-21 02:51:48 +02:00
ef99f7b5c7
fix(auth): a Google connect names its tab's account too, and a refused tab says why
peter2026-10-21 02:05:33 +02:00
94418a087e
fix(auth): a tab acts only as the account it was built for, and the review's other findings
peter2026-10-21 01:05:12 +02:00
28b77fed1e
docs: storage kinds in the canonical patterns, a password beside Google sign-in, performance mode is this device's
peter2026-10-20 23:34:43 +02:00
215f022fe3
chore(release): 0.108.1 — the backend in four units, each owning its tables; a first Watch later and a first resume point survive a write beside them
peter2026-10-20 02:04:56 +02:00
6ea750a698
test: the commit check starts every request clean, and the fence docs claim what it holds
peter2026-10-20 01:56:31 +02:00
c5f121139b
fix: every first watch state survives a write beside it, and a folded Watch later keeps its pin
peter2026-10-20 01:56:30 +02:00
b04b2cbd62
test: the rewritten write handlers commit, and three more owner filters hold
peter2026-10-20 00:45:22 +02:00
3a5212cd8a
fix: a first watch state and a first Watch later survive two requests at once
peter2026-10-20 00:45:22 +02:00
b376373af5
fix(files): a folder's kind is answered before its new name, as before
peter2026-10-20 00:45:22 +02:00
8206384c91
test(fence): owner filters in any form, statement writes under any name, core commits by list
peter2026-10-20 00:45:21 +02:00
e27656ee7e
test: the request commit check sees Core DML and row locks
peter2026-10-20 00:45:20 +02:00
d73cdcee97
fix(capture): every process registers every table before its first query
peter2026-10-20 00:45:20 +02:00
5ce292cd28
test(fence): the unit fence has no exemptions, and the owner filter is held in every module
peter2026-10-19 23:36:01 +02:00
ad6ccbac05
refactor(core): the core's owner filters go through userscope, each held by a second account
peter2026-10-19 23:36:01 +02:00
531eb2eef1
refactor(plex): playlists, playback, Discover and admin through the unit; the plex package is fenced
peter2026-10-19 22:42:46 +02:00
2cf1b688d9
test(plex): a collection's editable flag and the mirror's reads, committed through HTTP
peter2026-10-19 22:11:57 +02:00
3b0e365e26
refactor(plex): the browse, detail, people and collection pages read through queries and write through the service
peter2026-10-19 22:11:20 +02:00
533571f572
refactor(plex): the unit's tables move into plex/models
peter2026-10-19 21:42:07 +02:00
4b6db47083
test(catalog): the channel manager's local writes, committed through HTTP
peter2026-10-19 02:36:19 +02:00
5229fd96be
refactor(catalog): the HTTP layer reads through queries and writes through the service
peter2026-10-19 02:32:20 +02:00
238e6f8a61
refactor(catalog): the unit's tables move into catalog/models
peter2026-10-19 02:03:14 +02:00
a35eece652
fix(e2e): the seed imports Reader's tables from reader/models
peter2026-10-19 01:33:32 +02:00
b703234c17
test(reader): the service tests hold each rule their mutant broke
peter2026-10-19 01:28:38 +02:00
dbb4065e7b
refactor(reader): the HTTP layer reads through queries and writes through the service
peter2026-10-19 01:20:14 +02:00
e82f87acb0
refactor(reader): the unit's tables move into reader/models
peter2026-10-19 00:53:44 +02:00
e9c60f72cd
refactor(capture): the HTTP layer reads through queries and writes through the service
peter2026-10-19 00:19:03 +02:00
3a688fa0f5
refactor(capture): the unit's tables move into downloads/models
peter2026-10-18 23:45:53 +02:00
d66174ed16
test(arch): a unit's HTTP layer does no database work beyond its pin
peter2026-10-18 23:01:12 +02:00
cb9a89682a
chore(release): 0.108.0 — one Activity page for runs, admin actions, the server log and quota; every background run has a history
peter2026-10-18 21:40:52 +02:00
b842e4e871
fix(ui): a looping pulse stops for reduced motion; the e2e waits for skeleton bones, not for any pulse
peter2026-10-18 21:40:52 +02:00
5082636f15
fix(activity): a run nothing here has open reads as interrupted, a rollback sums a stopped run's spend
peter2026-10-18 21:21:19 +02:00
13b7577d9f
fix(activity): an ad-hoc run's row is one run's, a rollback keeps a run whole, Back reads one entry's filters
peter2026-10-18 17:32:22 +02:00
fad656988a
fix(activity): runs keep their true outcome and spend, the page reaches every kept row, a closing dialog leaves the server log alone
peter2026-10-18 15:38:32 +02:00
3021be5166
fix(activity): a run's quota reads with its unit, its outcome keeps room at a large text size, a token's audit rows read in Hungarian
peter2026-10-18 04:22:52 +02:00
c288ba147b
fix(activity): an old audit/log link opens its tab, times read relative, one name for admin actions
peter2026-10-18 04:00:38 +02:00
fe6308d844
refactor(activity): the window's hours stay private to its URL state
peter2026-10-18 03:48:30 +02:00
24448e7c6f
feat(activity): one Activity page — runs, admin actions, server log and quota under one filter bar
peter2026-10-18 03:45:18 +02:00
d13483a593
feat(config): job intervals live in sysconfig, every setting says when it applies, the unread SponsorBlock default goes
peter2026-10-18 02:23:15 +02:00
3bab2e7dc7
docs(scheduler): the snapshot docstring names the ad-hoc runs it now carries
peter2026-10-18 01:29:46 +02:00
1b1e3cdcf2
feat(scheduler): each row shows its last three runs, an interrupted run as such, and the ad-hoc runs beside the jobs
peter2026-10-18 01:20:53 +02:00
27c2fcbd2e
feat(scheduler): a channel's "get full history" backfill is a recorded run, and a row knows its last three runs
peter2026-10-18 01:05:24 +02:00
911527a548
fix(scheduler): the dashboard no longer says a job has not run "this session" — runs are kept across restarts
peter2026-10-17 23:22:13 +02:00
8fd91b7b15
fix(scheduler): keep run history 180 days, as long as the audit log kept the runs it moved over
peter2026-10-17 23:15:17 +02:00
45c0ee7d58
feat(scheduler): every background run is a durable row
peter2026-10-17 23:08:55 +02:00
51bf780100
chore(release): 0.107.3 — text on glass holds 4.5:1; the e2e suite runs axe, the gate lints every shell script
peter2026-10-17 21:21:37 +02:00
3ada34073b
fix(theme): text on glass holds 4.5:1 — light --muted kept at 6:1 on the page, tonal fills opaque
peter2026-10-17 20:06:54 +02:00
a8dddc8c24
test(e2e): axe-core's WCAG A + AA rules over every page and the player (chromium only); contrast stays with the visual check
peter2026-10-17 17:48:53 +02:00
460bdec406
chore(tooling): drop scripts/lint-changed.sh — the shared gate runner's Stop hook lints the turn's files, shellcheck included
peter2026-10-17 17:22:35 +02:00
66181d1394
chore(gate): shellcheck joins the gate — every tracked shell script, the host binary held to a pin
peter2026-10-17 15:31:34 +02:00
0a1fef28ac
docs(claude): the YouTube write-error helper, the overlay and z-scale rule, and px-frozen sizes join the canonical patterns
peter2026-10-17 14:47:57 +02:00
fe572d9207
docs: a copy-only change runs the Conformance check's step 4 alone, in both languages
peter2026-10-17 14:27:45 +02:00
1673134c36
chore(release): 0.107.0 — API tokens for your machines, share a whole folder by link
peter2026-10-15 06:09:23 +02:00
27427eef32
fix(files): ending every session and making a token lock the user without holding up rows that refer to it
peter2026-10-15 06:05:51 +02:00
a248ca6c13
fix(files): the token list is fresh after the sessions end, a copy again reads Copied again, the Copied button says so
peter2026-10-15 05:47:00 +02:00
620f84dba4
fix(files): a token made as every session ends goes with them, and a file being shared holds its job
peter2026-10-15 05:47:00 +02:00
2efa7d5a75
fix(files): an upload is said once in any order, copy buttons speak, a link list that failed says so
peter2026-10-15 04:58:17 +02:00
827df7494c
fix(files): ending every session ends every API token, and the share links hold their folder
peter2026-10-15 04:58:16 +02:00
86712b6b0e
feat(files): share a folder by link — its page lists what is in it, plays a video above the list
peter2026-10-15 02:23:24 +02:00
90567718b2
feat(files): share-link tokens are kept only hashed and encrypted, and every link change is audited
peter2026-10-15 01:02:29 +02:00
c31d7f9d65
fix(files): an upload is announced once, as an upload, and a finish shows in Files at once
peter2026-10-14 23:54:19 +02:00
db56f25387
feat(files): API tokens in Settings, the Hub folder in Files, a notice before a token runs out
peter2026-10-14 23:33:34 +02:00
4f58d15d3f
Merge branch 'main' into feature/e39b-machine-access
peter2026-10-14 21:19:14 +02:00