From 1d3f099e4452c15bd2fb5c33e272e4013d49522d Mon Sep 17 00:00:00 2001 From: sudacode Date: Sun, 22 Feb 2026 20:25:55 -0800 Subject: [PATCH] docs: refresh architecture and development docs Update docs content to match current launcher/plugin/runtime structure and fix stale home demo media assets with cache-busted URLs plus poster refresh. Add supporting backlog/subagent tracking records and docs asset regression coverage. --- ...cs-demo-video-thumbnail-cache-staleness.md | 50 +++++++ ...e-doc-content-to-match-current-codebase.md | 33 +++++ ...t-doc-content-to-match-current-codebase.md | 35 +++++ docs/architecture.md | 123 ++++++++++++------ docs/development.md | 57 +++++--- docs/index.assets.test.ts | 14 ++ docs/index.md | 14 +- docs/public/assets/minecard-poster.jpg | Bin 0 -> 124470 bytes docs/subagents/INDEX.md | 4 + ...cture-doc-refresh-20260223T033941Z-d6se.md | 32 +++++ ...pment-docs-review-20260223T034520Z-2ebb.md | 31 +++++ ...video-thumb-cache-20260223T033929Z-k8p2.md | 39 ++++++ ...-maint-guardrails-20260223T033715Z-2a53.md | 46 +++++++ docs/subagents/collaboration.md | 9 ++ 14 files changed, 428 insertions(+), 59 deletions(-) create mode 100644 backlog/tasks/task-112 - Fix-docs-demo-video-thumbnail-cache-staleness.md create mode 100644 backlog/tasks/task-113 - Refresh-architecture-doc-content-to-match-current-codebase.md create mode 100644 backlog/tasks/task-114 - Refresh-development-doc-content-to-match-current-codebase.md create mode 100644 docs/index.assets.test.ts create mode 100644 docs/public/assets/minecard-poster.jpg create mode 100644 docs/subagents/agents/codex-architecture-doc-refresh-20260223T033941Z-d6se.md create mode 100644 docs/subagents/agents/codex-development-docs-review-20260223T034520Z-2ebb.md create mode 100644 docs/subagents/agents/codex-docs-video-thumb-cache-20260223T033929Z-k8p2.md create mode 100644 docs/subagents/agents/opencode-remove-maint-guardrails-20260223T033715Z-2a53.md diff --git a/backlog/tasks/task-112 - Fix-docs-demo-video-thumbnail-cache-staleness.md b/backlog/tasks/task-112 - Fix-docs-demo-video-thumbnail-cache-staleness.md new file mode 100644 index 0000000..f636dfc --- /dev/null +++ b/backlog/tasks/task-112 - Fix-docs-demo-video-thumbnail-cache-staleness.md @@ -0,0 +1,50 @@ +--- +id: TASK-112 +title: Fix docs demo video thumbnail cache staleness +status: Done +assignee: + - codex +created_date: '2026-02-23 03:41' +updated_date: '2026-02-23 03:43' +labels: + - bug + - docs + - media +dependencies: [] +priority: medium +ordinal: 112000 +--- + +## Description + + +Docs home page demo continues to show an old thumbnail after replacing the demo video file in place. The page currently reuses static media URLs (`/assets/minecard.webm`, `/assets/minecard.mp4`, `/assets/demo-poster.jpg`), so browser/CDN cache can keep stale poster/video preview data. + + +## Action Steps + + +1. Add a failing regression check that asserts cache-busted URL usage for docs home demo media references. +2. Update docs home demo media URLs to include a shared asset version token for poster/source/fallback paths. +3. Run the regression check and docs build validation. +4. Record fix notes and move task status to Done. + + +## Acceptance Criteria + +- [x] #1 Docs home video references include a deterministic cache-busting token so direct asset replacement does not serve stale preview data. +- [x] #2 Poster/source/fallback links in the demo block use the same token to avoid mixed old/new media. +- [x] #3 Validation commands for the new regression check and docs build pass. + + +## Implementation Notes + + +- Generated a fresh thumbnail from `docs/public/assets/minecard.webm` into `docs/public/assets/minecard-poster.jpg`. +- Updated `docs/index.md` demo block to use a shared `demoAssetVersion` token across poster, webm/mp4 sources, and gif fallback links. +- Follow-up: regenerated `minecard-poster.jpg` at exact `00:00:12` from the webm and bumped token to `demoAssetVersion = '20260223-2'`. +- Added regression check `docs/index.assets.test.ts` to ensure demo media references keep shared cache-busting URL patterns. +- Validation: + - `bun test docs/index.assets.test.ts` + - `bun run docs:build` + diff --git a/backlog/tasks/task-113 - Refresh-architecture-doc-content-to-match-current-codebase.md b/backlog/tasks/task-113 - Refresh-architecture-doc-content-to-match-current-codebase.md new file mode 100644 index 0000000..5b40fc2 --- /dev/null +++ b/backlog/tasks/task-113 - Refresh-architecture-doc-content-to-match-current-codebase.md @@ -0,0 +1,33 @@ +--- +id: TASK-113 +title: Refresh architecture doc content to match current codebase +status: Done +assignee: + - codex-architecture-doc-refresh +created_date: '2026-02-22 19:39' +updated_date: '2026-02-22 19:44' +labels: + - docs + - architecture +dependencies: [] +priority: low +--- + +## Description + + +User requested a thorough review of the current codebase and `docs/architecture.md`, then updating document content to reflect current implementation details. Mermaid/flow diagrams are explicitly out of scope for this pass. + + +## Acceptance Criteria + +- [x] #1 Architecture content sections align with current source tree/module ownership. +- [x] #2 Service/composer/runtime descriptions are updated for current behavior and module names. +- [x] #3 Mermaid/flow chart sections remain unchanged in this pass. + + +## Notes + +- Reviewed current module ownership across `src/main.ts`, `src/main/runtime/*`, `src/core/services/*`, `src/config/*`, `src/renderer/*`, `launcher/*`, and `plugin/subminer.lua`. +- Updated `docs/architecture.md` content sections only; Mermaid blocks intentionally left untouched. +- Verification: `bun run docs:build` passed. diff --git a/backlog/tasks/task-114 - Refresh-development-doc-content-to-match-current-codebase.md b/backlog/tasks/task-114 - Refresh-development-doc-content-to-match-current-codebase.md new file mode 100644 index 0000000..17bb73e --- /dev/null +++ b/backlog/tasks/task-114 - Refresh-development-doc-content-to-match-current-codebase.md @@ -0,0 +1,35 @@ +--- +id: TASK-114 +title: Refresh development doc content to match current codebase +status: Done +assignee: + - codex-development-docs-review +created_date: '2026-02-23 03:46' +updated_date: '2026-02-23 03:49' +labels: + - docs + - developer-experience +dependencies: [] +priority: medium +--- + +## Description + + +User requested a thorough review of the current codebase and `docs/development.md`, then updates so the page reflects current scripts, architecture, and contributor workflow. + + +## Acceptance Criteria + +- [x] #1 `docs/development.md` commands/tooling sections match current `package.json`, `Makefile`, and active CI lanes. +- [x] #2 Runtime/composition guidance reflects current module ownership and does not reference removed guardrail steps. +- [x] #3 Updated doc builds cleanly via `bun run docs:build`. + + +## Notes + +- Reviewed `docs/development.md` against current `package.json` scripts, `Makefile` targets, launcher/runtime env overrides, and `.github/workflows/ci.yml` gate order. +- Updated setup instructions to use Bun for `vendor/texthooker-ui` and include submodule initialization. +- Added CI-equivalent local test/build/docs command sequence and clarified that subtitle dist tests are currently placeholders. +- Expanded environment-variable coverage (`SUBMINER_ROFI_THEME`, Jimaku/Jellyfin overrides, `SUBMINER_LOG_LEVEL`, `SUBMINER_MPV_LOG`, macOS helper skip flag). +- Verification: `bun run docs:build` passed. diff --git a/docs/architecture.md b/docs/architecture.md index 52fc6db..89095b8 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,6 +1,12 @@ # Architecture -SubMiner uses a service-oriented Electron architecture with a composition-oriented main process and a modular renderer process. +SubMiner is split into three cooperating runtimes: + +- Electron desktop app (`src/`) for overlay/UI/runtime orchestration. +- Launcher CLI (`launcher/`) for mpv/app command workflows. +- mpv Lua plugin (`plugin/subminer.lua`) for player-side controls and IPC handoff. + +Within the desktop app, `src/main.ts` is a composition root that wires small runtime/domain modules plus core services. ## Goals @@ -15,31 +21,52 @@ SubMiner uses a service-oriented Electron architecture with a composition-orient ## Project Structure ```text +launcher/ # Standalone CLI launcher wrapper and mpv helpers + commands/ # Command modules (doctor/config/mpv/jellyfin/playback/app passthrough) + config/ # Launcher config parsers + CLI parser builder + main.ts # Launcher entrypoint and command dispatch +plugin/ + subminer.lua # mpv plugin (auto-start, IPC, AniSkip + hover controls) src/ + main-entry.ts # Background-mode bootstrap wrapper before loading main.js main.ts # Entry point — delegates to runtime composers/domain modules preload.ts # Electron preload bridge types.ts # Shared type definitions - main/ # Composition root modules (extracted from main.ts) - app-lifecycle.ts # Electron lifecycle event registration - cli-runtime.ts # CLI command handling and dispatch - dependencies.ts # Shared dependency builders for IPC/runtime - ipc-mpv-command.ts # MPV command composition helpers - ipc-runtime.ts # IPC channel registration and handlers - overlay-runtime.ts # Overlay window/modal selection and state + main/ # Main-process composition/runtime adapters + app-lifecycle.ts # App lifecycle + app-ready runtime runner factories + cli-runtime.ts # CLI command runtime service adapters + config-validation.ts # Startup/hot-reload config error formatting and fail-fast helpers + dependencies.ts # Shared dependency builders for IPC/runtime services + ipc-runtime.ts # IPC runtime registration wrappers + overlay-runtime.ts # Overlay modal routing + active-window selection overlay-shortcuts-runtime.ts # Overlay keyboard shortcut handling - startup.ts # Startup bootstrap flow (argv/env processing) - startup-lifecycle.ts # App-ready initialization sequence - state.ts # Application runtime state container - subsync-runtime.ts # Subsync command orchestration + overlay-visibility-runtime.ts # Overlay visibility + tracker-driven bounds service + frequency-dictionary-runtime.ts # Frequency dictionary runtime adapter + jlpt-runtime.ts # JLPT dictionary runtime adapter + media-runtime.ts # Media path/title/subtitle-position runtime service + startup.ts # Startup bootstrap dependency builder + startup-lifecycle.ts # Lifecycle runtime runner adapter + state.ts # Application runtime state container + reducer transitions + subsync-runtime.ts # Subsync command runtime adapter runtime/ - composers/ # Composition assembly clusters consumed by main.ts - domains/ # Domain barrel exports for runtime services + composers/ # High-level composition clusters used by main.ts + domains/ # Domain barrel exports (startup/overlay/mpv/jellyfin/...) + registry.ts # Domain registry consumed by main.ts core/ - services/ # ~60 focused service modules (see below) + services/ # Focused runtime services (Electron adapters + pure logic) + anilist/ # AniList token store/update queue/update helpers + immersion-tracker/ # Immersion persistence/session/metadata modules + tokenizer/ # Tokenizer stage modules (selection/enrichment/annotation) utils/ # Pure helpers and coercion/config utilities cli/ # CLI parsing and help output - config/ # Config schema, defaults, validation, template generation + config/ # Config defaults/definitions, loading, parse, resolution pipeline + definitions/ # Domain-specific defaults + option registries + resolve/ # Domain-specific config resolution pipeline stages + shared/ipc/ # Cross-process IPC channel constants + payload validators renderer/ # Overlay renderer (modularized UI/runtime) + handlers/ # Keyboard/mouse interaction modules + modals/ # Jimaku/Kiku/subsync/runtime-options/session-help modals + positioning/ # Invisible-layer layout + offset controllers window-trackers/ # Backend-specific tracker implementations (Hyprland, Sway, X11, macOS) jimaku/ # Jimaku API integration helpers subsync/ # Subtitle sync (alass/ffsubsync) helpers @@ -51,27 +78,32 @@ src/ ### Service Layer (`src/core/services/`) -- **Startup** — `startup-service`, `app-lifecycle-service`, `app-ready-service` -- **Overlay** — `overlay-manager-service`, `overlay-window-service`, `overlay-visibility-service`, `overlay-bridge-service`, `overlay-runtime-init-service`, `overlay-content-measurement-service` -- **Shortcuts** — `shortcut-service`, `overlay-shortcut-service`, `overlay-shortcut-handler`, `shortcut-fallback-service`, `numeric-shortcut-service`, `numeric-shortcut-session-service` -- **MPV** — `mpv-service`, `mpv-control-service`, `mpv-render-metrics-service`, `mpv-transport`, `mpv-protocol`, `mpv-state`, `mpv-properties` -- **IPC** — `ipc-service`, `ipc-command-service`, `runtime-options-ipc-service` -- **Mining** — `mining-service`, `field-grouping-service`, `field-grouping-overlay-service`, `anki-jimaku-service`, `anki-jimaku-ipc-service` -- **Subtitles** — `subtitle-ws-service`, `subtitle-position-service`, `secondary-subtitle-service`, `tokenizer-service` -- **Integrations** — `jimaku-service`, `subsync-service`, `subsync-runner-service`, `texthooker-service`, `yomitan-extension-loader-service`, `yomitan-settings-service` -- **Config** — `runtime-config-service`, `cli-command-service` +- **Overlay/window runtime:** `overlay-manager.ts`, `overlay-window.ts`, `overlay-window-geometry.ts`, `overlay-visibility.ts`, `overlay-bridge.ts`, `overlay-runtime-init.ts`, `overlay-content-measurement.ts`, `overlay-drop.ts` +- **Shortcuts/input:** `shortcut.ts`, `overlay-shortcut.ts`, `overlay-shortcut-handler.ts`, `shortcut-fallback.ts`, `numeric-shortcut.ts` +- **MPV runtime:** `mpv.ts`, `mpv-transport.ts`, `mpv-protocol.ts`, `mpv-properties.ts`, `mpv-render-metrics.ts` +- **Mining + Anki/Jimaku runtime:** `mining.ts`, `field-grouping.ts`, `field-grouping-overlay.ts`, `anki-jimaku.ts`, `anki-jimaku-ipc.ts` +- **Subtitle/token pipeline:** `subtitle-processing-controller.ts`, `subtitle-position.ts`, `subtitle-ws.ts`, `tokenizer.ts` + `tokenizer/*` stage modules +- **Integrations:** `jimaku.ts`, `subsync.ts`, `subsync-runner.ts`, `texthooker.ts`, `jellyfin.ts`, `jellyfin-remote.ts`, `discord-presence.ts`, `yomitan-extension-loader.ts`, `yomitan-settings.ts` +- **Config/runtime controls:** `config-hot-reload.ts`, `runtime-options-ipc.ts`, `cli-command.ts`, `startup.ts` +- **Domain submodules:** `anilist/*` (token/update queue/updater), `immersion-tracker/*` (storage/session/metadata/query/reducer) ### Renderer Layer (`src/renderer/`) -The overlay renderer is split by concern so `renderer.ts` stays focused on bootstrapping, IPC wiring, and module composition. +The renderer keeps `renderer.ts` focused on orchestration. UI behavior is delegated to per-concern modules. ```text src/renderer/ renderer.ts # Entrypoint/orchestration only context.ts # Shared runtime context contract state.ts # Centralized renderer mutable state + error-recovery.ts # Global renderer error boundary + recovery actions + overlay-content-measurement.ts # Reports rendered bounds to main process subtitle-render.ts # Primary/secondary subtitle rendering + style application - positioning.ts # Visible/invisible positioning + mpv metrics layout + positioning.ts # Facade export for positioning controller + positioning/ + controller.ts # Position controller orchestration + invisible-layout*.ts # Invisible layer layout computations + position-state.ts # Position state helpers handlers/ keyboard.ts # Keybindings, chord handling, modal key routing mouse.ts # Hover/drag behavior, selection + observer wiring @@ -79,12 +111,18 @@ src/renderer/ jimaku.ts # Jimaku modal flow kiku.ts # Kiku field-grouping modal flow runtime-options.ts # Runtime options modal flow + session-help.ts # Keyboard shortcuts/help modal flow subsync.ts # Manual subsync modal flow utils/ dom.ts # Required DOM lookups + typed handles platform.ts # Layer/platform capability detection ``` +### Launcher + Plugin Runtimes + +- `launcher/main.ts` dispatches commands through `launcher/commands/*` and shared config readers in `launcher/config/*`. It handles mpv startup, app passthrough, Jellyfin helper commands, and playback handoff. +- `plugin/subminer.lua` runs inside mpv and handles IPC startup checks, overlay toggles, hover-token messages, and AniSkip intro-skip UX. + ## Flow Diagram The main process has three layers: `main.ts` delegates to composition modules that wire together domain services. The renderer runs in a separate Electron process, connected through `preload.ts`. @@ -179,6 +217,12 @@ Composer modules share contract conventions via `src/main/runtime/composers/cont This keeps side effects explicit and makes behavior easy to unit-test with fakes. +Additional conventions in the current code: + +- `main.ts` uses `createMainRuntimeRegistry()` (`src/main/runtime/registry.ts`) to access domain handlers (`startup`, `overlay`, `mpv`, `ipc`, `shortcuts`, `anilist`, `jellyfin`, `mining`) without importing every runtime module directly. +- Domain barrels in `src/main/runtime/domains/*` re-export runtime handlers + main-deps builders, while composers in `src/main/runtime/composers/*` assemble larger runtime clusters. +- Many runtime handlers accept `*MainDeps` objects generated by `createBuild*MainDepsHandler` builders to isolate side effects and keep units testable. + ### IPC Contract + Validation Boundary - Central channel constants live in `src/shared/ipc/contracts.ts` and are consumed by both main (`ipcMain`) and renderer preload (`ipcRenderer`) wiring. @@ -199,9 +243,10 @@ For domains migrated to reducer-style transitions (for example AniList token/que ## Program Lifecycle - **Startup:** `startup.ts` parses CLI args and detects the compositor backend. If `--generate-config` is passed, it writes the template and exits. Otherwise `app-lifecycle.ts` acquires the single-instance lock and registers Electron lifecycle hooks. -- **Initialization:** Once `app.whenReady()` fires, `startup-lifecycle.ts` runs a short critical path first (config reload, keybindings, mpv client, overlay setup, IPC bridge), then schedules non-critical warmups in the background (MeCab availability check, Yomitan extension load, dictionary prewarm, optional Jellyfin remote startup). -- **Runtime:** Event-driven. mpv property changes, IPC messages, CLI commands, and keyboard shortcuts all route through the composition layer to domain services, which update state and broadcast to the renderer. -- **Shutdown:** Electron's `will-quit` triggers service teardown — closes the mpv socket, unregisters shortcuts, stops WebSocket and texthooker servers, destroys the window tracker, and cleans up Anki state. +- **Initialization:** Once `app.whenReady()` fires, `composeAppReadyRuntime()` runs the critical path first (strict config reload, runtime options + keybindings, mpv client creation, overlay/IPC setup). Non-critical warmups are launched asynchronously (`mecab`, `yomitan-extension`, dictionary prewarm, optional Jellyfin remote session). +- **Runtime:** Event-driven. mpv events, IPC messages, CLI commands, overlay shortcuts, hot-reload notifications, and integration callbacks route through runtime handlers/composers, update `AppState`, and broadcast to overlay windows. +- **Overlay window model:** runtime manages three overlay windows: `visible`, `invisible`, and `secondary`. `splitOverlayGeometryForSecondaryBar()` reserves the top 20% for the secondary subtitle bar and routes the remaining area to the active primary overlay layer. +- **Shutdown:** `onWillQuitCleanup` tears down tray + watchers + integrations, stops subtitle/texthooker servers, flushes buffered MPV OSD log writes, closes token/session windows, and stops Jellyfin/Discord runtime services. ```mermaid flowchart TD @@ -252,15 +297,15 @@ flowchart TD - **Better testability:** most behavior can be tested without Electron windows/mpv. - **Better reviewability:** PRs can be scoped to one subsystem. - **Backward compatibility:** CLI flags and IPC channels can remain stable while internals evolve. -- **Extracted composition root:** `main.ts` delegates to focused modules under `src/main/` for startup, lifecycle, IPC, CLI, and domain runtime wiring. -- **Split MPV service layers:** MPV internals are separated into transport (`mpv-transport.ts`), protocol (`mpv-protocol.ts`), state (`mpv-state.ts`), and properties (`mpv-properties.ts`) for maintainability. +- **Runtime registry + domain barrels:** `src/main/runtime/registry.ts` and `src/main/runtime/domains/*` reduce direct fan-in inside `main.ts` while keeping domain ownership explicit. +- **Extracted composition root:** `main.ts` delegates to focused modules under `src/main/` and `src/main/runtime/composers/` for lifecycle, IPC, overlay, mpv, shortcut, and integration wiring. +- **Split MPV service layers:** MPV internals are separated into transport (`mpv-transport.ts`), protocol (`mpv-protocol.ts`), and properties/render metrics modules for maintainability. +- **Config by domain:** defaults, option registries, and resolution are split by domain under `src/config/definitions/*` and `src/config/resolve/*`, keeping config evolution localized. ## Extension Rules -- Add behavior to an existing service in `src/core/services/*` or create a focused composition module in `src/main/` / `src/main/runtime/composers/` — not as ad-hoc logic in `main.ts`. -- Keep service APIs explicit and narrowly scoped. -- Prefer additive changes that preserve existing CLI flags and IPC channel behavior. -- Add/update unit tests for each service extraction or behavior change. -- For cross-cutting changes, extract-first then refactor internals after parity is verified. -- When adding new IPC channels or CLI commands, register them in the appropriate `src/main/` module (`ipc-runtime.ts` for IPC, `cli-runtime.ts` for CLI). -- When adding/changing IPC channels, update `src/shared/ipc/contracts.ts`, validate payloads in `src/shared/ipc/validators.ts`, and add malformed-payload tests. +- Add behavior to an existing service in `src/core/services/*` or create a focused runtime module under `src/main/runtime/*`; avoid ad-hoc logic in `main.ts`. +- Add new cross-process channels in `src/shared/ipc/contracts.ts` first, validate payloads in `src/shared/ipc/validators.ts`, then wire handlers in IPC runtime modules. +- If change spans startup/overlay/mpv/integration wiring, prefer composing through `src/main/runtime/domains/*` + `src/main/runtime/composers/*` rather than direct wiring in `main.ts`. +- Keep service APIs explicit and narrowly scoped, and preserve existing CLI flag / IPC channel behavior unless the change is intentionally breaking. +- Add or update focused tests (including malformed-payload IPC tests) when runtime boundaries or contracts change. diff --git a/docs/development.md b/docs/development.md index ab937f9..3ae6b86 100644 --- a/docs/development.md +++ b/docs/development.md @@ -8,12 +8,15 @@ ## Setup ```bash -git clone https://github.com/ksyasuda/SubMiner.git +git clone --recurse-submodules https://github.com/ksyasuda/SubMiner.git cd SubMiner +# if you cloned without --recurse-submodules: +git submodule update --init --recursive + make deps # or manually: bun install -cd vendor/texthooker-ui && pnpm install --frozen-lockfile +(cd vendor/texthooker-ui && bun install --frozen-lockfile) ``` ## Building @@ -47,6 +50,7 @@ Verify the workflow: ```bash make build-launcher +dist/launcher/subminer --help >/dev/null bash scripts/verify-generated-launcher.sh ``` @@ -56,16 +60,29 @@ bash scripts/verify-generated-launcher.sh bun run dev # builds + launches with --start --dev electron . --start --dev --log-level debug # equivalent Electron launch with verbose logging electron . --background # tray/background mode, minimal default logging +make dev-start # build + launch via Makefile ``` ## Testing +CI-equivalent local gate: + +```bash +bun run tsc --noEmit +bun run test:fast +bun run test:launcher:smoke:src +bun run build +bun run test:smoke:dist +bun run docs:build +``` + +Common focused commands: + ```bash bun run test:config # Source-level config schema/validation tests bun run test:launcher # Launcher regression tests (config discovery + command routing) bun run test:launcher:smoke:src # Launcher e2e smoke: launcher -> mpv IPC -> overlay start/stop wiring bun run test:core # Source-level core regression tests (default lane) -bun run test:subtitle # Subtitle pipeline tests (build + run) bun run test:fast # Source-level config + core lane (no build prerequisite) ``` @@ -80,9 +97,10 @@ bun run build # compile dist artifacts bun run test:smoke:dist # explicit smoke scope for compiled runtime bun run test:config:dist # optional full dist config suite bun run test:core:dist # optional full dist core suite -bun run test:subtitle:dist # optional smoke lane for subtitle dist regressions ``` +`bun run test:subtitle` and `bun run test:subtitle:dist` are currently placeholders and do not run an active suite. + ## Config Generation ```bash @@ -111,6 +129,7 @@ Run `make help` for a full list of targets. Key ones: | Target | Description | | ---------------------- | ---------------------------------------------------------------- | | `make build` | Build platform package for detected OS | +| `make build-launcher` | Generate Bun launcher wrapper at `dist/launcher/subminer` | | `make install` | Install platform artifacts (wrapper, theme, AppImage/app bundle) | | `make install-plugin` | Install mpv Lua plugin and config | | `make deps` | Install JS dependencies (root + texthooker-ui) | @@ -128,17 +147,25 @@ Run `make help` for a full list of targets. Key ones: - Linux packaged desktop launches pass `--background` using electron-builder `build.linux.executableArgs` in `package.json`. - Prefer direct inline deps objects in `src/main/` modules for simple pass-through wiring. - Add a helper/adapter service only when it performs meaningful adaptation, validation, or reuse (not identity mapping). -- See [Architecture](/architecture) for the composition model and extension rules. ## Environment Variables -| Variable | Description | -| --------------------------------- | ---------------------------------------------------------- | -| `SUBMINER_APPIMAGE_PATH` | Override AppImage location for subminer script | -| `SUBMINER_BINARY_PATH` | Alias for `SUBMINER_APPIMAGE_PATH` | -| `SUBMINER_YT_SUBGEN_MODE` | Override `youtubeSubgen.mode` for launcher | -| `SUBMINER_WHISPER_BIN` | Override `youtubeSubgen.whisperBin` for launcher | -| `SUBMINER_WHISPER_MODEL` | Override `youtubeSubgen.whisperModel` for launcher | -| `SUBMINER_YT_SUBGEN_OUT_DIR` | Override generated subtitle output directory | -| `SUBMINER_YT_SUBGEN_AUDIO_FORMAT` | Override extraction format used for whisper fallback | -| `SUBMINER_YT_SUBGEN_KEEP_TEMP` | Set to `1` to keep temporary subtitle-generation workspace | +| Variable | Description | +| ---------------------------------- | ------------------------------------------------------------------------------- | +| `SUBMINER_APPIMAGE_PATH` | Override SubMiner app binary path for launcher playback commands | +| `SUBMINER_BINARY_PATH` | Alias for `SUBMINER_APPIMAGE_PATH` | +| `SUBMINER_ROFI_THEME` | Override rofi theme path for launcher picker | +| `SUBMINER_LOG_LEVEL` | Override app logger level (`debug`, `info`, `warn`, `error`) | +| `SUBMINER_MPV_LOG` | Override mpv/app shared log file path | +| `SUBMINER_YT_SUBGEN_MODE` | Override `youtubeSubgen.mode` for launcher | +| `SUBMINER_WHISPER_BIN` | Override `youtubeSubgen.whisperBin` for launcher | +| `SUBMINER_WHISPER_MODEL` | Override `youtubeSubgen.whisperModel` for launcher | +| `SUBMINER_YT_SUBGEN_OUT_DIR` | Override generated subtitle output directory | +| `SUBMINER_YT_SUBGEN_AUDIO_FORMAT` | Override extraction format used for whisper fallback | +| `SUBMINER_YT_SUBGEN_KEEP_TEMP` | Set to `1` to keep temporary subtitle-generation workspace | +| `SUBMINER_JIMAKU_API_KEY` | Override Jimaku API key for launcher subtitle downloads | +| `SUBMINER_JIMAKU_API_KEY_COMMAND` | Command used to resolve Jimaku API key at runtime | +| `SUBMINER_JIMAKU_API_BASE_URL` | Override Jimaku API base URL | +| `SUBMINER_JELLYFIN_ACCESS_TOKEN` | Override Jellyfin access token (used before stored encrypted session fallback) | +| `SUBMINER_JELLYFIN_USER_ID` | Optional Jellyfin user ID override | +| `SUBMINER_SKIP_MACOS_HELPER_BUILD` | Set to `1` to skip building the macOS helper binary during `bun run build` | diff --git a/docs/index.assets.test.ts b/docs/index.assets.test.ts new file mode 100644 index 0000000..d27bfd4 --- /dev/null +++ b/docs/index.assets.test.ts @@ -0,0 +1,14 @@ +import { expect, test } from 'bun:test'; +import { readFileSync } from 'node:fs'; + +const docsIndexPath = new URL('./index.md', import.meta.url); +const docsIndexContents = readFileSync(docsIndexPath, 'utf8'); + +test('docs demo media uses shared cache-busting asset version token', () => { + expect(docsIndexContents).toMatch(/const demoAssetVersion = ['"][^'"]+['"]/); + expect(docsIndexContents).toContain(':poster="`/assets/minecard-poster.jpg?v=${demoAssetVersion}`"'); + expect(docsIndexContents).toContain(''); + expect(docsIndexContents).toContain(''); + expect(docsIndexContents).toContain(''); + expect(docsIndexContents).toContain('SubMiner demo GIF fallback'); +}); diff --git a/docs/index.md b/docs/index.md index fb85fba..335d430 100644 --- a/docs/index.md +++ b/docs/index.md @@ -67,6 +67,10 @@ features: details: Stream subtitles in real time to browser tools via local WebSocket and keep your stack integrated. --- + +

