mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
update docs
This commit is contained in:
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex-task103-jellyfin-main-composer-20260222T220441Z-m8p1
|
||||
created_date: '2026-02-22 07:13'
|
||||
updated_date: '2026-02-22 22:48'
|
||||
updated_date: '2026-02-23 02:06'
|
||||
labels:
|
||||
- refactor
|
||||
- maintainability
|
||||
@@ -15,6 +15,7 @@ dependencies:
|
||||
- TASK-94
|
||||
- TASK-97
|
||||
priority: medium
|
||||
ordinal: 100000
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-02-22 07:13'
|
||||
updated_date: '2026-02-22 19:56'
|
||||
updated_date: '2026-02-23 02:06'
|
||||
labels:
|
||||
- refactor
|
||||
- launcher
|
||||
@@ -14,6 +14,7 @@ dependencies:
|
||||
- TASK-81
|
||||
- TASK-102
|
||||
priority: medium
|
||||
ordinal: 103000
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- opencode-task105-unsafe-casts
|
||||
created_date: '2026-02-22 07:13'
|
||||
updated_date: '2026-02-22 21:56'
|
||||
updated_date: '2026-02-23 02:06'
|
||||
labels:
|
||||
- refactor
|
||||
- type-safety
|
||||
@@ -14,6 +14,7 @@ dependencies:
|
||||
- TASK-97
|
||||
- TASK-80
|
||||
priority: medium
|
||||
ordinal: 102000
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- opencode-task106-immersion-modules
|
||||
created_date: '2026-02-22 07:14'
|
||||
updated_date: '2026-02-22 21:58'
|
||||
updated_date: '2026-02-23 02:06'
|
||||
labels:
|
||||
- refactor
|
||||
- maintainability
|
||||
@@ -13,6 +13,7 @@ labels:
|
||||
dependencies:
|
||||
- TASK-95
|
||||
priority: medium
|
||||
ordinal: 101000
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
---
|
||||
id: TASK-109
|
||||
title: Add Discord Rich Presence integration with polished activity card
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee:
|
||||
- opencode
|
||||
created_date: '2026-02-22 19:40'
|
||||
updated_date: '2026-02-23 01:15'
|
||||
updated_date: '2026-02-23 02:06'
|
||||
labels:
|
||||
- feature
|
||||
- discord
|
||||
- presence
|
||||
dependencies: []
|
||||
priority: medium
|
||||
ordinal: 104000
|
||||
---
|
||||
|
||||
## Description
|
||||
@@ -34,11 +35,11 @@ Add optional Discord Rich Presence support so SubMiner can publish current activ
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [ ] #1 Discord Rich Presence can be enabled via config and remains disabled by default.
|
||||
- [ ] #2 Activity card shows clear state/details and updates correctly across playback/session transitions.
|
||||
- [ ] #3 Activity card visuals (assets/text) are polished and consistent with project branding.
|
||||
- [ ] #4 Runtime handles Discord closed/not installed/disconnected without crashes or noisy logs.
|
||||
- [ ] #5 Docs include setup steps (app/client id), config keys, and troubleshooting notes.
|
||||
- [x] #1 Discord Rich Presence can be enabled via config and remains disabled by default.
|
||||
- [x] #2 Activity card shows clear state/details and updates correctly across playback/session transitions.
|
||||
- [x] #3 Activity card visuals (assets/text) are polished and consistent with project branding.
|
||||
- [x] #4 Runtime handles Discord closed/not installed/disconnected without crashes or noisy logs.
|
||||
- [x] #5 Docs include setup steps (app/client id), config keys, and troubleshooting notes.
|
||||
<!-- AC:END -->
|
||||
|
||||
## Implementation Plan
|
||||
@@ -73,7 +74,7 @@ Updated docs/config examples (`docs/configuration.md`, `config.example.jsonc`, `
|
||||
|
||||
## Definition of Done
|
||||
<!-- DOD:BEGIN -->
|
||||
- [ ] #1 Focused tests cover presence payload mapping and lifecycle update behavior.
|
||||
- [ ] #2 Manual validation confirms Discord card appearance/updates for at least one real playback session.
|
||||
- [ ] #3 Build/test/docs gates pass with no regressions.
|
||||
- [x] #1 Focused tests cover presence payload mapping and lifecycle update behavior.
|
||||
- [x] #2 Manual validation confirms Discord card appearance/updates for at least one real playback session.
|
||||
- [x] #3 Build/test/docs gates pass with no regressions.
|
||||
<!-- DOD:END -->
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-02-23 02:16'
|
||||
updated_date: '2026-02-23 02:29'
|
||||
updated_date: '2026-02-23 02:53'
|
||||
labels:
|
||||
- overlay
|
||||
- subtitle
|
||||
@@ -18,7 +18,6 @@ ordinal: 110000
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
|
||||
Implement a 3-window overlay layout:
|
||||
|
||||
- Dedicated secondary subtitle window anchored to top of mpv bounds (max 20% of height).
|
||||
@@ -26,25 +25,31 @@ Implement a 3-window overlay layout:
|
||||
- Invisible overlay window constrained to remaining lower region.
|
||||
|
||||
Secondary subtitle bar must stay independently anchored while visible/invisible overlays swap.
|
||||
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
<!-- AC:BEGIN -->
|
||||
|
||||
- [x] #1 Runtime creates/manages a third overlay window dedicated to secondary subtitles.
|
||||
- [x] #2 Secondary window stays anchored to top region capped at 20% of tracked mpv bounds.
|
||||
- [x] #3 Visible and invisible overlay windows are constrained to remaining lower region.
|
||||
- [x] #4 Secondary subtitle rendering/mode updates reach dedicated top window without duplicate top bars in primary windows.
|
||||
- [x] #5 Focused runtime/core tests cover geometry split + window wiring regressions.
|
||||
|
||||
<!-- AC:END -->
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
<!-- SECTION:PLAN:BEGIN -->
|
||||
Closure verification plan (2026-02-23):
|
||||
1) Re-read TASK-110 via Backlog MCP and confirm Done status + AC/summary/notes completeness.
|
||||
2) Validate evidence commit `b8f7d5e` still matches shipped scope (overlay secondary top bar + primary lower region split).
|
||||
3) Apply backlog metadata sync only if any field is stale/missing; keep status Done.
|
||||
4) Record closure verification note with timestamp and validation outcome.
|
||||
Plan artifact: `docs/plans/2026-02-23-task-110-overlay-closure-verification.md`.
|
||||
<!-- SECTION:PLAN:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
|
||||
- Added new `secondary` overlay window kind and runtime factory wiring, plus manager ownership (`get/setSecondaryWindow`) and bounds setter.
|
||||
- Added geometry splitter `splitOverlayGeometryForSecondaryBar` (20% top secondary, 80% bottom primary), integrated into `updateVisibleOverlayBounds` / `updateInvisibleOverlayBounds` flow.
|
||||
- Main runtime now creates secondary window alongside primary overlays and syncs secondary window visibility with `secondarySubMode`.
|
||||
@@ -55,5 +60,21 @@ Secondary subtitle bar must stay independently anchored while visible/invisible
|
||||
- `bun test src/main/runtime/overlay-window-factory.test.ts src/main/runtime/overlay-window-factory-main-deps.test.ts src/main/runtime/overlay-window-runtime-handlers.test.ts src/renderer/error-recovery.test.ts src/core/services/overlay-window.test.ts`
|
||||
- `bun run build`
|
||||
- `node --test dist/core/services/overlay-manager.test.js`
|
||||
- Commit: `b8f7d5e` (`feat(overlay): split secondary subtitles into dedicated top window`)
|
||||
|
||||
2026-02-23 verification pass: revalidated TASK-110 closure against Backlog finalization criteria. Confirmed status remains Done, all 5 acceptance criteria are checked, implementation notes/final summary are present, and commit `b8f7d5e` still matches shipped scope (secondary top overlay window, 20%/80% geometry split, primary-layer duplicate prevention, focused runtime/core/renderer tests). No additional code changes required.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Implemented the requested 3-window overlay architecture:
|
||||
|
||||
- Secondary subtitles render in a dedicated top overlay window.
|
||||
- Top secondary bar is capped at 20% of mpv bounds.
|
||||
- Visible/invisible overlays are constrained to the lower remaining region.
|
||||
- Secondary mode changes now directly control secondary window visibility.
|
||||
- Primary overlay layers no longer duplicate secondary subtitle rendering.
|
||||
|
||||
All acceptance criteria are complete and merged in commit `b8f7d5e`.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
---
|
||||
id: TASK-88
|
||||
title: Remove MeCab fallback tokenizer and simplify Yomitan token flow
|
||||
status: To Do
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-02-20 00:00'
|
||||
updated_date: '2026-02-23 01:44'
|
||||
labels:
|
||||
- tokenizer
|
||||
- refactor
|
||||
@@ -14,12 +15,15 @@ priority: medium
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
|
||||
Remove the MeCab fallback tokenization path and associated merge-selection complexity in subtitle tokenization. Treat Yomitan parser output as the single source of token boundaries/grouping, and keep only minimal normalization needed for downstream known-word, JLPT, and frequency annotation.
|
||||
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Action Steps
|
||||
|
||||
<!-- SECTION:PLAN:BEGIN -->
|
||||
|
||||
1. Remove MeCab fallback execution from `tokenizeSubtitle` and delete dead fallback-specific branches.
|
||||
2. Remove merge/candidate-selection code that is only needed to reconcile MeCab-vs-Yomitan tokenization strategies.
|
||||
3. Keep Yomitan parsing pipeline with minimal structural token normalization only.
|
||||
@@ -29,18 +33,42 @@ Remove the MeCab fallback tokenization path and associated merge-selection compl
|
||||
<!-- SECTION:PLAN:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
<!-- AC:BEGIN -->
|
||||
- [ ] #1 Subtitle tokenization no longer falls back to MeCab when Yomitan parsing fails.
|
||||
- [ ] #2 Token grouping logic is simplified to rely on Yomitan structure; redundant custom merge-selection logic removed.
|
||||
- [ ] #3 Known-word, JLPT, frequency, and N+1 annotations still work on Yomitan-derived tokens.
|
||||
- [ ] #4 If Yomitan parsing fails, behavior is explicit and tested (for example `tokens: null` without MeCab fallback path).
|
||||
- [ ] #5 Documentation reflects that tokenization flow is Yomitan-first and Yomitan-only.
|
||||
|
||||
- [x] #1 Subtitle tokenization no longer falls back to MeCab when Yomitan parsing fails.
|
||||
- [x] #2 Token grouping logic is simplified to rely on Yomitan structure; redundant custom merge-selection logic removed.
|
||||
- [x] #3 Known-word, JLPT, frequency, and N+1 annotations still work on Yomitan-derived tokens.
|
||||
- [x] #4 If Yomitan parsing fails, behavior is explicit and tested (for example `tokens: null` without MeCab fallback path).
|
||||
- [x] #5 Documentation reflects that tokenization flow is Yomitan-first and Yomitan-only.
|
||||
<!-- AC:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
|
||||
Removed MeCab fallback tokenization from `src/core/services/tokenizer.ts`; `tokenizeSubtitle` now returns `tokens: null` when Yomitan parsing/selecting yields no tokens.
|
||||
|
||||
Simplified parse candidate selection in `src/core/services/tokenizer/parser-selection-stage.ts` to scanning-parser sources only; added null behavior when only `mecab` parse candidates are present.
|
||||
|
||||
Updated tokenizer regression suites to reflect Yomitan-only flow while preserving annotation continuity checks (known-word, JLPT, frequency, N+1) in `src/core/services/tokenizer.test.ts` and `src/core/services/tokenizer/parser-selection-stage.test.ts`.
|
||||
|
||||
Updated docs to remove MeCab fallback positioning and clarify Yomitan-only tokenization in `docs/usage.md` and `docs/troubleshooting.md`.
|
||||
|
||||
Validation run passed:
|
||||
|
||||
- `bun test src/core/services/tokenizer/parser-selection-stage.test.ts src/core/services/tokenizer.test.ts`
|
||||
- `bun test src/core/services/subtitle-processing-controller.test.ts`
|
||||
- `bun run build`
|
||||
- `bun run docs:build`
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Definition of Done
|
||||
|
||||
<!-- DOD:BEGIN -->
|
||||
- [ ] #1 `src/core/services/tokenizer.ts` no longer contains MeCab fallback tokenization branch.
|
||||
- [ ] #2 Tests cover Yomitan-only pipeline and failure behavior regressions.
|
||||
- [ ] #3 Any removed MeCab-only merge helpers are deleted with no unused exports/imports.
|
||||
- [ ] #4 Build and relevant tokenizer/subtitle tests pass.
|
||||
|
||||
- [x] #1 `src/core/services/tokenizer.ts` no longer contains MeCab fallback tokenization branch.
|
||||
- [x] #2 Tests cover Yomitan-only pipeline and failure behavior regressions.
|
||||
- [x] #3 Any removed MeCab-only merge helpers are deleted with no unused exports/imports.
|
||||
- [x] #4 Build and relevant tokenizer/subtitle tests pass.
|
||||
<!-- DOD:END -->
|
||||
|
||||
Reference in New Issue
Block a user