sudacode
780a3fa8cb
fix: apply CodeRabbit auto-fixes
2026-07-09 22:39:41 -07:00
sudacode
3d715c8b89
test(launcher): stabilize SSH resolver coverage
2026-07-09 22:39:26 -07:00
sudacode
cbb19864c4
docs(launcher): design SSH resolver testability
2026-07-09 22:35:24 -07:00
sudacode
32c62b076b
fix(launcher): ignore stale sync sockets
2026-07-09 18:35:36 -07:00
sudacode
2d2813ec2b
docs(launcher): design stale sync socket guard
2026-07-09 18:32:46 -07:00
sudacode
d57eae4863
fix(launcher): resolve remote Bun path for sync
2026-07-09 18:26:24 -07:00
sudacode
4a43232ffa
docs(launcher): design remote sync runtime path fix
2026-07-09 18:23:03 -07:00
sudacode
dfde19cc4d
fix(launcher): address sync review feedback
2026-07-09 00:30:43 -07:00
sudacode
58d54311d8
fix(launcher): address code review findings in stats sync
...
- merge-catalog: stop dropping anilist_id on every new anime insert
(bun:sqlite .get() returns null, so the old !== undefined guard always
fired); the guard was dead anyway since a colliding id is caught earlier
- sync-command: throw instead of fail() inside runHostSync so the finally
block runs and temp dirs holding snapshot data are cleaned up on failure
- ssh: shell-quote the user-supplied --remote-cmd in the probe, and reject
option-like (-prefixed) SSH hosts that ssh/scp would parse as flags
- sync-db: close the remote handle if opening the local DB throws
- sync-shared: treat EPERM from process.kill(pid, 0) as alive, not dead
- cli-parser: trim the sync host before the mode-exclusivity check
- tests: cover anilist_id preservation, anilist-based anime matching, and
the SSH host/shell-quote guards
2026-07-08 23:51:46 -07:00
sudacode
be31f96f02
feat(launcher): add sync command to merge stats and history between machines over SSH
...
subminer sync <host> exchanges VACUUM INTO snapshots over ssh/scp and each
side merges the other's data as an insert-only union keyed on session UUIDs,
video keys, series title keys, and word/kanji identity. Lifetime totals and
daily/monthly rollups are applied incrementally so pre-retention history
survives, remote-only historical rollups are copied, and re-syncing is
idempotent. sync --snapshot/--merge expose the underlying steps for manual
transfers; a pid-file/mpv-socket guard refuses to run while SubMiner may be
writing the database and schema-version mismatches abort the merge.
2026-07-08 23:28:10 -07:00
sudacode
cdb1475a54
chore(assets): update icons and favicons
2026-07-08 22:35:47 -07:00
sudacode
a2e49b369b
fix(tokenizer): merge scanner metadata per token instead of all-or-nothi
...
- Replace hasSameTokenSpans + full-discard with mergeScannerTokensIntoParseTokens
- Grafts isNameMatch/frequencyRank/etc onto matching parse spans; filler chunks degrade only themselves
- Fixes name annotations dropping for entire subtitle lines containing unmatched interjections
2026-07-08 22:26:34 -07:00
sudacode
7f13aed50a
fix(overlay): keep frequency/JLPT highlight for kanji non-independent nouns ( #150 )
2026-07-08 22:25:32 -07:00
sudacode
8b21a2bca8
fix(overlay): remove content adverbs from annotation stop-word list
...
- 確かに and やはり no longer excluded from frequency/JLPT highlighting and vocab stats
- Stop-word list now covers only interjections, pronouns, and grammar fragments
2026-07-08 20:15:45 -07:00
sudacode
925413adfe
chore(release): prepare 0.18.0-beta.2
v0.18.0-beta.2
2026-07-08 02:31:14 -07:00
sudacode
d0644ab2eb
fix(stats): parse v3 reading-aware known-word cache in stats server ( #149 )
2026-07-08 02:15:58 -07:00
sudacode
d253710c2e
fix(stats): fetch cover art eagerly at session start instead of on series page visit ( #148 )
2026-07-08 00:59:35 -07:00
sudacode
c3df510e4f
docs(release): reclassify audio normalization as added, not fixed
...
- Move card audio normalization entry from Fixed → Added in prerelease notes
- Update changes/audio-normalization.md type: fixed → added
2026-07-08 00:38:38 -07:00
sudacode
187f68e5b6
fix(tokenizer): prevent grammar tokens from borrowing known-word highlight via unrelated readings ( #147 )
2026-07-07 23:57:47 -07:00
sudacode
0e254cbbef
fix(launcher): move fzf previews below menus
2026-07-07 22:36:56 -07:00
sudacode
7b94adafbd
chore(release): prepare 0.18.0-beta.1
v0.18.0-beta.1
2026-07-07 02:40:05 -07:00
sudacode
61f39d1e09
fix(overlay): resolve unspaced Japanese name splits and scan recovery ( #146 )
2026-07-07 02:33:46 -07:00
sudacode
e7739de51c
fix(tokenizer): keep unparsed Yomitan tokens hoverable ( #145 )
2026-07-07 02:01:04 -07:00
sudacode
ad1d240f20
refactor(tests): centralize lane definitions and add per-file isolation ( #143 )
2026-07-07 01:51:05 -07:00
sudacode
8b0ef662bc
chore: remove shipped changelog entries and demo asset
...
- 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
2026-07-07 00:18:48 -07:00
sudacode
0a58c20ad7
fix(stats): start stats server on background app launch ( #144 )
2026-07-07 00:16:57 -07:00
sudacode
38ddb29aa0
feat(anki): reading-aware known-word matching (cache v3) ( #142 )
2026-07-07 00:13:10 -07:00
sudacode
8b9a70c5a6
feat(stats): Trends dashboard overhaul — title visibility, ranking modes, calendar-accurate windows, tooltips ( #140 )
2026-07-06 23:52:43 -07:00
sudacode
48a084914a
feat(branding): replace app icon with contributed pixel-art set ( #141 )
2026-07-06 23:31:19 -07:00
sudacode
a042b04357
fix(overlay): prevent field grouping modal from freezing overlay on Hyprland ( #138 )
2026-07-06 22:13:14 -07:00
sudacode
35ca2afc6f
fix(overlay): collapse karaoke syllable spam in secondary subtitles ( #139 )
2026-07-06 01:09:06 -07:00
sudacode
b14f977e33
fix(tokenizer): stop partial furigana readings from marking words known ( #137 )
2026-07-05 17:02:44 -07:00
sudacode
eef4500599
feat(launcher): add -H/--history command to browse local watch history ( #136 )
2026-07-05 16:46:05 -07:00
sudacode
73af1451b7
fix(anki): lower audio normalization target to -23 LUFS (EBU R128)
2026-07-05 01:13:54 -07:00
sudacode
36a3704815
fix(youtube): parse mpv EDL stream URLs with byte-length guards ( #134 )
2026-07-02 01:37:37 -07:00
sudacode
359cb0a301
Normalize generated Anki audio by default ( #135 )
2026-07-02 00:34:16 -07:00
sudacode
4b10e85053
chore(release): prepare v0.17.2
v0.17.2
2026-06-28 23:03:18 -07:00
sudacode
c942a2cf2d
fFix(youtube): recover source URL for background media cache on direct mpv open ( #132 )
2026-06-28 22:46:11 -07:00
sudacode
f65afa6046
feat(youtube): notify on manual picker open and show success after track load ( #133 )
2026-06-28 22:43:16 -07:00
sudacode
389d8e06e0
chore: remove stale npm artifacts
2026-06-28 20:18:08 -07:00
sudacode
0008b55b70
chore(release): prepare v0.17.1
v0.17.1
2026-06-27 22:59:28 -07:00
sudacode
d16ae9c745
chore(release): prepare v0.17.1-beta.1
v0.17.1-beta.1
2026-06-27 22:10:02 -07:00
sudacode
36f94151b8
fix(logs): use local date for log filenames and expand export redaction ( #131 )
2026-06-27 21:08:11 -07:00
sudacode
5326ad32f5
feat(youtube): add mediaCache mode and safer stream media extraction ( #130 )
2026-06-27 19:20:18 -07:00
sudacode
d199376364
chore(release): prepare v0.17.0
v0.17.0
2026-06-15 01:58:42 -07:00
sudacode
3aee88c150
chore(release): prepare v0.17.0-beta.2
v0.17.0-beta.2
2026-06-14 20:58:26 -07:00
sudacode
70da3ee8bd
Fix Windows Anki startup and overlay regressions ( #128 )
2026-06-14 20:51:56 -07:00
sudacode
aa8eb753f6
fix: scope prerelease note reuse by version
2026-06-14 18:04:03 -07:00
sudacode
8d73de8731
docs: scope 0.17.0 beta prerelease notes
2026-06-14 17:50:09 -07:00
sudacode
5a98397efe
chore: prepare 0.17.0-beta.1 prerelease
v0.17.0-beta.1
2026-06-14 17:34:05 -07:00