sudacode
a5a6426fe1
feat: add mark-as-watched keybinding and Yomitan lookup tracking
...
Add configurable keybinding to mark the current video as watched with
IPC plumbing between renderer and main process. Add event listener
infrastructure for tracking Yomitan dictionary lookups per session.
2026-03-17 20:12:41 -07:00
sudacode
11710f20db
feat: stabilize startup sync and overlay/runtime paths
2026-03-17 20:05:08 -07:00
sudacode
a9e33618e7
chore: apply remaining workspace formatting and updates
2026-03-17 20:05:08 -07:00
sudacode
a317019bb9
feat(tokenizer): exclude interjections and sound effects from subtitle annotations
...
- Filter out 感動詞 (interjection) POS1 tokens from annotation payloads
- Exclude common interjection terms (ああ, ええ, はあ, etc.)
- Exclude reduplicated kana SFX with optional trailing と
- shouldExcludeTokenFromSubtitleAnnotations checks both POS1 and term patterns
- filterSubtitleAnnotationTokens applied after annotation stage
2026-03-17 20:05:07 -07:00
sudacode
5767667d51
feat(stats): add mine card from stats page with Yomitan bridge
...
- POST /api/stats/mine-card endpoint with mode=word|sentence|audio
- mode=word: creates full Yomitan card (definition/reading/pitch) via hidden search page bridge
- mode=sentence/audio: creates card directly with Lapis/Kiku flags
- Audio + image generated in parallel from source video via ffmpeg
- Respects all AnkiConnect config (AVIF, static, field mappings, metadata pattern)
- addYomitanNoteViaSearch calls window.__subminerAddNote exposed by Yomitan fork
- Syncs AnkiConnect URL to Yomitan before each word mine
2026-03-17 20:05:07 -07:00
sudacode
a1f30fd482
feat(tracking): store secondary subtitle text and source path in occurrence data
...
- Add secondary_text column to imm_subtitle_lines with migration
- Pass currentSecondarySubText through recordSubtitleLine flow
- Include secondaryText and sourcePath in word/kanji occurrence queries
- Update all type interfaces (backend + frontend)
2026-03-17 20:05:07 -07:00
sudacode
04682a02cc
feat: improve stats dashboard and annotation settings
2026-03-17 20:05:07 -07:00
sudacode
650e95cdc3
Feature/renderer performance ( #24 )
2026-03-17 20:05:07 -07:00
sudacode
46fbea902a
Harden stats APIs and fix Electron Yomitan debug runtime
...
- Validate stats session IDs/limits and add AnkiConnect request timeouts
- Stabilize stats window/runtime lifecycle and tighten window security defaults
- Fix Electron CLI debug startup by unsetting `ELECTRON_RUN_AS_NODE` and wiring Yomitan session state
- Expand regression coverage for tracker queries/events ordering and session aggregates
- Update docs for stats dashboard usage and Yomitan lookup troubleshooting
2026-03-17 20:05:07 -07:00
sudacode
ff2d9141bc
feat(stats): add episodes completed and anime completed to tracking snapshot
...
- Query watched videos count and anime with all episodes watched
- Display in overview tracking snapshot
- Remove efficiency section from trends
2026-03-17 20:05:07 -07:00
sudacode
9530445a95
feat: add AniList rate limiter and remaining backlog tasks
2026-03-17 20:05:07 -07:00
sudacode
ffe5c6e1c6
feat(stats): add stats server, API endpoints, config, and Anki integration
...
- Hono HTTP server with 20+ REST endpoints for stats data
- Stats overlay BrowserWindow with toggle keybinding
- IPC channel definitions and preload bridge
- Stats config section (toggleKey, serverPort, autoStartServer, autoOpenBrowser)
- Config resolver for stats section
- AnkiConnect proxy endpoints (guiBrowse, notesInfo)
- Note ID passthrough in card mining callback chain
- Stats CLI command with autoOpenBrowser respect
2026-03-17 20:04:40 -07:00
sudacode
fe8bb167c4
feat(immersion): add anime metadata, occurrence tracking, and schema upgrades
...
- Add imm_anime table with AniList integration
- Add imm_subtitle_lines, imm_word_line_occurrences, imm_kanji_line_occurrences
- Add POS fields (part_of_speech, pos1, pos2, pos3) to imm_words
- Add anime metadata parsing with guessit fallback
- Add video duration tracking and watched status
- Add episode, streak, trend, and word/kanji detail queries
- Deduplicate subtitle line recording within sessions
- Pass Anki note IDs through card mining callback chain
2026-03-17 20:01:23 -07:00
sudacode
50b45cac0b
Summarize JLPT duplicate term conflicts into a single startup log ( #26 )
2026-03-16 01:08:40 -07:00
sudacode
478869ff28
feat(controller): add inline remap modal with descriptor-based bindings ( #21 )
2026-03-15 15:55:45 -07:00
sudacode
9eed37420e
Automate AUR publish in tagged release workflow ( #22 )
2026-03-14 19:49:46 -07:00
sudacode
1b56360a24
feat(yomitan): add read-only external profile support for shared dictionaries ( #18 )
2026-03-12 01:17:34 -07:00
sudacode
4d7c80f2e4
Add overlay gamepad support for keyboard-only mode ( #17 )
2026-03-11 20:34:46 -07:00
sudacode
fed60c265d
style: restore repo formatting
2026-03-09 18:10:32 -07:00
sudacode
e59192bbe1
Improve startup dictionary progress and fix overlay/plugin input handlin
...
- show a dedicated startup OSD "building" phase for character dictionary sync
- forward bare `Tab` from visible overlay to mpv so AniSkip works while focused
- fix Windows plugin env override resolution for `SUBMINER_BINARY_PATH`
2026-03-09 02:35:03 -07:00
sudacode
e0f82d28f0
Improve startup dictionary sync UX and default playback keybindings
...
- Add default `f` fullscreen overlay binding and switch default AniSkip skip key to `Tab`
- Make character-dictionary auto-sync non-blocking at startup with tokenization gating for Yomitan mutations
- Add ordered startup OSD progress (checking/generating/updating/importing), refresh current subtitle on sync completion, and extend regression tests
2026-03-09 00:50:32 -07:00
sudacode
2127f759ca
fix: correct guessit title parsing for character dictionary sync
2026-03-08 23:03:48 -07:00
sudacode
c799a8de3c
Prepare Windows release and signing process ( #16 )
2026-03-08 19:51:30 -07:00
sudacode
9e46176519
feat(ai): split shared provider config from Anki runtime
2026-03-08 16:10:51 -07:00
sudacode
a6ece5388a
fix(launcher): remove youtube subtitle mode
2026-03-08 16:03:24 -07:00
sudacode
93cd688625
fix: harden AI subtitle fix response parsing
2026-03-08 16:01:40 -07:00
sudacode
d0c11d347b
refactor: remove root node and npm workflow deps
2026-03-07 21:19:14 -08:00
sudacode
e18985fb14
Enhance AniList character dictionary sync and subtitle features ( #15 )
2026-03-07 18:30:59 -08:00
sudacode
0cac446725
fix: preserve keyboard subtitle navigation state
2026-03-05 18:39:40 -08:00
sudacode
beeeee5ebd
fix(core): recopy Yomitan extension when patched scripts drift
2026-03-04 23:04:11 -08:00
sudacode
fdbf769760
feat(renderer): add keyboard-driven yomitan navigation and popup controls
2026-03-04 23:04:11 -08:00
sudacode
0a36d1aa99
fix(anki): force Yomitan proxy server sync for card auto-enhancement
2026-03-04 23:04:11 -08:00
sudacode
9a30419a23
fix(tokenizer): tighten frequency highlighting exclusions
2026-03-04 23:04:11 -08:00
sudacode
10ef535f9a
feat(subsync): add replace option and deterministic retimed naming
2026-03-03 00:26:31 -08:00
sudacode
be4db24861
make pretty
2026-03-02 02:45:51 -08:00
sudacode
83d21c4b6d
fix: narrow fallback frequency filter type predicate
2026-03-02 02:44:07 -08:00
sudacode
e744fab067
fix: unblock autoplay on tokenization-ready and defer annotation loading
2026-03-02 02:43:09 -08:00
sudacode
aff4e91bbb
fix(startup): async dictionary loading and unblock first tokenization
...
- move JLPT/frequency dictionary init off sync fs APIs and add cooperative yielding during entry processing
- decouple first tokenization from full warmup by gating only on Yomitan readiness while MeCab/dictionary warmups continue in parallel
- update mpv pause-until-ready OSD copy to tokenization-focused wording and refresh gate regression assertions
2026-03-02 01:48:17 -08:00
sudacode
737101fe9e
fix(tokenizer): lazy yomitan term-only frequency fallback
2026-03-02 01:45:37 -08:00
sudacode
629fe97ef7
chore(tokenizer): align enrichment regression notes and test typing
2026-03-02 01:45:23 -08:00
sudacode
fa97472bce
perf(tokenizer): optimize mecab POS enrichment lookups
2026-03-02 01:39:44 -08:00
sudacode
83f13df627
perf(tokenizer): skip known-word lookup in MeCab POS enrichment
2026-03-02 01:38:37 -08:00
sudacode
cde231b1ff
fix(tokenizer): avoid repeated yomitan anki sync checks on no-change
2026-03-02 01:36:22 -08:00
sudacode
9a91951656
perf(tokenizer): cut annotation latency with persistent mecab
2026-03-02 01:15:21 -08:00
sudacode
11e9c721c6
feat(subtitles): add no-jump subtitle-delay shift commands
2026-03-02 01:12:26 -08:00
sudacode
17a417e639
fix(subtitle): improve frequency highlight reliability
2026-03-01 20:12:42 -08:00
sudacode
68e5a7fef3
fix: sanitize jellyfin misc info formatting
2026-03-01 20:05:19 -08:00
sudacode
7023a3263f
Jellyfin and Subsync Fixes ( #13 )
2026-03-01 16:13:16 -08:00
sudacode
44c7761c7c
Overlay 2.0 ( #12 )
2026-03-01 02:36:51 -08:00
sudacode
a2735eaedc
feat(anilist): enforce encrypted token storage and default gnome-libsecret
2026-02-23 23:53:53 -08:00