mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-10-21 05:01:26 -07:00
chore: archive completed backlog tasks and update ordinals
- Move ~35 completed tasks from backlog/tasks/ to backlog/completed/ - Add ordinal fields to remaining in-progress task files - Mark task-255 (playlist browser modal) as Done with final notes
This commit is contained in:
71 files changed
+77
-42
No files matched your search
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -5,7 +5,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-22 21:25'
|
created_date: '2026-03-22 21:25'
|
||||||
updated_date: '2026-03-24 06:44'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- stats
|
- stats
|
||||||
- immersion-tracker
|
- immersion-tracker
|
||||||
@@ -21,6 +21,7 @@ references:
|
|||||||
- >-
|
- >-
|
||||||
/Users/sudacode/projects/japanese/SubMiner/src/core/services/immersion-tracker-service.test.ts
|
/Users/sudacode/projects/japanese/SubMiner/src/core/services/immersion-tracker-service.test.ts
|
||||||
priority: medium
|
priority: medium
|
||||||
|
ordinal: 178500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-26 03:59'
|
created_date: '2026-03-26 03:59'
|
||||||
updated_date: '2026-03-26 04:01'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- review-comments
|
- review-comments
|
||||||
- coderabbit
|
- coderabbit
|
||||||
@@ -18,6 +18,7 @@ references:
|
|||||||
- >-
|
- >-
|
||||||
/Users/sudacode/projects/japanese/SubMiner/src/main/runtime/youtube-playback-launch.ts
|
/Users/sudacode/projects/japanese/SubMiner/src/main/runtime/youtube-playback-launch.ts
|
||||||
priority: medium
|
priority: medium
|
||||||
|
ordinal: 177500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-26 04:30'
|
created_date: '2026-03-26 04:30'
|
||||||
updated_date: '2026-03-26 04:31'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- review-comments
|
- review-comments
|
||||||
- coderabbit
|
- coderabbit
|
||||||
@@ -13,6 +13,7 @@ dependencies: []
|
|||||||
references:
|
references:
|
||||||
- /Users/sudacode/projects/japanese/SubMiner/src/main.ts
|
- /Users/sudacode/projects/japanese/SubMiner/src/main.ts
|
||||||
priority: medium
|
priority: medium
|
||||||
|
ordinal: 176500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+2
-2
@@ -4,7 +4,7 @@ title: Introduce domain type entrypoints and shrink src/types.ts import surface
|
|||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-26 20:49'
|
created_date: '2026-03-26 20:49'
|
||||||
updated_date: '2026-03-27 00:14'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- tech-debt
|
- tech-debt
|
||||||
- types
|
- types
|
||||||
@@ -18,6 +18,7 @@ references:
|
|||||||
- docs/architecture/README.md
|
- docs/architecture/README.md
|
||||||
parent_task_id: TASK-238
|
parent_task_id: TASK-238
|
||||||
priority: medium
|
priority: medium
|
||||||
|
ordinal: 174500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
@@ -27,7 +28,6 @@ priority: medium
|
|||||||
<!-- SECTION:DESCRIPTION:END -->
|
<!-- SECTION:DESCRIPTION:END -->
|
||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
|
|
||||||
<!-- AC:BEGIN -->
|
<!-- AC:BEGIN -->
|
||||||
- [x] #1 Domain-focused type modules exist for the main clusters currently mixed together in `src/types.ts` (for example Anki, config/runtime, subtitle/media, and integration/runtime-option types).
|
- [x] #1 Domain-focused type modules exist for the main clusters currently mixed together in `src/types.ts` (for example Anki, config/runtime, subtitle/media, and integration/runtime-option types).
|
||||||
- [x] #2 `src/types.ts` becomes a thinner compatibility layer or barrel instead of the sole source of truth for every shared type.
|
- [x] #2 `src/types.ts` becomes a thinner compatibility layer or barrel instead of the sole source of truth for every shared type.
|
||||||
|
|||||||
+3
-3
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
id: TASK-238.4
|
id: TASK-238.4
|
||||||
title: Decompose character dictionary runtime into fetch, build, and cache modules
|
title: 'Decompose character dictionary runtime into fetch, build, and cache modules'
|
||||||
status: Done
|
status: Done
|
||||||
updated_date: '2026-03-27 00:20'
|
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-26 20:49'
|
created_date: '2026-03-26 20:49'
|
||||||
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- tech-debt
|
- tech-debt
|
||||||
- runtime
|
- runtime
|
||||||
@@ -19,6 +19,7 @@ references:
|
|||||||
- docs/architecture/README.md
|
- docs/architecture/README.md
|
||||||
parent_task_id: TASK-238
|
parent_task_id: TASK-238
|
||||||
priority: medium
|
priority: medium
|
||||||
|
ordinal: 173500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
@@ -28,7 +29,6 @@ priority: medium
|
|||||||
<!-- SECTION:DESCRIPTION:END -->
|
<!-- SECTION:DESCRIPTION:END -->
|
||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
|
|
||||||
<!-- AC:BEGIN -->
|
<!-- AC:BEGIN -->
|
||||||
- [x] #1 AniList fetch/parsing logic, dictionary-entry building, and snapshot/cache/zip persistence no longer live in one giant file.
|
- [x] #1 AniList fetch/parsing logic, dictionary-entry building, and snapshot/cache/zip persistence no longer live in one giant file.
|
||||||
- [x] #2 The public runtime API stays behavior-compatible for current callers.
|
- [x] #2 The public runtime API stays behavior-compatible for current callers.
|
||||||
|
|||||||
+2
-2
@@ -5,7 +5,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-26 20:49'
|
created_date: '2026-03-26 20:49'
|
||||||
updated_date: '2026-03-27 00:00'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- tech-debt
|
- tech-debt
|
||||||
- stats
|
- stats
|
||||||
@@ -20,6 +20,7 @@ references:
|
|||||||
- src/core/services/immersion-tracker-service.ts
|
- src/core/services/immersion-tracker-service.ts
|
||||||
parent_task_id: TASK-238
|
parent_task_id: TASK-238
|
||||||
priority: medium
|
priority: medium
|
||||||
|
ordinal: 175500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
@@ -29,7 +30,6 @@ priority: medium
|
|||||||
<!-- SECTION:DESCRIPTION:END -->
|
<!-- SECTION:DESCRIPTION:END -->
|
||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
|
|
||||||
<!-- AC:BEGIN -->
|
<!-- AC:BEGIN -->
|
||||||
- [x] #1 Query responsibilities are grouped into focused modules such as library/session detail, vocabulary/kanji detail, and maintenance/cleanup helpers.
|
- [x] #1 Query responsibilities are grouped into focused modules such as library/session detail, vocabulary/kanji detail, and maintenance/cleanup helpers.
|
||||||
- [x] #2 The stats server and immersion tracker service depend on stable exported query surfaces instead of one monolithic file.
|
- [x] #2 The stats server and immersion tracker service depend on stable exported query surfaces instead of one monolithic file.
|
||||||
|
|||||||
+2
-2
@@ -4,7 +4,7 @@ title: Extract remaining inline runtime logic and composer gaps from src/main.ts
|
|||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-27 00:00'
|
created_date: '2026-03-27 00:00'
|
||||||
updated_date: '2026-03-27 22:13'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- tech-debt
|
- tech-debt
|
||||||
- runtime
|
- runtime
|
||||||
@@ -24,6 +24,7 @@ references:
|
|||||||
- src/main/runtime/composers
|
- src/main/runtime/composers
|
||||||
parent_task_id: TASK-238
|
parent_task_id: TASK-238
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 172500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
@@ -33,7 +34,6 @@ priority: high
|
|||||||
<!-- SECTION:DESCRIPTION:END -->
|
<!-- SECTION:DESCRIPTION:END -->
|
||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
|
|
||||||
<!-- AC:BEGIN -->
|
<!-- AC:BEGIN -->
|
||||||
- [x] #1 `runYoutubePlaybackFlow`, `maybeSignalPluginAutoplayReady`, `refreshSubtitlePrefetchFromActiveTrack`, `publishDiscordPresence`, and `handleModalInputStateChange` no longer live as substantial inline logic in `src/main.ts`.
|
- [x] #1 `runYoutubePlaybackFlow`, `maybeSignalPluginAutoplayReady`, `refreshSubtitlePrefetchFromActiveTrack`, `publishDiscordPresence`, and `handleModalInputStateChange` no longer live as substantial inline logic in `src/main.ts`.
|
||||||
- [x] #2 The large subtitle/prefetch, stats startup, and overlay visibility dependency groupings are wrapped behind named composer helpers instead of remaining inline in `src/main.ts`.
|
- [x] #2 The large subtitle/prefetch, stats startup, and overlay visibility dependency groupings are wrapped behind named composer helpers instead of remaining inline in `src/main.ts`.
|
||||||
|
|||||||
+3
-3
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
id: TASK-238.7
|
id: TASK-238.7
|
||||||
title: Split src/main.ts into boot-phase services, runtimes, and handlers
|
title: 'Split src/main.ts into boot-phase services, runtimes, and handlers'
|
||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-27 00:00'
|
created_date: '2026-03-27 00:00'
|
||||||
updated_date: '2026-03-27 22:45'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- tech-debt
|
- tech-debt
|
||||||
- runtime
|
- runtime
|
||||||
@@ -21,6 +21,7 @@ references:
|
|||||||
- src/main/runtime/composers
|
- src/main/runtime/composers
|
||||||
parent_task_id: TASK-238
|
parent_task_id: TASK-238
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 171500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
@@ -30,7 +31,6 @@ After the remaining inline runtime logic and composer gaps are extracted, `src/m
|
|||||||
<!-- SECTION:DESCRIPTION:END -->
|
<!-- SECTION:DESCRIPTION:END -->
|
||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
|
|
||||||
<!-- AC:BEGIN -->
|
<!-- AC:BEGIN -->
|
||||||
- [x] #1 Service instantiation lives in a dedicated boot module instead of a large inline setup block in `src/main.ts`.
|
- [x] #1 Service instantiation lives in a dedicated boot module instead of a large inline setup block in `src/main.ts`.
|
||||||
- [x] #2 Domain runtime composition lives in a dedicated boot module, separate from lifecycle and handler dispatch.
|
- [x] #2 Domain runtime composition lives in a dedicated boot module, separate from lifecycle and handler dispatch.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ title: Fix stats server Bun fallback in coverage lane
|
|||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-29 07:31'
|
created_date: '2026-03-29 07:31'
|
||||||
updated_date: '2026-03-29 07:37'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- ci
|
- ci
|
||||||
- bug
|
- bug
|
||||||
@@ -13,6 +13,7 @@ dependencies: []
|
|||||||
references:
|
references:
|
||||||
- 'PR #36'
|
- 'PR #36'
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 170500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
@@ -4,13 +4,14 @@ title: Migrate Discord Rich Presence to maintained RPC wrapper
|
|||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-29 08:17'
|
created_date: '2026-03-29 08:17'
|
||||||
updated_date: '2026-03-29 08:22'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- dependency
|
- dependency
|
||||||
- discord
|
- discord
|
||||||
- presence
|
- presence
|
||||||
dependencies: []
|
dependencies: []
|
||||||
priority: medium
|
priority: medium
|
||||||
|
ordinal: 169500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
@@ -5,13 +5,14 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-29 10:01'
|
created_date: '2026-03-29 10:01'
|
||||||
updated_date: '2026-03-29 10:10'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels: []
|
labels: []
|
||||||
dependencies: []
|
dependencies: []
|
||||||
references:
|
references:
|
||||||
- src/core/services/subtitle-cue-parser.ts
|
- src/core/services/subtitle-cue-parser.ts
|
||||||
- src/renderer/modals/subtitle-sidebar.ts
|
- src/renderer/modals/subtitle-sidebar.ts
|
||||||
- src/core/services/subtitle-cue-parser.test.ts
|
- src/core/services/subtitle-cue-parser.test.ts
|
||||||
|
ordinal: 168500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+2
-1
@@ -4,7 +4,7 @@ title: Fix macOS visible overlay toggle getting immediately restored
|
|||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-29 10:03'
|
created_date: '2026-03-29 10:03'
|
||||||
updated_date: '2026-03-29 22:14'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels: []
|
labels: []
|
||||||
dependencies: []
|
dependencies: []
|
||||||
references:
|
references:
|
||||||
@@ -13,6 +13,7 @@ references:
|
|||||||
- /Users/sudacode/projects/japanese/SubMiner/src/core/services/cli-command.ts
|
- /Users/sudacode/projects/japanese/SubMiner/src/core/services/cli-command.ts
|
||||||
- >-
|
- >-
|
||||||
/Users/sudacode/projects/japanese/SubMiner/src/main/overlay-visibility-runtime.ts
|
/Users/sudacode/projects/japanese/SubMiner/src/main/overlay-visibility-runtime.ts
|
||||||
|
ordinal: 165500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ title: Fix AniList token persistence on setup login
|
|||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-29 10:08'
|
created_date: '2026-03-29 10:08'
|
||||||
updated_date: '2026-03-29 19:42'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- anilist
|
- anilist
|
||||||
- bug
|
- bug
|
||||||
@@ -15,6 +15,7 @@ documentation:
|
|||||||
- src/main/runtime/anilist-token-refresh.ts
|
- src/main/runtime/anilist-token-refresh.ts
|
||||||
- docs-site/anilist-integration.md
|
- docs-site/anilist-integration.md
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 166500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+2
-1
@@ -5,7 +5,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- '@codex'
|
- '@codex'
|
||||||
created_date: '2026-03-29 10:10'
|
created_date: '2026-03-29 10:10'
|
||||||
updated_date: '2026-03-29 10:23'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
- macos
|
- macos
|
||||||
@@ -24,6 +24,7 @@ references:
|
|||||||
- >-
|
- >-
|
||||||
/Users/sudacode/projects/japanese/SubMiner/src/renderer/overlay-mouse-ignore.test.ts
|
/Users/sudacode/projects/japanese/SubMiner/src/renderer/overlay-mouse-ignore.test.ts
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 167500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
@@ -4,11 +4,12 @@ title: 'Docs: add subtitle sidebar and Jimaku integration pages'
|
|||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-29 22:36'
|
created_date: '2026-03-29 22:36'
|
||||||
updated_date: '2026-03-29 22:38'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- docs
|
- docs
|
||||||
dependencies: []
|
dependencies: []
|
||||||
priority: medium
|
priority: medium
|
||||||
|
ordinal: 164500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+2
-1
@@ -4,13 +4,14 @@ title: Harden AUR publish release step against transient SSH failures
|
|||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-29 23:46'
|
created_date: '2026-03-29 23:46'
|
||||||
updated_date: '2026-03-29 23:49'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- release
|
- release
|
||||||
- ci
|
- ci
|
||||||
- aur
|
- aur
|
||||||
dependencies: []
|
dependencies: []
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 163500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-30 01:59'
|
created_date: '2026-03-30 01:59'
|
||||||
updated_date: '2026-03-30 02:03'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels: []
|
labels: []
|
||||||
dependencies: []
|
dependencies: []
|
||||||
references:
|
references:
|
||||||
@@ -14,6 +14,7 @@ references:
|
|||||||
- /Users/sudacode/projects/japanese/SubMiner/src/anki-integration.ts
|
- /Users/sudacode/projects/japanese/SubMiner/src/anki-integration.ts
|
||||||
- /Users/sudacode/projects/japanese/SubMiner/src/core/services/stats-server.ts
|
- /Users/sudacode/projects/japanese/SubMiner/src/core/services/stats-server.ts
|
||||||
- /Users/sudacode/projects/japanese/SubMiner/src/media-generator.ts
|
- /Users/sudacode/projects/japanese/SubMiner/src/media-generator.ts
|
||||||
|
ordinal: 162500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+2
-1
@@ -5,7 +5,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-30 02:10'
|
created_date: '2026-03-30 02:10'
|
||||||
updated_date: '2026-03-30 02:20'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
- anilist
|
- anilist
|
||||||
@@ -17,6 +17,7 @@ references:
|
|||||||
- >-
|
- >-
|
||||||
/Users/sudacode/projects/japanese/SubMiner/src/main/runtime/anilist-token-refresh.ts
|
/Users/sudacode/projects/japanese/SubMiner/src/main/runtime/anilist-token-refresh.ts
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 161500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+11
-6
@@ -1,17 +1,18 @@
|
|||||||
---
|
---
|
||||||
id: TASK-255
|
id: TASK-255
|
||||||
title: Add overlay playlist browser modal for sibling video files and mpv queue
|
title: Add overlay playlist browser modal for sibling video files and mpv queue
|
||||||
status: In Progress
|
status: Done
|
||||||
assignee:
|
assignee:
|
||||||
- '@codex'
|
- '@codex'
|
||||||
created_date: '2026-03-30 05:46'
|
created_date: '2026-03-30 05:46'
|
||||||
updated_date: '2026-03-31 05:59'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- feature
|
- feature
|
||||||
- overlay
|
- overlay
|
||||||
- mpv
|
- mpv
|
||||||
- launcher
|
- launcher
|
||||||
dependencies: []
|
dependencies: []
|
||||||
|
ordinal: 180500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
@@ -22,10 +23,10 @@ Add an in-session overlay modal that opens from a keybinding during active playb
|
|||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
<!-- AC:BEGIN -->
|
<!-- AC:BEGIN -->
|
||||||
- [ ] #1 An overlay modal can be opened during active playback from a dedicated keybinding and closed without disrupting existing modal behavior.
|
- [x] #1 An overlay modal can be opened during active playback from a dedicated keybinding and closed without disrupting existing modal behavior.
|
||||||
- [ ] #2 The modal shows video files from the current media file's parent directory in best-effort episode order and highlights the current file when present.
|
- [x] #2 The modal shows video files from the current media file's parent directory in best-effort episode order and highlights the current file when present.
|
||||||
- [ ] #3 The modal shows the active mpv playlist/queue with enough metadata to identify the current item and queued order.
|
- [x] #3 The modal shows the active mpv playlist/queue with enough metadata to identify the current item and queued order.
|
||||||
- [ ] #4 The user can add a directory file to the mpv playlist, remove playlist items, and reorder playlist items from the modal using both mouse and keyboard interactions.
|
- [x] #4 The user can add a directory file to the mpv playlist, remove playlist items, and reorder playlist items from the modal using both mouse and keyboard interactions.
|
||||||
- [x] #5 Modal state stays in sync after playlist mutations so the rendered queue reflects mpv's current playlist order.
|
- [x] #5 Modal state stays in sync after playlist mutations so the rendered queue reflects mpv's current playlist order.
|
||||||
- [x] #6 Feature coverage includes automated tests for ordering/playlist behavior and docs or shortcut/help updates for the new modal.
|
- [x] #6 Feature coverage includes automated tests for ordering/playlist behavior and docs or shortcut/help updates for the new modal.
|
||||||
<!-- AC:END -->
|
<!-- AC:END -->
|
||||||
@@ -84,4 +85,8 @@ Split playlist-browser UI row rendering into `src/renderer/modals/playlist-brows
|
|||||||
2026-03-30 latest CodeRabbit remediation on PR #37: switched nowMs() numeric test-clock branch from Math.floor() to Math.trunc() so numeric and string-backed mock clocks agree for negative fractional values. Refactored playlist-browser modal tests onto a shared setup/teardown fixture that restores global window/document descriptors correctly, and added regression coverage that injected globals are deleted when originally absent. Verification: `bun test src/core/services/immersion-tracker/time.test.ts src/renderer/modals/playlist-browser.test.ts`, `bun run typecheck`.
|
2026-03-30 latest CodeRabbit remediation on PR #37: switched nowMs() numeric test-clock branch from Math.floor() to Math.trunc() so numeric and string-backed mock clocks agree for negative fractional values. Refactored playlist-browser modal tests onto a shared setup/teardown fixture that restores global window/document descriptors correctly, and added regression coverage that injected globals are deleted when originally absent. Verification: `bun test src/core/services/immersion-tracker/time.test.ts src/renderer/modals/playlist-browser.test.ts`, `bun run typecheck`.
|
||||||
|
|
||||||
2026-03-30 CodeRabbit follow-up: wrapped the injected-globals cleanup regression in try/finally so restore always runs, and changed the keydown test append mock to return createMutationSnapshot() before exercising Ctrl+ArrowDown. Verified with `bun test src/renderer/modals/playlist-browser.test.ts` and `bun run typecheck`.
|
2026-03-30 CodeRabbit follow-up: wrapped the injected-globals cleanup regression in try/finally so restore always runs, and changed the keydown test append mock to return createMutationSnapshot() before exercising Ctrl+ArrowDown. Verified with `bun test src/renderer/modals/playlist-browser.test.ts` and `bun run typecheck`.
|
||||||
|
|
||||||
|
2026-03-31 assessment: the playlist-browser feature is landed on `main` via `d51e7fe4 Add playlist browser overlay modal (#37)` with runtime, IPC, renderer, keybinding, and changelog/docs coverage present. Verified passes: `bun test src/main/runtime/playlist-browser-runtime.test.ts src/main/runtime/playlist-browser-open.test.ts src/main/runtime/playlist-browser-sort.test.ts src/renderer/handlers/keyboard.test.ts src/core/services/ipc.test.ts src/core/services/ipc-command.test.ts src/config/definitions/domain-registry.test.ts`.
|
||||||
|
|
||||||
|
Remaining action item before close: fix `src/renderer/modals/playlist-browser.test.ts` so the cleanup regression does not assume `globalThis.window` / `globalThis.document` start absent under Bun, rerun the playlist-browser modal lane (and then typecheck/build if you want the full closeout proof), then finalize the task.
|
||||||
<!-- SECTION:NOTES:END -->
|
<!-- SECTION:NOTES:END -->
|
||||||
+2
-1
@@ -5,13 +5,14 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-30 06:04'
|
created_date: '2026-03-30 06:04'
|
||||||
updated_date: '2026-03-30 06:12'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
- texthooker
|
- texthooker
|
||||||
- websocket
|
- websocket
|
||||||
dependencies: []
|
dependencies: []
|
||||||
priority: medium
|
priority: medium
|
||||||
|
ordinal: 160500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+2
-1
@@ -5,7 +5,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-30 06:15'
|
created_date: '2026-03-30 06:15'
|
||||||
updated_date: '2026-03-30 06:17'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
- texthooker
|
- texthooker
|
||||||
@@ -13,6 +13,7 @@ labels:
|
|||||||
- startup
|
- startup
|
||||||
dependencies: []
|
dependencies: []
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 159500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+2
-1
@@ -5,7 +5,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-30 06:25'
|
created_date: '2026-03-30 06:25'
|
||||||
updated_date: '2026-03-30 06:26'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
- texthooker
|
- texthooker
|
||||||
@@ -14,6 +14,7 @@ labels:
|
|||||||
- startup
|
- startup
|
||||||
dependencies: []
|
dependencies: []
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 158500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+2
-1
@@ -4,13 +4,14 @@ title: Fix integrated --start --texthooker startup skipping texthooker server
|
|||||||
status: Done
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-30 06:48'
|
created_date: '2026-03-30 06:48'
|
||||||
updated_date: '2026-03-30 06:56'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
- texthooker
|
- texthooker
|
||||||
- startup
|
- startup
|
||||||
dependencies: []
|
dependencies: []
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 157500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
+2
-1
@@ -7,7 +7,7 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- '@codex'
|
- '@codex'
|
||||||
created_date: '2026-03-31 00:58'
|
created_date: '2026-03-31 00:58'
|
||||||
updated_date: '2026-03-31 01:01'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
- macos
|
- macos
|
||||||
@@ -27,6 +27,7 @@ references:
|
|||||||
documentation:
|
documentation:
|
||||||
- docs/workflow/verification.md
|
- docs/workflow/verification.md
|
||||||
priority: high
|
priority: high
|
||||||
|
ordinal: 156500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
---
|
---
|
||||||
id: TASK-261
|
id: TASK-261
|
||||||
title: Fix immersion tracker SQLite timestamp truncation
|
title: Fix immersion tracker SQLite timestamp truncation
|
||||||
status: In Progress
|
status: Done
|
||||||
assignee: []
|
assignee: []
|
||||||
created_date: '2026-03-31 01:45'
|
created_date: '2026-03-31 01:45'
|
||||||
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- immersion-tracker
|
- immersion-tracker
|
||||||
- sqlite
|
- sqlite
|
||||||
@@ -12,7 +13,7 @@ dependencies: []
|
|||||||
references:
|
references:
|
||||||
- src/core/services/immersion-tracker
|
- src/core/services/immersion-tracker
|
||||||
priority: medium
|
priority: medium
|
||||||
ordinal: 1200
|
ordinal: 179500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
@@ -23,7 +24,17 @@ Current-epoch millisecond values are being truncated by the libsql driver when b
|
|||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
<!-- AC:BEGIN -->
|
<!-- AC:BEGIN -->
|
||||||
- [ ] #1 Current-epoch millisecond timestamps persist correctly in session, telemetry, lifetime, and rollup tables
|
- [x] #1 Current-epoch millisecond timestamps persist correctly in session, telemetry, lifetime, and rollup tables
|
||||||
- [ ] #2 Startup backfill and destroy/finalize flows keep retained sessions and lifetime summaries consistent
|
- [x] #2 Startup backfill and destroy/finalize flows keep retained sessions and lifetime summaries consistent
|
||||||
- [ ] #3 Regression tests cover the destroyed-session, startup backfill, and distinct-day/distinct-video lifetime semantics
|
- [x] #3 Regression tests cover the destroyed-session, startup backfill, and distinct-day/distinct-video lifetime semantics
|
||||||
<!-- AC:END -->
|
<!-- AC:END -->
|
||||||
|
|
||||||
|
## Implementation Notes
|
||||||
|
|
||||||
|
<!-- SECTION:NOTES:BEGIN -->
|
||||||
|
2026-03-31 assessment: epoch-ms timestamp writes now route through `toDbMs()` / `toDbTimestamp()` in `src/core/services/immersion-tracker/query-shared.ts`, which avoids libsql numeric-parameter truncation by binding BigInt/string values before they hit SQLite. The fix is wired through the session, storage/telemetry, lifetime, and rollup-maintenance paths in `src/core/services/immersion-tracker/session.ts`, `src/core/services/immersion-tracker/storage.ts`, `src/core/services/immersion-tracker/lifetime.ts`, and `src/core/services/immersion-tracker/maintenance.ts`.
|
||||||
|
|
||||||
|
Acceptance coverage is present: `bun test src/core/services/immersion-tracker-service.test.ts` passed with explicit regressions for destroy/finalize persistence, startup backfill when retained sessions exist but lifetime tables are empty, startup reconciliation of stale active sessions, `rebuildLifetimeSummaries`, and distinct-day / distinct-video lifetime semantics. `bun test src/core/services/immersion-tracker/time.test.ts src/core/services/immersion-tracker/maintenance.test.ts` also passed.
|
||||||
|
|
||||||
|
Remaining action item before close: fix the two `src/main/runtime/stats-cli-command.test.ts` cleanup-lifetime assertions that currently use Bun-misparsed underscored millisecond literals (`1_710_000_000_000` evaluates to `-2147483648` under Bun 1.3.11), rerun that verification lane, then write the final summary and mark the task Done.
|
||||||
|
<!-- SECTION:NOTES:END -->
|
||||||
+2
-1
@@ -5,11 +5,12 @@ status: Done
|
|||||||
assignee:
|
assignee:
|
||||||
- codex
|
- codex
|
||||||
created_date: '2026-03-31 19:03'
|
created_date: '2026-03-31 19:03'
|
||||||
updated_date: '2026-03-31 19:05'
|
updated_date: '2026-03-31 19:37'
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
- anilist
|
- anilist
|
||||||
dependencies: []
|
dependencies: []
|
||||||
|
ordinal: 155500
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|||||||
Reference in new issue
Block a user