Commit Graph
73 Commits
Author SHA1 Message Date
rootandClaude Opus 5.5 044e718ec6 feat(identity): content unit data hygiene — specials, provisional promotion, duplicate merge (DH-1)
- metadata.includeSpecials (default true): full refresh and the language
  backfill fetch TMDB season 0 (specials) when present, like MP; season 0
  stays out of the episode-total ledger
- refreshMetadata promotes provisional season/episode units that match the
  TMDB season/episode layout to confirmed (source=tmdb), keeping ids and all
  references; non-matching units stay provisional
- content_unit.source (migration 0053): release / file / tmdb / user
- duplicate units (same entity/kind/season/episode/content type/segment) are
  merged as a refresh step and via `scripts/identity-cleanup.ts
  --merge-duplicates` (dry-run by default); keeper = most referenced, then
  confirmed, then earliest; references auto-discovered via FKs and repointed
- ensureUnits takes a per-unit advisory xact lock to stop concurrent lazy
  creation from producing duplicates
- runbooks updated; user DB read-only dry-run: 征途 S01E09/E10 4 units each
  -> 1 each (6 removed), not applied

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 20:49:56 +08:00
rootandClaude Fable 5.1 2847512501 docs(plan): data hygiene follow-ups after cleanup incident
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 20:09:23 +08:00
rootandClaude Fable 5.1 ae6460acf1 docs(plan): lesson on reviewing real-DB dry-run before destructive cleanup
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 19:51:33 +08:00
rootandClaude Opus 5.5 a10a39fde1 docs(plan): INT-3 CI and smoke results
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 18:37:35 +08:00
rootandClaude Opus 5.5 de2694cace docs(plan): INT-3 migration table wording
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 18:07:52 +08:00
rootandClaude Opus 5.5 26ce782678 docs(plan): INT-3 integration record and changelog
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 18:07:44 +08:00
rootandClaude Fable 5.1 200550d0c6 docs(plan): VER-3 findings and assignments
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 17:02:53 +08:00
rootandClaude Fable 5.1 4a212ed19e docs(plan): browser session auto-recovery after camofox restart (BR-3)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 16:54:44 +08:00
rootandClaude Fable 5.1 da24380870 docs(plan): Chinese title fallback chain and episode-level metadata (MD-1)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 16:49:49 +08:00
rootandClaude Fable 5.1 c3aaf901ad docs(plan): ID-2 identity matching parity, FE-6 tasks/plan split, CACHE-2 storage budget
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 16:46:45 +08:00
rootandClaude Opus 5.5 d0da4f4add docs(plan): INT-2 integration record and shared-index lesson
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 16:45:44 +08:00
rootandClaude Opus 5.5 04cffcd1f1 feat(sites): on-demand site detail page content (INT-2)
- SiteReleaseDetail.page: description, MediaInfo/BDInfo, screenshots,
  IMDb / Douban / TMDB ids, file list, tags, uploader, plus a parse probe
  (labels found) for layout-change diagnosis. Generic NexusPHP rules
  (field label -> next sibling) starting from the MovieClaw detail
  selectors; site overrides under umt.detail.page (HHClub: div labels).
  M-Team builds the same structure from descr BBCode + mediainfo.
- Fetched only on demand (drawer open without cache, "复核详情",
  release.inspect); content in kv_cache region site.detail for the
  site detail cache period (>= 24 h); within the window the site is not
  requested again. External ids persist in source_release.raw._detail,
  which list snapshots do not overwrite.
- Screenshots only as proxy paths /api/v1/img/site-detail/{rid}/{i}:
  public-address check on every hop, no site credentials, magic-byte
  image check, 8 MB cap. Poster proxy shares the same helper.
- Identity: site ids count as explicit-id evidence; when TMDB is
  queried, a TMDB id goes straight to details and an IMDb id to
  /find (no title search on a hit). Douban only for local recall.
