Downloads
| OS | Download |
|---|---|
| Windows | GameSentenceMiner-Setup-2026.9.3.exe |
| Windows (unpacked) | GameSentenceMiner-2026.9.3-win-unpacked.zip |
| Linux | GameSentenceMiner-2026.9.3.AppImage |
| macOS (Apple Silicon) | GameSentenceMiner-2026.9.3-arm64.dmg |
Intel Mac builds are no longer provided. If you need GSM on Intel Mac, run it from source.
What's Changed
A larger update to dictionary lookup, gamepad mining, more guided setup, and some stats utilities.
Note: As I get lazier and lazier, my usage of AI for stuff that I used to do by hand has increased substantially, release notes is the latest victim. This is a pretty huge wall of text, but hopefully should still be readable and easy to filter through. You can find these release notes duplicated at: https://github.com/bpwhelan/GameSentenceMiner/releases/tag/v2026.9.3
Hachidori and dictionary lookup
Hachidori, a Japanese-only dictionary extension by Bee, is now available alongside Yomitan. It offers fast dictionary imports and lookups, with extensive popup customization.
Try it in Overlay Settings → System → Dictionary Reader. Switching readers restarts the overlay automatically and leaves your Yomitan data untouched, so you can switch back any time. Yomitan remains the default. Both readers support controller lookup, dictionary audio, entry navigation, mining, and Jiten grading.
I'll probably keep using Yomitan out of habit, so feedback on Hachidori is especially welcome!
- Hachidori 0.1.6 is included. Its dictionary controls include reordering without reloading the whole set, per-dictionary update checks, dictionary groups, and low-memory settings with a memory readout. Popup customization includes custom buttons and Anki templates, pitch graphs, and a live design preview.
- Hachidori's optional Sharing settings let the overlay use dictionaries, personal entries, lookup counts, and settings from another Hachidori instance through its Anki Relay add-on. Experimental MDict import is available for .mdx dictionaries with .mdd resources.
- Hachidori's nested popups, dictionary audio, custom external links, and mining controls work inside GSM. Controller navigation keeps the selected popup open and waits for mining controls to become ready. Duplicate-note information refreshes while the overlay is running.
- Hachidori browser text-to-speech is available for playback; mining uses downloadable pronunciation sources and GSM's sentence audio. Browser speech is not attached as word audio in the overlay.
- Open Dictionary Settings now follows the selected reader. Existing experimental Hachidori selections migrate to the System setting, so the experimental master switch is no longer needed to use it.
Jiten Reader, Yomitan
- Jiten Reader is updated to 1.3.3. Overlay parsing now keeps text-block context, preserves highlight positions across wrapped text and supplementary characters, and reuses cached dialogue when compatible punctuation or surrounding text changes.
- Jiten highlighting no longer waits behind an extra display delay for cached results. It skips provisional OCR results, prioritizes the latest completed text, and preserves results when you hide and reopen the overlay.
- Japanese dictionary lookups now cross visual dialogue wraps without unwanted spaces splitting a word. Real spaces in the source text are preserved. Korean OCR spacing and word placement are also preserved more accurately.
- Yomitan startup now warns and pauses dictionary loading when its storage drive has less than 1 GiB free. Free space and restart the overlay to load it again. Unavailable overlay screenshot requests no longer produce repeated Yomitan screenshot errors.
Controller and keyboard navigation
Overlay Settings → Gamepad adds more ways to move through dialogue, menus, dictionary entries, and Jiten words. The new navigation experiments keep the existing behavior by default.
Movement options
- Hold Direction: keep normal repeat, accelerate while holding, jump to sentence starts, jump to new or highlighted Jiten words, or jump to a different Jiten status. A single tap still performs the usual movement.
- Left/Right at an Edge: continue into other blocks, wrap within the current line, or wrap within the current block.
- Up/Down Movement: move through lines, jump whole blocks in reading order, or move to the nearest block above or below.
- Starting Position: resume, start at the beginning or middle, select the first new Jiten word, or enter near your previous position. Unchanged text remembers your selection. Late Jiten results can still select the first unknown word if you have not moved or confirmed.
- Left-Stick Speed Curve gives finer movement with a gentle tilt and faster movement at full tilt. Block-Jump Trail adds a brief visual cue when moving between blocks and respects reduced-motion preferences.
Mining and bindings
- Separate Previous / Next New / i+1 Jiten Word bindings are available for both controllers and keyboards. These use Jiten Reader highlighting and respect the selected wrapping behavior.
- A configurable Translation Button requests a translation or toggles its visibility, including outside navigation mode. It starts disabled.
- Jiten's grading row is reachable above the first dictionary entry. Navigate grades, blacklist a word, or use Never Forget from the controller, then return to definitions. Saving a grade blocks duplicate confirmation while it is in progress.
- Manual mode and navigation now work together: entering navigation can reveal a hidden overlay without a separate manual activation. Initial selection and auto-confirm wait for the first selectable OCR result or frozen background; releasing navigation cancels a pending lookup.
- Windows controller support now covers Switch, PlayStation, Xbox, and generic DirectInput devices, including a fix for false Switch Pro button presses. No extra controller emulator or SDL installation is required. Linux and macOS retain their existing controller backends.
- Direction bindings can be remapped. The controller test and binding capture use the same device input as navigation, including numbered generic buttons and unmapped axis directions. Press a button or combination and release to save it; Backspace/Delete clears a binding and Escape cancels. Existing bindings may need recapturing when changing controller drivers.
Capture setup and OCR
The Text Capture Wizard now guides you through four steps: Capture → Texthook → OCR → Finalize. You can follow the steps or jump directly to the setting you need.
- Preview the game capture and switch capture type when the image is black. The text-hook step explains Luna/Textractor and Agent scripts, lets you start or stop an engine, and shows captured dialogue for selection.
- Agent script suggestions are ranked using the scene name, window title, and executable. Strong matches are offered directly; manual search remains available for other scripts.
- Selecting an OCR area runs a sample scan so you can check the result. OCR can be the main text source or a fallback for text a hook misses.
- Finalize shows the selected source and lets you choose what starts automatically for that game. Reopening the wizard loads the saved setup and preserves advanced settings, saved hooks, and scripts. Start or save failures leave the wizard available for retry.
More capture options
- OCR → Game & Areas → Autostart OCR exposes the same per-game setting as Game Automation.
- Add new area lets you draw and save an additional OCR region while OCR is running. Existing regions stay in place, and the new region is applied immediately. Choose a normal area for automatic capture or a secondary area for Menu OCR; a configurable shortcut is available.
- On Windows, Home → Setup New Game Capture → Monitor Capture can create a scene for an entire monitor with a separate desktop-audio source using the default output device.
- When automatic replay-buffer management is enabled on Windows, GSM stops the buffer after the tracked game stays in the background, obscured, or minimized for five minutes, and resumes it when you return. This also works without an overlay connection. Minimized exclusive-fullscreen windows remain tracked.
- Text-hook downloads can fall back to a bundled engine manifest and GitHub downloads if the primary host is unavailable. Engine files still download on demand.
Overlay text placement and scanning
- Text blocks are rebuilt from the actual word positions, improving separation of speaker names, dialogue, menu columns, mixed font sizes, and vertical text. Lines split by OCR can be joined without losing their text order, and retry results update the grouping even when the recognized text is unchanged.
- Overlay Settings → Capture → Adaptive OCR Retries (Experimental) can retry quickly while dialogue is still appearing, then slow down when progress is uncertain. Later local scans focus on the detected text area, with full-image checks to find text that moves or disappears. It is off by default and applies when Text Appears Instantly is off. It can increase local OCR work; it does not repeatedly send Google Lens requests.
- The experimental check for whether the last text is still on screen now uses a local OCR scan to see whether text moved before removing it. When found, the overlay updates its position. This also uses local OCR when Lens is selected.
- Hide When Text Overlaps, enabled by default, temporarily hides the live statistics widget when overlay text covers it. The widget returns after a later text update no longer overlaps it.
Anki setup and confirmation
Anki → General → Set up recommended note type: Lapis, Kiku, Senren… helps install and configure a recommended note type, including the overlay's Yomitan mappings.
- Choose an existing deck or create one, inspect the proposed mappings, and install a missing note type through Anki's import screen. Compatible installed note types are reused. Existing notes and templates are not converted or replaced.
- Automatic Yomitan setup creates a separate GSM - Lapis, GSM - Kiku, or GSM - Senren profile using your current dictionary preferences. It configures both Expression and Reading mining buttons and preserves previous profiles. Browser Yomitan and Hachidori settings are separate; a copyable field table is available for manual setup.
- Senren's older v4 field names are supported as well as the newer layout. Setup reports GSM and Yomitan results separately, with Apply settings again for retrying the overlay step. Setup details.
- Selecting a compatible installed note type in Key Settings or Anki → General offers to update field mappings, including renamed Lapis/Kiku/Senren models. The prompt shows current and proposed values; you can apply them or keep your current mappings.
- Mining with missing required fields now offers setup recovery. Disabled or intentionally unmapped optional media fields do not trigger that prompt.
Reviewing and mining cards
- Controller confirmation gains configurable play audio, add previous/next dialogue, and expand audio start/end actions. Confirmation briefly waits for button release, and window activation retries help the dialog receive focus.
- Game Pausing → Pause While Anki Confirmation Is Open keeps the game paused while you review a card. This is opt-in and requires Game Pausing. Closing confirmation releases its pause request; other active pause requests still apply.
- Previous-sentence and previous-screenshot fields skip empty dialogue and use the nearest earlier line with meaningful text, including when mining several selected lines or reusing cached media.
- Repeated Kiku context merges preserve line breaks inside each context without adding empty context groups. The grouping prompt stays accessible above the confirmation window.
- Fresh configurations no longer open Anki's browser automatically after mining. Existing saved preferences are retained.
Screenshots and animations
Choose one or several screenshots
- The screenshot selector shows up to 25 frames at half-second intervals, with large thumbnails that stay readable when the window is resized. Earlier/Later buttons and the Left/Right keys browse more of the replay.
- Click once to choose a single still. Ctrl-click or Shift-click starts a collection; add or remove frames across pages, then choose Use N screenshots. Selection numbers and the tray preserve the order you chose them.
- Previously visited pages are cached, and moving to another page cancels outdated loading. The initial page includes the default screenshot and follows your beginning/middle/end timing preference.
- Selected images use your still-image format, quality, size, and black-bar settings. Choosing stills can replace a pending automatic animation without changing sentence or audio timing.
- Replacing the screenshot preserves other images, text, and markup in the same Anki field. Append policies are respected. Canceling or failing to export leaves the original note unchanged.
- A new Copy Game Screenshot action in Hotkeys copies the current game image to the clipboard, with keyboard and controller bindings.
Control animated screenshot size
Screenshot → Animated Screenshot Settings gains an approximate Target size (KB) and optional Only animate voiced lines.
- Prefer FPS, Prefer quality, and Balanced control which settings are reduced to approach the size target. A target of 0 / Off keeps the existing size behavior; a positive target takes precedence over duration-based adaptive reductions.
- Size estimation adds encoding time, and the final file can exceed the target. GSM recalculates when the selected time range or fallback encoder changes.
- Only animate voiced lines uses animation when game speech is detected and its audio is kept; unvoiced lines use a normal still. It is off by default and requires voice detection. TTS or raw audio retained after unsuccessful detection does not count as detected speech. Confirmation changes are checked again. Animation details.
AI features
Overlay translations now appear over their matching text blocks. Blocks are translated together for context, with each answer attached to its source. Outdated responses are discarded; incomplete or mismatched responses report an error to avoid misplaced translations.
Ask about a line
Use Explain… in the overlay toolbar or More line actions → Ask AI in the text feed for grammar, vocabulary, nuance, and scene explanations. The text-feed menu also offers preset prompts and custom questions for individual lines. Manual requests do not require enabling Add To Anki.
- The overlay has a Translate toolbar button and an explanation panel with selectable text, scrolling, and an AI setup shortcut. Explanations use your configured native language and stay separate from saved dialogue translations.
- AI / Translation → Prompts adds presets for translation only, sentence breakdown, grammar, vocabulary, nuance, and scene summaries. Use them for Anki output, Copy selected preset into a custom prompt, or inspect a local Preview prompt without sending an AI request. Custom prompts can use the sentence, dialogue and character context, game title, and native language.
Provider setup
- Guided provider setup under Config → AI / Translation → General explains the account, API-key, and model steps. Test connection checks the current form with a short request. Manual requests open setup when needed; automatic requests show guidance without repeatedly opening settings.
- Connection errors now distinguish rejected credentials, unavailable models, quota/rate limits, and answers cut off by the output limit. DeepL remains translation-only; explanations need an AI provider.
- New Gemini configurations default to gemini-3.5-flash-lite, with gemma-4-31b-it as the backup. Saved Gemini 2.x model names migrate to the new default. If migrating both selections would make the primary and backup identical, the backup becomes gemma-4-31b-it so fallback stays available.
- Gemini's model selector refreshes available text models using the API key currently entered in the form. New Groq configurations use openai/gpt-oss-120b, with openai/gpt-oss-20b as the backup. AI setup and prompts.
Database maintenance and game archives
Tools → Database Maintenance / Saved Game Archives adds ways to reclaim database space while retaining your reading statistics. Automatic maintenance starts disabled.
- Archive a game from its page or the Games list, or select several games for a batch. GSM verifies a restorable ZIP before removing the original sentences from the active database. Newly read sentences can be added to a game's existing archive later.
- Reading time, character counts, reading speed, sessions, heatmaps, mining totals, kanji, and vocabulary statistics remain available. Archived vocabulary also remains included in generated frequency dictionaries.
- Archived sentences leave text searches until restored. Archives contain sentence data and media references, not copies of the audio/video/image files.
- Saved Game Archives lists the ZIPs with download, restore, and file-deletion controls. Restore skips duplicates and avoids counting reading statistics twice. Archives are retained separately from ordinary backup cleanup.
Maintenance and bulk actions
- Maintenance shows database size and reclaimable space, with manual compaction and optional weekly, 30-day, or 90-day schedules. Missed scheduled work can run after GSM is opened again.
- Optional automatic archiving applies to completed games after a configured period without reading. It checks the latest activity before archiving; restoring a still-eligible game can make it eligible for a later scheduled archive again.
- The Games list adds bulk status changes, including marking selected games completed. Select all follows the current filter. Batch operations report progress and keep failed games selected for retry.
Archive and maintenance details.
Kechimochi sync
Tools → Kechimochi Sync adds opt-in, one-way synchronization from GSM to Kechimochi. Enable Kechimochi's HTTP API and configure its address in GSM.
- Sync reading history and game-library metadata, including titles, covers, and planned or unplayed games. Live history, archived history, older daily totals, and imported external statistics can be included.
- Older corrections are reconciled as well as new reading. Sync tracks the entries it owns, recovers interrupted writes, and preserves unrelated Kechimochi entries and notes.
- Preview the sync scope and entries before running it. Choose every 15 minutes, hourly, or daily; enabling and saving starts an initial full sync. Status shows progress and the last result.
- If Kechimochi is closed or temporarily unreachable, GSM records the status and retries quietly instead of repeatedly logging warnings.
- If you previously imported GSM CSV files, review matching existing logs before the first sync. Matching is opt-in and avoids automatically adopting ambiguous entries. Reading times are rounded to whole minutes for Kechimochi.
Matching, schedules, and sync details.
Reading goals
- Goals can have explicit Start Date & Time and End Date & Time, with Now and 24 hours from now shortcuts. Times use your local time zone.
- Progress, daily targets, projections, and completion use the actual goal window, including goals that start or finish partway through a day. The page refreshes timed goals while it stays open, and the overlay respects their exact deadlines.
- Existing date-only goals still include the whole final day. Imported daily totals count toward a timed goal only when that entire day is inside its window.
Text feed and text processing
- Text-feed history survives reconnect snapshots instead of losing previously displayed lines. Existing records still receive corrections and expiry updates.
- New incoming records respect pause and automatic-start preferences, including both supported stream formats. Pausing no longer allows new stream records to slip into the feed.
- On Windows, launching GSM as administrator disables automatic browser opening for the text feed during that run. The feed server stays available and the saved startup preference is preserved.
- Remove Newlines now removes line breaks without inserting spaces, avoiding unwanted gaps inside words split across lines.
- Short lines with fewer than ten normalized characters are excluded from recycled-text detection, so brief dialogue is not treated as recycled text solely because it appeared earlier.
Data folders, startup, and diagnostics
Moving your data
- Custom data-folder choices now survive updates and deletion of the original AppData folder. Desktop GSM, the Python backend, the installer, and diagnostics use the same saved location.
- Settings → Data Folder shows the active folder, database path, and location file. Moving data validates the destination and keeps the source files. Missing custom folders no longer cause a silent switch back to the default database; invalid locations report an error.
- A recovery step handles older relocations that accidentally continued writing to the original database. It uses SQLite backups, preserves recovery copies, and retries after a failure.
- Fresh Windows per-user installations can choose the data folder separately from the application folder. Upgrades retain the existing choice, and uninstall preserves user data.
- Moving data still does not copy Chromium storage or Yomitan dictionaries; export and reimport those when relocating. Use Original AppData selects the original folder without merging databases. Data-folder and recovery details.
Startup and updates
- Working Python environments without a setup stamp can be adopted instead of unnecessarily rebuilt. Restarts and shutdowns wait for the backend and its connections to close, with cleanup of managed child processes.
- Windows automatic updates run the installer silently and relaunch GSM afterward. Startup failures now show an error dialog instead of only being written to a log.
- Missing macOS framework dependencies are now included.
Logs and performance
- The console's Export Anonymized Logs creates a ZIP with detected usernames, home paths, computer names, email/IP addresses, and common credentials redacted, including compressed log history. Original logs stay intact. Review the export before sharing: free-text personal details may still be present.
- Google Lens reuses connections between scans and reports request-stage timings when advanced debug logging is enabled. A separate latency diagnostic uses generated sample text for troubleshooting. Lens diagnostics.
- Overlay rendering, OCR image preparation, repeated text cleanup, matching, and kanji counting do less repeated work. Dense overlay layouts use fewer browser layout passes, and native acceleration retains a Python fallback. These improvements reduce processing overhead; recognition-engine and network time still depend on the selected OCR service.
Encrypted device sync — work in progress
Still in development and may not be available for a while.
Settings → Advanced → Encrypted device sync… is intended for opt-in encrypted sentence and selected-setting sync using a relay and pairing key. Media stays local; keep local backups. Setup and recovery.




