- Tab identifiers and DOM IDs now reflect role (secondary/primary) not language
- State type `tsukihimeActiveTab` updated from `'en' | 'ja'` to `'secondary' | 'primary'`
- Docs and config comments updated to match
Page snapshots, console logs, and downloaded files from browser-automation
sessions were landing in the repo (they reached a PR once). Ignore them so
they cannot be committed again.
A CJK-only subtitle track name (e.g. 日本語字幕) slugifies to an empty
string, so a duplicate-language release produced 'episode.ja..ass'.
Only append the track suffix when the slug is non-empty.
CodeRabbit caught that the rename stopped at src/, leaving the mpv plugin
emitting the old CLI flag.
- plugin/subminer/session_bindings.lua: openTsukihime -> --open-tsukihime
(the old flag no longer exists, so the overlay shortcut was a no-op)
- docs-site: rename the integration page, nav entry, and shortcuts row;
rewrite the page for the TsukiHime API rather than find-and-replace
- changes/: rename the changeset and describe TsukiHime
- config.example.jsonc (+ docs-site copy): regenerated from definitions
- settings registry: route tsukihime.* to Integrations with the branded
TsukiHime label (it was falling through to Advanced)
- tsukihimeFetchJson: apiBaseUrl is user config, so a malformed or
non-HTTP(S) value now returns a structured error instead of throwing
The animetosho backend was swapped for TsukiHime and never shipped in a
release (the integration landed after v0.18.0), so no config migration or
legacy aliases are needed. Renames the module, IPC channels, config key,
session action, shortcut id, CLI flag, DOM ids, and CSS classes.
"animetosho" is kept only where it names the upstream service: the
imported-entry flag TsukiHime returns, the /tosho/ storage mirror path,
and storage.animetosho.org, which that mirror currently redirects to.
Also drops two stray NUL bytes that have sat inside the dedup-key template
literals since the integration landed (#159). They were harmless (any
separator groups correctly) but made grep treat the file as binary.
Animetosho stops updating May 2026; TsukiHime mirrors its index and
attachment storage. Internal identifiers, IPC channels, settings keys,
and the openAnimetosho shortcut keep the legacy name so user configs
stay valid; user-facing labels now say TsukiHime.
- API base https://api.tsukihime.org/v1 (/search/torrents, /torrents/{id})
- attachment type is numeric (1 = subtitle); sizes are no longer reported
- storage URLs split: native /attach/ vs /tosho/attach/ for imported
entries (flagged animetosho: true or id >= 1e9)
- download redirect allowlist covers *.tsukihime.org and *.animetosho.org
(the /tosho/ mirror currently 302s to storage.animetosho.org)
- search results now expose sublangs; modal shows them per release
- Autoplay-ready gate now ignores untokenized subtitle payloads while tokenization warmup is pending, so playback doesn't resume before the first tokenized cue
- Wire isTokenizationReady dep through main.ts and update gate/wiring tests accordingly
- Drop stale release/release-notes.md, add changelog entry under changes/
Background AppImage launches executed directly from a FUSE mount owned by a
short-lived helper's AppImage runtime. On quit, the runtime unmounted the
squashfs while utility children (network service) were still mid-shutdown,
SIGBUSing them and triggering KDE Service Crash notifications on every video
close. Detach a POSIX-sh supervisor instead: mount via --appimage-mount, run
AppRun from the mount, and release the holder only once no process still
executes from the mount. Falls back to the old direct launch on any failure
or with SUBMINER_NO_APPIMAGE_MOUNT_KEEPALIVE=1.
- Merge related fix entries into single files (name-match-span-merge into character-name-split-and-scan-recovery, kanji-non-independent-noun-annotations + lexicalized-expression-frequency into content-adverb-annotation-stop-list, greedy-name-parsing-priority into character-name-split-and-scan-recovery, kiku-field-grouping-cancel-double-toast into kiku-field-grouping-modal-recovery, history-rofi-cover-art into launcher-history-command)
- Rewrite remaining entries for brevity and reclassify stats-trend-title-limits as "changed"
- Add allowReadingOnlyMatch:false to kanji token known-word lookups so 渓谷/けいこく no longer matches a mined 警告/けいこく card via reading-only index
- Greedy name pre-pass yields when a strictly longer generic word starts at the same position (空 no longer splits 空気; ties still go to the name)
- 確かに and やはり no longer excluded from frequency/JLPT highlighting and vocab stats
- Stop-word list now covers only interjections, pronouns, and grammar fragments
- Drop changes/kiku-field-grouping-modal-wiring.md (landed in #138)
- Drop changes/known-word-partial-reading-highlight.md (landed in #142)
- Remove assets/minecard.mkv demo video