mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-04-01 06:12:07 -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:
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-22 21:25'
|
||||
updated_date: '2026-03-24 06:44'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- stats
|
||||
- immersion-tracker
|
||||
@@ -21,6 +21,7 @@ references:
|
||||
- >-
|
||||
/Users/sudacode/projects/japanese/SubMiner/src/core/services/immersion-tracker-service.test.ts
|
||||
priority: medium
|
||||
ordinal: 178500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-26 03:59'
|
||||
updated_date: '2026-03-26 04:01'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- review-comments
|
||||
- coderabbit
|
||||
@@ -18,6 +18,7 @@ references:
|
||||
- >-
|
||||
/Users/sudacode/projects/japanese/SubMiner/src/main/runtime/youtube-playback-launch.ts
|
||||
priority: medium
|
||||
ordinal: 177500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-26 04:30'
|
||||
updated_date: '2026-03-26 04:31'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- review-comments
|
||||
- coderabbit
|
||||
@@ -13,6 +13,7 @@ dependencies: []
|
||||
references:
|
||||
- /Users/sudacode/projects/japanese/SubMiner/src/main.ts
|
||||
priority: medium
|
||||
ordinal: 176500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -4,7 +4,7 @@ title: Introduce domain type entrypoints and shrink src/types.ts import surface
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-26 20:49'
|
||||
updated_date: '2026-03-27 00:14'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- tech-debt
|
||||
- types
|
||||
@@ -18,6 +18,7 @@ references:
|
||||
- docs/architecture/README.md
|
||||
parent_task_id: TASK-238
|
||||
priority: medium
|
||||
ordinal: 174500
|
||||
---
|
||||
|
||||
## Description
|
||||
@@ -27,7 +28,6 @@ priority: medium
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
<!-- 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] #2 `src/types.ts` becomes a thinner compatibility layer or barrel instead of the sole source of truth for every shared type.
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
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
|
||||
updated_date: '2026-03-27 00:20'
|
||||
assignee: []
|
||||
created_date: '2026-03-26 20:49'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- tech-debt
|
||||
- runtime
|
||||
@@ -19,6 +19,7 @@ references:
|
||||
- docs/architecture/README.md
|
||||
parent_task_id: TASK-238
|
||||
priority: medium
|
||||
ordinal: 173500
|
||||
---
|
||||
|
||||
## Description
|
||||
@@ -28,7 +29,6 @@ priority: medium
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
<!-- AC:BEGIN -->
|
||||
- [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.
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-26 20:49'
|
||||
updated_date: '2026-03-27 00:00'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- tech-debt
|
||||
- stats
|
||||
@@ -20,6 +20,7 @@ references:
|
||||
- src/core/services/immersion-tracker-service.ts
|
||||
parent_task_id: TASK-238
|
||||
priority: medium
|
||||
ordinal: 175500
|
||||
---
|
||||
|
||||
## Description
|
||||
@@ -29,7 +30,6 @@ priority: medium
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
<!-- AC:BEGIN -->
|
||||
- [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.
|
||||
|
||||
@@ -4,7 +4,7 @@ title: Extract remaining inline runtime logic and composer gaps from src/main.ts
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-27 00:00'
|
||||
updated_date: '2026-03-27 22:13'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- tech-debt
|
||||
- runtime
|
||||
@@ -24,6 +24,7 @@ references:
|
||||
- src/main/runtime/composers
|
||||
parent_task_id: TASK-238
|
||||
priority: high
|
||||
ordinal: 172500
|
||||
---
|
||||
|
||||
## Description
|
||||
@@ -33,7 +34,6 @@ priority: high
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
<!-- AC:BEGIN -->
|
||||
- [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`.
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
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
|
||||
assignee: []
|
||||
created_date: '2026-03-27 00:00'
|
||||
updated_date: '2026-03-27 22:45'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- tech-debt
|
||||
- runtime
|
||||
@@ -21,6 +21,7 @@ references:
|
||||
- src/main/runtime/composers
|
||||
parent_task_id: TASK-238
|
||||
priority: high
|
||||
ordinal: 171500
|
||||
---
|
||||
|
||||
## Description
|
||||
@@ -30,7 +31,6 @@ After the remaining inline runtime logic and composer gaps are extracted, `src/m
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
<!-- AC:BEGIN -->
|
||||
- [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.
|
||||
|
||||
@@ -4,7 +4,7 @@ title: Fix stats server Bun fallback in coverage lane
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-29 07:31'
|
||||
updated_date: '2026-03-29 07:37'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- ci
|
||||
- bug
|
||||
@@ -13,6 +13,7 @@ dependencies: []
|
||||
references:
|
||||
- 'PR #36'
|
||||
priority: high
|
||||
ordinal: 170500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -4,13 +4,14 @@ title: Migrate Discord Rich Presence to maintained RPC wrapper
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-29 08:17'
|
||||
updated_date: '2026-03-29 08:22'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- dependency
|
||||
- discord
|
||||
- presence
|
||||
dependencies: []
|
||||
priority: medium
|
||||
ordinal: 169500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,13 +5,14 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-29 10:01'
|
||||
updated_date: '2026-03-29 10:10'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels: []
|
||||
dependencies: []
|
||||
references:
|
||||
- src/core/services/subtitle-cue-parser.ts
|
||||
- src/renderer/modals/subtitle-sidebar.ts
|
||||
- src/core/services/subtitle-cue-parser.test.ts
|
||||
ordinal: 168500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -4,7 +4,7 @@ title: Fix macOS visible overlay toggle getting immediately restored
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-29 10:03'
|
||||
updated_date: '2026-03-29 22:14'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels: []
|
||||
dependencies: []
|
||||
references:
|
||||
@@ -13,6 +13,7 @@ references:
|
||||
- /Users/sudacode/projects/japanese/SubMiner/src/core/services/cli-command.ts
|
||||
- >-
|
||||
/Users/sudacode/projects/japanese/SubMiner/src/main/overlay-visibility-runtime.ts
|
||||
ordinal: 165500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -4,7 +4,7 @@ title: Fix AniList token persistence on setup login
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-29 10:08'
|
||||
updated_date: '2026-03-29 19:42'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- anilist
|
||||
- bug
|
||||
@@ -15,6 +15,7 @@ documentation:
|
||||
- src/main/runtime/anilist-token-refresh.ts
|
||||
- docs-site/anilist-integration.md
|
||||
priority: high
|
||||
ordinal: 166500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- '@codex'
|
||||
created_date: '2026-03-29 10:10'
|
||||
updated_date: '2026-03-29 10:23'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- bug
|
||||
- macos
|
||||
@@ -24,6 +24,7 @@ references:
|
||||
- >-
|
||||
/Users/sudacode/projects/japanese/SubMiner/src/renderer/overlay-mouse-ignore.test.ts
|
||||
priority: high
|
||||
ordinal: 167500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -4,11 +4,12 @@ title: 'Docs: add subtitle sidebar and Jimaku integration pages'
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-29 22:36'
|
||||
updated_date: '2026-03-29 22:38'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- docs
|
||||
dependencies: []
|
||||
priority: medium
|
||||
ordinal: 164500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -4,13 +4,14 @@ title: Harden AUR publish release step against transient SSH failures
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-29 23:46'
|
||||
updated_date: '2026-03-29 23:49'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- release
|
||||
- ci
|
||||
- aur
|
||||
dependencies: []
|
||||
priority: high
|
||||
ordinal: 163500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-30 01:59'
|
||||
updated_date: '2026-03-30 02:03'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels: []
|
||||
dependencies: []
|
||||
references:
|
||||
@@ -14,6 +14,7 @@ references:
|
||||
- /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/media-generator.ts
|
||||
ordinal: 162500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-30 02:10'
|
||||
updated_date: '2026-03-30 02:20'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- bug
|
||||
- anilist
|
||||
@@ -17,6 +17,7 @@ references:
|
||||
- >-
|
||||
/Users/sudacode/projects/japanese/SubMiner/src/main/runtime/anilist-token-refresh.ts
|
||||
priority: high
|
||||
ordinal: 161500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
---
|
||||
id: TASK-255
|
||||
title: Add overlay playlist browser modal for sibling video files and mpv queue
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee:
|
||||
- '@codex'
|
||||
created_date: '2026-03-30 05:46'
|
||||
updated_date: '2026-03-31 05:59'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- feature
|
||||
- overlay
|
||||
- mpv
|
||||
- launcher
|
||||
dependencies: []
|
||||
ordinal: 180500
|
||||
---
|
||||
|
||||
## Description
|
||||
@@ -22,10 +23,10 @@ Add an in-session overlay modal that opens from a keybinding during active playb
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [ ] #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.
|
||||
- [ ] #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] #1 An overlay modal can be opened during active playback from a dedicated keybinding and closed without disrupting existing modal behavior.
|
||||
- [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.
|
||||
- [x] #3 The modal shows the active mpv playlist/queue with enough metadata to identify the current item and queued order.
|
||||
- [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] #6 Feature coverage includes automated tests for ordering/playlist behavior and docs or shortcut/help updates for the new modal.
|
||||
<!-- 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 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 -->
|
||||
|
||||
@@ -5,13 +5,14 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-30 06:04'
|
||||
updated_date: '2026-03-30 06:12'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- bug
|
||||
- texthooker
|
||||
- websocket
|
||||
dependencies: []
|
||||
priority: medium
|
||||
ordinal: 160500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-30 06:15'
|
||||
updated_date: '2026-03-30 06:17'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- bug
|
||||
- texthooker
|
||||
@@ -13,6 +13,7 @@ labels:
|
||||
- startup
|
||||
dependencies: []
|
||||
priority: high
|
||||
ordinal: 159500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -5,7 +5,7 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-30 06:25'
|
||||
updated_date: '2026-03-30 06:26'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- bug
|
||||
- texthooker
|
||||
@@ -14,6 +14,7 @@ labels:
|
||||
- startup
|
||||
dependencies: []
|
||||
priority: high
|
||||
ordinal: 158500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -4,13 +4,14 @@ title: Fix integrated --start --texthooker startup skipping texthooker server
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-30 06:48'
|
||||
updated_date: '2026-03-30 06:56'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- bug
|
||||
- texthooker
|
||||
- startup
|
||||
dependencies: []
|
||||
priority: high
|
||||
ordinal: 157500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -7,7 +7,7 @@ status: Done
|
||||
assignee:
|
||||
- '@codex'
|
||||
created_date: '2026-03-31 00:58'
|
||||
updated_date: '2026-03-31 01:01'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- bug
|
||||
- macos
|
||||
@@ -27,6 +27,7 @@ references:
|
||||
documentation:
|
||||
- docs/workflow/verification.md
|
||||
priority: high
|
||||
ordinal: 156500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
---
|
||||
id: TASK-261
|
||||
title: Fix immersion tracker SQLite timestamp truncation
|
||||
status: In Progress
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-03-31 01:45'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- immersion-tracker
|
||||
- sqlite
|
||||
@@ -12,7 +13,7 @@ dependencies: []
|
||||
references:
|
||||
- src/core/services/immersion-tracker
|
||||
priority: medium
|
||||
ordinal: 1200
|
||||
ordinal: 179500
|
||||
---
|
||||
|
||||
## Description
|
||||
@@ -23,7 +24,17 @@ Current-epoch millisecond values are being truncated by the libsql driver when b
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [ ] #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
|
||||
- [ ] #3 Regression tests cover the destroyed-session, startup backfill, and distinct-day/distinct-video lifetime semantics
|
||||
- [x] #1 Current-epoch millisecond timestamps persist correctly in session, telemetry, lifetime, and rollup tables
|
||||
- [x] #2 Startup backfill and destroy/finalize flows keep retained sessions and lifetime summaries consistent
|
||||
- [x] #3 Regression tests cover the destroyed-session, startup backfill, and distinct-day/distinct-video lifetime semantics
|
||||
<!-- 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 -->
|
||||
|
||||
@@ -5,11 +5,12 @@ status: Done
|
||||
assignee:
|
||||
- codex
|
||||
created_date: '2026-03-31 19:03'
|
||||
updated_date: '2026-03-31 19:05'
|
||||
updated_date: '2026-03-31 19:37'
|
||||
labels:
|
||||
- bug
|
||||
- anilist
|
||||
dependencies: []
|
||||
ordinal: 155500
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
Reference in New Issue
Block a user