Commit Graph
100 Commits
Author SHA1 Message Date
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 93811ebfde fix(launcher): default stats cleanup to vocab mode 2026-03-17 20:05:07 -07:00
sudacode 74544d79a7 docs: update stats dashboard docs, config, and releasing checklist
- Update dashboard tab descriptions to include Anime tab and richer session timelines
- Add autoOpenBrowser config option to stats section
- Add subminer stats cleanup command to changelog fragment
- Expand releasing checklist with doc verification, changelog lint, and build gates
2026-03-17 20:05:07 -07:00
sudacode 536f0a1315 feat(stats): redesign session timeline and clean up vocabulary tab
- Replace cumulative line chart with activity-focused area chart showing per-interval new words
- Add total words as a blue line on a secondary right Y-axis
- Add pause shaded regions, seek markers, and card mined markers with numeric x-axis for reliable rendering
- Add clickable header logo with proper aspect ratio
- Remove unused "Hide particles & single kana" checkbox from vocabulary tab
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 249a7cada8 chore: remove implementation plan documents 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 2d87dae6cc docs: update documentation site for stats dashboard and immersion tracking 2026-03-17 20:05:07 -07:00
sudacode 0f44107beb feat(stats): build anime-centric stats dashboard frontend
5-tab React dashboard with Catppuccin Mocha theme:
- Overview: hero stats, streak calendar, watch time chart, recent sessions
- Anime: grid with cover art, episode list with completion %, detail view
- Trends: 15 charts across Activity, Efficiency, Anime, and Patterns
- Vocabulary: POS-filtered word/kanji lists with detail panels
- Sessions: expandable session history with event timeline

