45456650d4b873d4d770db579e897b16377ca4c6
Twitch retains chat replay on the same VOD-lifetime clock — when the VOD vanishes after 7-60 days, the chat goes with it. Anyone archiving the video usually wants the chat too. Added an opt-in setting that saves a paginated GQL pull of the chat as a JSON file next to the .mp4 download. Server: - new fetchVodChatReplay(videoId, onProgress, cancelCheck) — uses the existing fetchPublicTwitchGql helper (so the retry-on-transient logic from cycle 4 applies here too) with the standard video.comments(contentOffsetSeconds, cursor) query, paginated via edge cursors. Each message is normalised to a small flat shape: id, offset (seconds-into-VOD), createdAt, user (display name), login, color, text (assembled from fragments). Hard-capped at 500 pages (~50k messages) so a single runaway stream can't fill memory; hitting the cap sets truncated:true in the result. Honours a cancelCheck() callback so removing the queue item also cancels the in-flight chat fetch. - new chatReplayPathFor() helper produces sibling .chat.json path. - processOneQueueItem fires the chat fetch after a successful, non- live, non-merge VOD download whose URL parses to a VOD id. Progress shows up in the queue item via existing download-progress IPC: "Fetching chat replay..." then "Chat messages fetched: N". Output file is added to item.outputFiles so the existing Open file / Show in folder UI lists the chat right next to the video. A failed chat fetch is logged but does NOT mark the queue item as failed — the video itself is fine, the chat is a bonus. - Atomic write via writeFileAtomicSync so a crash mid-fetch can't leave a half-written .chat.json next to the video. Renderer: - new download_chat_replay: boolean in Config (default false because long streams can take a few minutes of chat-page pulls and we don't want to surprise users on upgrade). Settings -> Download card gets the toggle with hint tooltip explaining the trade-off. - AppConfig type, settings autosave fingerprint, syncSettingsForm, applyLanguageToStaticUI all updated. - DE + EN labels and the two new backend status strings (statusFetchingChatReplay, statusChatMessagesFetched). 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%