sudacode
a610c90c25
fix(anki): report stale timing reviews after preview and waveform awaits
...
Playback and ffmpeg waveform analysis both span long enough for the
review to end underneath them (decision watchdog, overlay teardown).
Both paths reported success or a generic failure afterwards, so the
modal stayed open on a review main had already dropped.
2026-09-03 23:12:24 -07:00
sudacode
144db675e9
fix(anki): close the timing review modal once main has dropped the review
...
Main ends a review on its own after the decision watchdog, on overlay
teardown, or when the modal window opened twice, but the renderer only
closed on a successful resolve. Every button then answered 'no longer
active' forever and the overlay stayed interactive over mpv. Stale
results now carry a typed flag and the modal closes on it.
2026-09-03 22:51:22 -07:00
sudacode
8e47e0d761
fix(anki): trim timing review clips to dialogue end
...
- Auto-adjust untouched clip ends after waveform analysis
- Document and test trailing-silence trimming behavior
2026-09-02 23:43:34 -07:00
sudacode
dcd05ee4ea
Merge remote-tracking branch 'origin/main' into t3code/media-timing-review
2026-09-02 22:54:30 -07:00
sudacode
99266294b8
fix(tsukihime): filter releases by subtitle language ( #235 )
2026-09-02 20:29:59 -07:00
sudacode
c055359be1
chore(deps): update fast-uri to 3.1.6
2026-09-02 20:16:08 -07:00
sudacode
56a2a25312
fix(anki): wait for media timing previews to fully finish
...
- Wait for mpv to drain audio before ending previews
- Notify the review modal when playback actually completes
2026-09-02 18:44:37 -07:00
sudacode
c85db5e07e
fix(mining): ignore stale captions and improve waveform contrast
...
- Use active parsed cue text and timings for overlay mining
- Normalize waveform levels against the clip's noise floor
2026-09-02 18:22:03 -07:00
sudacode
f90ee78204
feat(mining): cache remote media windows during card creation
...
- Reuse one temporary download for timing review, audio, and screenshots
- Expire cached windows after inactivity and clean them up on exit
2026-09-02 01:21:26 -07:00
sudacode
760b3e1d3d
test(immersion): wrap vocabulary fixture inserts in a transaction
2026-09-02 00:01:01 -07:00
sudacode
4d5ea8801f
feat(anki): add Senren scene-switching field grouping
...
- Support auto, manual, and disabled Senren duplicate-card merges
- Group sentence, furigana, audio, picture, and miscInfo fields
2026-09-01 23:22:54 -07:00
sudacode
ec5a147095
fix(subtitles): merge wrapped positioned caption rows ( #234 )
2026-09-01 23:11:38 -07:00
sudacode
a0635f4360
fix(subtitles): drop ASS furigana from recorded cues ( #233 )
2026-09-01 22:49:20 -07:00
sudacode
c0a78ef008
feat(anki): support Senren scene-switching field grouping ( #230 )
2026-09-01 22:18:30 -07:00
sudacode
87b01155df
fix(mining): copy multi-line subtitles backward from current line ( #231 )
2026-09-01 22:17:41 -07:00
sudacode
fc5c49e365
fix(subtitles): keep native secondary subtitles hidden ( #232 )
...
- Reapply hidden visibility after secondary track changes
- Relinquish suppression only after successful restoration
2026-09-01 00:49:37 -07:00
sudacode
a20269e9f5
fix(jellyfin): stop inferring subtitle delays ( #227 )
2026-08-31 23:31:31 -07:00
sudacode
b58f391b42
fix: handle notification changes and timing review text safely
...
- Dismiss stale overlay progress when notification mode changes
- Validate and forward combined timing review text
- Keep macOS timing preview socket paths within system limits
2026-08-30 02:49:37 -07:00
sudacode
90a5dcd2af
fix(anki): move line boundary markers with added subtitle lines
2026-08-30 02:38:28 -07:00
sudacode
989122c006
test(anki): mock note deletion in manual update tests
2026-08-30 02:03:02 -07:00
sudacode
ad1c1aea1b
feat(anki): add multi-line subtitle selection to media timing review
2026-08-30 01:56:16 -07:00
sudacode
62d645e577
fix: apply CodeRabbit auto-fixes
2026-08-30 01:56:16 -07:00
sudacode
f36e7f6182
feat(anki): add runtime toggle for media timing review
...
- Add session-only runtime option with live config hot-reload support
- Document the runtime palette toggle
2026-08-30 01:56:16 -07:00
sudacode
475f81d96d
fix(anki): allow timing review cards without media
...
- Keep existing or create new cards without generating audio or images
- Refine timing review timeline expansion labels and boundary markers
2026-08-30 01:56:16 -07:00
sudacode
046ab59da9
fix(anki): clarify media timing review subtitle boundaries
...
- Compact the timing review layout
- Label mined subtitle line start and end boundaries
2026-08-30 01:56:16 -07:00
sudacode
e91f031faa
fix(anki): keep media timing review keyboard-focused
...
- Route modal keydown events before later modal handlers
- Restore focus and preserve visible focus styling
2026-08-30 01:56:16 -07:00
sudacode
ec6a106748
fix(anki): prevent media timing review hangs and invalid ranges
...
- Reject stale or invalid timing actions
- Fall back to original timing when the renderer stops responding
2026-08-30 01:56:16 -07:00
sudacode
ca27a4275f
feat(anki): add waveform-guided timing controls
...
- Add speech-weighted waveform analysis and playback playhead
- Support dragging, sliding, and keyboard nudging for clip timing
2026-08-30 01:56:16 -07:00
sudacode
256eb5da1b
feat(anki): add media timing review before card creation
...
- Add draggable timing previews with audio playback and exact media ranges
- Support cancellation choices, including deleting existing cards
2026-08-30 01:56:16 -07:00
sudacode
2ad491e95c
chore(release): prepare v0.19.5
2026-08-30 01:02:44 -07:00
sudacode
6fffcc731f
fix(youtube): keep auto captions on screen for their full span ( #219 )
2026-08-29 13:18:55 -07:00
sudacode
5cc21113fd
fix(subtitles): drop ASS furigana from published cues ( #224 )
2026-08-29 13:15:30 -07:00
sudacode
051140f910
fix(anki): respect configured fields for word-card enrichment ( #223 )
2026-08-29 13:09:31 -07:00
sudacode
6e945f0872
fix(subtitles): keep overlapping lines that join an already active cue ( #221 )
2026-08-27 23:13:29 -07:00
sudacode
c2c25c0da6
fix(anki): keep overlay progress visible through card updates ( #218 )
2026-08-25 20:27:58 -07:00
sudacode
556de61756
chore(changelog): split release details into nested bullets
...
- Update changelog generation guidance and tests
- Reformat current release notes and document the new style
2026-08-25 12:39:45 -07:00
sudacode
a98fb0fddf
chore(release): prepare v0.19.4
2026-08-25 02:43:48 -07:00
sudacode
e816b3b371
fix(subtitles): recover positioned ASS word spacing and drop control debris ( #217 )
2026-08-25 02:22:21 -07:00
sudacode and sudacode
ed7d3f4c3d
feat(release): track prerelease deltas and validate committed notes ( #216 )
...
Co-authored-by: sudacode <claude@lmaoxd.lol >
2026-08-23 15:24:18 -07:00
sudacode
509dc5bf7f
fix(subtitles): improve secondary subtitle extraction and display ( #215 )
2026-08-23 01:56:49 -07:00
sudacode
0a0aa3ec98
chore(release): prepare v0.19.4-beta.4
2026-08-23 01:23:16 -07:00
sudacode
b87cc3cfdd
chore(workflow): add release skill
2026-08-23 01:14:03 -07:00
sudacode
8cb3c8c90a
fix(macos): pin window helper deployment target to fix older systems
...
- Build the Swift window-tracking helper with an explicit `-target ...-apple-macos12.0` instead of letting swiftc stamp the build machine's OS, so the overlay attaches to mpv on older macOS (e.g. Ventura) instead of crashing at load
- Fold the standalone build-macos-helper.sh into prepare-build-assets.mjs and update docs/tests to match
2026-08-23 00:58:24 -07:00
sudacode
03ea903927
fix(subtitles): preserve authored spaces in fragmented ASS karaoke
...
- Only trim indentation before slicing ASS event fields so a trailing authored space at a fragment's end is kept, preventing words from being joined together when fragmented karaoke lines are reconstructed
- Add regression test covering event-boundary word spacing
2026-08-22 23:32:35 -07:00
sudacode
3aea42e6f8
chore(release): prepare v0.19.4-beta.3
2026-08-21 23:25:37 -07:00
sudacode
88bb3edfa4
fix(subtitles): preserve lyric selection and deduplicate secondary text
...
- Seek sidebar selections past overlapping karaoke exit spans
- Collapse duplicate long ASS lines and omit reconstructed sign grids
2026-08-21 01:28:00 -07:00
sudacode
9445aef004
fix(subtitles): navigate by sanitized cues across ASS animation
...
- Route subtitle navigation through parsed cue boundaries
- Treat explicit short seeks as subtitle priming events
2026-08-20 00:20:51 -07:00
sudacode
c01bcd9d0f
fix(subtitles): collapse layered ASS lyrics across startup and seeks
...
- Reconstruct fragment-only karaoke while preserving canonical animated signs
- Reprocess live subtitles after initial playback and seek updates
- Add a development launcher for playable media files
2026-08-19 22:55:10 -07:00
sudacode
695613b1e7
chore(release): prepare v0.19.4-beta.2
2026-08-19 02:19:40 -07:00
sudacode
20797772f8
fix(character-dictionary): cache completed MeCab refreshes ( #212 )
2026-08-19 01:49:15 -07:00
sudacode
72c312810a
docs: link README demo to GitHub video playback
...
- Use GitHub-hosted video playback for the README demo
- Document the animated fallback behavior
2026-08-19 01:02:05 -07:00
sudacode
b61f050e78
docs: update mining demo and scale video crops
...
- Refresh mining demo assets and documentation references
- Scale mpv crop coordinates for resized OBS recordings
2026-08-19 00:55:31 -07:00
sudacode
2a77ba9dd4
fix(launcher): restore Matroska thumbnails in Linux rofi picker ( #210 )
2026-08-18 20:30:58 -07:00
sudacode
4ed878270f
fix(stats): accept legacy lexical rollup state schemas
2026-08-18 02:24:49 -07:00
sudacode
1d1b0c7bb6
fix(subtitles): collapse duplicate primary ASS style layers
...
- Use parsed cues when they fully explain mpv live text
- Preserve unmatched overlapping dialogue and signs
2026-08-18 01:51:19 -07:00
sudacode
db61ce358d
fix(stats): preserve session rollups across schema upgrades
...
- Stop deleting imm_daily_rollups/imm_monthly_rollups on unrelated schema version bumps; their source session/telemetry rows may already be pruned, so deleted buckets could not be rebuilt
- Run startup session-rollup maintenance before the lexical rollup backfill takes the write lock, so recovery no longer races playback writes
- Update the vocabulary summary totals changelog fragment to reflect that watch-time, activity, efficiency, and library charts are no longer cleared during rebuilds
2026-08-18 01:12:58 -07:00
sudacode
e9778a945a
fix(overlay): deduplicate secondary subtitle rendering ( #208 )
2026-08-18 00:44:02 -07:00
sudacode
7de73e16a1
fix(stats): report complete vocabulary totals and new-word history ( #202 )
2026-08-18 00:42:46 -07:00
sudacode
273652f781
fix(subtitles): recover canonical lines from ASS animation ( #207 )
2026-08-18 00:30:48 -07:00
sudacode
14c0086520
chore(stats): reword duplicates popup
2026-08-17 18:42:58 -07:00
sudacode
ff0bc0af6d
fix(dictionary): prevent freezes and restore AppImage notifications ( #205 )
2026-08-17 18:41:03 -07:00
sudacode
00b1b79bf4
fix(mpv): recover from stalled IPC connects ( #204 )
2026-08-16 22:58:28 -07:00
sudacode
e11a5fea0d
chore(release): prepare v0.19.4-beta.1
2026-08-16 02:00:32 -07:00
sudacode
f73fe179d0
fix(docs): keep versioned pages out of search indexes
...
- Add self-canonical noindex signals and headers for archived docs
- Restore sitemap lastmod dates from the tracked checkout
2026-08-16 01:45:08 -07:00
sudacode
2938e7a32a
fix(overlay): prevent Windows mouse lag during click-through tracking ( #201 )
2026-08-16 01:34:51 -07:00
sudacode
82f6b4705a
fix(overlay): recycle Windows modal windows after close
...
- Refresh the hidden modal renderer between Windows sessions
- Add regression coverage and stabilize launcher completion testing
2026-08-16 01:10:07 -07:00
sudacode
a02c33dac4
fix(overlay): keep macOS modal windows on fullscreen Spaces ( #200 )
2026-08-15 21:43:26 -07:00
sudacode
2174e689a2
fix(overlay): support native Wayland file drag-and-drop ( #199 )
2026-08-15 00:15:38 -07:00
sudacode
7d729cb60c
fix(notifications): replace Linux progress updates in place ( #198 )
2026-08-14 22:20:33 -07:00
sudacode
d963def1a9
fix(stats): subtract lifetime totals incrementally on delete ( #196 )
2026-08-14 22:13:59 -07:00
sudacode
6fb3d2eb13
feat(stats): add library entry merge and episode move ( #190 )
2026-08-14 21:54:17 -07:00
sudacode
c5a77ac067
fix(anki): snapshot mining media clip timing ( #197 )
2026-08-14 21:50:32 -07:00
sudacode
8ddc151435
docs: hide unfinished feature demos from sidebar
2026-08-14 21:50:08 -07:00
sudacode
b98d4d65c7
fix(stats): stop counting duplicate typeset subtitle lines ( #191 )
2026-08-14 00:12:56 -07:00
sudacode
046e74ea91
chore(workflow): simplify agent tooling and docs
2026-08-13 23:34:04 -07:00
sudacode
8bf847503d
fix(media): tolerate slow MKV audio extraction ( #195 )
2026-08-13 23:19:22 -07:00
sudacode
47b5903392
chore(release): prepare v0.19.3
2026-08-13 23:02:57 -07:00
sudacode
bf85554d1e
fix(stats): batch deletes off the main thread ( #194 )
2026-08-13 22:31:52 -07:00
sudacode
d74c7e1235
chore: add Claude instructions symlink and update js-yaml
2026-08-11 22:31:26 -07:00
sudacode
57ddd19953
fix(overlay): handle X11 display scaling across monitors ( #193 )
2026-08-11 22:24:01 -07:00
sudacode
ee25536d90
fix(dictionary): stop large character dictionaries from timing out ( #189 )
2026-08-11 18:40:18 -07:00
sudacode
7b0fbdf254
fix(subtitles): collapse duplicate ASS events and decode text once ( #186 )
2026-08-10 22:21:44 -07:00
sudacode
2fefc83e3f
fix(playback): stop forcing legacy OpenGL renderer on X11 mpv backend ( #188 )
2026-08-06 23:52:35 -07:00
sudacode
dbdf578c68
perf(tokenizer): single-pass Yomitan scan with cross-line caching and prefetch fixes ( #185 )
2026-08-06 21:44:09 -07:00
sudacode
441ecf3c04
feat(overlay): add in-app changelog modal ( #187 )
2026-08-05 22:19:13 -07:00
sudacode
a0dde4ee3e
chore(release): v0.19.2
2026-08-04 18:51:15 -07:00
sudacode
fe4dacc1e7
fix(overlay): show plain subtitle line immediately on tokenization cache miss ( #184 )
2026-08-04 01:55:52 -07:00
sudacode
b08cd0db35
fix(streaming): keep subtitle tokenization prefetch warm for full episodes ( #183 )
2026-08-03 21:22:18 -07:00
sudacode
bffb1c5982
fix(logging): surface subtitle processing debug/warn logs ( #182 )
2026-08-03 20:44:39 -07:00
sudacode
5b8848518a
feat(subsync): add reference and target subtitle track picker ( #181 )
2026-08-03 01:00:14 -07:00
sudacode
176edd67f1
chore(release): v0.19.1
2026-08-01 23:59:20 -07:00
sudacode
4d65dec340
fix(youtube): prevent playlist URLs from stalling yt-dlp probes ( #180 )
2026-08-01 22:56:28 -07:00
sudacode
6607c333bc
fix(overlay): strip spinner frame from subsync overlay card
...
- Add overlayBody override to ConfiguredStatusNotificationOptions so overlay/OSD/desktop can diverge
- Extract getSubsyncStatusNotificationOptions() to strip the ASCII spinner frame from the overlay card (OSD keeps it since it renders the raw spinner)
- Add tests for spinner stripping and subsync result notifications
2026-07-31 18:03:26 -07:00
sudacode
b2bbf1ae12
chore: regenerate config example artifacts
2026-07-31 17:49:02 -07:00
sudacode
b204d4dd6e
feat(anki): add configurable word card type for Kiku/Lapis ( #175 )
2026-07-31 17:17:29 -07:00
sudacode
89ed675935
fix(overlay): keep Yomitan popup interactive on macOS/Windows ( #177 )
2026-07-30 19:47:08 -07:00
sudacode
1995200e76
chore(release): prepare v0.19.0
2026-07-29 22:26:03 -07:00
sudacode
e876e483d6
chore(release): prepare v0.19.0-beta.5
2026-07-29 02:09:01 -07:00
sudacode
6d2a72e13b
feat(stats): add library entry deletion and app-wide delete progress ( #174 )
2026-07-29 02:00:16 -07:00
sudacode
0d7084c8aa
fix(anilist): resolve later seasons via sequel relations, not title guessing ( #173 )
2026-07-28 22:56:26 -07:00