How it fits together

@@ -102,11 +106,11 @@ features:

See it in action

Subtitles, lookup flow, and card enrichment from a real playback session.

-
- SubMiner demo GIF fallback + + SubMiner demo GIF fallback
diff --git a/docs/public/assets/minecard-poster.jpg b/docs/public/assets/minecard-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1e81392355a7d1a7c99f742181965d68d1f7c6e GIT binary patch literal 124470 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 W`^A<>N5;C;wMcq5!?eYIP5&Qe4k57s literal 0 HcmV?d00001 diff --git a/docs/subagents/INDEX.md b/docs/subagents/INDEX.md index 7782984..1a08d61 100644 --- a/docs/subagents/INDEX.md +++ b/docs/subagents/INDEX.md @@ -90,3 +90,7 @@ Read first. Keep concise. | `codex-overlay-three-window-layout-20260223T021606Z-9z2t` | `codex-overlay-three-window-layout` | `Implement top-anchored secondary subtitle overlay window (20%) plus swappable primary overlay region (80%).` | `handoff` | `docs/subagents/agents/codex-overlay-three-window-layout-20260223T021606Z-9z2t.md` | `2026-02-23T02:44:37Z` | | `opencode-task110-backlog-sync-20260223T025059Z-k3m7` | `opencode-task110-backlog-sync` | `Verify TASK-110 completion state and synchronize backlog metadata with plan-first workflow.` | `handoff` | `docs/subagents/agents/opencode-task110-backlog-sync-20260223T025059Z-k3m7.md` | `2026-02-23T02:53:30Z` | | `codex-docs-page-polish-20260223T025932Z-b7k2` | `codex-docs-page-polish` | `Polish docs landing page and sync public workflow docs with current overlay stack.` | `handoff` | `docs/subagents/agents/codex-docs-page-polish-20260223T025932Z-b7k2.md` | `2026-02-23T03:19:20Z` | +| `opencode-remove-maint-guardrails-20260223T033715Z-2a53` | `opencode-remove-maint-guardrails` | `Remove Maintainability Guardrails docs section and associated guardrail code/commands.` | `handoff` | `docs/subagents/agents/opencode-remove-maint-guardrails-20260223T033715Z-2a53.md` | `2026-02-23T03:40:20Z` | +| `codex-architecture-doc-refresh-20260223T033941Z-d6se` | `codex-architecture-doc-refresh` | `Review repository architecture surfaces and refresh docs/architecture.md content to match current code state.` | `handoff` | `docs/subagents/agents/codex-architecture-doc-refresh-20260223T033941Z-d6se.md` | `2026-02-23T03:44:17Z` | +| `codex-docs-video-thumb-cache-20260223T033929Z-k8p2` | `codex-docs-video-thumb-cache` | `Fix docs landing page demo video thumbnail staleness after direct asset replacement.` | `handoff` | `docs/subagents/agents/codex-docs-video-thumb-cache-20260223T033929Z-k8p2.md` | `2026-02-23T03:44:04Z` | +| `codex-development-docs-review-20260223T034520Z-2ebb` | `codex-development-docs-review` | `Review codebase and refresh docs/development.md to match current project state.` | `done` | `docs/subagents/agents/codex-development-docs-review-20260223T034520Z-2ebb.md` | `2026-02-23T03:49:16Z` | diff --git a/docs/subagents/agents/codex-architecture-doc-refresh-20260223T033941Z-d6se.md b/docs/subagents/agents/codex-architecture-doc-refresh-20260223T033941Z-d6se.md new file mode 100644 index 0000000..10301c2 --- /dev/null +++ b/docs/subagents/agents/codex-architecture-doc-refresh-20260223T033941Z-d6se.md @@ -0,0 +1,32 @@ +# Agent: `codex-architecture-doc-refresh-20260223T033941Z-d6se` + +- alias: `codex-architecture-doc-refresh` +- mission: `Review current runtime/module architecture and update docs/architecture.md content to match real code paths.` +- status: `handoff` +- branch: `main` +- started_at: `2026-02-23T03:39:41Z` +- heartbeat_minutes: `5` + +## Current Work (newest first) +- [2026-02-23T03:44:17Z] handoff: architecture docs refreshed to match current codebase structure/runtime ownership; docs build passed; ready for user review. +- [2026-02-23T03:44:17Z] test: `bun run docs:build` passed. +- [2026-02-23T03:44:17Z] progress: updated `docs/architecture.md` sections for project structure, service layer, renderer layering, lifecycle, composition conventions, and extension rules; mermaid blocks left unchanged. +- [2026-02-23T03:39:41Z] intent: refresh `docs/architecture.md` using direct repo evidence; keep diagrams untouched per user request. +- [2026-02-23T03:39:41Z] progress: loaded `docs/subagents/INDEX.md`, `docs/subagents/collaboration.md`, current `docs/architecture.md`, and source tree inventory. + +## Files Touched +- `docs/subagents/INDEX.md` +- `docs/subagents/collaboration.md` +- `docs/subagents/agents/codex-architecture-doc-refresh-20260223T033941Z-d6se.md` +- `backlog/tasks/task-113 - Refresh-architecture-doc-content-to-match-current-codebase.md` +- `docs/architecture.md` + +## Assumptions +- User wants content accuracy only; mermaid/flow diagrams intentionally left as-is. +- Existing uncommitted guardrail-removal changes are separate work; avoid touching those files. + +## Open Questions / Blockers +- None. + +## Next Step +- Await user follow-up; if requested, apply same drift pass to other docs pages (`docs/development.md`, `docs/mining-workflow.md`). diff --git a/docs/subagents/agents/codex-development-docs-review-20260223T034520Z-2ebb.md b/docs/subagents/agents/codex-development-docs-review-20260223T034520Z-2ebb.md new file mode 100644 index 0000000..26c4330 --- /dev/null +++ b/docs/subagents/agents/codex-development-docs-review-20260223T034520Z-2ebb.md @@ -0,0 +1,31 @@ +# Agent: `codex-development-docs-review-20260223T034520Z-2ebb` + +- alias: `codex-development-docs-review` +- mission: `Review codebase and refresh docs/development.md to match current project state.` +- status: `done` +- branch: `main` +- started_at: `2026-02-23T03:46:06Z` +- heartbeat_minutes: `5` + +## Current Work (newest first) +- [2026-02-23T03:49:16Z] handoff: refreshed `docs/development.md` for current setup/build/test/env workflow; validated with `bun run docs:build`; updated backlog ticket + subagent bookkeeping. +- [2026-02-23T03:48:30Z] test: `bun run docs:build` passed after docs edits (VitePress chunk-size warning only). +- [2026-02-23T03:47:40Z] progress: fixed setup drift (`pnpm` -> `bun`, added submodule init), aligned testing section with CI lanes, corrected subtitle test placeholder wording, expanded env vars to active launcher/runtime overrides. +- [2026-02-23T03:46:06Z] intent: initialize subagent+backlog bookkeeping, then audit `docs/development.md` against actual scripts/tests/runtime layout before editing docs. + +## Files Touched +- `docs/subagents/agents/codex-development-docs-review-20260223T034520Z-2ebb.md` +- `docs/subagents/INDEX.md` +- `docs/subagents/collaboration.md` +- `backlog/tasks/task-114 - Refresh-development-doc-content-to-match-current-codebase.md` +- `docs/development.md` + +## Assumptions +- `Backlog.md` is managed via `backlog/` markdown files in this repo; create a new task ticket for this request. +- Existing dirty worktree entries are from prior sessions; avoid touching unrelated lines/files. + +## Open Questions / Blockers +- None. + +## Next Step +- Await user review/follow-up scope. diff --git a/docs/subagents/agents/codex-docs-video-thumb-cache-20260223T033929Z-k8p2.md b/docs/subagents/agents/codex-docs-video-thumb-cache-20260223T033929Z-k8p2.md new file mode 100644 index 0000000..29a5ae0 --- /dev/null +++ b/docs/subagents/agents/codex-docs-video-thumb-cache-20260223T033929Z-k8p2.md @@ -0,0 +1,39 @@ +# Agent: `codex-docs-video-thumb-cache-20260223T033929Z-k8p2` + +- alias: `codex-docs-video-thumb-cache` +- mission: `Fix docs landing page demo video thumbnail staleness after direct asset replacement` +- status: `handoff` +- branch: `main` +- started_at: `2026-02-23T03:40:48Z` +- heartbeat_minutes: `5` + +## Current Work +- [2026-02-23T03:40:48Z] intent: confirm root cause for stale docs video thumbnail and apply minimal cache-busting/docs fix. +- [2026-02-23T03:40:48Z] plan: touch `docs/index.md`; add regression coverage if lightweight; validate with docs build/targeted test. +- [2026-02-23T03:40:48Z] assumption: stale thumbnail caused by static poster/source URLs reusing identical path after direct file replacement. +- [2026-02-23T03:42:25Z] progress: added failing regression test `docs/index.assets.test.ts` asserting shared cache-busting token across demo media URLs. +- [2026-02-23T03:42:58Z] progress: generated fresh poster from `docs/public/assets/minecard.webm` (`minecard-poster.jpg`) and wired docs video block to shared `demoAssetVersion` tokenized URLs. +- [2026-02-23T03:43:20Z] test: `bun test docs/index.assets.test.ts` passes (1/1). +- [2026-02-23T03:43:35Z] test: `bun run docs:build` passes. +- [2026-02-23T03:43:55Z] handoff: TASK-112 marked Done with implementation notes and validation commands. +- [2026-02-23T03:44:04Z] progress: regenerated `minecard-poster.jpg` from `minecard.webm` at exactly `00:00:12` and bumped `demoAssetVersion` to `20260223-2` to force refresh. +- [2026-02-23T03:44:04Z] test: reran `bun test docs/index.assets.test.ts` (pass). + +## Files Touched +- `docs/subagents/agents/codex-docs-video-thumb-cache-20260223T033929Z-k8p2.md` +- `docs/subagents/INDEX.md` +- `docs/subagents/collaboration.md` +- `backlog/tasks/task-112 - Fix-docs-demo-video-thumbnail-cache-staleness.md` +- `docs/index.assets.test.ts` +- `docs/index.md` +- `docs/public/assets/minecard-poster.jpg` + +## Assumptions +- Browser/CDN cache can keep prior media when URL path remains unchanged. +- Docs home video section in `docs/index.md` is the only requested scope. + +## Open Questions / Blockers +- None. + +## Next Step +- Share fix summary and ask user to hard-refresh docs page once (`Cmd+Shift+R`) to bypass local cache. diff --git a/docs/subagents/agents/opencode-remove-maint-guardrails-20260223T033715Z-2a53.md b/docs/subagents/agents/opencode-remove-maint-guardrails-20260223T033715Z-2a53.md new file mode 100644 index 0000000..cba0138 --- /dev/null +++ b/docs/subagents/agents/opencode-remove-maint-guardrails-20260223T033715Z-2a53.md @@ -0,0 +1,46 @@ +# Agent: `opencode-remove-maint-guardrails-20260223T033715Z-2a53` + +- alias: `opencode-remove-maint-guardrails` +- mission: `Remove Maintainability Guardrails docs section and associated guardrail code/commands.` +- status: `handoff` +- branch: `main` +- started_at: `2026-02-23T03:37:39Z` +- heartbeat_minutes: `5` + +## Current Work (newest first) + +- [2026-02-23T03:40:20Z] handoff: completed TASK-111; removed docs section, package scripts, CI guardrail step, and runtime-cycle/fan-in script code + fixtures; validation (`bun run tsc --noEmit`, `bun run docs:build`) passed. +- [2026-02-23T03:40:03Z] progress: removed `## Maintainability Guardrails` from `docs/development.md`, deleted `check:main-fanin*` and `check:runtime-cycles*` scripts from `package.json`, removed CI fail-fast guardrails step, and deleted associated scripts/fixtures under `scripts/`. +- [2026-02-23T03:37:39Z] intent: initialized session, linked backlog task TASK-111, and preparing scoped removal pass for maintainability guardrails docs and related code. +- [2026-02-23T03:37:39Z] assumptions: removal target is explicit "Maintainability Guardrails" section and direct command/code references tied to it. + +## Files Touched + +- `docs/subagents/INDEX.md` +- `docs/subagents/collaboration.md` +- `docs/subagents/agents/opencode-remove-maint-guardrails-20260223T033715Z-2a53.md` +- `backlog/tasks/task-111 - Remove-Maintainability-Guardrails-docs-section-and-related-guardrail-code.md` (via Backlog MCP) +- `docs/development.md` +- `package.json` +- `.github/workflows/ci.yml` +- `scripts/check-main-runtime-fanin.ts` (deleted) +- `scripts/check-runtime-cycles.ts` (deleted) +- `scripts/check-runtime-cycles.test.ts` (deleted) +- `scripts/fixtures/runtime-cycles/acyclic/entry.ts` (deleted) +- `scripts/fixtures/runtime-cycles/acyclic/feature.ts` (deleted) +- `scripts/fixtures/runtime-cycles/acyclic/utils/index.ts` (deleted) +- `scripts/fixtures/runtime-cycles/cyclic/module-a.ts` (deleted) +- `scripts/fixtures/runtime-cycles/cyclic/module-b.ts` (deleted) +- `scripts/fixtures/runtime-cycles/cyclic/nested/index.ts` (deleted) + +## Assumptions + +- Request targets current docs page section shown in screenshot and associated command/code paths, not unrelated guardrails. + +## Open Questions / Blockers + +- None. + +## Next Step + +- Await user follow-up (optional commit/changelog pass if requested). diff --git a/docs/subagents/collaboration.md b/docs/subagents/collaboration.md index 1013083..635193b 100644 --- a/docs/subagents/collaboration.md +++ b/docs/subagents/collaboration.md @@ -157,3 +157,12 @@ Shared notes. Append-only. - [2026-02-23T02:44:37Z] [codex-overlay-three-window-layout-20260223T021606Z-9z2t|codex-overlay-three-window-layout] backlog sync requested post-commit; updated TASK-110 `updated_date`, added commit reference (`b8f7d5e`), and added final summary block. - [2026-02-23T02:50:59Z] [opencode-task110-backlog-sync-20260223T025059Z-k3m7|opencode-task110-backlog-sync] starting TASK-110 closure verification pass via Backlog MCP + writing-plans/executing-plans workflow; scope backlog metadata validation/sync only unless missing evidence is found. - [2026-02-23T02:53:30Z] [opencode-task110-backlog-sync-20260223T025059Z-k3m7|opencode-task110-backlog-sync] completed verification/sync: recorded closure plan, revalidated commit/code evidence (parallel subagent audits), appended TASK-110 verification note, and confirmed task remains Done with all AC checked. +- [2026-02-23T03:37:39Z] [opencode-remove-maint-guardrails-20260223T033715Z-2a53|opencode-remove-maint-guardrails] starting TASK-111 removal pass: delete docs section "Maintainability Guardrails" and remove associated guardrail command/code references; scope docs/scripts/config only. +- [2026-02-23T03:40:20Z] [opencode-remove-maint-guardrails-20260223T033715Z-2a53|opencode-remove-maint-guardrails] completed TASK-111: removed maintainability guardrails docs section, deleted fan-in/runtime-cycle scripts + fixtures, removed related package scripts and CI step, validated via `bun run tsc --noEmit` and `bun run docs:build`. +- [2026-02-23T03:39:41Z] [codex-architecture-doc-refresh-20260223T033941Z-d6se|codex-architecture-doc-refresh] starting docs drift audit for `docs/architecture.md`; scope is content-only refresh vs current `src/**` architecture (no mermaid/chart edits), avoiding active guardrail-removal files. +- [2026-02-23T03:40:48Z] [codex-docs-video-thumb-cache-20260223T033929Z-k8p2|codex-docs-video-thumb-cache] starting docs bugfix for stale home demo thumbnail after direct video replacement; scope `docs/index.md` plus lightweight regression coverage/backlog linkage only. +- [2026-02-23T03:43:55Z] [codex-docs-video-thumb-cache-20260223T033929Z-k8p2|codex-docs-video-thumb-cache] completed TASK-112: generated `minecard-poster.jpg` from latest webm, switched docs demo media URLs to shared cache-busting token, added `docs/index.assets.test.ts`, and validated with `bun test docs/index.assets.test.ts` + `bun run docs:build`. +- [2026-02-23T03:44:04Z] [codex-docs-video-thumb-cache-20260223T033929Z-k8p2|codex-docs-video-thumb-cache] user follow-up applied: regenerated poster at exact `00:00:12` from `minecard.webm` and bumped docs asset token to `20260223-2` to force static thumbnail refresh. +- [2026-02-23T03:44:17Z] [codex-architecture-doc-refresh-20260223T033941Z-d6se|codex-architecture-doc-refresh] completed architecture drift pass: refreshed `docs/architecture.md` structure/service/composition/lifecycle content against current code (`src`, `launcher`, `plugin`), left mermaid sections untouched, and verified `bun run docs:build`; moved backlog linkage to `TASK-113` to avoid active `TASK-112` collision. +- [2026-02-23T03:46:06Z] [codex-development-docs-review-20260223T034520Z-2ebb|codex-development-docs-review] starting user-requested thorough codebase + `docs/development.md` drift audit; scope docs refresh + verification only, no runtime behavior changes expected. +- [2026-02-23T03:49:16Z] [codex-development-docs-review-20260223T034520Z-2ebb|codex-development-docs-review] completed `docs/development.md` refresh: setup/deps/submodule instructions corrected, CI-parity testing lane documented, placeholder subtitle test status clarified, Makefile reference adjusted, env variable table expanded to active launcher/runtime overrides; `bun run docs:build` passed.