Commit Graph

210 Commits

Author SHA1 Message Date
af74102964 Fix startup autoplay and dictionary progress sequencing
- keep paused startup release retries aligned with the full gate window
- restore dictionary sync progress and reuse merged zips on unchanged revisits
- surface later dictionary OSD updates once tokenization is ready
2026-03-20 02:27:00 -07:00
bae2a49673 fix: restore overlay ownership during plugin auto-start 2026-03-20 01:57:25 -07:00
1342393035 clean up 2026-03-20 00:45:39 -07:00
9d109de8db Restore anime episode progress from subtitle timing
- Fall back to latest retained subtitle/event segment end when `ended_media_ms` is missing
- Tighten stats command tests and add regression coverage for the fallback
2026-03-20 00:45:27 -07:00
bedeee22f5 fix: normalize stats lookup copy from tokens to words 2026-03-20 00:30:56 -07:00
1267085306 fix: flush playback position before media path clear 2026-03-20 00:30:50 -07:00
0ee150ed91 fix(subtitle): exclude explanatory pondering endings 2026-03-20 00:30:41 -07:00
3e5671270e fix: refresh anime cover art on AniList reassignment 2026-03-20 00:17:37 -07:00
24667ad6c9 fix(review): address latest CodeRabbit comments 2026-03-19 23:49:55 -07:00
42028d0a4d fix(subtitle): unify annotation token filtering 2026-03-19 23:48:38 -07:00
4a01cebca6 feat(stats): rename all token display text to words
Replace every user-facing "token(s)" label, tooltip, and message in the
stats UI with "words" so the terminology is consistent and friendlier
(e.g. "Words Seen", "word occurrences", "3.4 / 100 words", "Words Today").

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 23:48:37 -07:00
3995c396f8 fix(review): address latest CodeRabbit comments 2026-03-19 23:13:43 -07:00
544cd8aaa0 fix(stats): address review follow-ups 2026-03-19 22:55:46 -07:00
1932d2e25e fix(stats): format stats navigation helper 2026-03-19 22:21:57 -07:00
2258ededbd Show anime progress from latest session position
- include anime ID in media detail data
- use latest session position for episode progress
- update stats UI and lookup tests
2026-03-19 21:57:04 -07:00
64a88020c9 feat(stats): add 'View Anime' navigation button in MediaDetailView
- Added onNavigateToAnime prop to MediaDetailView
- Show 'View Anime →' button in the top-right when viewing media from
  non-anime origins (overview/sessions)
- Extract animeId from available sessions to enable navigation
- Button is hidden when already viewing from anime origin

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 21:43:30 -07:00
0ea1746123 feat(stats): add media-detail navigation from Sessions rows; fix(tokenizer): exclude そうだ auxiliary-stem from annotations
- Added hover-revealed ↗ button on SessionRow that navigates to the
  anime media-detail view for the session's videoId
- Added `sessions` origin type to MediaDetailOrigin and
  openSessionsMediaDetail() / closeMediaDetail() handling so the
  back button returns correctly to the Sessions tab ("Back to Sessions")
- Wired onNavigateToMediaDetail down through SessionsTab → SessionRow
- Excluded tokens with MeCab POS3 = 助動詞語幹 (e.g. そうだ grammar tails)
  from subtitle annotation metadata so frequency, JLPT, and N+1 styling
  no longer apply to grammar-tail tokens
- Added annotation-stage unit test and end-to-end tokenizeSubtitle test
  for the そうだ exclusion path
- Updated docs-site changelog, immersion-tracking, and
  subtitle-annotations pages to reflect both changes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 21:42:53 -07:00
