b959a930af0ec97875431a009b288e0f7e9570d8
Three Phase-10 wins. 1. Streamer-list filter + bulk-remove. Above 6 streamers (the magic number where the list starts to feel cluttered) a search input appears below the section title and a small bulk-remove "x" button next to it. Filter is title-substring, case-insensitive. Bulk-remove honours the active filter — when the input is empty it confirms removing the entire list, when filled it confirms removing only the matching subset. Used a confirm() dialog with the matching count interpolated into the locale string. 2. Cutter drag-and-drop. Dragging a video file from Explorer onto the cutter tab now loads it directly — no separate Browse click. Uses Electron's File.path extension on the dropped File object (works through contextIsolation:true). selectCutterVideo was refactored into loadCutterFromPath + a thin wrapper so the drop handler reuses the same loading logic. dragenter/dragleave count adds visual outline on #cutterPreview while a Files drag is over the tab. Falls back gracefully if the dropped file lacks .path. 3. Per-streamer VOD scroll position. Switching streamers used to reset scroll-to-top, painful when cycling between archives. vodScrollPositions Record<streamer, scrollY> persisted to localStorage, capped to 32 entries to bound storage. Save fires on a 250ms scroll-debounce timer + on every selectStreamer transition. Restore happens 80ms after renderVODs paints (lets the first chunk settle) so scrollTop has somewhere to land. Plus: bounded the persistence table at 32 entries, locale strings DE/EN, all wired through applyLanguageToStaticUI for live language switch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
No description provided
5.7 MiB
Releases
230
Twitch VOD Manager 1.0.23
Latest
Languages
TypeScript
74.7%
CSS
12.6%
HTML
7.1%
JavaScript
5.6%