mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-05-29 12:55:16 -07:00
791c993870
- Convert flat prose entries in CHANGELOG.md and docs-site/changelog.md to bold headers + sub-bullets - Scope artifact uploads in release/prerelease workflows to `latest*.yml` instead of `*.yml` - Update release-notes and RELEASING docs to match - Adjust workflow tests for new nested bullet format
10 KiB
10 KiB
Highlights
Breaking Changes
- Subsync:
- The
subsync.defaultModeconfig option has been removed - Subsync now always opens the manual subtitle picker regardless of any previously set default mode
- The
- N+1 Highlighting:
- N+1 highlighting now has its own dedicated
ankiConnect.nPlusOne.enabledoption, separate from known-word highlighting - It is no longer enabled automatically when known-word highlighting is on — enable it explicitly to keep N+1 annotations
- N+1 highlighting now has its own dedicated
Added
- Auto-Updater:
- Tray and
subminer -uupdate checks with app update prompts - Launcher and Linux rofi theme auto-updates
- Checksum verification and configurable notifications
- Opt-in prerelease channel via
updates.channel: "prerelease"
- Tray and
- Settings Window:
- New dedicated Settings window via
subminer --settingsorsubminer settings, organized into Appearance, Behavior, Anki, Input, and Integration sections - Click-to-learn keybinding controls
- AnkiConnect-backed deck, field, and note-type pickers that auto-fill from the configured Anki deck
- Cross-category search
- Live save for most options including subtitle CSS, stats keys, logging level, Jimaku, Subsync, and Anki mappings
- AI and translation settings remain config-file only
- New dedicated Settings window via
- Inline Character Portraits:
- Optional AniList character portraits appear inline for name-matched subtitle text
- Manual AniList overrides scoped per parent media directory so separate season folders maintain separate character dictionary selections
- Character Dictionary Manager: New
Ctrl/Cmd+Dmanager modal to remove, reorder, or override loaded entries. - Log Export: Sanitized log ZIP export from the tray menu and via
subminer logs -e, with home-directory usernames redacted from exported contents. - Launcher CLI:
subminer --version/subminer -vprints the installed app versionmpv.profileconfig and Settings support passes a named mpv profile to managed launches- Bundled mpv plugin startup options are now configurable from SubMiner config
- First-Run Setup:
- Optional installer for Bun and the
subminerCLI on Linux, macOS, and Windows - Windows
subminer.cmdPATH shim sosubminerworks without manually addingSubMiner.exeto PATH - Setup recognizes existing Homebrew or user PATH installs and avoids writing into Homebrew-owned paths
- Includes an Open SubMiner Settings button
- Standalone setup app quits after completing, returning terminal control
- Optional installer for Bun and the
- Primary Subtitle Visibility on Yomitan Popup: New
subtitleStyle.primaryVisibleOnYomitanPopupoption keeps hover-mode primary subtitles visible while a Yomitan popup is open.
Changed
- Subtitle Appearance Config:
- Primary and secondary subtitle appearance now use color controls plus CSS declaration editors, saved as
subtitleStyle.css,subtitleStyle.secondary.css, andsubtitleSidebar.css - Known-word and N+1 annotation colors moved to
subtitleStyle.knownWordColorandsubtitleStyle.nPlusOneColor - Subtitle font defaults updated to
Hiragino Sans, M PLUS 1, Source Han Sans JP, Noto Sans CJK JP - Existing configs migrate automatically; legacy Anki color keys still accepted with deprecation warnings
- Primary and secondary subtitle appearance now use color controls plus CSS declaration editors, saved as
- Subtitle Style Defaults:
- Stronger outline-style text shadow
- Thicker JLPT underlines
- Frequency
topXdefault raised to10000
- Character Dictionary:
- Entries scoped to the current AniList media for name matching and inline portraits
- Generates Japanese-only name aliases so raw romanized/English aliases no longer surface as separate results
- In-app AniList selector waits for an explicit search with the box prefilled from the current filename
subtitleStyle.nameMatchEnabledis now the sole switch for dictionary sync and builds
- Electron Runtime: Updated from 39.8.6 to 42.2.0, returning SubMiner to a supported Electron release line.
- Jellyfin Setup:
- Removed the server presets dropdown
- Setup now shows a single editable server URL field
- Jellyfin Cast Identity:
- Device identity now derived from the OS hostname and always reported as SubMiner
- Previously configurable identity fields are ignored, preventing multiple installs from sharing a remote-session identity
- Startup Defaults: Jellyfin remote-session startup warmup and character-name subtitle highlighting now default to off.
- Setup Appearance: Removed the bundled mpv runtime plugin readiness card from the setup flow.
Fixed
- AniList Progress:
- Progress updates fire correctly when playback reaches or skips past the watched threshold, using fresh mpv timing events
- Season-specific results preferred for multi-season files, with a clear message when the matched season is not in Planning or Watching
- Repeated missing-token checks no longer exhaust retry attempts or duplicate dead-letter entries
- Anki Mining:
- Sentence-audio padding is opt-in by default
- Animated AVIF freeze-frame duration aligned to word audio length without double-counting
- Multi-line sentence alignment fixed for repeated subtitle text
- Kiku duplicate-card detection, auto-merge, modal acknowledgment race, and field/tag ordering corrected
- YouTube playback cards use mpv's resolved stream URLs
- Sentence cards refresh the secondary subtitle before saving
- Jellyfin Discovery:
- Startup, subtitle track selection, and duplicate ready-signal handling all fixed
- Paused mpv no longer misreported as playing
- Resume corrected when a remote play command sends
StartPositionTicks: 0despite saved progress
- Jellyfin Remote:
- Tray checkbox stays in sync on Linux after tray, CLI, or startup changes
- Remote controller visibility and progress sync fixed for seeks, stops, startup path changes, and Linux websocket reconnect windows
- Play and Resume now behave correctly (Play from beginning, Resume from saved position)
- Final progress reports reuse SubMiner's last known position when mpv resets on stop
- Windows setup login flow fixed with an IPC bridge, immediate feedback, and a timeout with inline error for unreachable servers
- Overlay (macOS):
- Overlay hides when mpv loses focus, is minimized, or is no longer the foreground app
- Stays stable through transient window geometry disappearances from macOS APIs and when clicking from the overlay back into mpv
- Stats overlay opened inactive so it appears over fullscreen mpv without switching Spaces
- Passthrough fixed so mpv controls stay clickable before hovering a subtitle bar
- Yomitan Sidebar:
- Playback stays paused for sidebar-opened Yomitan popups when auto-pause is enabled
- Popups now open when startup races the Yomitan extension load
- Sidebar mining cards use audio and images from the clicked sidebar line instead of the current primary subtitle
- Launcher:
subminer appon Linux returns terminal control immediatelysubminer app --setupopens the setup flow when SubMiner is already running in the background
- YouTube Playback:
- Selected subtitles downloaded to local temp files so the primary bar and sidebar read the same source, with cleanup on reload and quit
- False load-failure notifications suppressed
- Tray icon created on launcher-managed playback that attaches to an already-running process
- Shortcuts:
- Native mpv menu shortcuts disabled during managed macOS playback so configured SubMiner shortcuts work while mpv has focus
- Custom session shortcuts including
stats.markWatchedKeywired through mpv - Multi-line copy/mine overlay correctly focused so number keys choose the line count on macOS and Windows
- Controller Bindings:
- Controller config and debug shortcuts stay closed while controller support is disabled
- Binding learn mode starts from the edit pencil
- Remaps saved per controller profile
- Binding badges also start learn mode
- Row reset buttons restore individual bindings to defaults
- Logging:
logging.levelforwarded to launcher-started and Windows shortcut-started mpv sessions, covering mpv log verbosity, plugin logging, and plugin-launched app logginglogging.rotation(default 7 days) and per-componentlogging.filestoggles added, with mpv logs disabled by default- Repeated IPC socket warning spam suppressed while waiting for mpv to recreate the socket
- Windows mpv IPC, subtitle track, and Yomitan diagnostics added
- In-Player Stats:
- Layering fixed so delete confirmations, overlay modals, and update-check dialogs appear above the stats window
- Jellyfin playback stats grouped by item metadata so watched episodes merge with matching local library titles and keep clean display names
- WebSocket Annotations:
- Annotation spans and token metadata stay on the annotation WebSocket
- The regular subtitle WebSocket is plain-text only
- Subtitle Annotation Prefetching: Cached colored annotations and character images ready sooner for live subtitle changes without delaying raw subtitle display.
- Windows Startup Errors: Fatal startup failures now show a native error dialog and write details to the app log instead of exiting silently.
Docs
- Documentation Site:
- Published stable docs at the site root with current development docs under
/main/ - Fixed versioned docs navigation, archived page link handling, and local dev version routing
- Documented all previously undocumented config options including
subtitleStyle.primaryDefaultMode,stats.markWatchedKey,immersionTracking.lifetimeSummaries.*, and all sevenmpv.*launcher options - Added Playback Startup Flow and Runtime Sockets diagrams to the architecture docs with cross-reference pointers in the MPV Plugin and Troubleshooting pages
- Published stable docs at the site root with current development docs under
Installation
See the README and docs/installation guide for full setup steps.
Assets
- Linux:
SubMiner.AppImage - macOS:
SubMiner-*.dmgandSubMiner-*.zip - Windows:
SubMiner-*.exeandSubMiner-*-win.zip - Optional extras:
subminer-assets.tar.gzand thesubminerlauncher
Note: the subminer wrapper script uses Bun (#!/usr/bin/env bun), so bun must be installed and on PATH.