59fa3b427d fix: exclude auxiliary grammar tails from subtitle annotations 2026-03-19 21:40:20 -07:00
ff95934f07 fix(launcher): address newest PR review feedback 2026-03-19 21:32:51 -07:00
c27ef90046 test(anki): cover non-blocking proxy enrichment 2026-03-19 21:32:32 -07:00
34ba602405 fix(stats): persist anime episode progress checkpoints 2026-03-19 21:31:47 -07:00
ecb4b07f43 docs: remove release cut note from changelog 2026-03-19 20:07:11 -07:00
1227706ac9 fix: address latest PR review feedback 2026-03-19 20:06:52 -07:00
9ad3ccfa38 fix(stats): address Claude review follow-ups 2026-03-19 19:55:05 -07:00
20f53c0b70 Switch known-word cache to incremental sync and doctor refresh
- Load persisted known-word cache on startup; reconcile adds/deletes/edits on timed sync
- Add `knownWords.addMinedWordsImmediately` (default `true`) for immediate mined-word updates
- Route full rebuild to explicit `subminer doctor --refresh-known-words` and expand tests/docs
2026-03-19 19:29:58 -07:00
72d78ba1ca chore: prepare release v0.7.0 2026-03-19 18:04:02 -07:00
43a0d11446 fix(subtitle): restore known and JLPT token annotations 2026-03-19 18:03:20 -07:00
1b5f0c6999 Normalize formatting in tracking snapshot and session detail test
- Collapse multiline JSX and import statements to single-line style
- No behavior changes; formatting-only cleanup
2026-03-19 17:04:36 -07:00
886c6ef1d7 cleanup 2026-03-19 15:47:05 -07:00
f2d6c70019 Fix stats command flow and tracking metrics regressions
- Route default `subminer stats` through attached `--stats`; keep daemon path for `--background`/`--stop`
- Update overview metrics: lookup rate uses lifetime Yomitan lookups per 100 tokens; new words dedupe by headword
- Suppress repeated macOS `Overlay loading...` OSD during fullscreen tracker flaps and improve session-detail chart scaling
- Add/adjust launcher, tracker query, stats server, IPC, overlay, and stats UI regression tests; add changelog fragments
2026-03-19 15:46:52 -07:00
274b0619ac fix(anki): address latest PR 19 review follow-ups 2026-03-19 08:47:31 -07:00
a954f62f55 Decouple stats daemon and preserve final mine OSD status
- Run `subminer stats -b` as a dedicated daemon process, independent from the overlay app
- Stop Anki progress spinner before showing final `✓`/`x` mine result so it is not overwritten
- Keep grammar/noise subtitle tokens hoverable while stripping annotation metadata
2026-03-18 23:49:27 -07:00
4d96ebf5c0 fix: reduce prefetched subtitle annotation delay 2026-03-18 23:47:33 -07:00
7a0d7a488b docs: redesign README for cleaner layout and scannability
- Condense features into bold-label paragraphs instead of H3 subsections
- Collapse install instructions into <details> sections
- Remove redundant screenshots (annotations-key, stats-vocabulary)
- Add AUR version badge
- Merge first-launch and setup steps into a single paragraph
- Add horizontal rule dividers between major sections
2026-03-18 23:35:17 -07:00
f916b65d7f fix: sync texthooker-ui annotation overrides 2026-03-18 19:32:51 -07:00
36627bf87d fix(anki): avoid unnecessary known-word cache restarts 2026-03-18 19:29:47 -07:00
ad1f66a842 feat: sync animated anki images to sentence audio 2026-03-18 19:21:12 -07:00
f4cce31d4a fix: align texthooker and stats formatting with CI expectations 2026-03-18 19:01:29 -07:00
ec56970646 fix(ci): install stats deps in release builds 2026-03-18 02:37:58 -07:00
48f10dbb03 chore(backlog): maintain task backlog and add changelog fragments
- Move completed tasks (85, 117, 118, 155) to backlog/completed/
- Delete superseded task files (166 verification, 172 drilldown)
- Add stats dashboard milestone m-1
- Add new tasks (190, 194)
- Update task metadata across remaining backlog items
- Add changelog fragments for stats, mpv args, and subtitle filtering
2026-03-18 02:25:07 -07:00
1cb129b0b7 chore: update README, gitignore, and add CLAUDE.md
- Refresh README with feature overview and screenshot embeds
- Add .superpowers/ and clean up duplicate gitignore entries
- Add CLAUDE.md project instructions
- Remove stale release/release-notes.md
2026-03-18 02:24:57 -07:00
af1505fbe6 docs: update config examples, docs site, and add screenshots
- Update config examples with word field, retention, and stats options
- Add immersion tracking documentation for retention presets
- Add Anki integration and configuration docs updates
- Add stats dashboard screenshots
2026-03-18 02:24:46 -07:00
97126caf4e feat(stats): add note ID resolution and session event handling improvements
- Add note ID resolution through merge redirects in stats API
- Build Anki note previews using configured field names
- Add session event helpers for merged note dedup and stable request keys
- Refactor SessionDetail to prevent redundant note info requests
- Add session event popover and API client tests
2026-03-18 02:24:38 -07:00
a0015dc75c feat: add configurable Anki word field with note ID merge tracking
- Extract word field config into reusable anki-field-config module
- Add ankiConnect.fields.word config option (default: "Expression")
- Replace hardcoded "Expression" field references across Anki integration
- Add note ID redirect tracking for merged/moved cards
- Support legacy ankiConnect.wordField migration path
2026-03-18 02:24:26 -07:00
61e1621137 perf: split stats app bundles by route 2026-03-18 00:05:51 -07:00
a5b1c0509d fix(stats): align session event popovers with chart plot area 2026-03-17 23:56:58 -07:00
e694963426 fix(stats): address PR 19 review follow-ups 2026-03-17 23:56:42 -07:00
a69254f976 feat(stats): show seek length in session event tooltip 2026-03-17 23:38:45 -07:00
a1348cf8e4 chore(backlog): add m-1 milestone for remaining stats fixes 2026-03-17 23:38:33 -07:00
f9b582582b fix(stats): load full session timelines by default 2026-03-17 22:37:34 -07:00