Commit Graph

64 Commits

Author SHA1 Message Date
86b50dcb70 refactor: deduplicate ensureDir into shared/fs-utils
5 copies of mkdir-p-if-not-exists consolidated into one shared module
with ensureDir (directory path) and ensureDirForFile (file path) variants.
2026-03-28 10:42:21 -07:00
c6d349886e refactor: parameterize duplicated getAffected*Ids query helpers
Four structurally identical functions collapsed into two parameterized
helpers while preserving the existing public API.
2026-03-28 10:31:06 -07:00
b92f253458 fix: use variadic array type for MockDate constructor args
TS2367: fixed-length tuple made args.length === 0 unreachable.
2026-03-28 10:21:47 -07:00
efcacded66 Factor out mock date helper in tracker tests
- reuse a shared `withMockDate` helper for date-sensitive query tests
- make monthly rollup assertions key off `videoId` instead of row order
2026-03-28 00:26:19 -07:00
615625d215 fix: use explicit super args for MockDate constructors 2026-03-28 00:09:25 -07:00
90a9147363 fix: remove strict spread usage in Date mocks 2026-03-28 00:08:13 -07:00
8f6877db12 fix: resolve CI type failures in boot and immersion query tests 2026-03-28 00:07:11 -07:00
8e5cb5f885 Fix verification and immersion-tracker grouping
- isolate verifier artifacts and lease handling
- switch weekly/monthly tracker cutoffs to calendar boundaries
- tighten boot lifecycle and zip writer tests
2026-03-28 00:01:17 -07:00
9caf25bedb test: stabilize bun coverage reporting 2026-03-27 23:37:29 -07:00
4d95de51a0 fix: address CodeRabbit review feedback 2026-03-27 03:05:32 -07:00
854179b9c1 Add backlog tasks and launcher time helper tests
- Track follow-up cleanup work in Backlog.md
- Replace Date.now usage with shared nowMs helper
- Add launcher args/parser and core regression tests
2026-03-27 02:01:36 -07:00
49a582b4fc refactor: migrate shared type imports 2026-03-27 00:33:52 -07:00
ac857e932e refactor: split immersion tracker query modules 2026-03-27 00:33:43 -07:00
8c633f7e48 fix: add stats server node fallback 2026-03-27 00:28:05 -07:00
3fe63a6afa refactor: use bun serve for stats server 2026-03-26 23:18:43 -07:00
5dd8bb7fbf refactor: split shared type entrypoints 2026-03-26 23:17:04 -07:00
4c95b57885 chore: prepare v0.9.3 release 2026-03-25 23:58:31 -07:00
9dca83acd9 fix: delay youtube overlay bootstrap until yomitan loads 2026-03-25 22:18:26 -07:00
58304757aa Fix YouTube playback PR review issues 2026-03-25 22:18:26 -07:00
c95518e94a Fix Windows YouTube playback flow and overlay pointer tracking 2026-03-25 22:18:26 -07:00
5ee4617607 Fix Windows overlay scaling bounds (#34) 2026-03-25 16:30:11 -07:00
5feed360ca feat: add app-owned YouTube subtitle flow with absPlayer-style parsing (#31)
* fix: harden preload argv parsing for popup windows

* fix: align youtube playback with shared overlay startup

* fix: unwrap mpv youtube streams for anki media mining

* docs: update docs for youtube subtitle and mining flow

* refactor: unify cli and runtime wiring for startup and youtube flow

* feat: update subtitle sidebar overlay behavior

* chore: add shared log-file source for diagnostics

* fix(ci): add changelog fragment for immersion changes

* fix: address CodeRabbit review feedback

* fix: persist canonical title from youtube metadata

* style: format stats library tab

* fix: address latest review feedback

* style: format stats library files

* test: stub launcher youtube deps in CI

* test: isolate launcher youtube flow deps

* test: stub launcher youtube deps in failing case

* test: force x11 backend in launcher ci harness

* test: address latest review feedback

* fix(launcher): preserve user YouTube ytdl raw options

* docs(backlog): update task tracking notes

* fix(immersion): special-case youtube media paths in runtime and tracking

* feat(stats): improve YouTube media metadata and picker key handling

* fix(ci): format stats media library hook

* fix: address latest CodeRabbit review items

* docs: update youtube release notes and docs

* feat: auto-load youtube subtitles before manual picker

* fix: restore app-owned youtube subtitle flow

* docs: update youtube playback docs and config copy

* refactor: remove legacy youtube launcher mode plumbing

* fix: refine youtube subtitle startup binding

* docs: clarify youtube subtitle startup behavior

* fix: address PR #31 latest review follow-ups

* fix: address PR #31 follow-up review comments

* test: harden youtube picker test harness

* udpate backlog

* fix: add timeout to youtube metadata probe

* docs: refresh youtube and stats docs

* update backlog

* update backlog

* chore: release v0.9.0
2026-03-24 00:01:24 -07:00
c17f0a4080 Fix tokenizer annotations for explanatory contrast ending (#33) 2026-03-23 09:25:17 -07:00
3a01cffc6b feat(subtitle-sidebar): add sidebar config surface (#28) 2026-03-21 23:37:42 -07:00
6749ff843c feat(stats): add v1 immersion stats dashboard (#19) 2026-03-20 02:43:28 -07:00
50b45cac0b Summarize JLPT duplicate term conflicts into a single startup log (#26) 2026-03-16 01:08:40 -07:00
478869ff28 feat(controller): add inline remap modal with descriptor-based bindings (#21) 2026-03-15 15:55:45 -07:00
9eed37420e Automate AUR publish in tagged release workflow (#22) 2026-03-14 19:49:46 -07:00
1b56360a24 feat(yomitan): add read-only external profile support for shared dictionaries (#18) 2026-03-12 01:17:34 -07:00
4d7c80f2e4 Add overlay gamepad support for keyboard-only mode (#17) 2026-03-11 20:34:46 -07:00
fed60c265d style: restore repo formatting 2026-03-09 18:10:32 -07:00
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
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
2127f759ca fix: correct guessit title parsing for character dictionary sync 2026-03-08 23:03:48 -07:00
c799a8de3c Prepare Windows release and signing process (#16) 2026-03-08 19:51:30 -07:00
9e46176519 feat(ai): split shared provider config from Anki runtime 2026-03-08 16:10:51 -07:00
a6ece5388a fix(launcher): remove youtube subtitle mode 2026-03-08 16:03:24 -07:00
93cd688625 fix: harden AI subtitle fix response parsing 2026-03-08 16:01:40 -07:00
d0c11d347b refactor: remove root node and npm workflow deps 2026-03-07 21:19:14 -08:00
e18985fb14 Enhance AniList character dictionary sync and subtitle features (#15) 2026-03-07 18:30:59 -08:00
0cac446725 fix: preserve keyboard subtitle navigation state 2026-03-05 18:39:40 -08:00
beeeee5ebd fix(core): recopy Yomitan extension when patched scripts drift 2026-03-04 23:04:11 -08:00
fdbf769760 feat(renderer): add keyboard-driven yomitan navigation and popup controls 2026-03-04 23:04:11 -08:00
0a36d1aa99 fix(anki): force Yomitan proxy server sync for card auto-enhancement 2026-03-04 23:04:11 -08:00
9a30419a23 fix(tokenizer): tighten frequency highlighting exclusions 2026-03-04 23:04:11 -08:00
10ef535f9a feat(subsync): add replace option and deterministic retimed naming 2026-03-03 00:26:31 -08:00
be4db24861 make pretty 2026-03-02 02:45:51 -08:00
83d21c4b6d fix: narrow fallback frequency filter type predicate 2026-03-02 02:44:07 -08:00
e744fab067 fix: unblock autoplay on tokenization-ready and defer annotation loading 2026-03-02 02:43:09 -08:00
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