- Release drawer "站点详情页" section; fixtures and tests for HHClub div
  layout, rowhead layout, BBCode, cache/proxy/identity end to end.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 16:21:17 +08:00
rootandClaude Fable 5.1 99e335d13c docs(plan): META-1 follow-up (broaden enrichment sources)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 15:58:56 +08:00
rootandClaude Fable 5.1 ac478673bc docs(plan): on-demand site detail page parsing (HHClub details.php)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 15:13:35 +08:00
rootandClaude Fable 5.1 524af64bec docs(plan): unified credentials injected into browser sessions (BR-2)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 14:47:03 +08:00
rootandClaude Fable 5.1 3e59cb4f41 docs(plan): agent drawer history and session layout polish (AGUI-2)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 14:43:52 +08:00
rootandClaude Fable 5.1 00ebdda7ed docs(plan): self-enrichment for titles missing on TMDB (META-1)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 14:40:55 +08:00
rootandClaude Fable 5.1 b8e3cbf689 docs(plan): inbox flood root cause and lazy identification decision (DEC-1)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 14:33:03 +08:00
rootandClaude Fable 5.1 d1f5b908b3 docs(plan): simplified site-scoped RSS add flow
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 14:22:13 +08:00
rootandClaude Fable 5.1 52d0bcd935 docs(plan): site request restraint defaults and resource list format
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 14:15:38 +08:00
rootandClaude Fable 5.1 740764c538 docs(plan): status and next steps after v0.2.4
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 03:27:41 +08:00
rootandClaude Fable 5.1 94d8b55f36 docs(plan): lessons from deployment and real-environment onboarding
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 02:41:08 +08:00
rootandClaude Opus 5.5 3f0327ad97 test(e2e): AG-3 agent quality with fake model; runbook capability list
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 01:58:28 +08:00
rootandClaude Fable 5.1 e5abfa6217 docs(plan): AG-3 agent quality items from real-upstream verification
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 01:24:37 +08:00
rootandClaude Fable 5.1 ce36a42336 docs(plan): upstream model list refresh; real-upstream testing model
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 01:01:13 +08:00
rootandClaude Fable 5.1 028f0d238e docs(plan): webtop placement comparison and vision-driven browser automation loop
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 00:51:31 +08:00
rootandClaude Fable 5.1 b0a19c36b4 docs(plan): remote browser view via Webtop 4.0 (Wayland/Selkies) with CJK/IME/clipboard
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-29 00:44:39 +08:00
rootandClaude Fable 5.1 c62693079f docs(plan): camofox shipped as default compose service
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 23:22:05 +08:00
rootandClaude Fable 5.1 266d66ddbb docs(plan): lessons learned from multi-agent parallel development
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 22:47:20 +08:00
rootandClaude Opus 5.5 d2b5095e97 docs(plan): v0.2.1 independent check report
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 22:07:53 +08:00
rootandClaude Opus 5.5 c1c8dc81a9 docs: requirements coverage matrix and next-phase plan
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 21:52:25 +08:00
rootandClaude Fable 5.1 a99c77ce4e docs(plan): TMDB response cache in PG, image proxy with disk cache (no Web Cache API)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 21:40:53 +08:00
rootandClaude Fable 5.1 5169529562 docs(plan): cache and rate-limit decisions (PG token bucket, unlogged cache tables, no Redis)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 21:39:25 +08:00
rootandClaude Opus 5.5 52402864d6 style(copy): punctuation rules and site-wide fix with a CI check (QA U11)
- glossary: 10 punctuation rules (full-width in Chinese, CJK/Latin spacing,
  full-width parens around Chinese, single ellipsis, 「」 quotes, period rules)
- scripts/check-copy-punctuation.mjs: checks string literals, templates and JSX
  text (not comments, types, keys, match/compare strings); --fix, --strict,
  --by-file; wired into deno task ci as check:copy in warn mode
- --fix applied to web, server and contracts; files other lanes were editing
  (subscriptions, sites, browser, agent, auth/account, inventory) left for them
