-
cff8bed62b
fix(downloads): heartbeat only when no write touched the row this interval (E3 review R2)
peter
2026-08-18 23:16:48 +02:00
-
bc79720e81
fix(e3): address /code-review high findings (5)
peter
2026-08-18 22:47:25 +02:00
-
b02a9e37e8
docs: write the backend conventions + a development guide (E3 S3, B-core-20)
peter
2026-08-18 22:02:18 +02:00
-
b2013a079a
refactor(downloads): split worker.py parent/child into pipeline.py + jobdb.py (E3 S2, B-sub-9)
peter
2026-08-18 21:58:23 +02:00
-
0fab0ce779
refactor(auth): typed Pydantic request bodies for the 9 payload:dict handlers (E3 S3, B-core-6)
peter
2026-08-18 21:53:57 +02:00
-
4ace486618
refactor(downloads): service owns the job state transitions (E3 S2, B-sub-8)
peter
2026-08-18 21:46:52 +02:00
-
3334a8e895
test(downloads): E3 S2 characterization net — job state transitions (B-sub-8)
peter
2026-08-18 21:43:57 +02:00
-
e2362e1ed1
fix(downloads): heartbeat a slow re-encode so the stall watchdog can't false-kill it (E3 S2, B-sub-4)
peter
2026-08-18 21:34:36 +02:00
-
7d89bc8b8e
fix(downloads): exclude in-flight assets from the claim, drop the busy-wait (E3 S2, B-sub-3)
peter
2026-08-18 21:31:18 +02:00
-
f0a0214d97
fix(downloads): atomic ref_count increment/decrement (E3 S2, B-sub-5)
peter
2026-08-18 21:27:39 +02:00
-
e824fe0ae9
test(downloads): E3 S2 characterization net — ref_count enqueue/release semantics (B-sub-5)
peter
2026-08-18 21:24:46 +02:00
-
49011940d6
feat(plex): catalog prune — delete titles that disappeared from Plex (E3 S1, B-sub-6)
peter
2026-08-18 21:13:18 +02:00
-
52b6535dc6
refactor(plex): split browse.py god-module into per-concern routers (E3 S1)
peter
2026-08-18 21:06:04 +02:00
-
9bf7da2cbe
refactor(plex): dedup movie/show watch-state predicates into query.py (E3 S1)
peter
2026-08-18 20:52:39 +02:00
-
3301976375
test(plex): E3 S1 characterization net — grid⟷facets watch-state parity
peter
2026-08-18 20:48:43 +02:00
-
-
fa176a3e6a
release: 0.68.0 (improvement/e2-s6-job-index-hygiene)
v0.68.0
peter
2026-08-18 19:20:43 +02:00
-
-
e8771f4d6b
chore(release): 0.68.0 — E2 Feed & Search performance epic
peter
2026-08-18 19:20:18 +02:00
-
94dbe4b228
fix(jobs): match the boolean partial predicates to the IS TRUE/IS FALSE queries (E2 S6 review)
peter
2026-08-18 18:31:38 +02:00
-
0ed4ac6958
perf(jobs): partial indexes for the enrich/maintenance scanners + boolean cleanup (E2 S6, PERF-17/18/3)
peter
2026-08-18 17:01:13 +02:00
-
8b8b0ca5ab
perf(feed): skip the empty IN() query in tags_by_category (E2 review round 2)
peter
2026-08-18 16:49:29 +02:00
-
6116ad4bf4
refactor(feed): address /code-review high findings on the E2 stack
peter
2026-08-18 16:39:04 +02:00
-
943143ef45
perf(feed): stop the card-action + player-close feed refetch storm (E2 S5, PERF-2)
peter
2026-08-18 15:49:49 +02:00
-
21a3aae700
perf(feed): collapse count + facets into one /feed/summary pass (E2 S4, PERF-13)
peter
2026-08-18 05:01:27 +02:00
-
6a35e83ded
perf(feed): un-block the search GIN + inner-join the state views (E2 S3, PERF-12/16)
peter
2026-08-18 04:41:16 +02:00
-
8c08ea3133
perf(feed): published_at NOT NULL + range-anchored keyset for deep pages (E2 S2, PERF-15)
peter
2026-08-18 04:30:07 +02:00
-
3af3799b25
perf(feed): index the default published_at DESC NULLS LAST sort (E2 S1, PERF-1)
peter
2026-08-18 04:16:08 +02:00
-
-
aff5a9922c
release: 0.67.0 (security/e1-s5-auth-abuse)
v0.67.0
peter
2026-08-18 03:43:03 +02:00
-
-
cace9a004d
chore(release): 0.67.0 — E1 Foundation epic
peter
2026-08-18 03:41:28 +02:00
-
bfc104a9b4
test(migrations): only restore schema in finally when the re-upgrade failed
peter
2026-08-18 03:40:11 +02:00
-
0340d0981c
fix(e1): address /code-review high findings on the E1 stack
peter
2026-08-18 03:30:23 +02:00
-
18edbecb1e
fix(auth): close the account pre-emption + wrong-account link holes (E1 S5, SEC-10/11)
peter
2026-08-18 03:02:34 +02:00
-
8ffa65a9da
fix(security): bump cryptography 46.0.7 -> 50.0.0 to clear 4 CVEs
peter
2026-08-18 02:47:05 +02:00
-
f54dd98129
test(release): lock the VERSION file and RELEASE_NOTES[0] together (E1 S4, DX-6)
peter
2026-08-18 02:34:45 +02:00
-
44d4e4876d
build(deps): pin a reproducible lock + pip-audit; bump node 20->22 (E1 S4, SEC-5/DX-3)
peter
2026-08-18 02:34:45 +02:00
-
e4ac061721
feat(security): add baseline security response headers (E1 S4, SEC-1)
peter
2026-08-18 02:34:45 +02:00
-
54ba92bb05
ci(gitea): add the server-side gate mirror (E1 S3, DX-1)
peter
2026-08-18 01:48:53 +02:00
-
472cefed55
test(migrations)+fix: widen drift check to column shape; notifications.created_at NOT NULL (S2 review #2)
peter
2026-08-18 01:39:46 +02:00
-
e764ca4568
test(fixtures): make the TestClient fixtures isolated and composable (S2 review)
peter
2026-08-18 01:39:45 +02:00
-
296af2a498
test(auth): session/epoch/wallet/token security core (E1 S2, TEST-1)
peter
2026-08-18 01:23:07 +02:00
-
66c00327b1
test(feed): keyset paging reproduces the unpaged order for every sort (E1 S2, TEST-2)
peter
2026-08-18 01:23:07 +02:00
-
31879b01f4
test(migrations): model<->schema drift + downgrade/re-upgrade (E1 S2, TEST-3)
peter
2026-08-18 01:23:07 +02:00
-
15a59f4695
test(infra): fail-loud DB/ffmpeg lane + client/as_user/make_user fixtures (E1 S2, TEST-4)
peter
2026-08-18 01:23:06 +02:00
-
0653203d81
fix(plex): make the cast gate self-correcting as well as non-shrinking (B-sub-2 review)
peter
2026-08-18 00:58:13 +02:00
-
4ce0a702f4
refactor(downloads): route worker terminal writes through an atomic finalize_if_running (B-sub-1 review)
peter
2026-08-18 00:58:13 +02:00
-
9845c8d0f7
fix(auth): epoch-check the target on account switch to avoid a full wallet logout (B-core-9)
peter
2026-08-18 00:22:15 +02:00
-
7c431d73fb
fix(config): degrade gracefully on a TOKEN_ENCRYPTION_KEY mismatch instead of a 500 (B-core-2)
peter
2026-08-18 00:22:15 +02:00
-
67d32fecd6
fix(search): return 422 not 502 on an upstream YouTube failure (B-core-1)
peter
2026-08-18 00:21:59 +02:00
-
f39c5bb25c
fix(plex): never shrink cast_names on sync so a watermark reset can't regress it (B-sub-2)
peter
2026-08-18 00:21:59 +02:00
-
367bcebc9f
fix(downloads): revive the worker cancel branch and guard terminal writes (B-sub-1)
peter
2026-08-18 00:21:43 +02:00
-
-
429fbde866
docs: add CLAUDE.md working agreement for AI agents
peter
2026-08-17 23:33:01 +02:00
-
4c013595b5
release: 0.66.0 (e5-s3-toolbar-relocation)
peter
2026-08-17 22:19:23 +02:00
-
-
b605c28b32
release: 0.66.0 — E5 Plex epic (scoped search, HU localization, toolbar/header)
peter
2026-08-17 22:18:07 +02:00
-
cee0bc95b6
Merge remote-tracking branch 'gitea/main' into e5-s3-toolbar-relocation
peter
2026-08-17 22:14:50 +02:00
-
-
-
-
5c6172754a
refactor(header): move --hdr-h measurement into PageShell (S7 review)
peter
2026-08-17 21:43:14 +02:00
-
3575237382
fix(header): dynamic --hdr-h so a wrapped mobile header can't overlap content
peter
2026-08-17 21:31:22 +02:00
-
14913a6447
feat(header): S7 — container-query fix for the narrow Plex header
peter
2026-08-17 21:06:33 +02:00
-
9fb4db2546
fix(plex): address S6 code-review — 5 findings
peter
2026-08-17 20:41:13 +02:00
-
2bfe7d53eb
fix(plex): S6 — thread lang into the player's item_detail query
peter
2026-08-17 20:21:29 +02:00
-
4169cfe4ff
feat(plex): S6 frontend — language threading, rating badge, i18n parity
peter
2026-08-17 19:19:03 +02:00
-
030ba7297a
feat(plex): S6 backend — language-aware serving + IMDb-only rating
peter
2026-08-17 19:07:43 +02:00
-
c0cda545e0
test(feed): cover malformed-cursor 400 + from-None on the re-raise
peter
2026-08-17 18:46:48 +02:00
-
2ab188d873
refactor: address code-review — layering + public API naming
peter
2026-08-17 18:23:03 +02:00
-
e7b5b8e87f
refactor(plex): extract card serializers + query builder from browse.py
peter
2026-08-17 17:47:30 +02:00
-
5f09259bbf
refactor(feed): extract read-model to app.feedquery + admin_user sweep
peter
2026-08-17 17:42:01 +02:00
-
c361fc2581
fix(gate): green the frontend gate at HEAD
peter
2026-08-17 17:30:12 +02:00
-
81827fcf28
fix(plex): S5b review — preserve enriched cast_names across full syncs
peter
2026-08-16 23:30:33 +02:00
-
4e97fc1a84
feat(plex): S5b persist rich detail + serve item/show detail from DB
peter
2026-08-16 23:11:15 +02:00
-
02a2102523
fix(plex): S5a review round 2 — dup-HU guard + tests for dup-guid & guid-keep
peter
2026-08-16 22:38:59 +02:00
-
704c6c35d4
fix(plex): address S5a review — overlay reconcile, dup-guid, guid-wipe, tests
peter
2026-08-16 22:31:08 +02:00
-
c959859d29
feat(plex): S5a HU-overlay backend — schema, guid, overlay sync
peter
2026-08-16 22:16:54 +02:00
-
072d8fc88f
fix(plex): address S4 review — cap filmography, dedupe toggle, scroll guard, tests
peter
2026-08-16 21:55:34 +02:00
-
87ef075ea7
feat(plex): make the actor filter-chip open the person page
peter
2026-08-16 21:37:43 +02:00
-
8b8c077a29
feat(plex): S4 actor detail page — filmography endpoint + person subview
peter
2026-08-16 21:26:58 +02:00
-
6465f0ce75
style: prettier-format the 0.65.2 release-notes entry
peter
2026-08-16 20:13:09 +02:00
-
ee356f8a1f
release: 0.65.2 (fix/download-gc-title-truncation)
peter
2026-08-16 20:10:55 +02:00
-
-
588a1a82a1
release: bump VERSION to 0.65.2 + release notes (download-cleanup title-truncation fix)
peter
2026-08-16 20:08:23 +02:00
-
80ea1918e3
fix(downloads): derive title clamp from the column + real-Postgres regression
peter
2026-08-16 19:40:17 +02:00
-
83326ecf53
fix(downloads): clamp notification title to column limit so download_gc can't wedge
peter
2026-08-16 19:24:51 +02:00
-
-
1d6c5f051e
fix(plex): address S3 review nits — tests + narrow-header wrap
peter
2026-08-16 19:02:02 +02:00
-
a702e72973
fix(plex): replace stray NUL byte with a space in the duration sentinel
peter
2026-08-16 18:45:47 +02:00
-
d0f5559c49
feat(plex): S3 toolbar relocation — scope to header, sort above the cards
peter
2026-08-16 18:30:48 +02:00
-
5134ba5433
fix(plex): address S2 round-2 review nits (typeahead highlight + tests)
peter
2026-08-16 08:34:56 +02:00
-
c51df4e0b9
fix(plex): address S2 /code-review findings (typeahead focus + a11y + test)
peter
2026-08-16 08:21:29 +02:00
-
f9681deecf
feat(plex): field-scoped search (S2) + instant search typeahead
peter
2026-08-16 08:05:18 +02:00
-
73a58674cf
fix(plex): address S1 review round-2 findings
peter
2026-08-16 07:14:09 +02:00
-
e008c48284
fix(plex): address S1 code-review findings
peter
2026-08-16 07:06:19 +02:00
-
f8df504d18
refactor(plex): convert browse.py + rollup db.query() to 2.0 select() (wave 2)
peter
2026-08-16 06:06:21 +02:00
-
59d50615c4
refactor(plex): convert service-layer db.query() to 2.0 select() (wave 1)
peter
2026-08-16 05:52:40 +02:00
-
ecbf5737b6
test(plex): characterization net for the db.query->select conversion
peter
2026-08-16 05:45:05 +02:00
-
-
f38833f104
release: 0.65.1 (fix/backfill-immediate-full-history)
peter
2026-08-16 03:22:32 +02:00
-
-
9105c4db3d
release: 0.65.1 — immediate full-history finishes large channels
peter
2026-08-16 03:22:12 +02:00
-
ee2bd81254
test(backfill): lock the per-page durability and reserve-guard properties
peter
2026-08-16 03:02:37 +02:00
-
48285a715b
refactor(backfill): centralize the reserve-yield guard and drop the per-page connection hold
peter
2026-08-16 02:41:49 +02:00
-
e3ee1baa94
fix(backfill): finish large channels in one immediate full-history run
peter
2026-08-15 17:13:52 +02:00
-
-
a7b4b2ed79
release: 0.65.0 (r14-channel-table-redesign)
peter
2026-08-15 07:26:23 +02:00
-
-
7dc9f712a0
release: 0.65.0 — R14 channel-table redesign + immediate full-history backfill
peter
2026-08-15 07:26:09 +02:00
-
0842babc77
fix(channels): trim fixedLayout column widths to fit narrower viewports (R14 F5)
peter
2026-08-15 07:20:18 +02:00
-
5720356191
fix(channels): address R14 deep-review findings
peter
2026-08-15 07:11:50 +02:00
-
2cc77757d9
fix(channels): address R14 code-review findings
peter
2026-08-15 06:38:19 +02:00
-
a342e15e05
feat(channel): backfill a channel's full history immediately on request
peter
2026-08-15 06:01:42 +02:00