mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
Introduce Discord presence runtime support and continue composition-root decomposition by moving Jellyfin wiring into dedicated composer modules. This keeps main runtime orchestration thinner while preserving behavior and test coverage across config, runtime, and docs updates.
146 lines
41 KiB
Markdown
146 lines
41 KiB
Markdown
# Subagents Collaboration
|
|
|
|
Shared notes. Append-only.
|
|
|
|
- [YYYY-MM-DDTHH:MM:SSZ] [agent_id|alias] note, question, dependency, conflict, decision.
|
|
- [2026-02-19T08:21:11Z] [codex-main|planner-exec] conflict note: `docs/subagents/INDEX.md` and `docs/subagents/agents/codex-main.md` were externally updated to TASK-69 while TASK-38 work was in-flight; reconciled own row/file back to TASK-38 handoff state.
|
|
- [2026-02-20T00:01:40Z] [codex-anilist-deeplink|anilist-deeplink] preparing commit; scoping staged set to repo changes, excluding external reference dirs (vendor/yomitan-jlpt-vocab, mpv-anilist-updater).
|
|
- [2026-02-20T05:42:54Z] [codex-subtitle-bg-20260220T054247Z-h9cu|codex-subtitle-bg] short config tweak requested: update default subtitle background color; scoping to config defaults/tests only.
|
|
- [2026-02-20T05:44:45Z] [codex-subtitle-bg-20260220T054247Z-h9cu|codex-subtitle-bg] completed TASK-89; updated default subtitle background in config defaults/docs/examples/renderer CSS; config tests green.
|
|
- [2026-02-20T06:17:31Z] [codex-narrow-space-tokenizer-20260220T061716Z-p97s|codex-narrow-space-tokenizer] potential overlap notice: investigating tokenizer whitespace normalization and tests (likely `src/core/services/tokenizer-service.ts` + tests); coordinating to avoid clobber with ongoing TASK-85 refactor touches.
|
|
- [2026-02-20T06:20:07Z] [codex-narrow-space-tokenizer-20260220T061716Z-p97s|codex-narrow-space-tokenizer] completed TASK-90 fix in `src/subtitle/stages/normalize.ts`; normalize `U+200B/U+2060/U+FEFF` to spaces for tokenizer input; added regression test `src/subtitle/stages/normalize.test.ts`; targeted tokenizer suite green.
|
|
- [2026-02-20T06:35:38Z] [codex-preserve-linebreaks-20260220T063538Z-s4nd|codex-preserve-linebreaks] overlap note: touching subtitle config + renderer render path (`src/types.ts`, `src/config/*`, `src/renderer/subtitle-render.ts`, docs/config examples) to add optional preserve-line-breaks behavior while keeping default normalization unchanged.
|
|
- [2026-02-20T06:42:51Z] [codex-preserve-linebreaks-20260220T063538Z-s4nd|codex-preserve-linebreaks] completed TASK-91; added `subtitleStyle.preserveLineBreaks` config (default false), renderer token/source alignment helper to preserve visible overlay line breaks when enabled, config+renderer tests green.
|
|
- [2026-02-20T09:24:08Z] [codex-bundle-config-example-20260220T092408Z-a1b2|codex-bundle-config-example] conflict note: target file .github/workflows/release.yml already modified by codex-release-mpv-plugin session; applying minimal additive delta for config example bundling only.
|
|
- [2026-02-20T10:22:45Z] [codex-jellyfin-secret-store-20260220T101428Z-om4z|codex-jellyfin-secret-store] completed TASK-92: Jellyfin token now stored via local encrypted token store (`safeStorage`) with config override fallback; login/setup save token to store, logout clears store; runtime/docs/tests updated.
|
|
- [2026-02-20T11:04:36Z] [codex-preserve-linebreak-display-20260220T110436Z-r8f1|codex-preserve-linebreak-display] overlap note: touching `src/renderer/subtitle-render.ts` + renderer tests to fix preserve-linebreaks disabled display artifact while preserving TASK-91 behavior.
|
|
- [2026-02-20T11:07:29Z] [codex-preserve-linebreak-display-20260220T110436Z-r8f1|codex-preserve-linebreak-display] completed follow-up for TASK-91: non-preserve mode now flattens token CR/LF to spaces instead of emitting `<br>` from token surfaces; regression test added.
|
|
- [2026-02-20T11:10:51Z] [codex-preserve-linebreak-display-20260220T110436Z-r8f1|codex-preserve-linebreak-display] second follow-up: handle overlap token streams by aligning non-preserve rendering to normalized source text and skipping unmatched tail tokens (prevents duplicated second-line phrase).
|
|
- [2026-02-21T03:24:45Z] [codex-task94-thin-root-20260221T031320Z-q3n7|codex-task94-thin-root] overlap note: starting TASK-94 extraction in `src/main.ts` + new `src/main/runtime/composers/*`; coordinating around existing in-progress rows (`codex-main`, `codex-task85`) that may also touch main-runtime wiring.
|
|
- [2026-02-21T03:41:10Z] [codex-task94-thin-root-20260221T031320Z-q3n7|codex-task94-thin-root] shipped TASK-94 slice: moved jellyfin/anilist deps-builder clusters behind composer modules, tightened fan-in guard, added composer tests, updated backlog task notes with before/after metrics and remaining scope (startup/overlay/ipc/shortcuts extraction).
|
|
- [2026-02-21T03:14:29Z] [codex-task95-hotspots-20260221T031420Z-x7k2|codex-task95-hotspots] starting TASK-95 execution: load backlog context, write plan with writing-plans skill, execute with executing-plans (no commit).
|
|
- [2026-02-21T03:29:23Z] [codex-task95-hotspots-20260221T031420Z-x7k2|codex-task95-hotspots] completed TASK-95 with parallel subagents (anki/config/immersion), full gates green, TASK-95 set Done and TASK-85 evidence updated.
|
|
- [2026-02-21T03:18:36Z] [codex-task95-anki-20260221T031836Z-6f3e|codex-task95-anki] starting TASK-95 Anki portion: extract field-grouping/merge collaborator from `src/anki-integration.ts` into `src/anki-integration/*`; add seam tests; run `bun run build && node --test dist/anki-integration.test.js`.
|
|
- [2026-02-21T03:26:55Z] [codex-task95-anki-20260221T031836Z-6f3e|codex-task95-anki] completed Anki extraction; collaborator now in `src/anki-integration/field-grouping-merge.ts`; `AnkiIntegration` rewired via collaborator seam; targeted build + `dist/anki-integration.test.js` passing.
|
|
- [2026-02-21T03:18:43Z] [opencode-task95-config-20260221T031843Z-m4k9|opencode-task95-config] starting TASK-95 config slice; scope `src/config/service.ts`, new `src/config/*` collaborators, and config seam tests only; no backlog-file edits.
|
|
- [2026-02-21T03:18:46Z] [opencode-task95-immersion-tracker-20260221T031846Z-p4k9|opencode-task95-immersion-tracker] overlap note: implementing TASK-95 immersion-tracker slice in `src/core/services/immersion-tracker-service.ts` + new `src/core/services/immersion-tracker/*` + seam tests; avoiding backlog file edits.
|
|
- [2026-02-21T03:26:51Z] [opencode-task95-immersion-tracker-20260221T031846Z-p4k9|opencode-task95-immersion-tracker] completed immersion-tracker slice: extracted reducer/query/maintenance/queue/types collaborators, kept public API stable, added seam tests, and verified via `bun run build && node --test dist/core/services/immersion-tracker-service.test.js`.
|
|
- [2026-02-21T03:26:57Z] [opencode-task95-config-20260221T031843Z-m4k9|opencode-task95-config] completed config slice: extracted `load/parse/warnings/resolve` collaborators, reduced `src/config/service.ts` to facade, added loader precedence + strict non-mutation + warning determinism seam tests, build+config tests green.
|
|
- [2026-02-21T03:36:58Z] [opencode-task-94-20260221T033647Z-7ou2|opencode-task-94] starting TASK-94 finish pass: pull backlog context, write+execute plan via writing-plans/executing-plans, and close remaining AC without commit.
|
|
- [2026-02-21T04:11:57Z] [opencode-task-94-20260221T033647Z-7ou2|opencode-task-94] extracted IPC/shortcuts/startup-lifecycle/app-ready clusters behind composer modules, rewired `src/main.ts`, added focused composer tests, and revalidated build + `check:main-fanin` + `test:core:dist`.
|
|
- [2026-02-21T04:12:45Z] [opencode-task-94-20260221T033647Z-7ou2|opencode-task-94] TASK-94 finalized in Backlog MCP: AC checklist complete, notes+final summary recorded, status moved to Done.
|
|
- [2026-02-21T04:35:41Z] [codex-task71-round2-20260221T043541Z-k9t3|codex-task71-round2] overlap note: starting TASK-71 round 2 follow-up on `src/main.ts` + `src/main/runtime/composers/*` + docs; preserving prior TASK-94/TASK-95 edits.
|
|
- [2026-02-21T04:57:00Z] [codex-task71-round2-20260221T043541Z-k9t3|codex-task71-round2] completed TASK-71: extracted AniList tracking + MPV runtime composition into new composers, added seam tests, rewired `main.ts` + composer barrel, strict fan-in green, and finalized Backlog task as Done.
|
|
- [2026-02-21T05:13:08Z] [codex-task85-20260221T051308Z-164g|codex-task85-exec] starting TASK-85 execution pass: load backlog task context, generate plan via writing-plans, execute via executing-plans, no commit.
|
|
- [2026-02-21T05:45:50Z] [codex-task85-20260221T051308Z-164g|codex-task85-exec] completed TASK-85 pass: enforced launcher generated-artifact workflow across verifier + CI/release + docs, ran full build/test/guardrails, and finalized TASK-85 status to Done in Backlog MCP.
|
|
- [2026-02-21T07:08:42Z] [opencode-task93-sync-20260221T070842Z-71c6|opencode-task93-sync] starting TASK-93 backlog synchronization pass: align TASK-85 closure tracking, AC/DoD mapping, and child-task ownership; backlog-only edits expected.
|
|
- [2026-02-21T07:11:58Z] [opencode-task93-sync-20260221T070842Z-71c6|opencode-task93-sync] completed TASK-93: updated TASK-85 description/notes with explicit AC/DoD ownership + remaining-scope order; finalized TASK-93 AC/DoD and status Done.
|
|
- [2026-02-21T09:42:20Z] [opencode-task97-runtime-composer-20260221T094150Z-r8k3|opencode-task97-runtime-composer] starting TASK-97 execution: loading backlog context, writing plan via writing-plans, executing via executing-plans, no commit.
|
|
- [2026-02-21T10:06:59Z] [opencode-task97-runtime-composer-20260221T094150Z-r8k3|opencode-task97-runtime-composer] completed TASK-97: normalized shared composer contracts across runtime composers, added compile-time contract assertions, updated docs conventions, ran build + fan-in + core-dist gates, and finalized Backlog task as Done.
|
|
- [2026-02-21T09:41:19Z] [opencode-task96-config-resolve-20260221T094119Z-mbfo|opencode-task96-config-resolve] starting TASK-96 via Backlog MCP + writing-plans/executing-plans workflow; scope expected around `src/config/resolve.ts`, new config-resolve domain modules, seam tests, and budget checks.
|
|
- [2026-02-21T09:45:24Z] [opencode-task98-source-tests-20260221T094524Z-kzvd|opencode-task98-source-tests] starting TASK-98 via Backlog MCP + writing-plans/executing-plans workflow; targeting source-level test entrypoints and dist-coupling cleanup, no commit.
|
|
- [2026-02-21T09:56:47Z] [opencode-task98-source-tests-20260221T094524Z-kzvd|opencode-task98-source-tests] TASK-98 implementation pass complete: source test lane (`test:fast`) moved to `bun test` source entrypoints, explicit `test:smoke:dist` added, CI/release updated, docs+timing evidence recorded; blocked final DoD on unrelated pre-existing `bun run build` TS errors from in-flight TASK-96/97 files.
|
|
- [2026-02-21T11:00:58Z] [codex-task96-config-resolve-20260221T110058Z-k7m2|codex-task96-config-resolve] taking over TASK-96 execution: load backlog task, write plan via writing-plans, execute via executing-plans, and finalize AC/DoD evidence without commit.
|
|
- [2026-02-21T20:10:43Z] [codex-task96-config-resolve-20260221T110058Z-k7m2|codex-task96-config-resolve] completed TASK-96: `src/config/resolve.ts` reduced to thin orchestrator (33 LOC), config resolve seam tests wired into src+dist config lanes via `package.json`, required gates green (`build`, `test:config:dist`, `check:file-budgets`), and backlog task marked Done with metrics evidence.
|
|
- [2026-02-21T20:20:52Z] [codex-task74-launcher-tests-20260221T201635Z-10i6|codex-task74-launcher-tests] completed TASK-74: added `launcher/main.test.ts` regression harness for config discovery + command branching (`doctor`, `config`, `mpv`, `jellyfin`), wired launcher tests into `test:launcher` + `test:core:src`, updated launcher docs test command, and marked backlog task done.
|
|
- [2026-02-21T20:19:24Z] [codex-task73-mpv-socket-20260221T201605Z-zjhs|codex-task73-mpv-socket] completed TASK-73: consolidated launcher MPV socket readiness on `waitForUnixSocketReady`, removed `waitForSocket`/duplicate path polling, rewired launcher overlay callsite, added readiness regression tests (`launcher/mpv.test.ts`), launcher tests + `make build-launcher` green.
|
|
- [2026-02-21T20:20:18Z] [codex-task73-mpv-socket-20260221T201605Z-zjhs|codex-task73-mpv-socket] full `bun run build` currently blocked by unrelated missing modules in `src/anki-integration/field-grouping-workflow.test.ts` and `src/anki-integration/note-update-workflow.test.ts` (outside TASK-73 scope).
|
|
- [2026-02-21T20:16:59Z] [opencode-task76-anki-workflows-20260221T201659Z-r4p1|opencode-task76-anki-workflows] starting TASK-76 via Backlog MCP + writing-plans/executing-plans; likely scope `src/anki-integration.ts` + new `src/anki-integration/*` workflow services, with overlap checks before edits.
|
|
- [2026-02-21T20:35:58Z] [opencode-task76-doc-boundaries-20260221T203558Z-h7q4|opencode-task76-doc-boundaries] overlap note: TASK-76 already has an active planning agent; this pass is docs-only (`docs/anki-integration.md`) to capture ownership boundaries after workflow decomposition.
|
|
- [2026-02-21T21:16:18Z] [opencode-task76-anki-workflows-20260221T201659Z-r4p1|opencode-task76-anki-workflows] completed TASK-76: extracted `note-update-workflow` + `field-grouping-workflow` services, delegated facade hotpaths in `src/anki-integration.ts`, added focused workflow seam tests, docs ownership boundaries updated, `bun run build && bun run test:core:dist` green, and backlog TASK-76 marked Done.
|
|
- [2026-02-21T21:37:07Z] [codex-docs-unpushed-review-20260221T213707Z-lyej|codex-docs-unpushed-review] starting docs-drift audit for unpushed commits (`origin/main..HEAD`); scope docs alignment only, no behavior/code rewrites.
|
|
- [2026-02-21T21:39:15Z] [codex-docs-unpushed-review-20260221T213707Z-lyej|codex-docs-unpushed-review] completed docs-drift pass for current HEAD: removed stale lowercase config-dir fallback claim (`docs/configuration.md`) and added launcher regression lane in dev test commands (`docs/development.md`).
|
|
- [2026-02-21T23:18:04Z] [codex-task72-strict-startup-config-20260221T231804Z-3ngd|codex-task72-strict-startup-config] starting TASK-72 via Backlog MCP + writing-plans/executing-plans workflow; scope expected around startup config strictness parity, user-facing errors, tests, and docs.
|
|
- [2026-02-21T23:20:16Z] [opencode-task77-tokenizer-stages-20260221T232016Z-v9k2|opencode-task77-tokenizer-stages] starting TASK-77 via Backlog MCP + writing-plans/executing-plans workflow; expected overlap around tokenizer/pipeline modules and related tests, coordinating to avoid clobber.
|
|
- [2026-02-21T23:47:08Z] [opencode-task77-tokenizer-stages-20260221T232016Z-v9k2|opencode-task77-tokenizer-stages] completed TASK-77: split tokenizer into parser-selection/enrichment/annotation/runtime stages, added direct stage tests, ran tokenizer+core src/dist gates green, and finalized Backlog task to Done.
|
|
- [2026-02-21T23:18:16Z] [codex-task75-mpv-osd-buffered-20260221T231816Z-yj32|codex-task75-mpv-osd-buffered] starting TASK-75 via Backlog MCP + writing-plans/executing-plans; scope `src/main/runtime/mpv-osd-log*` + wiring/tests for buffered async OSD logging with shutdown flush behavior.
|
|
- [2026-02-21T23:48:10Z] [codex-task75-mpv-osd-buffered-20260221T231816Z-yj32|codex-task75-mpv-osd-buffered] completed TASK-75: moved MPV OSD log writes to buffered async queue + flush path, wired `flushMpvLog` into on-will-quit cleanup, focused runtime/lifecycle tests passing, backlog task marked Done; full `bun run build` still blocked by unrelated tokenizer logger typing issue.
|
|
- [2026-02-21T23:21:55Z] [opencode-task72-strict-startup-config-20260221T232155Z-kf0o|opencode-task72-strict-startup-config] overlap note: implementing user-requested Task 1 for TASK-72 in `src/config/service.ts` + `src/config/config.test.ts`; another planning agent exists on TASK-72 (`codex-task72-...`), keeping edits minimal and scoped to startup malformed-config strict failure behavior.
|
|
- [2026-02-21T23:24:32Z] [opencode-task72-strict-startup-config-20260221T232155Z-kf0o|opencode-task72-strict-startup-config] completed Task 1: constructor now throws `ConfigStartupParseError` on malformed startup config (path + parse reason in message) instead of silently defaulting; added startup malformed-config constructor regression test; `bun run build && node --test dist/config/config.test.js` passed.
|
|
- [2026-02-21T23:21:37Z] [opencode-task72-parse-details-20260221T232137Z-b63t|opencode-task72-parse-details] overlap note: implementing only TASK-72 Task 2 (`src/main/config-validation.ts`, `src/main/runtime/startup-config.ts`, and related tests) while preserving existing TASK-72 planning artifacts from `codex-task72-strict-startup-config-20260221T231804Z-3ngd`.
|
|
- [2026-02-21T23:25:07Z] [opencode-task77-sliceb-20260221T232507Z-vzk5|opencode-task77-sliceb] overlap note: implementing TASK-77 slice B in `src/core/services/tokenizer/parser-enrichment-stage*.ts` only; preserving concurrent TASK-77 planning/slice-A work and leaving `src/core/services/tokenizer.ts` untouched per request.
|
|
- [2026-02-21T23:27:40Z] [opencode-task77-sliceb-20260221T232507Z-vzk5|opencode-task77-sliceb] completed TASK-77 slice B request: extracted parser enrichment stage pure logic into `parser-enrichment-stage.ts`, added focused tests in `parser-enrichment-stage.test.ts`, and validated with `bun test src/core/services/tokenizer/parser-enrichment-stage.test.ts` (3 pass).
|
|
- [2026-02-22T00:01:00Z] [opencode-task77-slice-a-20260222T000100Z-j4p2|opencode-task77-slice-a] overlap note: implementing TASK-77 slice A in `src/core/services/tokenizer/parser-selection-stage.ts` + focused tests; no edits to `src/core/services/tokenizer.ts` in this pass.
|
|
- [2026-02-22T00:03:30Z] [opencode-task77-slice-a-20260222T000100Z-j4p2|opencode-task77-slice-a] completed TASK-77 slice A: added pure parser-selection-stage module + focused tests (scanning preference, mecab fallback split, suspicious-kana tie-break); targeted bun test command green.
|
|
- [2026-02-21T23:24:12Z] [opencode-task72-parse-details-20260221T232137Z-b63t|opencode-task72-parse-details] completed TASK-72 Task 2 scope: shared parse-error formatter now in `src/main/config-validation.ts`, startup hot-reload parse-failure path uses formatter, tests updated (`src/main/config-validation.test.ts`, `src/main/runtime/startup-config.test.ts`), required build+node-test command passed.
|
|
- [2026-02-21T23:26:29Z] [codex-task72-strict-startup-config-20260221T231804Z-3ngd|codex-task72-strict-startup-config] completed TASK-72 end-to-end (no commit): integrated Task 3 startup guard in `src/main.ts`, docs behavior update in `docs/configuration.md`, focused tests pass (`bun test ...` 46/46), and backlog TASK-72 finalized Done; full build still blocked by unrelated TASK-75/TASK-77 TS errors.
|
|
- [2026-02-21T23:56:04Z] [opencode-task78-config-domain-20260221T235604Z-p9x2|opencode-task78-config-domain] starting TASK-78 via Backlog MCP + writing-plans/executing-plans workflow; expected scope `src/config/definitions.ts`, `src/config/service.ts`, new config-domain modules/tests, and docs updates as needed.
|
|
- [2026-02-22T00:05:00Z] [opencode-task78-config-domain-20260221T235604Z-p9x2|opencode-task78-config-domain] completed TASK-78: split config definitions into domain modules under `src/config/definitions/*`, kept composed public API at `src/config/definitions.ts`, added domain-registry tests, updated contributor docs, and finalized backlog task to Done; `make generate-config` blocked by unrelated pre-existing `src/main/state.test.ts` export errors.
|
|
- [2026-02-21T23:56:52Z] [opencode-task79-runtime-reducers-20260221T235652Z-n4p7|opencode-task79-runtime-reducers] starting TASK-79 via Backlog MCP + writing-plans/executing-plans; initial scope expected around `src/main.ts` runtime-state mutation paths, reducer helpers, invariant tests, and ownership docs; parallel slices where safe.
|
|
- [2026-02-22T00:06:10Z] [opencode-task79-runtime-reducers-20260221T235652Z-n4p7|opencode-task79-runtime-reducers] implementing TASK-79 slice A: added reducer helpers + focused `src/main/state.test.ts`; rewired migrated `src/main.ts` AniList mutation paths (client-secret state, retry metadata, media-guess runtime fields, in-flight flag) through `src/main/state.ts` transitions.
|
|
- [2026-02-22T00:02:53Z] [opencode-task79-sliceb-20260222T000253Z-m2r7|opencode-task79-sliceb] overlap note: implementing TASK-79 slice B only (`src/main/runtime/anilist-state.test.ts`, `src/main/runtime/anilist-media-state.test.ts`, `docs/architecture.md`) for invariants coverage and composition-boundary ownership docs; no runtime behavior code changes.
|
|
- [2026-02-22T00:04:21Z] [opencode-task79-sliceb-20260222T000253Z-m2r7|opencode-task79-sliceb] completed TASK-79 slice B request: added invariants coverage in AniList runtime/media tests (queue metadata preservation, clear-token non-mutation, guess-only reset, tracking reset idempotence), documented migrated runtime reducer ownership rules in architecture docs, and verified focused tests green (8 pass).
|
|
- [2026-02-22T00:10:51Z] [opencode-task79-runtime-reducers-20260221T235652Z-n4p7|opencode-task79-runtime-reducers] completed TASK-79 end-to-end: merged slice A/B, added explicit AniList runtime transitions in `src/main/state.ts`, rewired migrated `src/main.ts` mutation paths, fixed `state.ts` core-services import coupling for focused tests, verified `bun test src/main/state.test.ts src/main/runtime/anilist-state.test.ts src/main/runtime/anilist-media-state.test.ts` + `bun run build` + `bun run test:core:src`, and marked backlog task Done.
|
|
- [2026-02-22T00:17:28Z] [opencode-task80-ipc-contract-20260222T001728Z-obrv|opencode-task80-ipc-contract] starting TASK-80 via Backlog MCP + writing-plans/executing-plans; scope IPC contract typing/runtime payload validation + malformed payload tests; will parallelize independent slices where possible.
|
|
- [2026-02-22T00:21:50Z] [opencode-task82-smoke-20260222T002150Z-p5bp|opencode-task82-smoke] starting TASK-82 via Backlog MCP + writing-plans/executing-plans; scope e2e smoke suite for launcher mpv ipc overlay startup + workflow/docs wiring, no commit.
|
|
- [2026-02-22T00:25:23Z] [codex-task82-smoke-20260222T002523Z-3j7u|codex-task82-smoke] overlap note: taking active TASK-82 execution; reusing existing task context/plan artifact, scoping edits to launcher smoke test + workflow/docs wiring + backlog evidence updates only.
|
|
- [2026-02-22T00:56:00Z] [opencode-task80-ipc-contract-20260222T001728Z-obrv|opencode-task80-ipc-contract] completed TASK-80: added central IPC contract + boundary validators (`src/shared/ipc/*`), rewired main/preload/anki-jimaku IPC channel usage, added malformed payload tests (`ipc.test.ts`, `anki-jimaku-ipc.test.ts`), docs updated (`docs/architecture.md`), build + core src/dist tests green, and backlog TASK-80 marked Done.
|
|
- [2026-02-22T00:54:29Z] [opencode-task82-smoke-20260222T002150Z-p5bp|opencode-task82-smoke] completed TASK-82 implementation pass: launcher smoke e2e stabilized (`launcher/smoke.e2e.test.ts`), CI/release smoke + artifact upload wired, docs updated (`docs/development.md`, `docs/installation.md`), and verification lanes green (`test:launcher:smoke:src`, `test:launcher`, `test:fast`, `build`, `test:smoke:dist`, `docs:build`).
|
|
- [2026-02-22T00:53:25Z] [codex-task82-smoke-20260222T002523Z-3j7u|codex-task82-smoke] completed TASK-82: added `launcher/smoke.e2e.test.ts`, wired `test:launcher:smoke:src` + CI/release smoke gates with `.tmp/launcher-smoke` failure artifact upload, docs updated (`docs/development.md`, `docs/installation.md`), launcher/fast/docs lanes green; `build + test:smoke:dist` still blocked by unrelated TASK-80 IPC typing errors.
|
|
- [2026-02-22T00:57:25Z] [opencode-task81-launcher-modules-20260222T005725Z-8oh8|opencode-task81-launcher-modules] starting TASK-81 via Backlog MCP + writing-plans/executing-plans; expected scope `launcher/main.ts` command extraction, process adapters, and launcher tests while preserving CLI behavior/exit codes.
|
|
- [2026-02-22T01:09:30Z] [opencode-task81-launcher-modules-20260222T005725Z-8oh8|opencode-task81-launcher-modules] completed TASK-81 implementation pass: extracted launcher command handlers under `launcher/commands/*`, added `launcher/process-adapter.ts` seam + thin `launcher/main.ts` dispatcher, added adapter-mocked command tests (`launcher/commands/command-modules.test.ts`), and validated `bun run test:launcher && bun run test:core:src` green.
|
|
- [2026-02-22T01:09:30Z] [codex-task99-guardrails-20260222T010930Z-m9q2|codex-task99-guardrails] starting TASK-99 via Backlog MCP + writing-plans/executing-plans; scope expected around guardrail budgets, runtime cycle-check fixture coverage, CI fail-fast wiring, and contributor docs.
|
|
- [2026-02-22T03:01:34Z] [codex-task99-guardrails-20260222T010930Z-m9q2|codex-task99-guardrails] completed TASK-99 implementation pass: added hotspot budget thresholds + baseline reporting in `scripts/check-file-budgets.ts`, added runtime cycle checker + fixture-backed tests (`scripts/check-runtime-cycles*.ts`), wired CI fail-fast guardrail step, updated contributor docs with guardrail commands/baselines, and verified guardrail/docs/test lanes green.
|
|
- [2026-02-22T01:16:24Z] [opencode-task84-keybindings-gating-20260222T011624Z-llor|opencode-task84-keybindings-gating] starting TASK-84 via Backlog MCP + writing-plans/executing-plans; expected scope keybinding feature-flag gating, disabled-integration startup guards (Jellyfin case), tests, and docs.
|
|
- [2026-02-22T01:35:30Z] [opencode-task84-keybindings-gating-20260222T011624Z-llor|opencode-task84-keybindings-gating] completed TASK-84: gated Anki-dependent shortcuts in `src/core/utils/shortcut-config.ts`, added Jellyfin `enabled` startup guards in `src/main.ts` + `jellyfin-remote-session-lifecycle.ts`, added focused tests (`shortcut-config`, jellyfin lifecycle, warmups), updated config docs, and validated focused tests + `test:core:src` + `docs:build`.
|
|
- [2026-02-22T02:11:56Z] [codex-task98-source-tests-20260222T021156Z-a1b2|codex-task98-source-tests] starting TASK-98 closure pass via Backlog MCP + writing-plans/executing-plans; validating remaining DoD evidence and finalization status, no commit.
|
|
- [2026-02-22T02:36:00Z] [codex-task98-source-tests-20260222T021156Z-a1b2|codex-task98-source-tests] completed TASK-98 closure: validated `test:fast` + `build` + `test:smoke:dist` all pass on current HEAD, captured timing repro (`2.18s` source lane, `0.21s` dist smoke), confirmed script/workflow/docs split unchanged, and finalized Backlog task to Done.
|
|
- [2026-02-22T02:41:56Z] [codex-task101-docs-archive-20260222T024156Z-hneu|codex-task101-docs-archive] starting TASK-101 via Backlog MCP + writing-plans/executing-plans; scope architecture docs consolidation, stale-note cleanup, archive evidence retention, and docs link/build verification.
|
|
- [2026-02-22T03:01:38Z] [codex-task101-docs-archive-20260222T024156Z-hneu|codex-task101-docs-archive] completed TASK-101: canonicalized runtime architecture wording in `docs/architecture.md`, trimmed duplicated architecture bullets in `docs/development.md`, converted `docs/structure-roadmap.md` to archival notice, `bun run docs:build` passed, and backlog TASK-101 finalized Done with AC/DoD evidence.
|
|
- [2026-02-22T03:32:21Z] [opencode-task100-dead-code-prune-20260222T033155Z-qenz|opencode-task100-dead-code-prune] starting TASK-100 via Backlog MCP + writing-plans/executing-plans; expected scope dead-code candidate report, safe removals, regression tests/gates, and backlog evidence updates.
|
|
- [2026-02-22T04:00:41Z] [opencode-task100-dead-code-prune-20260222T033155Z-qenz|opencode-task100-dead-code-prune] completed TASK-100 execution pass: removed confirmed dead imports/helpers/exports across Anki/core/renderer/provider modules, added dead-code report at `docs/reports/2026-02-22-task-100-dead-code-report.md`, verified build + core/config src tests + file-budget checks, and prepared Backlog finalization updates.
|
|
- [2026-02-22T05:46:31Z] [codex-gh-fix-ci-20260222T054631Z-m4t8|codex-gh-fix-ci] starting CI triage via gh-fix-ci skill; no branch PR found for `main`, falling back to latest failed GitHub Actions runs on `main` for root-cause summary + fix plan.
|
|
- [2026-02-22T06:11:15Z] [codex-gh-fix-ci-20260222T054631Z-m4t8|codex-gh-fix-ci] completed requested change: removed file-budget guardrail script + package scripts + CI invocation; retained main-fanin/runtime-cycle strict checks and updated active docs commands.
|
|
- [2026-02-22T06:22:35Z] [codex-fix-rebase-errors-20260222T062235Z-73h4|codex-fix-rebase-errors] conflict note: resolving in-flight rebase conflicts in `src/core/services/ipc.ts` and `src/main.ts` (files recently touched by multiple agents); keeping scope to conflict resolution only.
|
|
- [2026-02-22T06:30:48Z] [codex-fix-rebase-errors-20260222T062235Z-73h4|codex-fix-rebase-errors] completed rebase recovery: resolved two rebase stops (`main/ipc` + `config/docs`), preserved modular config architecture while porting `subtitleStyle.hoverTokenColor`, and finished interactive rebase cleanly on `main`.
|
|
- [2026-02-22T06:57:52Z] [codex-review-cleanup-20260222T065718Z-9p4m|codex-review-cleanup] starting post-refactor code review pass + backlog ticket creation for remaining simplification/cleanup actions; scope whole repo with maintainability focus.
|
|
- [2026-02-22T07:04:48Z] [codex-review-cleanup-20260222T065718Z-9p4m|codex-review-cleanup] completed review + ticketing pass: flagged Jellyfin session migration compile break and opened TASK-102..TASK-106; refreshed TASK-57 with current context/action steps/DoD.
|
|
- [2026-02-22T07:15:30Z] [codex-jellyfin-ts-fix-20260222T071530Z-5e50|codex-jellyfin-ts-fix] overlap note: fixing Jellyfin config/runtime type drift touching `src/main.ts`, `src/config/definitions/*`, `src/config/resolve/*`; preserving recent refactor structure and limiting scope to TS errors only.
|
|
- [2026-02-22T07:18:07Z] [codex-jellyfin-ts-fix-20260222T071530Z-5e50|codex-jellyfin-ts-fix] completed TS fix: removed legacy `jellyfin.accessToken/userId` from defaults/resolver, aligned `src/main.ts` to `loadSession/saveSession/clearSession`, added resolver regression test for legacy keys, and verified `bun run tsc --noEmit` + focused jellyfin tests green.
|
|
- [2026-02-22T07:23:47Z] [codex-jellyfin-ts-fix-20260222T071530Z-5e50|codex-jellyfin-ts-fix] docs follow-up: fixed stale `docs/configuration.md` Jellyfin table/text to remove `accessToken/userId` config guidance; now states stored encrypted session + env override keys.
|
|
- [2026-02-22T07:34:50Z] [codex-overlay-toggle-regression-20260222T073450Z-q7m4|codex-overlay-toggle-regression] starting TASK-107 bugfix for post-rebase overlay regression: toggling visible/invisible opens transparent non-interactable window; keybinds + subtitle rendering fail in both modes.
|
|
- [2026-02-22T07:44:40Z] [codex-overlay-toggle-regression-20260222T073450Z-q7m4|codex-overlay-toggle-regression] identified renderer layer-resolution bug risk under shared renderer process (`process.argv` preload arg drift); fixed `resolvePlatformInfo` to prioritize per-window `?layer=` query, added regression test, verified `bun test src/renderer/error-recovery.test.ts` + `bun run build`.
|
|
- [2026-02-22T07:45:58Z] [codex-overlay-toggle-regression-20260222T073450Z-q7m4|codex-overlay-toggle-regression] added explicit overlay BrowserWindow sandbox guard (`webPreferences.sandbox=false`) to avoid preload API break on newer Electron defaults; added regression test `src/core/services/overlay-window-config.test.ts`; verified focused tests + build green.
|
|
|
|
## 2026-02-22
|
|
|
|
- [2026-02-22T08:04:10Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] starting feature: port intro skip to AniSkip API in `plugin/subminer.lua` with chapter markers + in-range OSD skip button; scoped to mpv plugin/docs only.
|
|
- [2026-02-22T08:05:38Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] implemented AniSkip OP lookup + chapter markers + in-range OSD skip prompt/key in `plugin/subminer.lua`; updated plugin conf/docs; syntax check `luac -p plugin/subminer.lua` passed.
|
|
- [2026-02-22T08:13:40Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] follow-up applied: launcher now runs `guessit` for file playback and passes AniSkip title/season/episode script-opts (fallback title from filename), and intro hint now displays for first 3s from intro start (`You can skip by pressing y-k`).
|
|
- [2026-02-22T09:25:57Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] bugfix follow-up: `y-k` now always bound as fallback intro-skip key regardless custom key config; skip handler now emits OSD reason when unavailable/outside intro window to aid diagnosis.
|
|
- [2026-02-22T09:30:27Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] diagnostics follow-up: plugin now logs AniSkip query context + MAL lookup query + resolved MAL id + AniSkip URL to help debug wrong-season resolution.
|
|
- [2026-02-22T09:33:22Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] season-mismatch mitigation: MAL lookup now ranks prefix-search candidates by title overlap + season signal, logs selected candidate name/id/score before AniSkip query.
|
|
- [2026-02-22T09:36:05Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] tightened MAL resolver scoring and added low-confidence rejection (<35) so unrelated matches are skipped instead of used.
|
|
- [2026-02-22T09:40:09Z] [codex-docs-review-20260222T094009Z-g8p2|codex-docs-review] starting docs review/update pass for README + docs pages; scope docs-only consistency fixes against current scripts/config/features.
|
|
- [2026-02-22T09:43:52Z] [codex-docs-review-20260222T094009Z-g8p2|codex-docs-review] completed docs review/update pass: removed stale guardrail docs, fixed DevTools shortcut docs, added guessit guidance for AniSkip metadata quality, verified `bun run docs:build` passes.
|
|
- [2026-02-22T09:42:00Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] added AniSkip MAL fallback title attempts to recover from guessit title mismatches while preserving season/episode hints.
|
|
- [2026-02-22T10:04:20Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] launcher metadata fix: prefer guessit `series` for AniSkip title and fallback to show-directory extraction (`.../<Show>/Season-*`) instead of episode filename title.
|
|
- [2026-02-22T10:10:30Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] plugin hardening: path-derived show title now prioritized over script-opt title for AniSkip lookups, reducing dependence on launcher metadata correctness.
|
|
- [2026-02-22T10:14:40Z] [codex-aniskip-intro-skip-20260222T080257Z-51fx|codex-aniskip-intro-skip] simplified MAL resolution policy to first-result selection (no score/reject) per user preference.
|
|
- [2026-02-22T19:41:00Z] [codex-discord-presence-task-20260222T194048Z-d7k2|codex-discord-presence-task] created `TASK-109` for optional Discord Rich Presence integration with polished activity card UI; no code/runtime changes in this pass.
|
|
- [2026-02-22T19:46:00Z] [codex-task108-aniskip-20260222T194600Z-qgdt|codex-task108-aniskip] starting TASK-108 closure pass via Backlog MCP + writing-plans/executing-plans; validating plugin/docs behavior and finalizing AC/DoD evidence.
|
|
- [2026-02-22T19:49:30Z] [codex-task108-aniskip-20260222T194600Z-qgdt|codex-task108-aniskip] completed TASK-108 closure: wrote plan artifact, revalidated plugin/docs AC coverage, ran validation suite (`luac` + launcher tests pass), finalized backlog task as Done; `tsc --noEmit` still fails on unrelated pre-existing `src/anki-integration/note-update-workflow.test.ts` errors.
|
|
- [2026-02-22T19:47:35Z] [opencode-task105-unsafe-casts-20260222T194704Z-zfcm|opencode-task105-unsafe-casts] starting TASK-105 via Backlog MCP + writing-plans/executing-plans; scope runtime cast elimination in `src/main.ts` + `src/main/runtime/*`, no commit.
|
|
- [2026-02-22T19:47:08Z] [codex-task104-launcher-config-20260222T194708Z-z9x1|codex-task104-launcher-config] starting TASK-104 via Backlog MCP + writing-plans/executing-plans; scope launcher config module extraction + focused tests + launcher lanes validation.
|
|
- [2026-02-22T19:56:26Z] [codex-task104-launcher-config-20260222T194708Z-z9x1|codex-task104-launcher-config] completed TASK-104: split `launcher/config.ts` into domain modules + CLI builder/normalizer, added focused parser tests, aligned Jellyfin config reader contract (no token/userId fields), and verified `test:launcher` + `test:fast`; backlog task marked Done.
|
|
- [2026-02-22T19:51:09Z] [opencode-task106-immersion-modules-20260222T195109Z-r3m7|opencode-task106-immersion-modules] starting TASK-106 via Backlog MCP + writing-plans/executing-plans; scope immersion tracker storage/session/metadata decomposition + focused tests + architecture docs update, no commit.
|
|
- [2026-02-22T19:54:23Z] [codex-task105-sliceb-20260222T195423Z-w8n3|codex-task105-sliceb] overlap note: executing user-requested TASK-105 slice B in targeted runtime cast-removal files (`src/main/runtime/*-main-deps.ts`, jellyfin/mpv runtime helpers) while preserving existing TASK-105 planning artifacts.
|
|
- [2026-02-22T19:59:42Z] [codex-task105-sliceb-20260222T195423Z-w8n3|codex-task105-sliceb] completed requested slice B: removed unsafe casts in targeted runtime modules, tightened contracts with shared runtime types (`CliCommandContextFactoryDeps`, `TokenizerDepsRuntimeOptions`, overlay options deps), and verified via focused runtime test suite (16 pass, 0 fail).
|
|
- [2026-02-22T20:02:06Z] [codex-task105-sliceb-20260222T195423Z-w8n3|codex-task105-sliceb] follow-up typing fallout pass: updated focused runtime tests for stricter contract shapes (texthooker/anilist/mpv/jellyfin/tokenizer stubs) and revalidated same 8-file suite green.
|
|
- [2026-02-22T20:01:45Z] [opencode-task106-immersion-modules-20260222T195109Z-r3m7|opencode-task106-immersion-modules] completed TASK-106 implementation scope: extracted `storage.ts`, `session.ts`, `metadata.ts`; reduced `immersion-tracker-service.ts` to 654 LOC facade; added focused tests (`storage-session.test.ts`, `metadata.test.ts`); tracker/core source tests green. Task finalization blocked on AC#4 build gate due unrelated pre-existing TS errors in `src/anki-integration/*` and `src/main/runtime/*`.
|
|
- [2026-02-22T21:58:45Z] [opencode-task106-immersion-modules-20260222T195109Z-r3m7|opencode-task106-immersion-modules] blocker cleared; reran `bun run build` + tracker tests + `test:core:src` green; finalized TASK-106 to Done in Backlog with final summary.
|
|
|
|
- [2026-02-22T21:54:29Z] [codex-ts-build-errors-20260222T215411Z-h3k7|codex-ts-build-errors] overlap note: touching `src/main/runtime/*` and `src/anki-integration/note-update-workflow.test.ts` for strict-typing fallout fixes after TASK-105 slice-B contract tightening; scope limited to compile-error remediation + test stub alignment.
|
|
|
|
- [2026-02-22T21:55:54Z] [codex-ts-build-errors-20260222T215411Z-h3k7|codex-ts-build-errors] completed compile-fix pass: widened `note-update-workflow.test.ts` harness deps to `NoteUpdateWorkflowDeps`, aligned stub callback signatures, and verified `bun run tsc --noEmit` + `make build` green.
|
|
- [2026-02-22T21:56:30Z] [opencode-task105-unsafe-casts-20260222T194704Z-zfcm|opencode-task105-unsafe-casts] finalized TASK-105: re-ran `bun run build` after compile-fix pass (green), confirmed cast scan 42->0 in scope, and moved backlog task to Done with AC/DoD + final summary.
|
|
- [2026-02-22T22:06:20Z] [codex-task109-discord-presence-20260222T220537Z-lkfv|codex-task109-discord-presence] starting TASK-109 via Backlog MCP + writing-plans/executing-plans workflow; scope Discord Rich Presence config/runtime/docs/tests, no commit.
|
|
- [2026-02-22T22:36:40Z] [codex-task109-discord-presence-20260222T220537Z-lkfv|codex-task109-discord-presence] implemented Discord presence config/service/runtime/docs slices with focused tests + docs build green; full build gate blocked by pre-existing `src/main.ts` duplicate import/symbol errors outside TASK-109 scope.
|
|
- [2026-02-22T22:04:41Z] [codex-task103-jellyfin-main-composer-20260222T220441Z-m8p1|codex-task103-jellyfin-main-composer] starting TASK-103 via Backlog MCP + writing-plans/executing-plans workflow; scope jellyfin wiring extraction from `src/main.ts` into runtime composer modules + focused tests, no commit.
|
|
- [2026-02-22T22:39:40Z] [codex-task103-jellyfin-main-composer-20260222T220441Z-m8p1|codex-task103-jellyfin-main-composer] TASK-103 implementation pass done: added `jellyfin-runtime-composer` + seam test, rewired `src/main.ts` Jellyfin block to single composer invocation, updated architecture docs, and validated focused composer tests + `check:main-fanin` + `test:core:src`; `bun run build` blocked by pre-existing duplicate/invalid import state already present in `src/main.ts`.
|
|
- [2026-02-22T22:49:30Z] [codex-task103-jellyfin-main-composer-20260222T220441Z-m8p1|codex-task103-jellyfin-main-composer] closure: user fixed prior build blocker; reran required TASK-103 gates (`bun run build`, `bun run test:core:src`, `bun run check:main-fanin`) all pass and finalized TASK-103 to Done in Backlog.
|
|
|
|
- [2026-02-22T22:10:10Z] [codex-kiku-modal-overlay-20260222T220502Z-r4m1|codex-kiku-modal-overlay] overlap note: touching `src/core/services/field-grouping-overlay.ts` + tests to fix Kiku modal auto-shown visible overlay restore when modal closes.
|
|
- [2026-02-22T22:07:38Z] [codex-kiku-modal-overlay-20260222T220502Z-r4m1|codex-kiku-modal-overlay] completed fix: synchronized visible-overlay state when Kiku request opens via external sender; added regression test for hidden->open->resolve->hidden visibility restoration; focused field-grouping/overlay tests passing.
|
|
- [2026-02-22T22:11:52Z] [opencode-task103-jellyfin-main-composer-20260222T221152Z-n3p7|opencode-task103-jellyfin-main-composer] overlap note: implementing user-requested TASK-103 extraction in `src/main.ts`, `src/main/runtime/composers/jellyfin-*.ts`, composer tests, and `docs/architecture.md`; coordinating with active `codex-task103-...` session to avoid clobber.
|