Features:
- Cross-tab navigation (anime <-> vocabulary)
- Global word detail panel overlay
- Expandable episode detail with Anki card links (Expression field)
- Per-anime multi-line trend charts
- Watch time by day-of-week and hour-of-day
- Collapsible sections with accessibility (aria-expanded)
- Card size selector for anime grid
- Cover art caching via AniList
- HTTP API client with file:// protocol fallback for Electron overlay
2026-03-17 20:05:07 -07:00
sudacode 950263bd66 feat(stats): add launcher stats command and build integration
- Launcher stats subcommand with cleanup mode
- Stats frontend build integrated into Makefile
- CI workflow updated for stats package
- Config example updated with stats section
- mpv plugin menu entry for stats toggle
2026-03-17 20:05:07 -07:00
sudacode 26fb5b4162 feat(stats): wire stats server, overlay, and CLI into main process
- Stats server auto-start on immersion tracker init
- Stats overlay toggle via keybinding and IPC
- Stats CLI command (subminer stats) with cleanup mode
- mpv plugin menu integration for stats toggle
- CLI args for --stats, --stats-cleanup, --stats-response-path
2026-03-17 20:04:40 -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 cc5d270b8e docs: add stats dashboard design docs, plans, and knowledge base
- Stats dashboard redesign design and implementation plans
- Episode detail and Anki card link design
- Internal knowledge base restructure
- Backlog tasks for testing, verification, and occurrence tracking
2026-03-17 20:01:23 -07:00
sudacode 42abdd1268 fix(release): version AUR asset cache aliases 2026-03-17 18:15:23 -07:00
sudacode 5d914b1547 update vendored packages 2026-03-17 18:15:13 -07:00
sudacode 50b45cac0b Summarize JLPT duplicate term conflicts into a single startup log (#26) 2026-03-16 01:08:40 -07:00
sudacode e35aac6ee0 chore: prepare v0.6.5 release 2026-03-15 21:05:58 -07:00
sudacode fe2da22d29 chore: prepare v0.6.4 release 2026-03-15 20:43:50 -07:00
sudacode 2045ffbff8 chore: prepare v0.6.3 release 2026-03-15 20:16:36 -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 99f4d2baaf Harden subminer-scrum-master pre-handoff policy checks (#20) 2026-03-13 01:40:48 -07:00
sudacode f4e8c3feec chore: make verifier script executable 2026-03-13 00:44:00 -07:00
sudacode d0b308f340 test: harden agent verification workflow 2026-03-13 00:44:00 -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 68833c76c4 Release v0.6.1 and scope workflow write permissions
- Bump package version and changelog to v0.6.1
- Move `contents: write` permission to release job only
- Remove consumed changelog fragment files
2026-03-11 20:53:52 -07:00
sudacode 4d7c80f2e4 Add overlay gamepad support for keyboard-only mode (#17) 2026-03-11 20:34:46 -07:00
sudacode 2f17859b7b Document AUR install flow and add backlog planning artifacts
- Add Arch Linux `subminer-bin` install instructions to README and docs-site installation guide
- Add Hyprland troubleshooting guidance for transparency and global shortcut passthrough
- Add TASK-159..164 backlog records and skill design plans; include changelog fragment
- Apply formatting-only update to `src/release-workflow.test.ts`
2026-03-11 02:08:59 -07:00
sudacode 9c7e02cbf0 Enforce config example drift checks in CI and release
- add `verify:config-example` script with tests to fail on missing/stale generated config artifacts
- run the verification in CI and release workflows, and document it in release/docs guidance
- fix docs-site Cloudflare Pages watch path to `docs-site/*` with regression coverage
2026-03-10 20:06:41 -07:00
sudacode 5f320edab5 move docs back repo 2026-03-10 19:47:16 -07:00
sudacode f7ce3371a1 chore: finalize v0.5.6 changelog fragments 2026-03-10 18:49:21 -07:00
sudacode 71805dccd7 chore: bump package version 2026-03-10 02:33:13 -07:00
sudacode a13b7352d7 chore: make pretty 2026-03-10 02:32:53 -07:00
sudacode ff5ecdaded clean up and add new showcase videos 2026-03-10 02:32:27 -07:00
sudacode b32c3cf58c fix: avoid merged dictionary rebuilds on revisits 2026-03-10 02:26:07 -07:00
sudacode b791262860 fix: keep jlpt underline stable during Yomitan lookup 2026-03-10 01:37:32 -07:00
sudacode 29b8c6e02a update agents file and readme 2026-03-10 01:27:05 -07:00
sudacode 618727d8e8 fix: set canonical userData path during startup 2026-03-09 23:52:50 -07:00
sudacode fed60c265d style: restore repo formatting 2026-03-09 18:10:32 -07:00
sudacode a34a7489db chore: prep v0.5.5 release 2026-03-09 18:07:01 -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 a0521aeeaf fix(tracker): follow active hyprland and visible x11 windows 2026-03-08 23:03:55 -07:00
sudacode 2127f759ca fix: correct guessit title parsing for character dictionary sync 2026-03-08 23:03:48 -07:00
sudacode 5e787183d0 cleanup docs 2026-03-08 23:03:08 -07:00
sudacode 81ca31b899 remove release notes 2026-03-08 22:15:21 -07:00
sudacode e2a7597b4f update README 2026-03-08 22:10:09 -07:00
sudacode 2e59c21078 chore: prep v0.5.3 release 2026-03-08 22:08:46 -07:00
sudacode 7b5ab3294d chore: cut v0.5.2 release 2026-03-08 20:46:16 -07:00
sudacode 2bbf38f987 fix: pin signpath artifact configuration 2026-03-08 20:44:00 -07:00
sudacode f09c91494d chore: cut v0.5.1 release 2026-03-08 20:28:16 -07:00
sudacode 58ec9b76e0 fix: harden windows release signing workflow 2026-03-08 20:24:47 -07:00
sudacode 7a196f69d6 update submodules 2026-03-08 20:03:05 -07:00
sudacode c799a8de3c Prepare Windows release and signing process (#16) 2026-03-08 19:51:30 -07:00
sudacode 34d2dce8dc chore(vendor): bump texthooker-ui 2026-03-08 16:11:33 -07:00
sudacode 3a22a97761 chore(vendor): bump subminer-yomitan 2026-03-08 16:11:26 -07:00
sudacode 962243e959 docs(backlog): sync recent task records 2026-03-08 16:11:20 -07:00
sudacode 021010a338 test(ai): cover shared client helpers 2026-03-08 16:11:13 -07:00
sudacode 4c0575afe0 refactor(youtube): extract subtitle generation pipeline 2026-03-08 16:10:56 -07:00
sudacode 9e46176519 feat(ai): split shared provider config from Anki runtime 2026-03-08 16:10:51 -07:00
sudacode f10e905dbd build: enforce changelog workflow in CI 2026-03-08 16:10:37 -07:00
sudacode e4aa8ff907 fix: gate macOS overlay shortcuts by mpv focus 2026-03-08 16:04:43 -07:00
sudacode a6ece5388a fix(launcher): remove youtube subtitle mode 2026-03-08 16:03:24 -07:00
sudacode 6a44b54b51 fix: reuse background overlay across mpv reconnects 2026-03-08 16:02:57 -07:00
sudacode 93cd688625 fix: harden AI subtitle fix response parsing 2026-03-08 16:01:40 -07:00
sudacode 8e319a417d fix: skip aniskip for url playback 2026-03-08 16:01:19 -07:00
sudacode 38034db1e4 fix: reuse background tokenization warmups 2026-03-08 16:01:11 -07:00
sudacode f775f90360 fix: improve secondary subtitle readability 2026-03-07 23:51:23 -08:00
sudacode 55dff6ced7 clean up assets 2026-03-07 23:36:29 -08:00
sudacode d0c11d347b refactor: remove root node and npm workflow deps 2026-03-07 21:19:14 -08:00
sudacode f0418c6e56 fix: repair GitHub release publish workflow 2026-03-07 19:43:35 -08:00
sudacode e18985fb14 Enhance AniList character dictionary sync and subtitle features (#15) 2026-03-07 18:30:59 -08:00
sudacode 2f07c3407a chore: bump version to 0.3.0 2026-03-05 20:21:03 -08:00
sudacode a5554ec530 docs: capture anki proxy notes and codebase health backlog 2026-03-05 20:14:58 -08:00
sudacode f9f2fe6e87 docs: update keyboard-driven yomitan workflow 2026-03-05 20:13:38 -08:00
sudacode 8ca05859a9 fix: support repeated popup scroll keys 2026-03-05 19:20:55 -08:00
sudacode 0cac446725 fix: preserve keyboard subtitle navigation state 2026-03-05 18:39:40 -08:00
sudacode 23623ad1e1 docs(backlog): add keyboard-driven yomitan task record 2026-03-05 01:29:13 -08:00
sudacode b623c5e160 fix: improve yomitan keyboard navigation and payload handling 2026-03-05 01:28:54 -08:00
sudacode 5436e0cd49 chore(docs): remove Plausible tracker integration 2026-03-04 23:04:11 -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 69ab87c25f feat(renderer): add optional yomitan popup auto-pause 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 092c56f98f feat(launcher): migrate aniskip resolution to launcher script opts 2026-03-03 00:38:22 -08:00
sudacode 10ef535f9a feat(subsync): add replace option and deterministic retimed naming 2026-03-03 00:26:31 -08:00
sudacode 6c80bd5843 fix(docs): point plausible tracker to /api/event 2026-03-03 00:26:09 -08:00
sudacode f0bd0ba355 fix(release): publish via gh cli with clobber upload 2026-03-02 03:00:06 -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 5167e3a494 docs: add plausible tracker config for docs site 2026-03-02 02:33:45 -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