Twitch-VOD-Manager/src
xRangerDE 3129c9b5be feat: in-app chat replay viewer — read .chat.json/.chat.jsonl without leaving the app
Up to now, the app saved chat data (4.6.2 VOD replay, 4.6.3 live
capture) but had no way to view it — users had to open the file in
Notepad or write a custom parser. New in-app modal closes that loop:
queue items with a sibling .chat.json or .chat.jsonl get a "View
chat" button next to Open file / Show in folder; click pops a modal
with a scrollable, filterable, formatted message list.

Server:
- New ipcMain.handle("read-chat-file") parses both formats. JSON
  Lines (.jsonl) is split per line, header row skipped, malformed
  lines silently dropped — that way a partial / killed live capture
  still renders. JSON object (.json) is the VOD replay shape with
  messages array. Hard-capped at 50k messages so a multi-day archive
  can't kill the renderer; truncation is reported via {truncated,
  total} in the result.

Renderer:
- New chatViewerModal in index.html — full-height list with a filter
  input + status line.
- openChatViewer(filePath, title) loads the file via IPC, normalises
  the message shape (supports both .chat.json and .chat.jsonl
  fields), renders in 500-message chunks via setTimeout(0) so the
  main thread stays responsive on a 30k-message archive.
- Each row: time marker (offset for replays, wall-clock for live),
  user (in their stored color), message text. Non-msg event types
  (subs, raids, clears) get a faint italic [type] tag.
- Filter substring-matches user OR text, case-insensitive, instant.
- Esc + outside-click + the close-x dismiss; Esc handler in
  closeTopmostOpenModal lists the chat viewer first so a user
  with multiple modals open closes the foreground one.

Queue UI:
- renderQueueItemFileActions detects sibling chat files (regex
  /\.chat\.json(l)?$/) in item.outputFiles and surfaces the View
  chat button. The button is shown for both 4.6.2-style replays
  and 4.6.3-style live captures because both formats parse.

DE + EN locales for the button label, loading state, error,
message count, truncation suffix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:42:41 +02:00
..
index.html feat: in-app chat replay viewer — read .chat.json/.chat.jsonl without leaving the app 2026-05-10 21:42:41 +02:00
main.ts feat: in-app chat replay viewer — read .chat.json/.chat.jsonl without leaving the app 2026-05-10 21:42:41 +02:00
preload.ts feat: in-app chat replay viewer — read .chat.json/.chat.jsonl without leaving the app 2026-05-10 21:42:41 +02:00
renderer-globals.d.ts feat: in-app chat replay viewer — read .chat.json/.chat.jsonl without leaving the app 2026-05-10 21:42:41 +02:00
renderer-locale-de.ts feat: in-app chat replay viewer — read .chat.json/.chat.jsonl without leaving the app 2026-05-10 21:42:41 +02:00
renderer-locale-en.ts feat: in-app chat replay viewer — read .chat.json/.chat.jsonl without leaving the app 2026-05-10 21:42:41 +02:00
renderer-queue.ts feat: in-app chat replay viewer — read .chat.json/.chat.jsonl without leaving the app 2026-05-10 21:42:41 +02:00
renderer-settings.ts feat: stream-events log — track title/game changes during live recording 2026-05-10 21:38:40 +02:00
renderer-shared.ts fix: persist expanded details across re-renders, guard drag-drop init against duplicates 2026-03-21 15:03:20 +01:00
renderer-streamers.ts feat: auto-record polling — set-and-forget live archival 2026-05-10 20:35:19 +02:00
renderer-texts.ts feat: stream-events log — track title/game changes during live recording 2026-05-10 21:38:40 +02:00
renderer-updates.ts feat: skip-version + addStreamer validation + smart-scheduler tooltip 2026-05-10 12:14:13 +02:00
renderer.ts feat: in-app chat replay viewer — read .chat.json/.chat.jsonl without leaving the app 2026-05-10 21:42:41 +02:00
styles.css feat: auto-record polling — set-and-forget live archival 2026-05-10 20:35:19 +02:00
tools.ts refactor: extract tool discovery functions to src/tools.ts 2026-03-20 10:00:51 +01:00
types.ts feat: live stream recording — record streamers as they go live 2026-05-10 20:30:08 +02:00
update-version-utils.ts chore: migrate repository to Codeberg, bump version to 4.2.0, update update logic 2026-03-01 20:23:21 +01:00