3.3 KiB
id, title, status, assignee, created_date, updated_date, labels, dependencies, priority
| id | title | status | assignee | created_date | updated_date | labels | dependencies | priority |
|---|---|---|---|---|---|---|---|---|
| TASK-86 | Require target path for launcher dictionary command and forward dictionary target to app runtime | Done | 2026-03-03 09:22 | 2026-03-03 09:53 | high |
Description
Change dictionary flow so launcher uses subminer dictionary <file-or-directory> and forwards target to app without playback launch. Keep direct app --dictionary behavior for in-session/mpv-triggered use, adding optional --dictionary-target path override.
Acceptance Criteria
- #1 Launcher
dictionary/dictrequires a target path argument and parses optional log level. - #2 Launcher forwards target to app as
--dictionary-target <path>together with--dictionary. - #3 App CLI parses optional
--dictionary-targetand dictionary command passes it into dictionary runtime. - #4 Dictionary runtime resolves explicit file/directory target for AniList guess flow; falls back to current playback when target is absent.
- #5 Docs/tests are updated for new launcher invocation syntax.
Implementation Notes
Launcher dictionary subcommand now requires a positional target path (subminer dictionary <path> / dict <path>) via commander argument wiring in launcher/config/cli-parser-builder.ts.
Added dictionaryTarget flow in launcher normalization/types and path validation (must be existing local file or directory) in launcher/config/args-normalizer.ts.
Launcher dictionary command now forwards --dictionary --dictionary-target <resolved-path> to app binary in launcher/commands/dictionary-command.ts.
App CLI now parses optional --dictionary-target in src/cli/args.ts; dictionary handler passes target through to runtime in src/core/services/cli-command.ts.
Dictionary runtime now resolves explicit target inputs in src/main/character-dictionary-runtime.ts: file target uses file path/title; directory target selects first video file recursively (fallback to directory name), and still falls back to current playback when target is absent.
Updated context/dependency pass-through for dictionary target argument (src/main.ts, src/main/runtime/cli-command-context-main-deps.ts).
Updated tests/docs for new syntax and forwarding behavior (launcher/main.test.ts, launcher/parse-args.test.ts, launcher/commands/command-modules.test.ts, src/cli/args.test.ts, src/cli/help.test.ts, docs/usage.md, docs/launcher-script.md).
Follow-up noise reduction: dictionary commands now opt into lightweight startup path by extending shouldSkipHeavyStartup in src/main.ts to include initialArgs.dictionary. This skips heavy app-ready initialization (mpv client creation/background warmups/overlay bootstrap) for dictionary CLI runs.
Final Summary
Launcher dictionary flow now uses explicit targets: run subminer dictionary <file-or-directory>. It forwards target to app and performs dictionary generation without depending on currently playing media. Direct app --dictionary remains available for in-session/mpv-triggered workflows, with optional --dictionary-target override support.