Long chats stay fast; search in a chat; media overview

Performance (measured with 5,900 messages: open 9 s -> 0.7 s, typing 440 ms -> 25 ms)
- GET /sessions/{id}?limit=N loads the end of a chat (from the last summary
  on, at most N); /sessions/{id}/messages?before|after|around loads more
  (scrolling up stops at a summary unless asked). Without parameters the
  full history as before (terminal client).
- Chat view: memoised message list (typing, streaming and status changes no
  longer re-render the history), finished turns fold into "N steps · M files"
  with the answer visible, tool card bodies and summaries are built only when
  opened, scroll-to-bottom only when content changes.

Search: /sessions/{id}/search over the whole chat; a hit loads its part
(around) and marks the message, "back to the latest messages" returns.

Media: /sessions/{id}/media lists images, videos and audio of a chat and its
subagents (generated images, tool output, files written, media in answers,
attachments); ⋯ -> Media shows them with filters, a large view and a jump to
the message.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-11 07:32:18 +01:00
1 parent 6e9eda28b5
commit 3b0764450a
14 files changed
+1278 -99

No files matched your search

+27
View File
@@ -337,6 +337,33 @@ export const en = {
"chat.todoReminder": "Back to work – {n} open todos:",
"agents.refineAfterTodos": "Review every completed todo and work until the list is done",
"agents.refineAfterTodosHint": "Each todo the agent marks completed is reviewed; with findings it is reopened. Ending the turn with open todos sends the agent back to work (for unattended runs, e.g. overnight). Off: only one review at the end of the turn.",
"chat.workSteps": "{n} steps",
"chat.workFiles": "{n} files",
"chat.loadOlder": "Load older messages",
"chat.showBeforeSummary": "Show the history before the summary",
"chat.backToLatest": "Back to the latest messages",
"chat.search": "Search in this chat",
"chat.searchPlaceholder": "Search messages, tool output …",
"chat.searchNone": "No matches",
"chat.searchHits": "{n} matches",
"chat.you": "You",
"chat.agent": "Agent",
"media.title": "Media",
"media.none": "No images, videos or audio in this chat yet.",
"media.filter.all": "All",
"media.filter.image": "Images",
"media.filter.video": "Videos",
"media.filter.audio": "Audio",
"media.source.generated": "generated",
"media.source.tool": "tool output",
"media.source.written": "written by the agent",
"media.source.answer": "in an answer",
"media.source.upload": "your attachment",
"media.showInChat": "Show in chat",
"media.open": "Open",
"media.prev": "Previous",
"media.next": "Next",
"media.back": "Back to the overview",
"chat.reviewRound": "Review {round}: changes requested",
"agents.refine": "Review loop",
"agents.refineRounds": "Review rounds per task",