diff --git a/package.json b/package.json index cc397856..791ad903 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "subminer", "productName": "SubMiner", "desktopName": "SubMiner.desktop", - "version": "0.22.0", + "version": "0.22.1-beta.1", "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/packaging/release-notes/prerelease-notes.md b/packaging/release-notes/prerelease-notes.md index 596d3245..035385a3 100644 --- a/packaging/release-notes/prerelease-notes.md +++ b/packaging/release-notes/prerelease-notes.md @@ -1,88 +1,21 @@ > This is a prerelease build for testing. Stable changelog and docs-site updates remain pending until the final stable release. - - -## Changes since v0.20.1-beta.1 - -- Upgraded the desktop runtime to Electron 43.7.7. -- SubMiner now refuses to start on an unsupported Electron runtime, or after an Electron major or minor downgrade, so your Yomitan profile data stays safe; patch downgrades are still allowed. -- Automatic character-dictionary updates now stop if a Yomitan profile that had dictionaries suddenly reports none. -- Development launches now use a separate `SubMiner-dev` profile unless you explicitly ask for the production profile. -- Sentence mining (single and multi-line) no longer counts each card twice in session and lifetime stats. -- Deleting sessions now updates word and kanji "first seen" and "last seen" dates correctly, and retention pruning keeps historical discovery dates and counts. -- Words hidden by the vocabulary filter are no longer counted in the new-words charts, so the charts now match the vocabulary summary. -- A one-time background repair on next launch fixes stale "last seen" dates and existing chart mismatches. -- Overview totals, charts, the activity calendar, and the vocabulary summary now refresh after you delete sessions, and a failed refresh keeps the dashboard visible with a retry option. -- Subtitle generation now works during Windows YouTube playback and loads the generated subtitles into the playing video. -- On Windows, moving on to a video queued from the YouTube browser window no longer drops the rest of mpv's queue. -- The stats docs now cover the automatic Overview refresh after deletions and how discovery dates are kept through retention pruning. + ## Highlights -### Added - -- **YouTube Browser Window**: - - Open it with `subminer youtube` (or `subminer yt`), or pick **Browse YouTube** from the tray. It stays logged in across restarts. - - Clicking a video plays it in mpv. Middle-click, Shift-click, Ctrl-click, or the right-click menu adds it to mpv's playlist. - - Queued videos get the same Japanese subtitle setup when they start. - - Closing the window quits SubMiner if you started it with `subminer youtube`. If a video is still playing, SubMiner waits until mpv closes. -- **Whisper Subtitles for YouTube**: - - Set `youtube.subtitleSource` to `whisper` to make subtitles with Whisper instead of downloading YouTube's captions. - - The video stays paused while Whisper works, and progress shows in the subtitle generation modal. You can close the modal to keep watching, or cancel. - - The subtitle generation modal (`Ctrl+Shift+G`) now works on YouTube videos, including on Windows. -- **Mouse and Scroll Wheel Bindings**: - - You can now use scroll wheel keys (`WHEEL_UP`, `WHEEL_DOWN`, `WHEEL_LEFT`, `WHEEL_RIGHT`) in `keybindings` and record them in the settings key editor. - - mpv's mouse button and wheel bindings now work while the cursor is over the overlay. This matters most on Hyprland, where these bindings did nothing before. - - When a binding conflicts, SubMiner's own bindings and right-click pause take priority over mpv's. -- **Session Help Commands**: During playback, press `Enter` or double-click a row in session help to run that command. Hovering over a row makes it the target for `Enter`. - -### Changed - -- **Release Assets**: Releases no longer include package-size JSON reports. - ### Fixed - -- **Jellyfin Subtitles**: - - The Japanese track is selected, and annotations start, as soon as it downloads. SubMiner no longer waits for the other tracks. - - Japanese and English tracks are now picked automatically on episodes with image-based subtitles (PGS, DVD, DVB). - - If one track fails to download, the other tracks are still selected. -- **Jellyfin Audio Track**: On direct-play streams, timing review previews and mined card audio now use the audio track you're playing. -- **Media Timing Review**: - - Trim handles are now thin lines centered on the clip edges. - - Original subtitle boundaries are now plain orange bars with no labels. - - The preview cursor no longer stutters on macOS with Bluetooth headphones such as AirPods. -- **Hyprland Fullscreen**: The overlay stays visible when mpv enters or leaves fullscreen. With `mpv.backend: x11`, subtitles and the sidebar stay clickable after going fullscreen. -- **mpv Key Bindings in the Overlay**: mpv key bindings, such as `9`/`0` for volume, now work while the overlay has focus, even when the overlay loaded before mpv connected. -- **YouTube Japanese Subtitles**: Some videos also list a machine-translated Japanese track. On those, Japanese subtitles no longer fail with "HTTP 429". If YouTube refuses a direct download, SubMiner retries with yt-dlp. -- **Stats Accuracy**: - - Sentence mining no longer counts each card twice in session and lifetime stats. - - Overview totals, charts, the activity calendar, and the vocabulary summary now update after you delete sessions. - - Word and kanji dates stay correct after deleting sessions. New-word charts now match the vocabulary summary. -- **Dictionary Safety**: Automatic character dictionary changes now stop if a Yomitan profile that had dictionaries suddenly reports none. SubMiner also refuses to load Yomitan data after a downgrade to an older Electron version. -- **AppImage in Sandboxes**: The AppImage now opens its window in sandboxes that mount the image themselves, such as `firejail --appimage`. -- **Ctrl+C Crash**: Stopping the terminal command that started SubMiner with Ctrl+C no longer crashes it with a "write EPIPE" error. -- **Security Updates**: Electron is updated to 43.7.7 and undici to 7.29.1, which fixes known security advisories. +- **Windows Overlay**: + - The overlay now finds mpv more reliably, without relying on PowerShell lookups. + - You can now configure the IPC socket in `mpv.conf`. + - The overlay no longer stays attached to an unrelated window after mpv's process ID is reused. + - Stalled overlays now log diagnostic warnings without debug logging enabled. ### Docs - -- **Docs Site Rewrite**: Pages are shorter and easier to scan. The configuration reference now has a short explanation and a table of keys and defaults for each config block. Pages that no longer matched current behavior are fixed. -- **Arch Linux Install**: The MeCab install command now uses the AUR package `mecab-git`. The README now matches the installation guide. -- **Stats**: The docs now cover the Overview refreshing after you delete sessions, and how first-seen dates are kept when old sessions are cleaned up. +- **Windows Overlay Troubleshooting**: Added a guide to collecting and interpreting overlay attachment and readiness warnings without debug logging. ## What's Changed -- fix(storage): protect Yomitan profiles across Electron runtime changes by @ksyasuda in #211 -- fix(jellyfin): select subtitles faster and survive failed track downloads by @ksyasuda in #270 -- fix(jellyfin): use the current audio track for media generation by @ksyasuda in #271 -- feat(youtube): add YouTube browser window and Whisper subtitle source by @ksyasuda in #273 -- fix(overlay): thin centered trim handles and label-free subtitle boundaries in timing review by @ksyasuda in #274 -- feat(overlay): run session help commands with Enter or double-click by @ksyasuda in #275 -- fix(overlay): keep overlay mapped during Hyprland/Sway fullscreen by @ksyasuda in #276 -- fix(linux): skip AppImage mount keepalive on sandbox squashfs mounts by @ksyasuda in #277 -- fix(overlay): reload imported mpv keys after mpv connects by @ksyasuda in #278 -- feat(overlay): forward mpv mouse button and wheel bindings by @ksyasuda in #279 -- fix(stats): count mined cards once and keep lexical stats exact after deletes by @ksyasuda in #280 -- fix(youtube): keep mpv queue when advancing to a queued video on Windows by @ksyasuda in #281 -- fix(subtitles): allow Whisper generation during Windows YouTube stream playback by @ksyasuda in #282 +- fix(overlay): identify Windows mpv windows through IPC PID by @ksyasuda in #330 ## Installation