From 48f10dbb03c045040f8bb46856ed48b424b83f88 Mon Sep 17 00:00:00 2001 From: sudacode Date: Wed, 18 Mar 2026 02:25:07 -0700 Subject: [PATCH] chore(backlog): maintain task backlog and add changelog fragments - Move completed tasks (85, 117, 118, 155) to backlog/completed/ - Delete superseded task files (166 verification, 172 drilldown) - Add stats dashboard milestone m-1 - Add new tasks (190, 194) - Update task metadata across remaining backlog items - Add changelog fragments for stats, mpv args, and subtitle filtering --- ...ypeScript-pipeline-and-shared-AI-config.md | 0 ...b-release-workflow-publish-step-failure.md | 0 ...Move-user-docs-site-back-into-main-repo.md | 0 ...ve-docs-plausible-analytics-integration.md | 0 backlog/milestones/m-1 - stats-dashboard.md | 8 +++ ...ession-subtitle-streaming-to-texthooker.md | 6 +- ... - Add-native-AI-API-key-secret-storage.md | 6 +- ...ip-end-jump-keybindings-easier-to-reach.md | 4 +- ...lay-shortcuts-to-the-focused-mpv-window.md | 4 +- ...r-dictionary-parity-with-upstream-guide.md | 5 +- ...ing-against-transient-SignPath-failures.md | 4 +- ...-release-v0.5.1-for-Windows-signing-fix.md | 4 +- ...ifact-configuration-in-release-workflow.md | 4 +- ....2-for-SignPath-artifact-config-pinning.md | 4 +- ...cts-and-add-local-unsigned-build-script.md | 4 +- ...5.3-for-unsigned-Windows-release-builds.md | 4 +- ...e-parsing-for-character-dictionary-sync.md | 4 +- ...ter-character-dictionary-sync-completes.md | 4 +- ...er-dictionary-auto-sync-progress-on-OSD.md | 4 +- ...y-auto-sync-non-blocking-during-startup.md | 4 +- ...notations-and-character-dictionary-sync.md | 4 +- ... Forward-overlay-Tab-to-mpv-for-AniSkip.md | 4 +- ...s-plugin-env-binary-override-resolution.md | 4 +- ...dictionary-updates-and-release-guarding.md | 4 +- ...Prettier-cleanliness-after-release-prep.md | 4 +- ...paths-to-canonical-SubMiner-directories.md | 3 +- ...or-authoritative-agentic-runtime-checks.md | 65 ------------------- ...llisions-for-unversioned-release-assets.md | 9 ++- ...evel-immersion-metadata-and-link-videos.md | 1 + ...d-add-stats-cleanup-maintenance-command.md | 12 +--- ...sion-word-and-kanji-occurrence-tracking.md | 1 + ...reen-overlay-layering-and-tracker-flaps.md | 16 +++-- ...wn-into-stats-API-and-vocabulary-drawer.md | 64 ------------------ ...etric-from-Vocabulary-tab-summary-cards.md | 1 + ...-highlights-for-merged-tokenizer-tokens.md | 3 +- ...ck-intentional-Yomitan-lookups-in-stats.md | 4 +- ...-feedback-on-immersion-session-deletion.md | 4 +- ...SQLite-pragmas-and-maintenance-defaults.md | 3 +- ...mand-timeout-for-slow-dashboard-startup.md | 4 +- ...managed-stats-server-lifecycle-commands.md | 4 +- ...w-word-metric-from-session-detail-chart.md | 4 +- ...84 - Stabilize-branch-verification-gate.md | 3 +- ...Clarify-library-stats-word-count-labels.md | 4 +- ...isode-detail-navigation-from-anime-page.md | 4 +- ...-with-expandable-inline-session-details.md | 4 +- ...geted-session-when-opening-media-detail.md | 16 +++-- ...peline-to-use-backend-aggregated-series.md | 15 +++-- ...d-hover-popups-for-session-chart-events.md | 54 +++++++++++++++ ...n-around-download-first-track-selection.md | 34 ++++++++++ ...026-03-18-stats-cross-anime-words-table.md | 4 ++ ...2026-03-18-stats-full-session-timelines.md | 4 ++ .../2026-03-18-stats-mpv-args-passthrough.md | 4 ++ .../2026-03-18-subtitle-noise-filtering.md | 4 ++ 53 files changed, 224 insertions(+), 217 deletions(-) rename backlog/{tasks => completed}/task-117 - Replace-YouTube-subtitle-generation-with-pure-TypeScript-pipeline-and-shared-AI-config.md (100%) rename backlog/{tasks => completed}/task-118 - Fix-GitHub-release-workflow-publish-step-failure.md (100%) rename backlog/{tasks => completed}/task-155 - Move-user-docs-site-back-into-main-repo.md (100%) rename backlog/{tasks => completed}/task-85 - Remove-docs-plausible-analytics-integration.md (100%) create mode 100644 backlog/milestones/m-1 - stats-dashboard.md delete mode 100644 backlog/tasks/task-166 - Harden-SubMiner-change-verification-for-authoritative-agentic-runtime-checks.md delete mode 100644 backlog/tasks/task-172 - Wire-immersion-occurrence-drilldown-into-stats-API-and-vocabulary-drawer.md create mode 100644 backlog/tasks/task-190 - Add-hover-popups-for-session-chart-events.md create mode 100644 backlog/tasks/task-194 - Redesign-YouTube-subtitle-acquisition-around-download-first-track-selection.md create mode 100644 changes/2026-03-18-stats-cross-anime-words-table.md create mode 100644 changes/2026-03-18-stats-full-session-timelines.md create mode 100644 changes/2026-03-18-stats-mpv-args-passthrough.md create mode 100644 changes/2026-03-18-subtitle-noise-filtering.md diff --git a/backlog/tasks/task-117 - Replace-YouTube-subtitle-generation-with-pure-TypeScript-pipeline-and-shared-AI-config.md b/backlog/completed/task-117 - Replace-YouTube-subtitle-generation-with-pure-TypeScript-pipeline-and-shared-AI-config.md similarity index 100% rename from backlog/tasks/task-117 - Replace-YouTube-subtitle-generation-with-pure-TypeScript-pipeline-and-shared-AI-config.md rename to backlog/completed/task-117 - Replace-YouTube-subtitle-generation-with-pure-TypeScript-pipeline-and-shared-AI-config.md diff --git a/backlog/tasks/task-118 - Fix-GitHub-release-workflow-publish-step-failure.md b/backlog/completed/task-118 - Fix-GitHub-release-workflow-publish-step-failure.md similarity index 100% rename from backlog/tasks/task-118 - Fix-GitHub-release-workflow-publish-step-failure.md rename to backlog/completed/task-118 - Fix-GitHub-release-workflow-publish-step-failure.md diff --git a/backlog/tasks/task-155 - Move-user-docs-site-back-into-main-repo.md b/backlog/completed/task-155 - Move-user-docs-site-back-into-main-repo.md similarity index 100% rename from backlog/tasks/task-155 - Move-user-docs-site-back-into-main-repo.md rename to backlog/completed/task-155 - Move-user-docs-site-back-into-main-repo.md diff --git a/backlog/tasks/task-85 - Remove-docs-plausible-analytics-integration.md b/backlog/completed/task-85 - Remove-docs-plausible-analytics-integration.md similarity index 100% rename from backlog/tasks/task-85 - Remove-docs-plausible-analytics-integration.md rename to backlog/completed/task-85 - Remove-docs-plausible-analytics-integration.md diff --git a/backlog/milestones/m-1 - stats-dashboard.md b/backlog/milestones/m-1 - stats-dashboard.md new file mode 100644 index 0000000..e360418 --- /dev/null +++ b/backlog/milestones/m-1 - stats-dashboard.md @@ -0,0 +1,8 @@ +--- +id: m-1 +title: "Stats Dashboard" +--- + +## Description + +Milestone: Stats Dashboard diff --git a/backlog/tasks/task-119 - Add-Jellyfin-remote-session-subtitle-streaming-to-texthooker.md b/backlog/tasks/task-119 - Add-Jellyfin-remote-session-subtitle-streaming-to-texthooker.md index 67a82b8..02c08f5 100644 --- a/backlog/tasks/task-119 - Add-Jellyfin-remote-session-subtitle-streaming-to-texthooker.md +++ b/backlog/tasks/task-119 - Add-Jellyfin-remote-session-subtitle-streaming-to-texthooker.md @@ -4,6 +4,7 @@ title: Add Jellyfin remote-session subtitle streaming to texthooker status: To Do assignee: [] created_date: '2026-03-08 03:46' +updated_date: '2026-03-18 05:27' labels: - jellyfin - texthooker @@ -19,20 +20,17 @@ references: documentation: - 'https://api.jellyfin.org/' priority: medium +ordinal: 1000 --- ## Description - Allow SubMiner to follow subtitles from a separate Jellyfin client session, such as a TV app, without requiring local mpv playback. The feature should fetch the active subtitle stream from Jellyfin, map the remote playback position to subtitle cues, and feed the existing subtitle tokenization plus annotated texthooker websocket pipeline so texthooker-only mode can be used while watching on another device. - ## Acceptance Criteria - - - [ ] #1 User can target a remote Jellyfin session and stream its current subtitle cue into SubMiner's existing subtitle-processing pipeline without launching local Jellyfin playback in mpv. - [ ] #2 Texthooker-only mode can display subtitle updates from the tracked remote Jellyfin session through the existing annotation websocket feed. - [ ] #3 Remote session changes are handled safely: item changes, subtitle-track changes, pause/seek/stop, and session disconnects clear or refresh subtitle state without crashing. diff --git a/backlog/tasks/task-125 - Add-native-AI-API-key-secret-storage.md b/backlog/tasks/task-125 - Add-native-AI-API-key-secret-storage.md index 1e4579d..e501d61 100644 --- a/backlog/tasks/task-125 - Add-native-AI-API-key-secret-storage.md +++ b/backlog/tasks/task-125 - Add-native-AI-API-key-secret-storage.md @@ -4,6 +4,7 @@ title: Add native AI API key secret storage status: To Do assignee: [] created_date: '2026-03-08 07:25' +updated_date: '2026-03-18 05:27' labels: - ai - config @@ -17,20 +18,17 @@ references: /Users/sudacode/projects/japanese/SubMiner/src/core/services/jellyfin-token-store.ts - /Users/sudacode/projects/japanese/SubMiner/src/main.ts priority: medium +ordinal: 2000 --- ## Description - Store the shared AI provider API key using the app's native secret-storage pattern so users do not need to keep the OpenRouter key in config files or shell commands. - ## Acceptance Criteria - - - [ ] #1 Users can configure the shared AI provider without storing the API key in config.jsonc. - [ ] #2 The app persists and reloads the shared AI API key using encrypted native secret storage when available. - [ ] #3 Behavior is defined for existing ai.apiKey and ai.apiKeyCommand configs, including compatibility during migration. diff --git a/backlog/tasks/task-131 - Make-default-overlay-fullscreen-and-AniSkip-end-jump-keybindings-easier-to-reach.md b/backlog/tasks/task-131 - Make-default-overlay-fullscreen-and-AniSkip-end-jump-keybindings-easier-to-reach.md index 7499a86..d1916ba 100644 --- a/backlog/tasks/task-131 - Make-default-overlay-fullscreen-and-AniSkip-end-jump-keybindings-easier-to-reach.md +++ b/backlog/tasks/task-131 - Make-default-overlay-fullscreen-and-AniSkip-end-jump-keybindings-easier-to-reach.md @@ -7,14 +7,14 @@ status: Done assignee: - codex created_date: '2026-03-09 00:00' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - enhancement - overlay - mpv - aniskip dependencies: [] -ordinal: 42500 +ordinal: 43500 --- ## Description diff --git a/backlog/tasks/task-132 - Gate-macOS-overlay-shortcuts-to-the-focused-mpv-window.md b/backlog/tasks/task-132 - Gate-macOS-overlay-shortcuts-to-the-focused-mpv-window.md index 42ec0bf..31d60bd 100644 --- a/backlog/tasks/task-132 - Gate-macOS-overlay-shortcuts-to-the-focused-mpv-window.md +++ b/backlog/tasks/task-132 - Gate-macOS-overlay-shortcuts-to-the-focused-mpv-window.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-08 18:24' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - bug - macos @@ -19,7 +19,7 @@ references: - >- /Users/sudacode/projects/japanese/SubMiner/scripts/get-mpv-window-macos.swift priority: high -ordinal: 52500 +ordinal: 53500 --- ## Description diff --git a/backlog/tasks/task-133 - Improve-AniList-character-dictionary-parity-with-upstream-guide.md b/backlog/tasks/task-133 - Improve-AniList-character-dictionary-parity-with-upstream-guide.md index f45c82c..fc6286c 100644 --- a/backlog/tasks/task-133 - Improve-AniList-character-dictionary-parity-with-upstream-guide.md +++ b/backlog/tasks/task-133 - Improve-AniList-character-dictionary-parity-with-upstream-guide.md @@ -1,11 +1,11 @@ --- id: TASK-133 title: Improve AniList character dictionary parity with upstream guide -status: In Progress +status: To Do assignee: - OpenCode created_date: '2026-03-08 21:06' -updated_date: '2026-03-10 06:18' +updated_date: '2026-03-18 05:27' labels: - dictionary - anilist @@ -24,6 +24,7 @@ documentation: - >- /Users/sudacode/projects/japanese/SubMiner/docs/plans/2026-03-08-anilist-character-dictionary-parity.md priority: high +ordinal: 3000 --- ## Description diff --git a/backlog/tasks/task-134 - Harden-Windows-release-signing-against-transient-SignPath-failures.md b/backlog/tasks/task-134 - Harden-Windows-release-signing-against-transient-SignPath-failures.md index 0ecd071..b34e942 100644 --- a/backlog/tasks/task-134 - Harden-Windows-release-signing-against-transient-SignPath-failures.md +++ b/backlog/tasks/task-134 - Harden-Windows-release-signing-against-transient-SignPath-failures.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-09 00:00' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - ci - release @@ -18,7 +18,7 @@ references: - src/release-workflow.test.ts - 'https://github.com/ksyasuda/SubMiner/actions/runs/22836585479' priority: high -ordinal: 51500 +ordinal: 52500 --- ## Description diff --git a/backlog/tasks/task-135 - Cut-patch-release-v0.5.1-for-Windows-signing-fix.md b/backlog/tasks/task-135 - Cut-patch-release-v0.5.1-for-Windows-signing-fix.md index 68fbdf5..23df28c 100644 --- a/backlog/tasks/task-135 - Cut-patch-release-v0.5.1-for-Windows-signing-fix.md +++ b/backlog/tasks/task-135 - Cut-patch-release-v0.5.1-for-Windows-signing-fix.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-08 20:24' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - release - patch @@ -16,7 +16,7 @@ references: - CHANGELOG.md - release/release-notes.md priority: high -ordinal: 50500 +ordinal: 51500 --- ## Description diff --git a/backlog/tasks/task-136 - Pin-SignPath-artifact-configuration-in-release-workflow.md b/backlog/tasks/task-136 - Pin-SignPath-artifact-configuration-in-release-workflow.md index e21d880..f6d9376 100644 --- a/backlog/tasks/task-136 - Pin-SignPath-artifact-configuration-in-release-workflow.md +++ b/backlog/tasks/task-136 - Pin-SignPath-artifact-configuration-in-release-workflow.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-08 20:41' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - ci - release @@ -18,7 +18,7 @@ references: - build/signpath-windows-artifact-config.xml - src/release-workflow.test.ts priority: high -ordinal: 48500 +ordinal: 49500 --- ## Description diff --git a/backlog/tasks/task-137 - Cut-patch-release-v0.5.2-for-SignPath-artifact-config-pinning.md b/backlog/tasks/task-137 - Cut-patch-release-v0.5.2-for-SignPath-artifact-config-pinning.md index ba8d138..f958d90 100644 --- a/backlog/tasks/task-137 - Cut-patch-release-v0.5.2-for-SignPath-artifact-config-pinning.md +++ b/backlog/tasks/task-137 - Cut-patch-release-v0.5.2-for-SignPath-artifact-config-pinning.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-08 20:44' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - release - patch @@ -16,7 +16,7 @@ references: - CHANGELOG.md - release/release-notes.md priority: high -ordinal: 49500 +ordinal: 50500 --- ## Description diff --git a/backlog/tasks/task-138 - Publish-unsigned-Windows-release-artifacts-and-add-local-unsigned-build-script.md b/backlog/tasks/task-138 - Publish-unsigned-Windows-release-artifacts-and-add-local-unsigned-build-script.md index ca49cfd..7c0fab5 100644 --- a/backlog/tasks/task-138 - Publish-unsigned-Windows-release-artifacts-and-add-local-unsigned-build-script.md +++ b/backlog/tasks/task-138 - Publish-unsigned-Windows-release-artifacts-and-add-local-unsigned-build-script.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-09 00:00' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - release - windows @@ -15,7 +15,7 @@ references: - package.json - src/release-workflow.test.ts priority: high -ordinal: 44500 +ordinal: 45500 --- ## Description diff --git a/backlog/tasks/task-139 - Cut-patch-release-v0.5.3-for-unsigned-Windows-release-builds.md b/backlog/tasks/task-139 - Cut-patch-release-v0.5.3-for-unsigned-Windows-release-builds.md index 6ae9f3e..2253b67 100644 --- a/backlog/tasks/task-139 - Cut-patch-release-v0.5.3-for-unsigned-Windows-release-builds.md +++ b/backlog/tasks/task-139 - Cut-patch-release-v0.5.3-for-unsigned-Windows-release-builds.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-09 00:00' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - release - patch @@ -16,7 +16,7 @@ references: - CHANGELOG.md - release/release-notes.md priority: high -ordinal: 45500 +ordinal: 46500 --- ## Description diff --git a/backlog/tasks/task-140 - Fix-guessit-title-parsing-for-character-dictionary-sync.md b/backlog/tasks/task-140 - Fix-guessit-title-parsing-for-character-dictionary-sync.md index ae56029..a996101 100644 --- a/backlog/tasks/task-140 - Fix-guessit-title-parsing-for-character-dictionary-sync.md +++ b/backlog/tasks/task-140 - Fix-guessit-title-parsing-for-character-dictionary-sync.md @@ -4,7 +4,7 @@ title: Fix guessit title parsing for character dictionary sync status: Done assignee: [] created_date: '2026-03-09 00:00' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - dictionary - anilist @@ -17,7 +17,7 @@ references: - >- /home/sudacode/projects/japanese/SubMiner/src/core/services/anilist/anilist-updater.test.ts priority: high -ordinal: 43500 +ordinal: 44500 --- ## Description diff --git a/backlog/tasks/task-141 - Refresh-current-subtitle-after-character-dictionary-sync-completes.md b/backlog/tasks/task-141 - Refresh-current-subtitle-after-character-dictionary-sync-completes.md index ad1e29e..fd8fd8f 100644 --- a/backlog/tasks/task-141 - Refresh-current-subtitle-after-character-dictionary-sync-completes.md +++ b/backlog/tasks/task-141 - Refresh-current-subtitle-after-character-dictionary-sync-completes.md @@ -4,7 +4,7 @@ title: Refresh current subtitle after character dictionary sync completes status: Done assignee: [] created_date: '2026-03-09 00:00' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - dictionary - overlay @@ -15,7 +15,7 @@ references: /home/sudacode/projects/japanese/SubMiner/src/main/runtime/character-dictionary-auto-sync.ts - /home/sudacode/projects/japanese/SubMiner/src/main.ts priority: high -ordinal: 41500 +ordinal: 42500 --- ## Description diff --git a/backlog/tasks/task-142 - Show-character-dictionary-auto-sync-progress-on-OSD.md b/backlog/tasks/task-142 - Show-character-dictionary-auto-sync-progress-on-OSD.md index 4294ecb..9922d04 100644 --- a/backlog/tasks/task-142 - Show-character-dictionary-auto-sync-progress-on-OSD.md +++ b/backlog/tasks/task-142 - Show-character-dictionary-auto-sync-progress-on-OSD.md @@ -4,7 +4,7 @@ title: Show character dictionary auto-sync progress on OSD status: Done assignee: [] created_date: '2026-03-09 01:10' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - dictionary - overlay @@ -17,7 +17,7 @@ references: /home/sudacode/projects/japanese/SubMiner/src/main/runtime/character-dictionary-auto-sync-notifications.ts - /home/sudacode/projects/japanese/SubMiner/src/main.ts priority: medium -ordinal: 40500 +ordinal: 41500 --- ## Description diff --git a/backlog/tasks/task-143 - Keep-character-dictionary-auto-sync-non-blocking-during-startup.md b/backlog/tasks/task-143 - Keep-character-dictionary-auto-sync-non-blocking-during-startup.md index 82c2f96..54695ce 100644 --- a/backlog/tasks/task-143 - Keep-character-dictionary-auto-sync-non-blocking-during-startup.md +++ b/backlog/tasks/task-143 - Keep-character-dictionary-auto-sync-non-blocking-during-startup.md @@ -4,7 +4,7 @@ title: Keep character dictionary auto-sync non-blocking during startup status: Done assignee: [] created_date: '2026-03-09 01:45' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - dictionary - startup @@ -17,7 +17,7 @@ references: - >- /home/sudacode/projects/japanese/SubMiner/src/main/runtime/current-media-tokenization-gate.ts priority: high -ordinal: 37500 +ordinal: 38500 --- ## Description diff --git a/backlog/tasks/task-144 - Sequence-startup-OSD-notifications-for-tokenization-annotations-and-character-dictionary-sync.md b/backlog/tasks/task-144 - Sequence-startup-OSD-notifications-for-tokenization-annotations-and-character-dictionary-sync.md index 68f7504..df9140c 100644 --- a/backlog/tasks/task-144 - Sequence-startup-OSD-notifications-for-tokenization-annotations-and-character-dictionary-sync.md +++ b/backlog/tasks/task-144 - Sequence-startup-OSD-notifications-for-tokenization-annotations-and-character-dictionary-sync.md @@ -6,7 +6,7 @@ title: >- status: Done assignee: [] created_date: '2026-03-09 10:40' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - startup - overlay @@ -21,7 +21,7 @@ references: - >- /home/sudacode/projects/japanese/SubMiner/src/main/runtime/character-dictionary-auto-sync-notifications.ts priority: medium -ordinal: 36500 +ordinal: 37500 --- ## Description diff --git a/backlog/tasks/task-146 - Forward-overlay-Tab-to-mpv-for-AniSkip.md b/backlog/tasks/task-146 - Forward-overlay-Tab-to-mpv-for-AniSkip.md index 0e4334e..8fdd072 100644 --- a/backlog/tasks/task-146 - Forward-overlay-Tab-to-mpv-for-AniSkip.md +++ b/backlog/tasks/task-146 - Forward-overlay-Tab-to-mpv-for-AniSkip.md @@ -5,14 +5,14 @@ status: Done assignee: - codex created_date: '2026-03-09 00:00' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - bug - overlay - aniskip - linux dependencies: [] -ordinal: 46500 +ordinal: 47500 --- ## Description diff --git a/backlog/tasks/task-148 - Fix-Windows-plugin-env-binary-override-resolution.md b/backlog/tasks/task-148 - Fix-Windows-plugin-env-binary-override-resolution.md index 89b2ada..ac4e648 100644 --- a/backlog/tasks/task-148 - Fix-Windows-plugin-env-binary-override-resolution.md +++ b/backlog/tasks/task-148 - Fix-Windows-plugin-env-binary-override-resolution.md @@ -5,14 +5,14 @@ status: Done assignee: - codex created_date: '2026-03-09 00:00' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - windows - plugin - regression dependencies: [] priority: medium -ordinal: 47500 +ordinal: 48500 --- ## Description diff --git a/backlog/tasks/task-149 - Cut-patch-release-v0.5.5-for-character-dictionary-updates-and-release-guarding.md b/backlog/tasks/task-149 - Cut-patch-release-v0.5.5-for-character-dictionary-updates-and-release-guarding.md index c9da64e..50b7abd 100644 --- a/backlog/tasks/task-149 - Cut-patch-release-v0.5.5-for-character-dictionary-updates-and-release-guarding.md +++ b/backlog/tasks/task-149 - Cut-patch-release-v0.5.5-for-character-dictionary-updates-and-release-guarding.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-09 01:10' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - release - patch @@ -25,7 +25,7 @@ references: - scripts/build-changelog.test.ts - docs/RELEASING.md priority: high -ordinal: 38500 +ordinal: 39500 --- ## Description diff --git a/backlog/tasks/task-150 - Restore-repo-wide-Prettier-cleanliness-after-release-prep.md b/backlog/tasks/task-150 - Restore-repo-wide-Prettier-cleanliness-after-release-prep.md index 229a2ae..bc32ef4 100644 --- a/backlog/tasks/task-150 - Restore-repo-wide-Prettier-cleanliness-after-release-prep.md +++ b/backlog/tasks/task-150 - Restore-repo-wide-Prettier-cleanliness-after-release-prep.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-09 01:11' -updated_date: '2026-03-16 05:13' +updated_date: '2026-03-18 05:28' labels: - tooling - formatting @@ -20,7 +20,7 @@ references: - scripts/build-win-unsigned.mjs - src priority: medium -ordinal: 39500 +ordinal: 40500 --- ## Description diff --git a/backlog/tasks/task-162 - Normalize-packaged-Linux-paths-to-canonical-SubMiner-directories.md b/backlog/tasks/task-162 - Normalize-packaged-Linux-paths-to-canonical-SubMiner-directories.md index 41bf868..89cad89 100644 --- a/backlog/tasks/task-162 - Normalize-packaged-Linux-paths-to-canonical-SubMiner-directories.md +++ b/backlog/tasks/task-162 - Normalize-packaged-Linux-paths-to-canonical-SubMiner-directories.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-11 08:28' -updated_date: '2026-03-16 06:25' +updated_date: '2026-03-18 05:28' labels: - linux - packaging @@ -20,6 +20,7 @@ references: - docs-site/launcher-script.md - README.md priority: medium +ordinal: 116500 --- ## Description diff --git a/backlog/tasks/task-166 - Harden-SubMiner-change-verification-for-authoritative-agentic-runtime-checks.md b/backlog/tasks/task-166 - Harden-SubMiner-change-verification-for-authoritative-agentic-runtime-checks.md deleted file mode 100644 index 2178984..0000000 --- a/backlog/tasks/task-166 - Harden-SubMiner-change-verification-for-authoritative-agentic-runtime-checks.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -id: TASK-166 -title: Harden SubMiner change verification for authoritative agentic runtime checks -status: Done -assignee: [] -created_date: '2026-03-13 05:19' -updated_date: '2026-03-16 05:13' -labels: - - testing - - agents - - verification -dependencies: [] -references: - - >- - /home/sudacode/projects/japanese/SubMiner/.agents/skills/subminer-change-verification/scripts/verify_subminer_change.sh - - >- - /home/sudacode/projects/japanese/SubMiner/.agents/skills/subminer-change-verification/scripts/classify_subminer_diff.sh - - >- - /home/sudacode/projects/japanese/SubMiner/.agents/skills/subminer-change-verification/SKILL.md -documentation: - - /home/sudacode/projects/japanese/SubMiner/testing-plan.md - - /home/sudacode/projects/japanese/SubMiner/docs-site/development.md -ordinal: 22500 ---- - -## Description - - -Tighten the SubMiner change-verification classifier and verifier so the implementation matches the approved agentic verification plan: authoritative runtime verification must fail closed when unavailable, lane naming should use real-runtime semantics, session and artifact identities must be unique, and the verifier must be safer for parallel agent use. - - -## Acceptance Criteria - -- [x] #1 The verifier uses `real-runtime` terminology instead of `real-gui` for authoritative runtime verification -- [x] #2 Requested authoritative runtime verification fails closed with a non-green outcome when it cannot run, and unknown lanes do not pass open -- [x] #3 The verifier allocates a unique session identifier and artifact root that does not rely on second-level timestamp uniqueness alone -- [x] #4 The verifier summary/report output includes explicit top-level status and session metadata needed for agent aggregation -- [x] #5 The classifier and verifier better reflect runtime-escalation cases for launcher/plugin/socket/runtime-sensitive changes -- [x] #6 Regression tests cover the new verifier/classifier behavior - - -## Implementation Plan - - -1. Add regression tests for classifier/verifier behavior before changing the scripts. -2. Harden `verify_subminer_change.sh` to use `real-runtime` terminology, fail closed for blocked/unknown authoritative verification, and emit unique session metadata in summaries. -3. Update `classify_subminer_diff.sh` and the skill doc to use `real-runtime` escalation language and better flag launcher/plugin/runtime-sensitive paths. -4. Run targeted regression tests plus a focused dry-run verifier check, then record outcomes and blockers in the task. - - -## Implementation Notes - - -Added `scripts/subminer-change-verification.test.ts` to regression-test classifier/verifier behavior around `real-runtime` naming, fail-closed authoritative verification, unknown lanes, and unique session metadata. - -Reworked `verify_subminer_change.sh` to normalize `real-gui` to `real-runtime`, emit unique session IDs and richer summary metadata, block authoritative runtime verification when unavailable, and fail closed for unknown lanes. - -Updated `classify_subminer_diff.sh` to emit `real-runtime-candidate` for launcher/plugin/runtime-sensitive paths, and updated the active skill doc wording to match the new lane terminology. - - -## Final Summary - - -Hardened the SubMiner change-verification tooling to match the approved agentic verification plan. The verifier now uses `real-runtime` terminology for authoritative runtime verification, preserves compatibility with the deprecated `real-gui` alias, fails closed for unknown lanes, and returns a blocked non-green outcome when requested authoritative runtime verification cannot run. It now allocates a unique session ID and artifact root by default, writes richer session metadata and top-level status into `summary.json`/`summary.txt` plus `reports/summary.*`, and records path selection mode, blockers, and session-local env roots for agent aggregation. The classifier now emits `real-runtime-candidate` for launcher/plugin/runtime-sensitive paths, and the active skill doc uses the same terminology. Verification ran via `bun test scripts/subminer-change-verification.test.ts`, direct dry-run smoke checks for blocked `real-runtime` and failed unknown-lane execution, and a targeted classifier invocation for launcher/plugin paths. - diff --git a/backlog/tasks/task-166 - Prevent-AUR-upgrade-cache-collisions-for-unversioned-release-assets.md b/backlog/tasks/task-166 - Prevent-AUR-upgrade-cache-collisions-for-unversioned-release-assets.md index 68eece1..258ab35 100644 --- a/backlog/tasks/task-166 - Prevent-AUR-upgrade-cache-collisions-for-unversioned-release-assets.md +++ b/backlog/tasks/task-166 - Prevent-AUR-upgrade-cache-collisions-for-unversioned-release-assets.md @@ -5,7 +5,7 @@ status: Done assignee: - Codex created_date: '2026-03-17 18:10' -updated_date: '2026-03-17 18:14' +updated_date: '2026-03-18 05:28' labels: - release - packaging @@ -16,9 +16,12 @@ references: - /home/sudacode/projects/japanese/SubMiner/.github/workflows/release.yml - /home/sudacode/projects/japanese/SubMiner/scripts/update-aur-package.sh - /home/sudacode/projects/japanese/SubMiner/scripts/update-aur-package.test.ts - - /home/sudacode/projects/japanese/SubMiner/packaging/aur/subminer-bin/PKGBUILD - - /home/sudacode/projects/japanese/SubMiner/packaging/aur/subminer-bin/.SRCINFO + - >- + /home/sudacode/projects/japanese/SubMiner/packaging/aur/subminer-bin/PKGBUILD + - >- + /home/sudacode/projects/japanese/SubMiner/packaging/aur/subminer-bin/.SRCINFO priority: medium +ordinal: 107500 --- ## Description diff --git a/backlog/tasks/task-169 - Add-anime-level-immersion-metadata-and-link-videos.md b/backlog/tasks/task-169 - Add-anime-level-immersion-metadata-and-link-videos.md index 6021b6a..113c9f4 100644 --- a/backlog/tasks/task-169 - Add-anime-level-immersion-metadata-and-link-videos.md +++ b/backlog/tasks/task-169 - Add-anime-level-immersion-metadata-and-link-videos.md @@ -11,6 +11,7 @@ labels: - stats - database - anilist +milestone: m-1 dependencies: [] references: - >- diff --git a/backlog/tasks/task-170 - Fix-imm_words-POS-filtering-and-add-stats-cleanup-maintenance-command.md b/backlog/tasks/task-170 - Fix-imm_words-POS-filtering-and-add-stats-cleanup-maintenance-command.md index 301e76a..cd17c25 100644 --- a/backlog/tasks/task-170 - Fix-imm_words-POS-filtering-and-add-stats-cleanup-maintenance-command.md +++ b/backlog/tasks/task-170 - Fix-imm_words-POS-filtering-and-add-stats-cleanup-maintenance-command.md @@ -1,11 +1,12 @@ --- id: TASK-170 -title: 'Fix imm_words POS filtering and add stats cleanup maintenance command' +title: Fix imm_words POS filtering and add stats cleanup maintenance command status: Done assignee: [] created_date: '2026-03-13 00:00' -updated_date: '2026-03-14 18:31' +updated_date: '2026-03-18 05:31' labels: [] +milestone: m-1 dependencies: [] priority: high ordinal: 9010 @@ -14,25 +15,19 @@ ordinal: 9010 ## Description - `imm_words` is currently populated from raw subtitle text instead of tokenized subtitle metadata, so ignored functional/noise tokens leak into stats and no POS metadata is stored. Fix live persistence to follow the existing token annotation exclusion rules and add an on-demand stats cleanup command to remove stale bad vocabulary rows from the stats DB. - ## Acceptance Criteria - - - [x] #1 New `imm_words` inserts use tokenized subtitle data, persist POS metadata, and skip tokens excluded by existing POS-based vocabulary ignore rules. - [x] #2 `subminer stats cleanup` supports `-v` / `--vocab`, defaults to vocab cleanup, and removes stale bad `imm_words` rows on demand. - [x] #3 Regression coverage exists for persistence filtering, cleanup behavior, and stats cleanup CLI wiring. - ## Final Summary - Fixed `imm_words` persistence so the tracker now consumes tokenized subtitle data, stores POS metadata (`part_of_speech`, `pos1`, `pos2`, `pos3`), preserves distinct surface/lemma fields (`word` vs `headword`) when tokenization provides them, and skips vocabulary rows excluded by the existing POS/noise rules instead of mining raw subtitle fragments. Added `subminer stats cleanup` with default vocab cleanup plus `-v/--vocab`; the cleanup pass now repairs stale `headword`, `reading`, and `part_of_speech` values, attempts best-effort MeCab backfill for legacy rows, and removes rows that still have no usable POS metadata or fail the vocab filters. Verification: @@ -41,5 +36,4 @@ Verification: - `bun test src/core/services/immersion-tracker-service.test.ts src/core/services/immersion-tracker/__tests__/query.test.ts src/core/services/immersion-tracker/storage-session.test.ts launcher/parse-args.test.ts launcher/commands/command-modules.test.ts src/main/runtime/stats-cli-command.test.ts src/main/runtime/mpv-main-event-main-deps.test.ts src/core/services/cli-command.test.ts` - `bun run docs:test` - `bun run docs:build` - diff --git a/backlog/tasks/task-171 - Add-normalized-immersion-word-and-kanji-occurrence-tracking.md b/backlog/tasks/task-171 - Add-normalized-immersion-word-and-kanji-occurrence-tracking.md index 35b2039..1ca5c5f 100644 --- a/backlog/tasks/task-171 - Add-normalized-immersion-word-and-kanji-occurrence-tracking.md +++ b/backlog/tasks/task-171 - Add-normalized-immersion-word-and-kanji-occurrence-tracking.md @@ -10,6 +10,7 @@ labels: - immersion - stats - database +milestone: m-1 dependencies: [] references: - >- diff --git a/backlog/tasks/task-172 - Stabilize-macOS-fullscreen-overlay-layering-and-tracker-flaps.md b/backlog/tasks/task-172 - Stabilize-macOS-fullscreen-overlay-layering-and-tracker-flaps.md index 65257bc..7b19fb1 100644 --- a/backlog/tasks/task-172 - Stabilize-macOS-fullscreen-overlay-layering-and-tracker-flaps.md +++ b/backlog/tasks/task-172 - Stabilize-macOS-fullscreen-overlay-layering-and-tracker-flaps.md @@ -5,20 +5,24 @@ status: Done assignee: - '@codex' created_date: '2026-03-16 10:45' -updated_date: '2026-03-16 23:04' +updated_date: '2026-03-18 05:28' labels: - bug - macos - overlay dependencies: [] references: - - /Users/sudacode/projects/japanese/SubMiner/src/core/services/overlay-window.ts - - /Users/sudacode/projects/japanese/SubMiner/src/core/services/overlay-visibility.ts - - /Users/sudacode/projects/japanese/SubMiner/src/core/services/overlay-runtime-init.ts - - /Users/sudacode/projects/japanese/SubMiner/src/window-trackers/macos-tracker.ts + - >- + /Users/sudacode/projects/japanese/SubMiner/src/core/services/overlay-window.ts + - >- + /Users/sudacode/projects/japanese/SubMiner/src/core/services/overlay-visibility.ts + - >- + /Users/sudacode/projects/japanese/SubMiner/src/core/services/overlay-runtime-init.ts + - >- + /Users/sudacode/projects/japanese/SubMiner/src/window-trackers/macos-tracker.ts - /Users/sudacode/projects/japanese/SubMiner/src/main.ts priority: high -ordinal: 53000 +ordinal: 54500 --- ## Description diff --git a/backlog/tasks/task-172 - Wire-immersion-occurrence-drilldown-into-stats-API-and-vocabulary-drawer.md b/backlog/tasks/task-172 - Wire-immersion-occurrence-drilldown-into-stats-API-and-vocabulary-drawer.md deleted file mode 100644 index b4c4ceb..0000000 --- a/backlog/tasks/task-172 - Wire-immersion-occurrence-drilldown-into-stats-API-and-vocabulary-drawer.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -id: TASK-172 -title: Wire immersion occurrence drilldown into stats API and vocabulary drawer -status: Done -assignee: - - codex -created_date: '2026-03-14 12:05' -updated_date: '2026-03-16 05:13' -labels: - - immersion - - stats - - ui -dependencies: - - TASK-171 -ordinal: 18500 ---- - -## Description - - -Expose the new immersion word/kanji occurrence queries through the stats server and add a right-side Vocabulary drawer that shows recent occurrence rows with paging when a word or kanji is clicked. - - -## Acceptance Criteria - -- [x] #1 Stats server exposes word and kanji occurrence endpoints with bounded recent-first paging. -- [x] #2 Stats client/types support loading occurrence pages for a selected word or kanji. -- [x] #3 Vocabulary tab opens a right drawer for the selected word/kanji, shows recent occurrences, and supports loading more. -- [x] #4 Focused regression coverage exists for the server endpoint contract, and the stats UI still typechecks/builds. -- [x] #5 Verification covers the cheapest sufficient backend and stats-UI lanes. - - -## Implementation Notes - - -2026-03-14: Design approved in-thread. Chosen UX: click a word chip or kanji glyph to open a right-side drawer with recent-first occurrences, initial cap 50, plus “Load more”. -2026-03-14: Implemented `/api/stats/vocabulary/occurrences` and `/api/stats/kanji/occurrences` with `limit` + `offset` paging. The drawer uses direct stats HTTP client calls and keeps existing aggregate vocabulary data flow intact. -2026-03-14: Verification commands run: - - `bun test src/core/services/__tests__/stats-server.test.ts` - - `bun run typecheck` - - `cd stats && bun run build` - - `bun run docs:test` - - `bun run docs:build` - - `cd stats && bunx tsc --noEmit` - - `bash .agents/skills/subminer-change-verification/scripts/verify_subminer_change.sh --lane core src/core/services/stats-server.ts src/core/services/__tests__/stats-server.test.ts` -2026-03-14: Verification results: - - stats server endpoint tests: passed - - root typecheck: passed - - stats UI production build: passed - - docs-site test/build: passed - - `cd stats && bunx tsc --noEmit`: passed after removing stale `hasCoverArt` prop usage in the library stats UI - - verifier result: passed (`typecheck`, `test:fast`) - - verifier artifacts: `.tmp/skill-verification/subminer-verify-20260314-120900-J0VvB0/` - - -## Final Summary - - -Wired occurrence drilldown into the stats server and Vocabulary tab. Words and kanji now open a right-side drawer that loads recent occurrence rows 50 at a time and supports “Load more”. - -Added bounded recent-first occurrence endpoints to the stats HTTP API, extended the stats client/type surface, and made word chips plus kanji glyphs selectable with active-state styling. - -Updated the immersion-tracking docs to mention vocabulary occurrence drilldown. Verified with focused stats-server tests, root typecheck, stats UI production build, docs-site test/build, the repo verifier core lane, and a direct `stats` package typecheck after removing the stale `MediaHeader` prop mismatch. - diff --git a/backlog/tasks/task-173 - Remove-Avg-Frequency-metric-from-Vocabulary-tab-summary-cards.md b/backlog/tasks/task-173 - Remove-Avg-Frequency-metric-from-Vocabulary-tab-summary-cards.md index e6400eb..90efcc3 100644 --- a/backlog/tasks/task-173 - Remove-Avg-Frequency-metric-from-Vocabulary-tab-summary-cards.md +++ b/backlog/tasks/task-173 - Remove-Avg-Frequency-metric-from-Vocabulary-tab-summary-cards.md @@ -8,6 +8,7 @@ updated_date: '2026-03-16 05:13' labels: - stats - ui +milestone: m-1 dependencies: [] priority: low ordinal: 17500 diff --git a/backlog/tasks/task-174 - Fix-missing-frequency-highlights-for-merged-tokenizer-tokens.md b/backlog/tasks/task-174 - Fix-missing-frequency-highlights-for-merged-tokenizer-tokens.md index cc484dd..7dabebf 100644 --- a/backlog/tasks/task-174 - Fix-missing-frequency-highlights-for-merged-tokenizer-tokens.md +++ b/backlog/tasks/task-174 - Fix-missing-frequency-highlights-for-merged-tokenizer-tokens.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-15 10:18' -updated_date: '2026-03-16 06:46' +updated_date: '2026-03-18 05:28' labels: - bug - tokenizer @@ -20,6 +20,7 @@ references: - /Users/sudacode/projects/japanese/SubMiner/scripts/get_frequency.ts - /Users/sudacode/projects/japanese/SubMiner/scripts/test-yomitan-parser.ts priority: high +ordinal: 115500 --- ## Description diff --git a/backlog/tasks/task-177 - Track-intentional-Yomitan-lookups-in-stats.md b/backlog/tasks/task-177 - Track-intentional-Yomitan-lookups-in-stats.md index 2942fa4..1b23121 100644 --- a/backlog/tasks/task-177 - Track-intentional-Yomitan-lookups-in-stats.md +++ b/backlog/tasks/task-177 - Track-intentional-Yomitan-lookups-in-stats.md @@ -5,11 +5,12 @@ status: Done assignee: - codex created_date: '2026-03-17 09:15' -updated_date: '2026-03-17 09:41' +updated_date: '2026-03-18 05:28' labels: - stats - immersion-tracking - yomitan +milestone: m-1 dependencies: [] references: - vendor/subminer-yomitan/ext/js/app/frontend.js @@ -23,6 +24,7 @@ references: documentation: - docs/plans/2026-03-17-yomitan-lookup-stats-design.md priority: medium +ordinal: 114500 --- ## Description diff --git a/backlog/tasks/task-178 - Address-PR-19-Codex-review-feedback-on-immersion-session-deletion.md b/backlog/tasks/task-178 - Address-PR-19-Codex-review-feedback-on-immersion-session-deletion.md index 91ae586..2a1938f 100644 --- a/backlog/tasks/task-178 - Address-PR-19-Codex-review-feedback-on-immersion-session-deletion.md +++ b/backlog/tasks/task-178 - Address-PR-19-Codex-review-feedback-on-immersion-session-deletion.md @@ -5,11 +5,12 @@ status: Done assignee: - codex created_date: '2026-03-17 14:59' -updated_date: '2026-03-17 15:13' +updated_date: '2026-03-18 05:28' labels: - pr-review - immersion-tracker - stats +milestone: m-1 dependencies: [] references: - >- @@ -21,6 +22,7 @@ references: - >- /Users/sudacode/projects/japanese/SubMiner/src/core/services/immersion-tracker/__tests__/query.test.ts priority: medium +ordinal: 113500 --- ## Description diff --git a/backlog/tasks/task-179 - Tune-immersion-tracker-SQLite-pragmas-and-maintenance-defaults.md b/backlog/tasks/task-179 - Tune-immersion-tracker-SQLite-pragmas-and-maintenance-defaults.md index 5d6a862..be89acb 100644 --- a/backlog/tasks/task-179 - Tune-immersion-tracker-SQLite-pragmas-and-maintenance-defaults.md +++ b/backlog/tasks/task-179 - Tune-immersion-tracker-SQLite-pragmas-and-maintenance-defaults.md @@ -5,7 +5,7 @@ status: Done assignee: - codex created_date: '2026-03-17 15:15' -updated_date: '2026-03-17 15:19' +updated_date: '2026-03-18 05:28' labels: - sqlite - immersion-tracking @@ -15,6 +15,7 @@ documentation: - >- /Users/sudacode/projects/japanese/SubMiner/docs/plans/2026-03-17-sqlite-tuning.md priority: medium +ordinal: 111500 --- ## Description diff --git a/backlog/tasks/task-180 - Fix-launcher-stats-command-timeout-for-slow-dashboard-startup.md b/backlog/tasks/task-180 - Fix-launcher-stats-command-timeout-for-slow-dashboard-startup.md index 4cd4700..e500b0e 100644 --- a/backlog/tasks/task-180 - Fix-launcher-stats-command-timeout-for-slow-dashboard-startup.md +++ b/backlog/tasks/task-180 - Fix-launcher-stats-command-timeout-for-slow-dashboard-startup.md @@ -5,11 +5,12 @@ status: Done assignee: - codex created_date: '2026-03-17 15:16' -updated_date: '2026-03-17 15:18' +updated_date: '2026-03-18 05:28' labels: - launcher - stats - tests +milestone: m-1 dependencies: [] references: - >- @@ -18,6 +19,7 @@ references: - >- /Users/sudacode/projects/japanese/SubMiner/launcher/commands/command-modules.test.ts priority: medium +ordinal: 112500 --- ## Description diff --git a/backlog/tasks/task-181 - Add-background-managed-stats-server-lifecycle-commands.md b/backlog/tasks/task-181 - Add-background-managed-stats-server-lifecycle-commands.md index 6d07d4b..db1e2fb 100644 --- a/backlog/tasks/task-181 - Add-background-managed-stats-server-lifecycle-commands.md +++ b/backlog/tasks/task-181 - Add-background-managed-stats-server-lifecycle-commands.md @@ -5,13 +5,15 @@ status: Done assignee: - codex created_date: '2026-03-17 15:31' -updated_date: '2026-03-17 15:55' +updated_date: '2026-03-18 05:28' labels: - cli - launcher - stats +milestone: m-1 dependencies: [] priority: medium +ordinal: 110500 --- ## Description diff --git a/backlog/tasks/task-182.1 - Remove-misleading-session-new-word-metric-from-session-detail-chart.md b/backlog/tasks/task-182.1 - Remove-misleading-session-new-word-metric-from-session-detail-chart.md index e086df5..73255c0 100644 --- a/backlog/tasks/task-182.1 - Remove-misleading-session-new-word-metric-from-session-detail-chart.md +++ b/backlog/tasks/task-182.1 - Remove-misleading-session-new-word-metric-from-session-detail-chart.md @@ -5,11 +5,12 @@ status: Done assignee: - '@codex' created_date: '2026-03-18 01:41' -updated_date: '2026-03-18 01:45' +updated_date: '2026-03-18 05:28' labels: - bug - stats - ui +milestone: m-1 dependencies: [] references: - >- @@ -19,6 +20,7 @@ references: - >- /Users/sudacode/projects/japanese/SubMiner/stats/src/lib/media-session-list.test.tsx parent_task_id: TASK-182 +ordinal: 101500 --- ## Description diff --git a/backlog/tasks/task-184 - Stabilize-branch-verification-gate.md b/backlog/tasks/task-184 - Stabilize-branch-verification-gate.md index f4b37de..8985386 100644 --- a/backlog/tasks/task-184 - Stabilize-branch-verification-gate.md +++ b/backlog/tasks/task-184 - Stabilize-branch-verification-gate.md @@ -5,7 +5,7 @@ status: Done assignee: - Codex created_date: '2026-03-17 19:28' -updated_date: '2026-03-17 19:31' +updated_date: '2026-03-18 05:28' labels: - stabilization - ci @@ -14,6 +14,7 @@ references: - package.json - docs/workflow/verification.md priority: medium +ordinal: 106500 --- ## Description diff --git a/backlog/tasks/task-185 - Clarify-library-stats-word-count-labels.md b/backlog/tasks/task-185 - Clarify-library-stats-word-count-labels.md index 762dfe7..90cc451 100644 --- a/backlog/tasks/task-185 - Clarify-library-stats-word-count-labels.md +++ b/backlog/tasks/task-185 - Clarify-library-stats-word-count-labels.md @@ -5,11 +5,12 @@ status: Done assignee: - codex created_date: '2026-03-17 22:58' -updated_date: '2026-03-17 23:00' +updated_date: '2026-03-18 05:28' labels: - bug - stats - ui +milestone: m-1 dependencies: [] references: - >- @@ -18,6 +19,7 @@ references: - >- /Users/sudacode/projects/japanese/SubMiner/src/core/services/immersion-tracker/query.ts priority: medium +ordinal: 104500 --- ## Description diff --git a/backlog/tasks/task-186 - Remove-stats-Library-tab-and-add-episode-detail-navigation-from-anime-page.md b/backlog/tasks/task-186 - Remove-stats-Library-tab-and-add-episode-detail-navigation-from-anime-page.md index 0c2f00b..c3af978 100644 --- a/backlog/tasks/task-186 - Remove-stats-Library-tab-and-add-episode-detail-navigation-from-anime-page.md +++ b/backlog/tasks/task-186 - Remove-stats-Library-tab-and-add-episode-detail-navigation-from-anime-page.md @@ -5,10 +5,11 @@ status: Done assignee: - codex created_date: '2026-03-17 23:19' -updated_date: '2026-03-17 23:29' +updated_date: '2026-03-18 05:28' labels: - stats - ui +milestone: m-1 dependencies: [] references: - /Users/sudacode/projects/japanese/SubMiner/stats/src/App.tsx @@ -21,6 +22,7 @@ references: - >- /Users/sudacode/projects/japanese/SubMiner/stats/src/components/library/MediaDetailView.tsx priority: medium +ordinal: 103500 --- ## Description diff --git a/backlog/tasks/task-187 - Replace-episode-detail-session-history-with-expandable-inline-session-details.md b/backlog/tasks/task-187 - Replace-episode-detail-session-history-with-expandable-inline-session-details.md index 89ce820..33d20ca 100644 --- a/backlog/tasks/task-187 - Replace-episode-detail-session-history-with-expandable-inline-session-details.md +++ b/backlog/tasks/task-187 - Replace-episode-detail-session-history-with-expandable-inline-session-details.md @@ -5,10 +5,11 @@ status: Done assignee: - codex created_date: '2026-03-17 23:42' -updated_date: '2026-03-17 23:57' +updated_date: '2026-03-18 05:28' labels: - stats - ui +milestone: m-1 dependencies: [] references: - >- @@ -31,6 +32,7 @@ documentation: - >- /Users/sudacode/projects/japanese/SubMiner/docs/plans/2026-03-17-episode-detail-session-accordion.md priority: medium +ordinal: 102500 --- ## Description diff --git a/backlog/tasks/task-187.1 - Auto-expand-targeted-session-when-opening-media-detail.md b/backlog/tasks/task-187.1 - Auto-expand-targeted-session-when-opening-media-detail.md index e86467a..8a41c13 100644 --- a/backlog/tasks/task-187.1 - Auto-expand-targeted-session-when-opening-media-detail.md +++ b/backlog/tasks/task-187.1 - Auto-expand-targeted-session-when-opening-media-detail.md @@ -1,14 +1,15 @@ --- id: TASK-187.1 title: Auto-expand targeted session when opening media detail -status: In Progress +status: Done assignee: - codex created_date: '2026-03-18 01:32' -updated_date: '2026-03-18 01:36' +updated_date: '2026-03-18 05:28' labels: - stats - ui +milestone: m-1 dependencies: [] references: - stats/src/lib/stats-navigation.ts @@ -19,6 +20,7 @@ references: - stats/src/lib/stats-navigation.test.ts parent_task_id: TASK-187 priority: medium +ordinal: 117500 --- ## Description @@ -29,11 +31,11 @@ When a navigation path opens episode/media detail with a known session ID, the m ## Acceptance Criteria -- [ ] #1 Media detail navigation state can carry an optional target session ID alongside the selected video. -- [ ] #2 Any navigation path that opens media detail with a known session ID causes that session row to auto-expand when the episode history loads. -- [ ] #3 Session-tab fallback for orphan sessions without a video still behaves as it does now. -- [ ] #4 Media detail auto-expansion clears or stabilizes its one-shot navigation state so normal manual expand/collapse behavior still works after landing. -- [ ] #5 Relevant navigation/component tests cover the targeted media-detail auto-expand behavior. +- [x] #1 Media detail navigation state can carry an optional target session ID alongside the selected video. +- [x] #2 Any navigation path that opens media detail with a known session ID causes that session row to auto-expand when the episode history loads. +- [x] #3 Session-tab fallback for orphan sessions without a video still behaves as it does now. +- [x] #4 Media detail auto-expansion clears or stabilizes its one-shot navigation state so normal manual expand/collapse behavior still works after landing. +- [x] #5 Relevant navigation/component tests cover the targeted media-detail auto-expand behavior. ## Implementation Plan diff --git a/backlog/tasks/task-188 - Refactor-stats-chart-data-pipeline-to-use-backend-aggregated-series.md b/backlog/tasks/task-188 - Refactor-stats-chart-data-pipeline-to-use-backend-aggregated-series.md index d7eff24..e0a3282 100644 --- a/backlog/tasks/task-188 - Refactor-stats-chart-data-pipeline-to-use-backend-aggregated-series.md +++ b/backlog/tasks/task-188 - Refactor-stats-chart-data-pipeline-to-use-backend-aggregated-series.md @@ -1,7 +1,7 @@ --- id: TASK-188 title: Refactor stats chart data pipeline to use backend-aggregated series -status: In Progress +status: Done assignee: - codex created_date: '2026-03-18 00:29' @@ -10,6 +10,7 @@ labels: - stats - performance - refactor +milestone: m-1 dependencies: [] references: - src/core/services/immersion-tracker/query.ts @@ -31,12 +32,12 @@ Reduce long-term dashboard performance debt by moving chart aggregation out of t ## Acceptance Criteria -- [ ] #1 Stats API exposes chart-oriented aggregated trend data needed by the trends dashboard without requiring raw session lists for those charts. -- [ ] #2 The trends dashboard consumes the new aggregated API responses and no longer rebuilds its main chart datasets from raw sessions in the render path. -- [ ] #3 Time-range and grouping behavior remain correct for recent and all-time views, with explicit handling that keeps older history performant. -- [ ] #4 Existing overview and anime detail charts continue to behave correctly, or are migrated to the shared aggregation path where it reduces debt. -- [ ] #5 Tests cover backend aggregation/query behavior and frontend consumption of the new response shapes. -- [ ] #6 Internal docs are updated to describe the new stats chart data flow and scaling rationale. +- [x] #1 Stats API exposes chart-oriented aggregated trend data needed by the trends dashboard without requiring raw session lists for those charts. +- [x] #2 The trends dashboard consumes the new aggregated API responses and no longer rebuilds its main chart datasets from raw sessions in the render path. +- [x] #3 Time-range and grouping behavior remain correct for recent and all-time views, with explicit handling that keeps older history performant. +- [x] #4 Existing overview and anime detail charts continue to behave correctly, or are migrated to the shared aggregation path where it reduces debt. +- [x] #5 Tests cover backend aggregation/query behavior and frontend consumption of the new response shapes. +- [x] #6 Internal docs are updated to describe the new stats chart data flow and scaling rationale. ## Implementation Plan diff --git a/backlog/tasks/task-190 - Add-hover-popups-for-session-chart-events.md b/backlog/tasks/task-190 - Add-hover-popups-for-session-chart-events.md new file mode 100644 index 0000000..f5e33f3 --- /dev/null +++ b/backlog/tasks/task-190 - Add-hover-popups-for-session-chart-events.md @@ -0,0 +1,54 @@ +--- +id: TASK-190 +title: Add hover popups for session chart events +status: Done +assignee: + - Codex +created_date: '2026-03-17 22:20' +updated_date: '2026-03-18 05:28' +labels: + - stats + - ui + - bug +milestone: m-1 +dependencies: [] +references: + - stats/src/components/sessions/SessionDetail.tsx + - stats/src/lib/session-events.ts + - stats/src/hooks/useSessions.ts + - stats/src/lib/api-client.ts + - docs/plans/2026-03-17-session-event-hover-popups-design.md +priority: medium +ordinal: 105500 +--- + +## Description + + +Add hover/focus popups to session chart event markers so pauses, seeks, lookups, and card-mine events explain themselves inline. Card-mine events should lazy-load available Anki note info and present it in a richer popup with browse affordances. + + +## Acceptance Criteria + +- [x] #1 Hovering or focusing a session-chart marker opens an event-specific popup. +- [x] #2 Pause, seek, and lookup popups show concise event copy derived from marker metadata. +- [x] #3 Card-mine popups lazily fetch and cache Anki note info by note id. +- [x] #4 Card-mine popups show a formatted fallback when note info is missing or still loading. +- [x] #5 Regression tests cover event payload shaping and popup rendering behavior. + + +## Implementation Plan + + +1. Add failing tests for event metadata shaping and popup content selection. +2. Extend session-event shaping to parse payload JSON into typed marker metadata. +3. Add lazy note-info fetch/cache state for card-mine markers. +4. Render interactive marker overlay + custom popup in the session detail chart. +5. Run targeted stats/core verification and update this task with the result. + + +## Outcome + + +Completed. Session-chart event markers now open event-specific hover/focus popups, including lazy-loaded Anki note info for card-mine events with browse affordances. Verification passed via targeted stats tests, `bun run typecheck`, and the core verification lane in `.tmp/skill-verification/subminer-verify-20260317-222545-CQzyqK`. + diff --git a/backlog/tasks/task-194 - Redesign-YouTube-subtitle-acquisition-around-download-first-track-selection.md b/backlog/tasks/task-194 - Redesign-YouTube-subtitle-acquisition-around-download-first-track-selection.md new file mode 100644 index 0000000..3df0052 --- /dev/null +++ b/backlog/tasks/task-194 - Redesign-YouTube-subtitle-acquisition-around-download-first-track-selection.md @@ -0,0 +1,34 @@ +--- +id: TASK-194 +title: Redesign YouTube subtitle acquisition around download-first track selection +status: To Do +assignee: [] +created_date: '2026-03-18 07:52' +labels: [] +dependencies: [] +references: + - /home/sudacode/projects/japanese/SubMiner/launcher/youtube/orchestrator.ts + - /home/sudacode/projects/japanese/SubMiner/launcher/youtube/manual-subs.ts + - /home/sudacode/projects/japanese/SubMiner/src/core/services/tokenizer.ts +documentation: + - /home/sudacode/projects/japanese/SubMiner/youtube.md +priority: medium +--- + +## Description + + +Replace the current YouTube subtitle-generation-first flow with a download-first flow that enumerates available YouTube subtitle tracks, prompts for primary and secondary track selection before playback, downloads selected tracks into external subtitle files for mpv, and preserves generation as an explicit mode and as fallback behavior in auto mode. Keep the existing SubMiner tokenization and annotation pipeline as the downstream consumer of downloaded subtitle files. + + +## Acceptance Criteria + +- [ ] #1 Launcher and config expose YouTube subtitle acquisition modes `download`, `generate`, and `auto`, with `download` as the default for launcher YouTube playback. +- [ ] #2 YouTube playback enumerates available subtitle tracks before mpv launch and presents a selection UI that supports primary and secondary subtitle choices. +- [ ] #3 Selected YouTube subtitle tracks are downloaded to external subtitle files and loaded into mpv before playback starts when download mode succeeds. +- [ ] #4 `auto` mode attempts download-first for the selected tracks and falls back to generation only when required tracks cannot be downloaded or download fails. +- [ ] #5 `generate` mode preserves the existing whisper/AI generation path as an explicit opt-in behavior. +- [ ] #6 Downloaded YouTube subtitle files integrate with the existing SubMiner subtitle/tokenization/annotation pipeline without regressing current overlay behavior. +- [ ] #7 Tests cover mode selection, subtitle-track enumeration/selection flow, download-first success path, and fallback behavior for auto mode. +- [ ] #8 User-facing config and launcher docs are updated to describe the new modes and default behavior. + diff --git a/changes/2026-03-18-stats-cross-anime-words-table.md b/changes/2026-03-18-stats-cross-anime-words-table.md new file mode 100644 index 0000000..1a0c5e1 --- /dev/null +++ b/changes/2026-03-18-stats-cross-anime-words-table.md @@ -0,0 +1,4 @@ +type: fixed +area: stats + +- Restored the cross-anime word table behavior in stats vocabulary surfaces so shared vocabulary entries no longer disappear or merge incorrectly across related media. diff --git a/changes/2026-03-18-stats-full-session-timelines.md b/changes/2026-03-18-stats-full-session-timelines.md new file mode 100644 index 0000000..a39d441 --- /dev/null +++ b/changes/2026-03-18-stats-full-session-timelines.md @@ -0,0 +1,4 @@ +type: fixed +area: stats + +- Load full session timelines by default in stats session detail views so long sessions preserve complete telemetry history instead of being truncated by a fixed sample limit. diff --git a/changes/2026-03-18-stats-mpv-args-passthrough.md b/changes/2026-03-18-stats-mpv-args-passthrough.md new file mode 100644 index 0000000..e3d4732 --- /dev/null +++ b/changes/2026-03-18-stats-mpv-args-passthrough.md @@ -0,0 +1,4 @@ +type: added +area: launcher + +- Added launcher passthrough for `-a/--args` so mpv receives raw extra launch flags (`--fs`, `--ytdl-format`, custom audio/video settings, etc.) from the `subminer` command. diff --git a/changes/2026-03-18-subtitle-noise-filtering.md b/changes/2026-03-18-subtitle-noise-filtering.md new file mode 100644 index 0000000..eb302c7 --- /dev/null +++ b/changes/2026-03-18-subtitle-noise-filtering.md @@ -0,0 +1,4 @@ +type: changed +area: overlay + +- Excluded interjections and sound-effect tokens from subtitle annotation styling so they no longer inherit misleading lexical highlight treatment while still remaining visible and non-interactive in the subtitle line.