- tests updated for the changed messages

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 20:09:29 +08:00
rootandClaude Fable 5.1 5b8927d1dc docs(plan): agent automation-first (drop modes, plan todo, options), tools/MCP visualization
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 19:45:59 +08:00
rootandClaude Fable 5.1 da73015b09 docs(plan): v0.2.1 closeout scope (finish deferred items)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 19:29:36 +08:00
rootandClaude Opus 5.5 2627e4cff3 docs(plan): W10 integration record and visual QA front-end status
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 17:46:04 +08:00
rootandClaude Opus 5.5 2b8fe667a5 fix(organize,identity,sites,pi): W10-pre backend fixes from v0.2 visual QA
- slot: new manual_verify event (attention -> verifying, with reason); a
  successful organize of a download whose slot is in attention goes back
  through verifying and lands by verify_passed on the actually imported
  assets; the download's organize_blocked decision is resolved with
  resolution {key: manual_organize | organize_retry, organizationRecordId} (U1)
- acquisition: plan purpose is upgrade only when the slot already has a
  current asset; a movie slot gap is a fill (U7)
- identity: entities created from TMDB details get metadata fields projected
  in the same transaction; TMDB aliases deduped by normalized text, site-title
  aliases skipped when the text already exists (U9)
- pi: auth-mode test of a custom Base URL no longer marks the upstream ok, and
  says to use the minimal completion to probe the endpoint (U2)
- sites: PUT /sites/{id}/credentials replaces same-kind secrets in place and
  names new secrets with site id + random suffix (secret.name is unique; was a
  500 on update); M-Team user data uses config/definition apiBaseUrl instead
  of deriving api.<domain> from the site URL (Invalid URL on IP/local bases)
- copy: setup error says 初始化口令; backup job points at umt backup
- tests: schema expected tables add site_user_data; migration round-trip
  timeout 60s; fake secrets honor label as name; vertical/resolve/pi/slot/
  site-center tests for the above
- docs: 09-visual-qa W10-pre status table (U3 root cause: outbox events are
  never mirrored to SSE)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 16:29:29 +08:00
rootandClaude Opus 5.5 238445a258 docs(plan): v0.2 visual and interaction QA report
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 15:24:49 +08:00
rootandClaude Fable 5.1 e0c0c4f51d docs(plan): IA-3 final (unified tasks, schedules as plan tab, 12 nav items)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 14:59:03 +08:00
rootandClaude Fable 5.1 e7ef97e31f docs(plan): system group convergence (settings / schedules / run logs)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 14:56:06 +08:00
rootandClaude Fable 5.1 22856d0447 docs(plan): global search entry (MP-style)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 14:44:47 +08:00
rootandClaude Fable 5.1 c2f3078062 docs(plan): IA-3 final nav per user feedback; file manager second pass
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 14:43:13 +08:00
rootandClaude Fable 5.1 381791cd64 docs(plan): IA-3 nav convergence (merge download/organize, drop identity page)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 14:39:24 +08:00
rootandClaude Fable 5.1 911a810da5 docs(plan): v0.2.1 adds subscription redesign, unified rules, naming templates
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 14:28:43 +08:00
rootandClaude Fable 5.1 60a95cf93e docs(plan): v0.2.1 direction (site center, dashboard per MP)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 14:25:04 +08:00
rootandClaude Opus 5.5 83498f9738 docs(plan): v0.2 closeout (W8-A) fixes and remaining gaps
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 13:45:47 +08:00
rootandClaude Fable 5.1 16ab2a6c84 docs(plan): v0.2 adds Pi subagents and scheduled-jobs board
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 02:09:39 +08:00
rootandClaude Fable 5.1 4fd1d970ab docs(plan): v0.2 direction (Pi upstream coverage, console IA restructure)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 01:44:37 +08:00
rootandClaude Fable 5.1 c987a45e9a build(docker): bump static ffprobe to 9.0.2; ignore compose override
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 01:29:12 +08:00