Commit Graph
38 Commits
Author SHA1 Message Date
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
rootandClaude Opus 5.5 8f7d92150f docs(plan,changelog): W6-B status per item in 07, known limits updated, ci timings
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 01:08:25 +08:00
rootandClaude Opus 5.5 2e3c2098fd docs: S-9 sync READMEs and porting notes with W5 code
- contracts README lists files.ts / auth.ts / browser.ts / redact.ts and auth:"session"
- adapters README fs row: FsProxy and the ./fsworker export
- server README: file-manager module, worker:agent and internal fsworker roles
- moviepilot-rust-transfer §7: compiled-binary fsworker and trash_item done (W5-E)
- 04 S9 row marked fixed (W6-B TOTP entry)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 00:50:29 +08:00
rootandClaude Fable 5.1 1c7af8b7e5 docs(plan): second-round v0.1 final review
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-28 00:33:30 +08:00
rootandClaude Opus 5.5 887843f777 fix(server,test): W6-A stabilize CI — sync lost update, atomic recovery summary, serial PG tests
- downloads.ts observe: re-read download_task FOR UPDATE inside the tx and merge
  from the locked row; qB sync could overwrite imported back to importing when
  verifyAndImport committed between the sync read and write (E8 flake).
- agent finalize: accept summaryPrefix so the recovery verdict is written with
  the terminal status in one update (E6 read a budget_exceeded run before the
  "未恢复:…" annotation landed); recover-summary step kept, now idempotent no-op.
- organize.ts: drop local slotComplete and the once-subscription completion
  write; completion/history are decided only by applySlotEvent(verify_passed)
  (W5-C follow-up, removes double write). Manual slot organize uses the shared
  subscriptions.slotComplete.
- vitest: server split into unit (parallel) and pg (file-serial, groupOrder 1)
  projects; packages/tasks file-serial; explicit worker concurrency in e2e.
- docs: W6 stabilization record in 04-v0.1-acceptance.md.

Test expectations unchanged. Full `deno task ci` x3 green: 369s / 341s / 337s.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 00:32:57 +08:00
rootandClaude Opus 5.5 fc49c58359 docs(plan): mark W5-C subscription enhancement status in 05-subscription-gap
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 23:34:13 +08:00
rootandClaude Opus 5.5 673cb3920a docs(plan): mark acceptance R2/R4/S5/S6/S8 fixed (W4-E3)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 22:47:25 +08:00
rootandClaude Fable 5.1 3665daaf07 docs: MoviePilot subscription ledger and gap analysis
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 22:36:17 +08:00
rootandClaude Opus 5.5 6e01497b3a docs(plan): mark acceptance R3 (in-grant recovery) done
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 22:35:11 +08:00
rootandClaude Fable 5.1 23309042dc docs: MoviePilot file manager study and our file manager spec
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 22:34:13 +08:00
rootandClaude Fable 5.1 63d4b47fe1 docs(plan): v0.1 additional scope (subscription parity, file manager, agent UI, transfer semantics)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 22:27:46 +08:00
rootandClaude Opus 5.5 5bb06d641c docs(plan): mark W4-E1 security items fixed in v0.1 acceptance
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 22:24:59 +08:00
rootandClaude Opus 5.5 f48e1aac96 fix(security): W4-E1 approvals admin-session only, shared redact table, TMDB key redaction, prod mock gate
- POST /approvals and PATCH /approvals/{id} require a console admin session
  (EndpointDef auth:"session"); API keys incl. admin scope get 403, so an
  organize.execute key can no longer approve its own plan (S1)
- tests for single-use approval checks: expired, revision/payload hash
  mismatch, consumed, revoked, pending/rejected, plan mismatch; re-approve
  after plan change succeeds once and cannot be replayed (S4)
- one redact key table in @umt/contracts shared by server logger and agent
  redactForModel: rsskey, torrent_pass, authkey, downhash, c_secure_pass,
  passkey variants, x-api-key, cookie headers, nested objects/arrays (S2)
- TMDB network errors: message and cause redacted via redactUrl (S3)
- web Agent ?mock=1 only in DEV builds or when pi.provider is fake (S7)
- EndpointDef auth annotations for /auth/*, asserted against
  PUBLIC_AUTH_PATHS (S10); doc drift fixes (S11)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 22:24:44 +08:00
rootandClaude Opus 5.5 b7237391a4 docs(plan): mark W4-D decoupling items done
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 22:15:51 +08:00
rootandClaude Fable 5.1 cda9255083 docs(plan): v0.1 acceptance review (pre W4-D/E)
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 22:01:39 +08:00
rootandClaude Fable 5.1 8c6a922cfb docs(plan): main-loop decoupling audit and W4-D fix list
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 21:15:32 +08:00
rootandClaude Fable 5.1 ea4c384664 docs(plan): W4 backlog from W2/W3 reports
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 20:55:40 +08:00
rootandClaude Opus 5.5 724c360a75 docs(plan): mark W1 review B3-B9 and S2 status after W2-0
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 19:31:24 +08:00
rootandClaude Fable 5.1 bc3ff4fb25 docs(plan): W1 wave-end independent review
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 19:03:08 +08:00
rootandClaude Fable 5.1 569bb29664 docs(plan): W2 service orchestration split
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 18:53:44 +08:00
rootandClaude Fable 5.1 304feea141 chore(deno): migrate toolchain from Node 24 + pnpm to Deno 2.9.7 + TypeScript 7.0.2 (W1.5)
- root deno.json workspace (nodeModulesDir auto), npm versions registered once in imports, deno.lock;
  remove pnpm-lock/pnpm-workspace/root package.json; members keep minimal package.json (name/type/exports)
- tasks: dev, typecheck (tsc 7.0.2 per member + deno check), lint/fmt (biome, useImportExtensions),
  test (vitest via deno), check:tokens, build (web + deno compile), ci, db:migrate/reset, gen:types
- tsconfig base moved to config/ (no root tsconfig.json); deno types -> types/deno.d.ts; web drops baseUrl
- server: Deno.serve entry with graceful shutdown, --role migrate|preflight|probe, WEB_ROOT static SPA hosting;
  drop @hono/node-server, tsx, esbuild build.mjs
- logger: redact child() bindings and serialize err by message/stack; sync stdout destination; tests
- relative imports get explicit extensions (sites/mp-sync paths left for follow-up)
- crash-recovery tests spawn `deno run -A`; tasks tests use unique per-file schemas
- single-container Dockerfile + entrypoint (migrate -> preflight -> api+worker watchdog), docker-compose.yml
- docs: README, runbook, ADR-001 superseded, plan §1 validation row

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 18:53:06 +08:00
rootandClaude Fable 5.1 007992d283 docs(design): OpenWorkflow dashboard reference for console engine panel
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 18:15:30 +08:00
rootandClaude Fable 5.1 9853d11a19 chore: sync lockfile/workspace after W1; add auth reference and plan updates
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 18:12:40 +08:00
umtandClaude Fable 5.1 b22c440139 chore: scaffold monorepo and migrate uhd_web design system (W0-A)
- pnpm workspace: apps/{web,server}, packages/{contracts,db,domain,adapters,tasks,agent,testkit}
- server: Hono + zod-openapi, API Key auth with scopes, redacting pino logger, SSE event bus with replay, worker heartbeat
- db: Kysely + pg, file migrator, 0001_init (settings/api_key/audit_event/outbox_event)
- web: React Router 7 SPA console shell with 12 workspace placeholders, uhd_web tokens/ui/guard scripts
- docs: ADR-001 (Node over Deno), dev runbook, design system rules

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-27 17:36:26 +08:00