diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0a0306e7..1b10fb73 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,40 @@
# Changelog
+## v0.17.0 (2026-06-15)
+
+### Changed
+
+- **Subtitle Delay Keybindings**: Updated default overlay subtitle delay and step bindings to match mpv conventions: `z`, `Z`, and `x` adjust `sub-delay`; `Ctrl+Shift+Left/Right` run native `sub-step` with OSD feedback. The previous SubMiner-only adjacent-cue delay action has been removed.
+- **Update Notifications**: New installs now default update notifications to overlay-only instead of overlay + system notifications.
+
+### Fixed
+
+- **Anki – Highlight Word**: Fixed bolding of the mined word in Kiku sentence and sentence-furigana fields when the source Yomitan sentence did not already contain bold markup.
+- **Anki – Lapis/Kiku Word Cards**: Fixed word-and-sentence marker missing from Lapis/Kiku word cards enriched through SubMiner, which could hide sentence context on the card front.
+- **Anki – Windows Media Generation**: Fixed known-word cache refreshes when no deck is configured, and fixed audio/image generation after background launches by recreating missing FFmpeg temp directories before clipping.
+- **Character Dictionary – Windows**: Fixed the Windows "SubMiner mpv" shortcut so character dictionary auto-sync can fall back to mpv's current video path when app media state is not yet ready.
+- **Notifications**: Restored the SubMiner app icon on system notifications that do not supply a custom notification image.
+- **Overlay – macOS Yomitan Popup**: Fixed Yomitan popup focus after card mining or popup reload; fixed popups staying open when clicking transparent overlay space — click-away now closes the popup and returns click passthrough to mpv without a hide/reappear cycle.
+- **Overlay – Linux Auto-Pause Startup**: Fixed the visible overlay on Linux auto-paused startup to stay interactive during the initial measurement gap; startup subtitle cache misses now paint raw text before tokenization finishes, and temporarily empty `sub-text` refreshes are resolved before warm readiness resumes playback.
+- **Overlay – Playlist Advance**: Fixed the visible overlay being dismissed when mpv advances to the next playlist item, including when the next episode loads after the warm transition delay.
+- **Overlay – Windows Subtitle Bar**: Fixed shaky hover and click interaction on the Windows subtitle bar when a video attaches to an already-running background SubMiner instance.
+- **Stats – AniList Linking**: Fixed manual AniList linking from the stats anime page so auto-searches strip the generated "Season N" suffix and query only the anime title.
+- **Updates – Linux Support Assets**: Fixed Linux updates to correctly install and refresh the launcher runtime plugin copy and rofi theme alongside AppImage and launcher updates; unrelated SubMiner data directories are now left untouched and plugin copies are staged before replacing the live runtime. Fixed first-launch playback on fresh installs by auto-installing missing managed support assets from the bundled app before mpv starts.
+
+### Docs
+
+- **Linux Update Flows**: Documented that Linux update flows manage the launcher runtime plugin copy and rofi theme from `subminer-assets.tar.gz`, and that normal launcher playback auto-installs those managed support assets on a fresh install if either is missing.
+
+
+Internal changes
+
+### Internal
+
+- **Runtime Modules**: Split main-process runtime wiring into focused modules without changing user-facing behavior; hardened helpers against stale background stats daemon PIDs, stalled subtitle extraction, and dropped async errors.
+- **Release CI**: Fixed GitHub release notes to preserve the `What's Changed` and `New Contributors` attribution sections when CI regenerates from the committed changelog; scoped prerelease note reuse to the same base version so a new beta line starts from current fragments.
+
+
+
## v0.16.0 (2026-06-10)
### Breaking Changes
diff --git a/changes/anki-highlight-word-fallback.md b/changes/anki-highlight-word-fallback.md
deleted file mode 100644
index aac364ea..00000000
--- a/changes/anki-highlight-word-fallback.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: anki
-
-- Fixed Highlight Word not bolding the mined word in Kiku sentence and sentence-furigana fields when the source Yomitan sentence field did not already contain bold markup.
diff --git a/changes/desktop-notification-icons.md b/changes/desktop-notification-icons.md
deleted file mode 100644
index 5fcf912a..00000000
--- a/changes/desktop-notification-icons.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: notifications
-
-- Restored the SubMiner app icon on system notifications that do not provide a custom notification image.
diff --git a/changes/kiku-lapis-word-sentence-card.md b/changes/kiku-lapis-word-sentence-card.md
deleted file mode 100644
index b8c00609..00000000
--- a/changes/kiku-lapis-word-sentence-card.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: anki
-
-- Fixed Lapis/Kiku word cards enriched through SubMiner missing the word-and-sentence marker, which could hide sentence context on the card front.
diff --git a/changes/linux-support-assets-updates-docs.md b/changes/linux-support-assets-updates-docs.md
deleted file mode 100644
index 4312c3cc..00000000
--- a/changes/linux-support-assets-updates-docs.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: docs
-area: updates
-
-- Documented that Linux update flows manage the launcher runtime plugin copy and rofi theme from `subminer-assets.tar.gz`, and that normal launcher playback auto-installs those managed support assets if either one is missing.
diff --git a/changes/linux-support-assets-updates.md b/changes/linux-support-assets-updates.md
deleted file mode 100644
index 1a4e616b..00000000
--- a/changes/linux-support-assets-updates.md
+++ /dev/null
@@ -1,6 +0,0 @@
-type: fixed
-area: updates
-
-- Fixed Linux updates so the managed support-asset install now creates and refreshes both the launcher runtime plugin copy and the rofi theme alongside AppImage and launcher updates.
-- Fixed Linux support-asset refreshes so unrelated SubMiner data directories are left alone and plugin copies are staged before replacing the live runtime plugin.
-- Fixed first Linux launcher playback on fresh installs by auto-installing the managed runtime plugin copy and rofi theme from the bundled app before mpv starts when either support asset is missing.
diff --git a/changes/macos-yomitan-popup-focus.md b/changes/macos-yomitan-popup-focus.md
deleted file mode 100644
index b5aa84d5..00000000
--- a/changes/macos-yomitan-popup-focus.md
+++ /dev/null
@@ -1,5 +0,0 @@
-type: fixed
-area: overlay
-
-- Fixed macOS Yomitan popup focus after card mining or popup reload while still allowing click-away to close the popup without a hide/reappear cycle.
-- Fixed macOS Yomitan popups staying open when clicking transparent overlay space; click-away is captured for popup close, then passthrough returns to mpv.
diff --git a/changes/overlay-autopause-startup-subtitle.md b/changes/overlay-autopause-startup-subtitle.md
deleted file mode 100644
index b78c2ac4..00000000
--- a/changes/overlay-autopause-startup-subtitle.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: overlay
-
-- Fixed auto-paused Linux visible overlay startup so the overlay stays interactive during the first measurement gap, startup subtitle cache misses paint raw text before tokenization finishes, and temporarily empty mpv `sub-text` refreshes parsed cues before synthetic warm readiness can resume playback.
diff --git a/changes/overlay-mpv-subtitle-keybindings.md b/changes/overlay-mpv-subtitle-keybindings.md
deleted file mode 100644
index b724b9fe..00000000
--- a/changes/overlay-mpv-subtitle-keybindings.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: changed
-area: overlay
-
-- Updated default overlay subtitle delay/step bindings to match mpv: `z`, `Z`, and `x` adjust `sub-delay`; `Ctrl+Shift+Left/Right` run native `sub-step` and show subtitle delay on the OSD. Removed the old SubMiner-only adjacent-cue delay action.
diff --git a/changes/overlay-playlist-visible-state.md b/changes/overlay-playlist-visible-state.md
deleted file mode 100644
index 76764550..00000000
--- a/changes/overlay-playlist-visible-state.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: overlay
-
-- Kept the visible overlay active while mpv advances to the next playlist item, even when the next episode loads after the warm transition delay.
diff --git a/changes/release-notes-attribution-placement.md b/changes/release-notes-attribution-placement.md
deleted file mode 100644
index f49354ee..00000000
--- a/changes/release-notes-attribution-placement.md
+++ /dev/null
@@ -1,5 +0,0 @@
-type: fixed
-area: release
-
-- Kept the GitHub release `What's Changed` and `New Contributors` attribution sections when CI regenerates release notes from the committed changelog.
-- Scoped prerelease note reuse to the same base version so a new beta line starts from current fragments instead of stale notes from older prereleases.
diff --git a/changes/split-main-runtime-modules.md b/changes/split-main-runtime-modules.md
deleted file mode 100644
index 01c10c1f..00000000
--- a/changes/split-main-runtime-modules.md
+++ /dev/null
@@ -1,5 +0,0 @@
-type: internal
-area: runtime
-
-- Split main-process runtime wiring into focused modules without changing user-facing behavior.
-- Hardened split runtime helpers against stale background stats daemon PIDs, stalled subtitle extraction, and dropped async errors.
diff --git a/changes/stats-anilist-title-search.md b/changes/stats-anilist-title-search.md
deleted file mode 100644
index 23e0c02f..00000000
--- a/changes/stats-anilist-title-search.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: stats
-
-- Fixed manual AniList linking from the stats anime page so automatic searches drop the generated `Season N` suffix and search only the anime title.
diff --git a/changes/update-notification-default-overlay.md b/changes/update-notification-default-overlay.md
deleted file mode 100644
index 7e521426..00000000
--- a/changes/update-notification-default-overlay.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: changed
-area: updates
-
-- New installs now default update notifications to overlay-only instead of overlay + system notifications.
diff --git a/changes/windows-anki-media-startup.md b/changes/windows-anki-media-startup.md
deleted file mode 100644
index 8bd45ed8..00000000
--- a/changes/windows-anki-media-startup.md
+++ /dev/null
@@ -1,5 +0,0 @@
-type: fixed
-area: anki
-
-- Fixed known-word cache refreshes without a configured deck by using AnkiConnect's valid all-notes query instead of `is:note`.
-- Fixed Windows media generation after background launches by recreating missing FFmpeg temp output directories before clipping audio or images.
diff --git a/changes/windows-character-dictionary-mpv-path.md b/changes/windows-character-dictionary-mpv-path.md
deleted file mode 100644
index 53a21696..00000000
--- a/changes/windows-character-dictionary-mpv-path.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: dictionary
-
-- Fixed Windows `SubMiner mpv` shortcut launches so character dictionary auto-sync can fall back to mpv's current video path when app media state is not ready yet.
diff --git a/changes/windows-overlay-hover.md b/changes/windows-overlay-hover.md
deleted file mode 100644
index 497d866e..00000000
--- a/changes/windows-overlay-hover.md
+++ /dev/null
@@ -1,4 +0,0 @@
-type: fixed
-area: overlay
-
-- Fixed shaky Windows subtitle-bar hover/click interaction when a video attaches to an already-running background SubMiner app.
diff --git a/docs-site/changelog.md b/docs-site/changelog.md
index 969a7f7e..231ed253 100644
--- a/docs-site/changelog.md
+++ b/docs-site/changelog.md
@@ -1,6 +1,46 @@
# Changelog
-## v0.16.0 (2026-06-10)
+## v0.17.0 (2026-06-15)
+
+**Changed**
+
+- **Subtitle Delay Keybindings**: Updated default overlay subtitle delay and step bindings to match mpv conventions: `z`, `Z`, and `x` adjust `sub-delay`; `Ctrl+Shift+Left/Right` run native `sub-step` with OSD feedback. The previous SubMiner-only adjacent-cue delay action has been removed.
+- **Update Notifications**: New installs now default update notifications to overlay-only instead of overlay + system notifications.
+
+**Fixed**
+
+- **Anki – Highlight Word**: Fixed bolding of the mined word in Kiku sentence and sentence-furigana fields when the source Yomitan sentence did not already contain bold markup.
+- **Anki – Lapis/Kiku Word Cards**: Fixed word-and-sentence marker missing from Lapis/Kiku word cards enriched through SubMiner, which could hide sentence context on the card front.
+- **Anki – Windows Media Generation**: Fixed known-word cache refreshes when no deck is configured, and fixed audio/image generation after background launches by recreating missing FFmpeg temp directories before clipping.
+- **Character Dictionary – Windows**: Fixed the Windows "SubMiner mpv" shortcut so character dictionary auto-sync can fall back to mpv's current video path when app media state is not yet ready.
+- **Notifications**: Restored the SubMiner app icon on system notifications that do not supply a custom notification image.
+- **Overlay – macOS Yomitan Popup**: Fixed Yomitan popup focus after card mining or popup reload; fixed popups staying open when clicking transparent overlay space — click-away now closes the popup and returns click passthrough to mpv without a hide/reappear cycle.
+- **Overlay – Linux Auto-Pause Startup**: Fixed the visible overlay on Linux auto-paused startup to stay interactive during the initial measurement gap; startup subtitle cache misses now paint raw text before tokenization finishes, and temporarily empty `sub-text` refreshes are resolved before warm readiness resumes playback.
+- **Overlay – Playlist Advance**: Fixed the visible overlay being dismissed when mpv advances to the next playlist item, including when the next episode loads after the warm transition delay.
+- **Overlay – Windows Subtitle Bar**: Fixed shaky hover and click interaction on the Windows subtitle bar when a video attaches to an already-running background SubMiner instance.
+- **Stats – AniList Linking**: Fixed manual AniList linking from the stats anime page so auto-searches strip the generated "Season N" suffix and query only the anime title.
+- **Updates – Linux Support Assets**: Fixed Linux updates to correctly install and refresh the launcher runtime plugin copy and rofi theme alongside AppImage and launcher updates; unrelated SubMiner data directories are now left untouched and plugin copies are staged before replacing the live runtime. Fixed first-launch playback on fresh installs by auto-installing missing managed support assets from the bundled app before mpv starts.
+
+**Docs**
+
+- **Linux Update Flows**: Documented that Linux update flows manage the launcher runtime plugin copy and rofi theme from `subminer-assets.tar.gz`, and that normal launcher playback auto-installs those managed support assets on a fresh install if either is missing.
+
+
+Internal changes
+
+**Internal**
+
+- **Runtime Modules**: Split main-process runtime wiring into focused modules without changing user-facing behavior; hardened helpers against stale background stats daemon PIDs, stalled subtitle extraction, and dropped async errors.
+- **Release CI**: Fixed GitHub release notes to preserve the `What's Changed` and `New Contributors` attribution sections when CI regenerates from the committed changelog; scoped prerelease note reuse to the same base version so a new beta line starts from current fragments.
+
+
+
+## Previous Versions
+
+
+v0.16.x
+
+v0.16.0 (2026-06-10)
**Breaking Changes**
@@ -24,7 +64,7 @@
- **Stats Browsing**: Remembers library card size; retries stored cover art without extra AniList lookups; preserves PNG/WebP MIME types; honors custom AnkiConnect URLs for Browse; shows progress during session deletes.
- **Startup Notifications**: Tokenization, subtitle annotation, and character dictionary status now route through queued overlay notifications in `overlay`/`both` mode instead of falling back to mpv OSD while the overlay loads.
- **Notification Deduplication**: Cycling subtitle modes updates the active overlay card in place rather than stacking duplicates; repeated progress updates (e.g. subsync) tick in place without flickering.
-- **Update Notification Default**: New installs default `notificationType` to `overlay`, while `both` remains available for overlay + system notifications.
+- **Update Notification Default**: New installs default `notificationType` to `both` so update alerts appear in both overlay and system notifications.
**Fixed**
@@ -48,7 +88,7 @@
-## Previous Versions
+
v0.15.x
diff --git a/package.json b/package.json
index 8941e4a5..1793e0eb 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "subminer",
"productName": "SubMiner",
"desktopName": "SubMiner.desktop",
- "version": "0.17.0-beta.2",
+ "version": "0.17.0",
"description": "All-in-one sentence mining overlay with AnkiConnect and dictionary integration",
"packageManager": "bun@1.3.5",
"main": "dist/main-entry.js",
diff --git a/release/release-notes.md b/release/release-notes.md
new file mode 100644
index 00000000..6ee812a8
--- /dev/null
+++ b/release/release-notes.md
@@ -0,0 +1,68 @@
+## Highlights
+### Changed
+
+- **Subtitle Delay Keybindings:** Overlay subtitle delay controls now match mpv's native bindings.
+ - `z`, `Z`, and `x` adjust subtitle delay; `Ctrl+Shift+Left/Right` step to the adjacent subtitle and show the current delay on the OSD.
+ - Removes the old SubMiner-specific adjacent-cue delay action in favor of mpv's built-in `sub-step`.
+
+- **Update Notifications:** New installs now default to overlay-only update notifications instead of also sending a system notification.
+
+### Fixed
+
+- **Anki — Highlight Word:** The mined word is now correctly bolded in Kiku sentence and sentence-furigana fields even when the source Yomitan sentence did not already contain bold markup.
+
+- **Anki — Lapis/Kiku Word Cards:** Word cards enriched through SubMiner now correctly include the word-and-sentence marker, restoring sentence context on the card front.
+
+- **Anki — Windows:** Fixed two issues that surfaced after background app launches on Windows.
+ - Audio clip and image generation now works correctly by recreating missing FFmpeg temp directories before export.
+ - Known-word cache refreshes no longer fail when no deck is configured.
+
+- **Desktop Notifications:** Restored the SubMiner app icon on system notifications that do not supply their own image.
+
+- **Dictionary — Windows:** The character dictionary auto-sync on `SubMiner mpv` shortcut launches can now fall back to mpv's current video path when app media state is not yet ready.
+
+- **Overlay — macOS Yomitan Popup:** Fixed focus and dismiss behavior for the Yomitan popup on macOS.
+ - Popup focus is correctly restored after mining a card or reloading the popup.
+ - Clicking on transparent overlay space now properly closes the popup and passes the click through to mpv, with no hide/reappear cycle.
+
+- **Overlay — Linux Startup:** Fixed several edge cases that could leave the overlay unresponsive or drop subtitles at startup when auto-pause was active.
+ - The overlay stays interactive during the initial render measurement gap.
+ - Subtitles paint as plain text immediately on cache misses, before tokenization finishes.
+ - Temporarily empty subtitle state is now re-parsed correctly before warm readiness resumes playback.
+
+- **Overlay — Playlist Advance:** The visible overlay now stays interactive when mpv advances to the next playlist item, including when the next episode loads after the warm transition delay.
+
+- **Overlay — Windows:** Fixed shaky subtitle-bar hover and click behavior when a video connects to an already-running background SubMiner instance.
+
+- **Stats — AniList Search:** Manual AniList linking from the stats anime page now searches only the anime title, dropping any generated "Season N" suffix that was causing failed lookups.
+
+- **Updates — Linux:** Improved Linux update reliability for managed support assets.
+ - Updates now correctly install and refresh both the launcher runtime plugin copy and the rofi theme alongside AppImage and launcher updates.
+ - Support-asset refreshes no longer touch unrelated SubMiner data directories, and plugin copies are staged safely before replacing the live runtime plugin.
+ - Fresh installs now auto-install the managed runtime plugin and rofi theme from the bundled app on first launcher playback if either asset is missing.
+
+### Docs
+
+- **Linux Updates:** Documented how Linux update flows manage the launcher runtime plugin and rofi theme, and that the first launcher playback auto-installs any missing managed support assets from the bundled app.
+
+## What's Changed
+
+- Replace subtitle delay actions with native mpv keybindings by @ksyasuda in #120
+- fix(stats): strip Season N suffix from AniList title searches by @ksyasuda in #121
+- fix(overlay): preserve visible state across playlist item transitions by @ksyasuda in #124
+- fix(overlay): restore macOS Yomitan popup focus without breaking click-away by @ksyasuda in #125
+- fix(linux): auto-install managed plugin copy; include in asset updates by @ksyasuda in #127
+- Fix Windows Anki startup and overlay regressions by @ksyasuda in #128
+
+## Installation
+
+See the README and docs/installation guide for full setup steps.
+
+## Assets
+
+- Linux: `SubMiner.AppImage`
+- macOS: `SubMiner-*.dmg` and `SubMiner-*.zip`
+- Windows: `SubMiner-*.exe` and `SubMiner-*-win.zip`
+- Optional extras: `subminer-assets.tar.gz` and the `subminer` launcher
+
+Note: the `subminer` wrapper script uses Bun (`#!/usr/bin/env bun`), so `bun` must be installed and on `PATH`.