diff --git a/CHANGELOG.md b/CHANGELOG.md
index 50b8127..b56d34d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,72 @@
# Changelog
+## v0.7.0 (2026-03-19)
+
+### Added
+- Immersion: Added Mine Word, Mine Sentence, and Mine Audio buttons to word detail example lines in the stats dashboard.
+- Immersion: Mine Word creates a full Yomitan card (definition, reading, pitch accent) via the hidden search page bridge, then enriches with sentence audio, screenshot, and metadata extracted from the source video.
+- Immersion: Mine Sentence and Mine Audio create cards directly with appropriate Lapis/Kiku flags, sentence highlighting, and media from the source file.
+- Immersion: Media generation (audio + image/AVIF) runs in parallel and respects all AnkiConnect config options.
+- Immersion: Added word exclusion list to the Vocabulary tab with localStorage persistence and a management modal.
+- Immersion: Fixed truncated readings in the frequency rank table (e.g. お前 now shows おまえ instead of まえ).
+- Immersion: Clicking a bar in the Top Repeated Words chart now opens the word detail panel.
+- Immersion: Secondary subtitle text is now stored alongside primary subtitle lines for use as translation when mining cards from the stats page.
+- Stats: Added `subminer stats -b` to start or reuse a dedicated background stats server without blocking normal SubMiner instances.
+- Stats: Added `subminer stats -s` to stop the dedicated background stats server without closing browser tabs.
+- Stats: Stats server startup now reuses a running background stats daemon instead of trying to bind a second local server in another SubMiner instance.
+- 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.
+- Launcher: Added `subminer stats` to launch the local stats dashboard, force-start the stats server on demand, and open the dashboard in your browser.
+- Launcher: Added `subminer stats cleanup` to backfill vocabulary metadata and prune stale or excluded immersion rows on demand.
+- Launcher: Added `stats.autoOpenBrowser` so browser launch after `subminer stats` can be enabled or disabled explicitly.
+- Immersion: Added a local stats dashboard for immersion tracking with Overview, Anime, Trends, Vocabulary, and Sessions views.
+- Immersion: Added anime progress, episode completion, Anki card links, and occurrence drill-down across the stats dashboard.
+- Immersion: Added richer session timelines with new-word activity, cumulative totals, and pause/seek/card event markers.
+- Immersion: Added completed-episodes and completed-anime totals to the Overview tracking snapshot.
+
+### Changed
+- Anki: Changed known-word cache settings to live under `ankiConnect.knownWords` instead of mixing them into `ankiConnect.nPlusOne`.
+- Anki: Kept legacy `ankiConnect.nPlusOne` known-word keys and older `ankiConnect.behavior.nPlusOne*` keys as deprecated compatibility fallbacks.
+- Stats: Added session deletion to the Sessions tab with the same confirmation prompt used by anime episode/session deletes, and removed all associated session rows from the stats database.
+- Immersion: Kept immersion tracking history by default while preserving daily/monthly rollup maintenance.
+- Immersion: Added exact lifetime summary reads for overview/anime/media stats so dashboard totals no longer depend on rescanning raw telemetry.
+- Immersion: Reduced tracker storage overhead by removing duplicated subtitle text from subtitle-line event payloads.
+- Immersion: Deduplicated episode cover-art blobs through a shared blob store and updated cover-art reads/writes to resolve shared images correctly.
+- Immersion: Added indexes for large-history session, telemetry, vocabulary, kanji, and cover-art queries to keep dashboard reads fast as the SQLite database grows.
+- Immersion: Renamed the stats dashboard's Anime tab to Library so the media browser label matches non-anime sources like YouTube and other yt-dlp-backed content.
+- Anilist: Standardized episode completion threshold by introducing `DEFAULT_MIN_WATCH_RATIO` and using it for both local watched state transitions and AniList post-watch progress updates.
+- Anilist: Episode auto-marking now uses the same threshold as AniList (`85%`), removing divergent completion behavior.
+- 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 hoverable as plain subtitle tokens.
+- Overlay: Expanded subtitle annotation noise filtering to also strip annotation metadata from standalone grammar-only helper tokens such as particles, auxiliaries, adnominals, common explanatory endings like `んです` / `のだ`, and merged trailing quote-particle forms like `...って` while keeping them tokenized for hover lookup.
+
+### Fixed
+- Launcher: Fixed mpv Lua plugin binary auto-detection on Linux to also search `/usr/bin/subminer` and `/usr/local/bin/subminer` (lowercase), matching the conventional Unix wrapper name used by packaged installs such as the AUR package.
+- Stats: Fixed the in-app stats overlay so it connects to the configured `stats.serverPort` instead of falling back to the default port.
+- Overlay: Fixed subtitle frequency tagging for merged lookup-backed tokens like `陰に` by falling back to exact surface-form Yomitan frequencies when the normalized headword lookup misses.
+- Overlay: Fixed MeCab merged-token position mapping across line breaks so merged content-plus-particle tokens like `陰に` keep their matched Yomitan frequency instead of inheriting shifted POS tags.
+- Overlay: Fixed grouped frequency parsing in both Yomitan and fallback frequency-dictionary lookups so display values like `118,121` use the leading rank instead of collapsing the rank and occurrence count into `118121`.
+- Overlay: Fixed frequency-rank ingestion to ignore Yomitan dictionaries explicitly marked `occurrence-based`, so raw occurrence counts are no longer treated as subtitle rank values.
+- Overlay: Fixed inflected headword frequency tagging to prefer ranks from the selected Yomitan `termsFind` popup entry itself, ordered by configured dictionary priority, so forms like `潜み` use primary-dictionary ranks like `4073` before falling back to lower-priority raw lemma metadata such as `CC100`.
+- Overlay: Fixed annotation-stage frequency filtering so exact kanji noun tokens like `者` keep their matched rank even when MeCab labels them `名詞/非自立`, instead of dropping the highlight after scan-time frequency lookup succeeds.
+- Anki: Fixed repeated character-dictionary startup work by scheduling auto-sync only from mpv media-path changes instead of also re-triggering it from connection and media-title events for the same title.
+- Overlay: Fixed macOS fullscreen overlay stability by keeping the passive visible overlay from stealing focus, re-raising the overlay window when reasserting its macOS topmost level, and tolerating one transient macOS tracker/helper miss before hiding the overlay.
+- Overlay: Kept subtitle tokenization warmup one-shot for the lifetime of the app so later fullscreen/media churn on macOS does not replay the startup warmup gate after the first file is ready.
+- Overlay: Added a bounded macOS tracker loss-grace window so fullscreen enter/leave transitions do not immediately hide and reload the overlay when the helper briefly loses the mpv window.
+- Overlay: Skipped subtitle/tokenization refresh invalidation on character-dictionary auto-sync completion when the dictionary was already current, preventing startup flash/reload loops on unchanged media.
+- Stats: Fixed session stats so known-word counts track real known-word occurrences without collapsing subtitle-line gaps.
+- Stats: Fixed session word totals in session-facing stats views to prefer token counts when available, preventing known words from exceeding total words in the session chart.
+- Stats: Fixed the stats Vocabulary tab blank-screen regression caused by a hook-order crash after vocabulary data finished loading.
+- Anki: Fixed card-mine OSD feedback so the final mine result stops the Anki spinner first, then shows a single-line `✓`/`x` status without being overwritten by a later spinner tick.
+- Stats: Removed the misleading `New words` series from expanded session charts; session detail now shows only the real total-word and known-word lines.
+- 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.
+- Stats: `subminer stats -b` now runs as a standalone background stats daemon instead of reusing the main SubMiner app process, so the overlay app can still be launched separately for normal video watching.
+- Stats: Dashboard word mining still works against the background daemon by using a short-lived hidden helper for the Yomitan add-note flow.
+- 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.
+- Stats: Replaced heuristic stats word counts with Yomitan token counts, so session, media, anime, and trend subtitle totals now come directly from parsed subtitle tokens.
+- Stats: Updated stats UI labels and lookup-rate copy to refer to tokens instead of words where those counts are shown.
+- Overlay: Reduced repeated `Overlay loading...` popups on macOS when fullscreen tracker flaps briefly hide and recover the visible overlay.
+- Stats: Scaled expanded session-detail known-word charts to the session's actual percentage range so small changes no longer render as a nearly flat line.
+- Jlpt: Reduced JLPT dictionary startup log noise by summarizing duplicate surface-form collisions instead of logging one line per duplicate entry.
+
## v0.6.5 (2026-03-15)
### Internal
diff --git a/README.md b/README.md
index 59455e5..1efc593 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,9 @@
SubMiner is an Electron overlay for [mpv](https://mpv.io) that turns video into a sentence-mining workstation. Look up any word with [Yomitan](https://github.com/yomidevs/yomitan), mine it to Anki with one key, and track your immersion over time.
+> [!NOTE]
+> Release prep target: `v0.7.0`. This cut rolls the new stats/dashboard workflow, browser/daemon stats commands, dashboard mining actions, and the latest overlay/runtime stability fixes into the next 0-ver minor line.
+
[](./assets/minecard.mp4)
@@ -107,6 +110,9 @@ Run `SubMiner.AppImage` (Linux), `SubMiner.app` (macOS), or `SubMiner.exe` (Wind
subminer video.mkv # auto-starts overlay + resumes playback
subminer --start video.mkv # explicit overlay start (if plugin auto_start=no)
subminer stats # open the immersion dashboard
+subminer stats -b # keep the stats daemon running in background
+subminer stats -s # stop the dedicated stats daemon
+subminer stats cleanup # repair/prune stored stats vocabulary rows
```
---
diff --git a/backlog/tasks/task-169 - Cut-minor-release-v0.7.0-for-stats-and-runtime-polish.md b/backlog/tasks/task-169 - Cut-minor-release-v0.7.0-for-stats-and-runtime-polish.md
new file mode 100644
index 0000000..093dfd0
--- /dev/null
+++ b/backlog/tasks/task-169 - Cut-minor-release-v0.7.0-for-stats-and-runtime-polish.md
@@ -0,0 +1,80 @@
+---
+id: TASK-169
+title: Cut minor release v0.7.0 for stats and runtime polish
+status: Done
+assignee:
+ - codex
+created_date: '2026-03-19 17:20'
+updated_date: '2026-03-19 17:31'
+labels:
+ - release
+ - docs
+ - minor
+dependencies:
+ - TASK-168
+references:
+ - package.json
+ - README.md
+ - docs/RELEASING.md
+ - docs-site/changelog.md
+ - CHANGELOG.md
+ - release/release-notes.md
+priority: high
+ordinal: 108000
+---
+
+## Description
+
+
+Prepare the next release cut as `v0.7.0`, keeping 0-ver semantics by rolling the accumulated stats/dashboard, launcher, overlay, and stability work into the next minor line instead of a `1.0.0` release.
+
+
+## Acceptance Criteria
+
+- [x] #1 Repository version metadata is updated to `0.7.0`.
+- [x] #2 Root release-facing docs are refreshed for the `0.7.0` release cut.
+- [x] #3 `CHANGELOG.md` and `release/release-notes.md` contain the committed `v0.7.0` section and consumed fragments are removed.
+- [x] #4 Public changelog/docs surfaces reflect the new release.
+- [x] #5 Release-prep verification is recorded.
+
+
+## Implementation Plan
+
+
+1. Bump `package.json` to `0.7.0`.
+2. Refresh release-facing docs: root `README.md`, release guide versioning note, and public docs changelog summary.
+3. Run `bun run changelog:build --version 0.7.0` to commit release artifacts and consume pending fragments.
+4. Run release-prep verification (`changelog`, typecheck, tests, docs build if docs-site changed).
+5. Update this task with notes, verification, and final summary.
+
+
+## Implementation Notes
+
+
+Bumped `package.json` from `0.6.5` to `0.7.0` and refreshed the root release-facing copy in `README.md` so the release prep explicitly calls out the new stats/dashboard line plus the background stats daemon commands. Updated `docs/RELEASING.md` with the repo's 0-ver versioning policy and an explicit `--date` reminder after the changelog generator initially stamped `2026-03-20` from UTC instead of the intended local release date `2026-03-19`.
+
+Ran `bun run changelog:build --version 0.7.0`, which generated `CHANGELOG.md` and `release/release-notes.md` and removed the queued `changes/*.md` fragments for the accumulated stats, launcher, overlay, JLPT, and stability work. Added a curated `v0.7.0` summary to `docs-site/changelog.md` so the public docs changelog stays aligned with the committed root changelog while remaining user-facing.
+
+Verification:
+- `bash .agents/skills/subminer-change-verification/scripts/classify_subminer_diff.sh`
+- `bun run changelog:lint`
+- `bun run changelog:check --version 0.7.0`
+- `bun run verify:config-example`
+- `bun run typecheck`
+- `bun run test:fast`
+- `bun run test:env`
+- `bun run build`
+- `bun run docs:test`
+- `bun run docs:build`
+
+
+## Final Summary
+
+
+Prepared minor release `v0.7.0` as the next 0-ver major line. Version metadata, root changelog, generated release notes, README release copy, release-guide policy, and the public docs changelog are now aligned for the release cut.
+
+Docs update required: yes. Completed in `README.md`, `docs/RELEASING.md`, and `docs-site/changelog.md`.
+Changelog fragment required: no new fragment for this task. Existing pending release fragments were consumed into the committed `v0.7.0` changelog section and `release/release-notes.md`.
+
+Release-prep verification passed across changelog validation, config-example verification, typecheck, fast/env tests, full build, and docs-site test/build.
+
diff --git a/changes/2026-03-15-known-words-config-section.md b/changes/2026-03-15-known-words-config-section.md
deleted file mode 100644
index 6c95bcf..0000000
--- a/changes/2026-03-15-known-words-config-section.md
+++ /dev/null
@@ -1,5 +0,0 @@
-type: changed
-area: anki
-
-- Changed known-word cache settings to live under `ankiConnect.knownWords` instead of mixing them into `ankiConnect.nPlusOne`.
-- Kept legacy `ankiConnect.nPlusOne` known-word keys and older `ankiConnect.behavior.nPlusOne*` keys as deprecated compatibility fallbacks.
diff --git a/changes/2026-03-15-linux-plugin-binary-lowercase-fallback.md b/changes/2026-03-15-linux-plugin-binary-lowercase-fallback.md
deleted file mode 100644
index 271523b..0000000
--- a/changes/2026-03-15-linux-plugin-binary-lowercase-fallback.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: launcher
-
-- Fixed mpv Lua plugin binary auto-detection on Linux to also search `/usr/bin/subminer` and `/usr/local/bin/subminer` (lowercase), matching the conventional Unix wrapper name used by packaged installs such as the AUR package.
diff --git a/changes/2026-03-15-session-delete-from-sessions-tab.md b/changes/2026-03-15-session-delete-from-sessions-tab.md
deleted file mode 100644
index d17c95e..0000000
--- a/changes/2026-03-15-session-delete-from-sessions-tab.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: changed
-area: stats
-
-- Added session deletion to the Sessions tab with the same confirmation prompt used by anime episode/session deletes, and removed all associated session rows from the stats database.
diff --git a/changes/2026-03-15-stats-overlay-port-fix.md b/changes/2026-03-15-stats-overlay-port-fix.md
deleted file mode 100644
index 9b9c5b1..0000000
--- a/changes/2026-03-15-stats-overlay-port-fix.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: stats
-
-- Fixed the in-app stats overlay so it connects to the configured `stats.serverPort` instead of falling back to the default port.
diff --git a/changes/2026-03-15-surface-frequency-fallback.md b/changes/2026-03-15-surface-frequency-fallback.md
deleted file mode 100644
index 3fffb2a..0000000
--- a/changes/2026-03-15-surface-frequency-fallback.md
+++ /dev/null
@@ -1,9 +0,0 @@
-type: fixed
-area: overlay
-
-- Fixed subtitle frequency tagging for merged lookup-backed tokens like `陰に` by falling back to exact surface-form Yomitan frequencies when the normalized headword lookup misses.
-- Fixed MeCab merged-token position mapping across line breaks so merged content-plus-particle tokens like `陰に` keep their matched Yomitan frequency instead of inheriting shifted POS tags.
-- Fixed grouped frequency parsing in both Yomitan and fallback frequency-dictionary lookups so display values like `118,121` use the leading rank instead of collapsing the rank and occurrence count into `118121`.
-- Fixed frequency-rank ingestion to ignore Yomitan dictionaries explicitly marked `occurrence-based`, so raw occurrence counts are no longer treated as subtitle rank values.
-- Fixed inflected headword frequency tagging to prefer ranks from the selected Yomitan `termsFind` popup entry itself, ordered by configured dictionary priority, so forms like `潜み` use primary-dictionary ranks like `4073` before falling back to lower-priority raw lemma metadata such as `CC100`.
-- Fixed annotation-stage frequency filtering so exact kanji noun tokens like `者` keep their matched rank even when MeCab labels them `名詞/非自立`, instead of dropping the highlight after scan-time frequency lookup succeeds.
diff --git a/changes/2026-03-16-character-dictionary-startup-dedupe.md b/changes/2026-03-16-character-dictionary-startup-dedupe.md
deleted file mode 100644
index df5be99..0000000
--- a/changes/2026-03-16-character-dictionary-startup-dedupe.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: anki
-
-- Fixed repeated character-dictionary startup work by scheduling auto-sync only from mpv media-path changes instead of also re-triggering it from connection and media-title events for the same title.
diff --git a/changes/2026-03-16-macos-fullscreen-overlay-stability.md b/changes/2026-03-16-macos-fullscreen-overlay-stability.md
deleted file mode 100644
index 7a5de55..0000000
--- a/changes/2026-03-16-macos-fullscreen-overlay-stability.md
+++ /dev/null
@@ -1,7 +0,0 @@
-type: fixed
-area: overlay
-
-- Fixed macOS fullscreen overlay stability by keeping the passive visible overlay from stealing focus, re-raising the overlay window when reasserting its macOS topmost level, and tolerating one transient macOS tracker/helper miss before hiding the overlay.
-- Kept subtitle tokenization warmup one-shot for the lifetime of the app so later fullscreen/media churn on macOS does not replay the startup warmup gate after the first file is ready.
-- Added a bounded macOS tracker loss-grace window so fullscreen enter/leave transitions do not immediately hide and reload the overlay when the helper briefly loses the mpv window.
-- Skipped subtitle/tokenization refresh invalidation on character-dictionary auto-sync completion when the dictionary was already current, preventing startup flash/reload loops on unchanged media.
diff --git a/changes/2026-03-16-stats-mining-and-vocabulary-ux.md b/changes/2026-03-16-stats-mining-and-vocabulary-ux.md
deleted file mode 100644
index d1d6d81..0000000
--- a/changes/2026-03-16-stats-mining-and-vocabulary-ux.md
+++ /dev/null
@@ -1,11 +0,0 @@
-type: added
-area: immersion
-
-- Added Mine Word, Mine Sentence, and Mine Audio buttons to word detail example lines in the stats dashboard.
-- Mine Word creates a full Yomitan card (definition, reading, pitch accent) via the hidden search page bridge, then enriches with sentence audio, screenshot, and metadata extracted from the source video.
-- Mine Sentence and Mine Audio create cards directly with appropriate Lapis/Kiku flags, sentence highlighting, and media from the source file.
-- Media generation (audio + image/AVIF) runs in parallel and respects all AnkiConnect config options.
-- Added word exclusion list to the Vocabulary tab with localStorage persistence and a management modal.
-- Fixed truncated readings in the frequency rank table (e.g. お前 now shows おまえ instead of まえ).
-- Clicking a bar in the Top Repeated Words chart now opens the word detail panel.
-- Secondary subtitle text is now stored alongside primary subtitle lines for use as translation when mining cards from the stats page.
diff --git a/changes/2026-03-16-stats-storage-optimizations.md b/changes/2026-03-16-stats-storage-optimizations.md
deleted file mode 100644
index 37b779d..0000000
--- a/changes/2026-03-16-stats-storage-optimizations.md
+++ /dev/null
@@ -1,8 +0,0 @@
-type: changed
-area: immersion
-
-- Kept immersion tracking history by default while preserving daily/monthly rollup maintenance.
-- Added exact lifetime summary reads for overview/anime/media stats so dashboard totals no longer depend on rescanning raw telemetry.
-- Reduced tracker storage overhead by removing duplicated subtitle text from subtitle-line event payloads.
-- Deduplicated episode cover-art blobs through a shared blob store and updated cover-art reads/writes to resolve shared images correctly.
-- Added indexes for large-history session, telemetry, vocabulary, kanji, and cover-art queries to keep dashboard reads fast as the SQLite database grows.
diff --git a/changes/2026-03-17-background-stats-server.md b/changes/2026-03-17-background-stats-server.md
deleted file mode 100644
index 81c6408..0000000
--- a/changes/2026-03-17-background-stats-server.md
+++ /dev/null
@@ -1,6 +0,0 @@
-type: added
-area: stats
-
-- Added `subminer stats -b` to start or reuse a dedicated background stats server without blocking normal SubMiner instances.
-- Added `subminer stats -s` to stop the dedicated background stats server without closing browser tabs.
-- Stats server startup now reuses a running background stats daemon instead of trying to bind a second local server in another SubMiner instance.
diff --git a/changes/2026-03-17-session-known-word-timeline-fix.md b/changes/2026-03-17-session-known-word-timeline-fix.md
deleted file mode 100644
index 33af369..0000000
--- a/changes/2026-03-17-session-known-word-timeline-fix.md
+++ /dev/null
@@ -1,5 +0,0 @@
-type: fixed
-area: stats
-
-- Fixed session stats so known-word counts track real known-word occurrences without collapsing subtitle-line gaps.
-- Fixed session word totals in session-facing stats views to prefer token counts when available, preventing known words from exceeding total words in the session chart.
diff --git a/changes/2026-03-17-stats-library-tab-label.md b/changes/2026-03-17-stats-library-tab-label.md
deleted file mode 100644
index 7b425ac..0000000
--- a/changes/2026-03-17-stats-library-tab-label.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: changed
-area: immersion
-
-- Renamed the stats dashboard's Anime tab to Library so the media browser label matches non-anime sources like YouTube and other yt-dlp-backed content.
diff --git a/changes/2026-03-17-vocabulary-tab-hook-order-fix.md b/changes/2026-03-17-vocabulary-tab-hook-order-fix.md
deleted file mode 100644
index 365ff1c..0000000
--- a/changes/2026-03-17-vocabulary-tab-hook-order-fix.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: stats
-
-- Fixed the stats Vocabulary tab blank-screen regression caused by a hook-order crash after vocabulary data finished loading.
diff --git a/changes/2026-03-17-watch-threshold-centralization.md b/changes/2026-03-17-watch-threshold-centralization.md
deleted file mode 100644
index 0ed0204..0000000
--- a/changes/2026-03-17-watch-threshold-centralization.md
+++ /dev/null
@@ -1,5 +0,0 @@
-type: changed
-area: anilist
-
-- Standardized episode completion threshold by introducing `DEFAULT_MIN_WATCH_RATIO` and using it for both local watched state transitions and AniList post-watch progress updates.
-- Episode auto-marking now uses the same threshold as AniList (`85%`), removing divergent completion behavior.
diff --git a/changes/2026-03-18-mine-osd-spinner-result.md b/changes/2026-03-18-mine-osd-spinner-result.md
deleted file mode 100644
index 3a8e501..0000000
--- a/changes/2026-03-18-mine-osd-spinner-result.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: anki
-
-- Fixed card-mine OSD feedback so the final mine result stops the Anki spinner first, then shows a single-line `✓`/`x` status without being overwritten by a later spinner tick.
diff --git a/changes/2026-03-18-remove-session-new-words-series.md b/changes/2026-03-18-remove-session-new-words-series.md
deleted file mode 100644
index 39aedc7..0000000
--- a/changes/2026-03-18-remove-session-new-words-series.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: stats
-
-- Removed the misleading `New words` series from expanded session charts; session detail now shows only the real total-word and known-word lines.
diff --git a/changes/2026-03-18-stats-cross-anime-words-table.md b/changes/2026-03-18-stats-cross-anime-words-table.md
deleted file mode 100644
index 1a0c5e1..0000000
--- a/changes/2026-03-18-stats-cross-anime-words-table.md
+++ /dev/null
@@ -1,4 +0,0 @@
-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-daemon-decoupling.md b/changes/2026-03-18-stats-daemon-decoupling.md
deleted file mode 100644
index 5a826d8..0000000
--- a/changes/2026-03-18-stats-daemon-decoupling.md
+++ /dev/null
@@ -1,5 +0,0 @@
-type: fixed
-area: stats
-
-- `subminer stats -b` now runs as a standalone background stats daemon instead of reusing the main SubMiner app process, so the overlay app can still be launched separately for normal video watching.
-- Dashboard word mining still works against the background daemon by using a short-lived hidden helper for the Yomitan add-note flow.
diff --git a/changes/2026-03-18-stats-full-session-timelines.md b/changes/2026-03-18-stats-full-session-timelines.md
deleted file mode 100644
index a39d441..0000000
--- a/changes/2026-03-18-stats-full-session-timelines.md
+++ /dev/null
@@ -1,4 +0,0 @@
-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
deleted file mode 100644
index e3d4732..0000000
--- a/changes/2026-03-18-stats-mpv-args-passthrough.md
+++ /dev/null
@@ -1,4 +0,0 @@
-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-stats-yomitan-token-counts.md b/changes/2026-03-18-stats-yomitan-token-counts.md
deleted file mode 100644
index 01be369..0000000
--- a/changes/2026-03-18-stats-yomitan-token-counts.md
+++ /dev/null
@@ -1,5 +0,0 @@
-type: fixed
-area: stats
-
-- Replaced heuristic stats word counts with Yomitan token counts, so session, media, anime, and trend subtitle totals now come directly from parsed subtitle tokens.
-- Updated stats UI labels and lookup-rate copy to refer to tokens instead of words where those counts are shown.
diff --git a/changes/2026-03-18-subtitle-noise-filtering.md b/changes/2026-03-18-subtitle-noise-filtering.md
deleted file mode 100644
index ccb65cf..0000000
--- a/changes/2026-03-18-subtitle-noise-filtering.md
+++ /dev/null
@@ -1,5 +0,0 @@
-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 hoverable as plain subtitle tokens.
-- Expanded subtitle annotation noise filtering to also strip annotation metadata from standalone grammar-only helper tokens such as particles, auxiliaries, adnominals, common explanatory endings like `んです` / `のだ`, and merged trailing quote-particle forms like `...って` while keeping them tokenized for hover lookup.
diff --git a/changes/2026-03-19-overlay-loading-osd-fullscreen-flaps.md b/changes/2026-03-19-overlay-loading-osd-fullscreen-flaps.md
deleted file mode 100644
index 1230d61..0000000
--- a/changes/2026-03-19-overlay-loading-osd-fullscreen-flaps.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: overlay
-
-- Reduced repeated `Overlay loading...` popups on macOS when fullscreen tracker flaps briefly hide and recover the visible overlay.
diff --git a/changes/2026-03-19-session-detail-chart-scaling.md b/changes/2026-03-19-session-detail-chart-scaling.md
deleted file mode 100644
index a878a30..0000000
--- a/changes/2026-03-19-session-detail-chart-scaling.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: stats
-
-- Scaled expanded session-detail known-word charts to the session's actual percentage range so small changes no longer render as a nearly flat line.
diff --git a/changes/jlpt-duplicate-log-summary.md b/changes/jlpt-duplicate-log-summary.md
deleted file mode 100644
index 9c88e15..0000000
--- a/changes/jlpt-duplicate-log-summary.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: jlpt
-
-- Reduced JLPT dictionary startup log noise by summarizing duplicate surface-form collisions instead of logging one line per duplicate entry.
diff --git a/changes/stats-command.md b/changes/stats-command.md
deleted file mode 100644
index ddeb1d7..0000000
--- a/changes/stats-command.md
+++ /dev/null
@@ -1,6 +0,0 @@
-type: added
-area: launcher
-
-- Added `subminer stats` to launch the local stats dashboard, force-start the stats server on demand, and open the dashboard in your browser.
-- Added `subminer stats cleanup` to backfill vocabulary metadata and prune stale or excluded immersion rows on demand.
-- Added `stats.autoOpenBrowser` so browser launch after `subminer stats` can be enabled or disabled explicitly.
diff --git a/changes/stats-dashboard.md b/changes/stats-dashboard.md
deleted file mode 100644
index 89939b5..0000000
--- a/changes/stats-dashboard.md
+++ /dev/null
@@ -1,7 +0,0 @@
-type: added
-area: immersion
-
-- Added a local stats dashboard for immersion tracking with Overview, Anime, Trends, Vocabulary, and Sessions views.
-- Added anime progress, episode completion, Anki card links, and occurrence drill-down across the stats dashboard.
-- Added richer session timelines with new-word activity, cumulative totals, and pause/seek/card event markers.
-- Added completed-episodes and completed-anime totals to the Overview tracking snapshot.
diff --git a/docs-site/changelog.md b/docs-site/changelog.md
index 5a904e4..2a4db5f 100644
--- a/docs-site/changelog.md
+++ b/docs-site/changelog.md
@@ -1,5 +1,13 @@
# Changelog
+## v0.7.0 (2026-03-19)
+- Added a full local immersion dashboard release line with Overview, Library, Trends, Vocabulary, and Sessions drill-down views backed by SQLite tracking data.
+- Added browser-first stats workflows: `subminer stats`, background stats daemon controls (`-b` / `-s`), stats cleanup, and dashboard-side mining actions with media enrichment.
+- Improved stats accuracy and scale handling with Yomitan token counts, full session timelines, known-word timeline fixes, cross-media vocabulary fixes, and clearer session charts.
+- Improved overlay/runtime stability with quieter macOS fullscreen recovery, reduced repeated loading OSD popups, and better frequency/noise handling for subtitle annotations.
+- Added launcher mpv-args passthrough plus Linux plugin wrapper-name fallback for packaged installs.
+- Folded the accumulated release into the next 0-ver minor line rather than a `1.0.0` cut.
+
## v0.6.5 (2026-03-15)
- Seeded the AUR checkout with the repo `.SRCINFO` template before rewriting metadata so tagged releases do not depend on prior AUR state.
diff --git a/docs/RELEASING.md b/docs/RELEASING.md
index e5d3ec7..d99af2f 100644
--- a/docs/RELEASING.md
+++ b/docs/RELEASING.md
@@ -7,7 +7,7 @@
3. Run `bun run changelog:lint`.
4. Bump `package.json` to the release version.
5. Build release metadata before tagging:
- `bun run changelog:build --version `
+ `bun run changelog:build --version --date `
6. Review `CHANGELOG.md` and `release/release-notes.md`.
7. Run release gate locally:
`bun run changelog:check --version `
@@ -25,6 +25,8 @@
Notes:
+- Versioning policy: SubMiner stays 0-ver. Large or breaking release lines still bump the minor number (`0.x.0`), not `1.0.0`. Example: the next major line after `0.6.5` is `0.7.0`.
+- Pass `--date` explicitly when you want the release stamped with the local cut date; otherwise the generator uses the current ISO date, which can roll over to the next UTC day late at night.
- `changelog:check` now rejects tag/package version mismatches.
- `changelog:build` generates `CHANGELOG.md` + `release/release-notes.md` and removes the released `changes/*.md` fragments.
- Do not tag while `changes/*.md` fragments still exist.
diff --git a/package.json b/package.json
index 8ef2a10..ee4830c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "subminer",
- "version": "0.6.5",
+ "version": "0.7.0",
"description": "All-in-one sentence mining overlay with AnkiConnect and dictionary integration",
"packageManager": "bun@1.3.5",
"main": "dist/main-entry.js",