Commit Graph

  • 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