mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 06:22:45 -08:00
chore(workflow): sync backlog state and subagent coordination
Capture backlog task lifecycle updates, archive TASK-34, and add planning artifacts for recent config work. Update docs sweep scripts and AGENTS guidance to use sharded docs/subagents coordination metadata.
This commit is contained in:
@@ -5,7 +5,6 @@
|
||||
* Copy to $XDG_CONFIG_HOME/SubMiner/config.jsonc (or ~/.config/SubMiner/config.jsonc) and edit as needed.
|
||||
*/
|
||||
{
|
||||
|
||||
// ==========================================
|
||||
// Overlay Auto-Start
|
||||
// When overlay connects to mpv, automatically show overlay and hide mpv subtitles.
|
||||
@@ -24,7 +23,7 @@
|
||||
// Control whether browser opens automatically for texthooker.
|
||||
// ==========================================
|
||||
"texthooker": {
|
||||
"openBrowser": true
|
||||
"openBrowser": true,
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -34,7 +33,7 @@
|
||||
// ==========================================
|
||||
"websocket": {
|
||||
"enabled": "auto",
|
||||
"port": 6677
|
||||
"port": 6677,
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -43,7 +42,7 @@
|
||||
// Set to debug for full runtime diagnostics.
|
||||
// ==========================================
|
||||
"logging": {
|
||||
"level": "info"
|
||||
"level": "info",
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -56,15 +55,13 @@
|
||||
"enabled": false,
|
||||
"url": "http://127.0.0.1:8765",
|
||||
"pollingRate": 3000,
|
||||
"tags": [
|
||||
"SubMiner"
|
||||
],
|
||||
"tags": ["SubMiner"],
|
||||
"fields": {
|
||||
"audio": "ExpressionAudio",
|
||||
"image": "Picture",
|
||||
"sentence": "Sentence",
|
||||
"miscInfo": "MiscInfo",
|
||||
"translation": "SelectionText"
|
||||
"translation": "SelectionText",
|
||||
},
|
||||
"ai": {
|
||||
"enabled": false,
|
||||
@@ -73,7 +70,7 @@
|
||||
"model": "openai/gpt-4o-mini",
|
||||
"baseUrl": "https://openrouter.ai/api",
|
||||
"targetLanguage": "English",
|
||||
"systemPrompt": "You are a translation engine. Return only the translated text with no explanations."
|
||||
"systemPrompt": "You are a translation engine. Return only the translated text with no explanations.",
|
||||
},
|
||||
"media": {
|
||||
"generateAudio": true,
|
||||
@@ -86,7 +83,7 @@
|
||||
"animatedCrf": 35,
|
||||
"audioPadding": 0.5,
|
||||
"fallbackDuration": 3,
|
||||
"maxMediaDuration": 30
|
||||
"maxMediaDuration": 30,
|
||||
},
|
||||
"behavior": {
|
||||
"overwriteAudio": true,
|
||||
@@ -94,7 +91,7 @@
|
||||
"mediaInsertMode": "append",
|
||||
"highlightWord": true,
|
||||
"notificationType": "osd",
|
||||
"autoUpdateNewCards": true
|
||||
"autoUpdateNewCards": true,
|
||||
},
|
||||
"nPlusOne": {
|
||||
"highlightEnabled": false,
|
||||
@@ -103,22 +100,20 @@
|
||||
"decks": [],
|
||||
"minSentenceWords": 3,
|
||||
"nPlusOne": "#c6a0f6",
|
||||
"knownWord": "#a6da95"
|
||||
"knownWord": "#a6da95",
|
||||
},
|
||||
"metadata": {
|
||||
"pattern": "[SubMiner] %f (%t)"
|
||||
"pattern": "[SubMiner] %f (%t)",
|
||||
},
|
||||
"isLapis": {
|
||||
"enabled": false,
|
||||
"sentenceCardModel": "Japanese sentences",
|
||||
"sentenceCardSentenceField": "Sentence",
|
||||
"sentenceCardAudioField": "SentenceAudio"
|
||||
},
|
||||
"isKiku": {
|
||||
"enabled": false,
|
||||
"fieldGrouping": "disabled",
|
||||
"deleteDuplicateInAuto": true
|
||||
}
|
||||
"deleteDuplicateInAuto": true,
|
||||
},
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -142,7 +137,7 @@
|
||||
"toggleSecondarySub": "CommandOrControl+Shift+V",
|
||||
"markAudioCard": "CommandOrControl+Shift+A",
|
||||
"openRuntimeOptions": "CommandOrControl+Shift+O",
|
||||
"openJimaku": "Ctrl+Shift+J"
|
||||
"openJimaku": "Ctrl+Shift+J",
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -152,7 +147,7 @@
|
||||
// This edit-mode shortcut is fixed and is not currently configurable.
|
||||
// ==========================================
|
||||
"invisibleOverlay": {
|
||||
"startupVisibility": "platform-default"
|
||||
"startupVisibility": "platform-default",
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -183,7 +178,7 @@
|
||||
"N2": "#f5a97f",
|
||||
"N3": "#f9e2af",
|
||||
"N4": "#a6e3a1",
|
||||
"N5": "#8aadf4"
|
||||
"N5": "#8aadf4",
|
||||
},
|
||||
"frequencyDictionary": {
|
||||
"enabled": false,
|
||||
@@ -191,13 +186,7 @@
|
||||
"topX": 1000,
|
||||
"mode": "single",
|
||||
"singleColor": "#f5a97f",
|
||||
"bandedColors": [
|
||||
"#ed8796",
|
||||
"#f5a97f",
|
||||
"#f9e2af",
|
||||
"#a6e3a1",
|
||||
"#8aadf4"
|
||||
]
|
||||
"bandedColors": ["#ed8796", "#f5a97f", "#f9e2af", "#a6e3a1", "#8aadf4"],
|
||||
},
|
||||
"secondary": {
|
||||
"fontSize": 24,
|
||||
@@ -205,8 +194,8 @@
|
||||
"backgroundColor": "transparent",
|
||||
"fontWeight": "normal",
|
||||
"fontStyle": "normal",
|
||||
"fontFamily": "Noto Sans CJK JP Regular, Noto Sans CJK JP, Arial Unicode MS, Arial, sans-serif"
|
||||
}
|
||||
"fontFamily": "Noto Sans CJK JP Regular, Noto Sans CJK JP, Arial Unicode MS, Arial, sans-serif",
|
||||
},
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -218,7 +207,7 @@
|
||||
"secondarySub": {
|
||||
"secondarySubLanguages": [],
|
||||
"autoLoadSecondarySub": false,
|
||||
"defaultMode": "hover"
|
||||
"defaultMode": "hover",
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -229,7 +218,7 @@
|
||||
"defaultMode": "auto",
|
||||
"alass_path": "",
|
||||
"ffsubsync_path": "",
|
||||
"ffmpeg_path": ""
|
||||
"ffmpeg_path": "",
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -237,7 +226,7 @@
|
||||
// Initial vertical subtitle position from the bottom.
|
||||
// ==========================================
|
||||
"subtitlePosition": {
|
||||
"yPercent": 10
|
||||
"yPercent": 10,
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -247,7 +236,7 @@
|
||||
"jimaku": {
|
||||
"apiBaseUrl": "https://jimaku.cc",
|
||||
"languagePreference": "ja",
|
||||
"maxEntryResults": 10
|
||||
"maxEntryResults": 10,
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -258,10 +247,7 @@
|
||||
"mode": "automatic",
|
||||
"whisperBin": "",
|
||||
"whisperModel": "",
|
||||
"primarySubLanguages": [
|
||||
"ja",
|
||||
"jpn"
|
||||
]
|
||||
"primarySubLanguages": ["ja", "jpn"],
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -270,7 +256,7 @@
|
||||
// ==========================================
|
||||
"anilist": {
|
||||
"enabled": false,
|
||||
"accessToken": ""
|
||||
"accessToken": "",
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -295,16 +281,8 @@
|
||||
"pullPictures": false,
|
||||
"iconCacheDir": "/tmp/subminer-jellyfin-icons",
|
||||
"directPlayPreferred": true,
|
||||
"directPlayContainers": [
|
||||
"mkv",
|
||||
"mp4",
|
||||
"webm",
|
||||
"mov",
|
||||
"flac",
|
||||
"mp3",
|
||||
"aac"
|
||||
],
|
||||
"transcodeVideoCodec": "h264"
|
||||
"directPlayContainers": ["mkv", "mp4", "webm", "mov", "flac", "mp3", "aac"],
|
||||
"transcodeVideoCodec": "h264",
|
||||
},
|
||||
|
||||
// ==========================================
|
||||
@@ -326,7 +304,7 @@
|
||||
"telemetryDays": 30,
|
||||
"dailyRollupsDays": 365,
|
||||
"monthlyRollupsDays": 1825,
|
||||
"vacuumIntervalDays": 7
|
||||
}
|
||||
}
|
||||
"vacuumIntervalDays": 7,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
7
docs/subagents/INDEX.md
Normal file
7
docs/subagents/INDEX.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Subagents Index
|
||||
|
||||
Read first. Keep concise.
|
||||
|
||||
| agent_id | alias | mission | status | file | last_update_utc |
|
||||
| ------------ | -------------- | -------------------------------------------- | --------- | ------------------------------------- | ---------------------- |
|
||||
| `codex-main` | `planner-exec` | `Track config-gated keybinding task request` | `handoff` | `docs/subagents/agents/codex-main.md` | `2026-02-19T08:41:44Z` |
|
||||
27
docs/subagents/agents/TEMPLATE.md
Normal file
27
docs/subagents/agents/TEMPLATE.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Agent: <agent_id>
|
||||
|
||||
- alias: <short label>
|
||||
- mission: <one-line focus>
|
||||
- status: <planning|editing|testing|blocked|handoff|done>
|
||||
- branch: <name>
|
||||
- started_at: <UTC ISO>
|
||||
- heartbeat_minutes: <n>
|
||||
|
||||
## Current Work (newest first)
|
||||
- [YYYY-MM-DDTHH:MM:SSZ] intent: ...
|
||||
- [YYYY-MM-DDTHH:MM:SSZ] progress: ...
|
||||
- [YYYY-MM-DDTHH:MM:SSZ] test: ...
|
||||
- [YYYY-MM-DDTHH:MM:SSZ] handoff: ...
|
||||
|
||||
## Files Touched
|
||||
- `path/to/file`
|
||||
- `path/to/another`
|
||||
|
||||
## Assumptions
|
||||
- ...
|
||||
|
||||
## Open Questions / Blockers
|
||||
- ...
|
||||
|
||||
## Next Step
|
||||
- ...
|
||||
64
docs/subagents/agents/codex-main.md
Normal file
64
docs/subagents/agents/codex-main.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Agent: codex-main
|
||||
|
||||
- alias: planner-exec
|
||||
- mission: Track config-gated keybinding task request
|
||||
- status: handoff
|
||||
- branch: main
|
||||
- started_at: 2026-02-19T08:06:28Z
|
||||
- heartbeat_minutes: 20
|
||||
|
||||
## Current Work (newest first)
|
||||
|
||||
- [2026-02-19T08:41:44Z] handoff: created backlog TASK-84 for config-gated keybindings + disabled-feature integration non-loading (Jellyfin example) with tests/docs acceptance criteria.
|
||||
- [2026-02-19T08:41:22Z] intent: create backlog task for config-gated keybindings so disabled features become no-ops and feature modules (example: Jellyfin) are not loaded when disabled.
|
||||
- [2026-02-19T08:40:53Z] handoff: completed TASK-83 simplification; removed configurable sentence/audio field overrides for Lapis sentence cards and verified.
|
||||
- [2026-02-19T08:40:53Z] test: `bun run build && bun run test:config:dist` -> pass (33/33).
|
||||
- [2026-02-19T08:38:30Z] intent: implement TASK-83 to remove `isLapis.sentenceCardSentenceField` + `isLapis.sentenceCardAudioField` from config/types/docs and force fixed `Sentence`/`SentenceAudio` in integration.
|
||||
- [2026-02-19T08:27:23Z] handoff: completed TASK-69 implementation + verification; backlog TASK-69 set Done with AC/DoD checked.
|
||||
- [2026-02-19T08:27:23Z] test: `bun run build && bun run test:config:dist` -> pass (32/32).
|
||||
- [2026-02-19T08:27:23Z] progress: hardened legacy ankiConnect migration mapping with validators + warnings in `src/config/service.ts`; added invalid/valid legacy regression tests in `src/config/config.test.ts`; updated migration doc note in `docs/configuration.md`.
|
||||
- [2026-02-19T08:23:30Z] intent: user approved TASK-69 plan; start implementation (tests first, then validated legacy mapping, then verify + backlog updates).
|
||||
- [2026-02-19T08:21:11Z] handoff: completed TASK-38 implementation + verification; updated Backlog acceptance checks and notes.
|
||||
- [2026-02-19T08:21:11Z] test: `bun run build && node --test dist/config/config.test.js dist/core/services/app-ready.test.js` -> pass (39/39).
|
||||
- [2026-02-19T08:21:11Z] progress: wired strict startup parse failure handling + warning summary + critical validation dialog path in `src/main.ts` and threaded new app-ready dependency in `src/main/app-lifecycle.ts`.
|
||||
- [2026-02-19T08:20:00Z] intent: read TASK-69 details, write end-to-end implementation plan via writing-plans skill, then execute via executing-plans skill with parallel subagents where possible.
|
||||
- [2026-02-19T08:18:47Z] progress: implemented unknown top-level config warning + `ankiConnect.openRouter` deprecation warning; added coverage in `src/config/config.test.ts`; verification passed (`bun run build && node --test dist/config/config.test.js`).
|
||||
- [2026-02-19T08:10:40Z] intent: implement TASK-38 plan Task 1 scope (`src/config/service.ts`, `src/config/config.test.ts`) for unknown top-level key warnings + `ankiConnect.openRouter` deprecation warning, then run required build+test command.
|
||||
- [2026-02-19T08:09:46Z] progress: wrote plan `docs/plans/2026-02-19-task-38-config-validation-startup.md`, set TASK-38 In Progress, and stored plan in Backlog.
|
||||
- [2026-02-19T08:06:28Z] intent: read backlog/task context, draft implementation plan for TASK-38, then execute with parallel subagents where possible.
|
||||
|
||||
## Files Touched
|
||||
|
||||
- `docs/subagents/INDEX.md`
|
||||
- `docs/subagents/agents/codex-main.md`
|
||||
- `backlog/tasks/task-84 - Gate-feature-dependent-keybindings-behind-config-flags.md`
|
||||
- `src/config/service.ts`
|
||||
- `src/config/config.test.ts`
|
||||
- `src/core/services/startup.ts`
|
||||
- `src/core/services/app-ready.test.ts`
|
||||
- `src/main.ts`
|
||||
- `src/main/app-lifecycle.ts`
|
||||
- `docs/plans/2026-02-19-task-38-config-validation-startup.md`
|
||||
- `docs/plans/2026-02-19-task-69-legacy-config-migration-hardening.md`
|
||||
- `docs/configuration.md`
|
||||
- `src/types.ts`
|
||||
- `src/config/definitions.ts`
|
||||
- `src/anki-integration.ts`
|
||||
- `config.example.jsonc`
|
||||
- `docs/public/config.example.jsonc`
|
||||
- `docs/anki-integration.md`
|
||||
- `docs/mining-workflow.md`
|
||||
- `backlog/tasks/task-83 - Simplify-isLapis-sentence-card-field-config-to-fixed-field-names.md`
|
||||
- `backlog/tasks/task-38 - Add-user-friendly-config-validation-errors-on-startup.md`
|
||||
|
||||
## Assumptions
|
||||
|
||||
- AGENT_ID/AGENT_ALIAS env vars are unset; using stable fallback `codex-main` / `planner-exec` for this run.
|
||||
|
||||
## Open Questions / Blockers
|
||||
|
||||
- none
|
||||
|
||||
## Next Step
|
||||
|
||||
- Await user prioritization / implementation request for TASK-84.
|
||||
1
docs/subagents/archive/.gitkeep
Normal file
1
docs/subagents/archive/.gitkeep
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
6
docs/subagents/collaboration.md
Normal file
6
docs/subagents/collaboration.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user