From 5771a511e7c0dda090c7d47f9fc4c548aa4cae73 Mon Sep 17 00:00:00 2001 From: Rod Boev Date: Sat, 18 Jul 2026 23:56:44 -0400 Subject: [PATCH] fix(#6099): make transparent stream activity timestamps optional (#6130) Add an opt-in setting to hide Transparent Stream's per-event timestamp chips while keeping the response footer time visible, for users who found the per-event chips noisy. Thanks @rodboev. Closes #6099. --- api/config.py | 2 ++ static/boot.js | 2 ++ static/i18n.js | 30 ++++++++++++++++ static/index.html | 5 +++ static/panels.js | 36 ++++++++++++++++++- static/ui.js | 9 +++-- ...st_issue3820_chat_activity_display_mode.py | 33 ++++++++++++++++- ...test_issue5700_worklog_event_timestamps.py | 28 +++++++++++++++ 8 files changed, 141 insertions(+), 4 deletions(-) diff --git a/api/config.py b/api/config.py index f14e8c43..586c2661 100644 --- a/api/config.py +++ b/api/config.py @@ -9154,6 +9154,7 @@ _SETTINGS_DEFAULTS = { "structured_code_auto_tree_lines": 10, # in 'auto' mode, minimum line count to default a JSON/YAML block to Tree view (preserves the original hardcoded >=10 behavior) "session_endless_scroll": False, # auto-load older transcript pages while scrolling upward "chat_activity_display_mode": "compact_worklog", # compact_worklog | transparent_stream | hide_all_activity + "transparent_stream_event_timestamps": True, # show per-event timestamp chips inside Transparent Stream "auto_scroll_follow": True, # follow new output to the bottom while streaming (Codex/Claude-Code-style sticky bottom); the user scrolling up unpins and is respected "worklog_details_expanded_default": False, # opt-in: expand Worklog details by default; default remains folded "hide_composer_attach": False, # hide attach button in composer footer @@ -9470,6 +9471,7 @@ _SETTINGS_BOOL_KEYS = { "large_text_paste_as_attachment", "project_quick_create_buttons", "session_endless_scroll", + "transparent_stream_event_timestamps", "auto_scroll_follow", "worklog_details_expanded_default", "auth_disabled_acknowledged", diff --git a/static/boot.js b/static/boot.js index 8e9a25ad..3b315435 100644 --- a/static/boot.js +++ b/static/boot.js @@ -3241,6 +3241,7 @@ window._mirrorSpeechSettingsFromServer=_mirrorSpeechSettingsFromServer; ? s.chat_activity_display_mode : 'compact_worklog'; window._transparentStream=window._chatActivityDisplayMode==='transparent_stream'; + window._transparentEventTimestamps=s.transparent_stream_event_timestamps!==false; window._terminalAutoExpandOnOutput=!!s.terminal_auto_expand_on_output; window._worklogDetailsExpandedByDefault=!!( Object.prototype.hasOwnProperty.call(s,'worklog_details_expanded_default') @@ -3389,6 +3390,7 @@ window._mirrorSpeechSettingsFromServer=_mirrorSpeechSettingsFromServer; window._simplifiedToolCalling=true; window._chatActivityDisplayMode='compact_worklog'; window._transparentStream=false; + window._transparentEventTimestamps=true; window._terminalAutoExpandOnOutput=false; window._workspaceTodosTab=false; if(typeof _applyWorkspaceTodosTabVisibility==='function') _applyWorkspaceTodosTabVisibility(); diff --git a/static/i18n.js b/static/i18n.js index cafdba7e..141fcfcc 100644 --- a/static/i18n.js +++ b/static/i18n.js @@ -681,6 +681,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'When enabled, new Worklog details start expanded so tool, thinking, and progress cards are visible without an extra click. When off, Worklog details stay folded by default; per-turn manual collapse/expand choices still win.', settings_label_chat_activity_display_mode: 'Activity display', settings_desc_chat_activity_display_mode: 'Compact Worklog groups supporting activity into a quiet summary. Transparent Stream keeps each thinking/tool event as its own chronological expandable row. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Time to first token', processed_elapsed: _i18nProcessedElapsedEn, worklog_thinking: 'Thinking', @@ -2436,6 +2438,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'When enabled, new Worklog details start expanded so tool, thinking, and progress cards are visible without an extra click. When off, Worklog details stay folded by default; per-turn manual collapse/expand choices still win.', settings_label_chat_activity_display_mode: 'Activity display', settings_desc_chat_activity_display_mode: 'Compact Worklog groups supporting activity into a quiet summary. Transparent Stream keeps each thinking/tool event as its own chronological expandable row. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Time to first token', processed_elapsed: _i18nProcessedElapsedEn, worklog_thinking: 'Thinking', @@ -4174,6 +4178,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: '有効にすると、新しい Worklog の詳細が展開された状態で始まり、ツール、Thinking、進捗カードをクリックなしで確認できます。無効の場合、Worklog の詳細はデフォルトで折りたたまれます。ターンごとの手動折りたたみ/展開は優先されます。', settings_label_chat_activity_display_mode: 'アクティビティ表示', settings_desc_chat_activity_display_mode: '「コンパクトワークログ」はバックグラウンドアクティビティを簡潔なサマリーにまとめます。「トランスペアレントストリーム」は思考プロセスやツールの呼び出しイベントを、時系列順に展開可能な個別の行として表示し続けます。 Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: '最初のトークン出力までの時間', processed_elapsed: _i18nProcessedElapsedEn, worklog_thinking: 'Thinking', @@ -6665,6 +6671,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'Если включено, новые детали Worklog открываются раскрытыми, чтобы инструменты, рассуждения и прогресс были видны без дополнительного клика. Если выключено, Worklog по умолчанию остаётся свёрнутым; ручной выбор для конкретного хода сохраняется.', settings_label_chat_activity_display_mode: 'Отображение активности', settings_desc_chat_activity_display_mode: 'Компактный Worklog группирует вспомогательную активность в спокойную сводку. Прозрачный поток оставляет каждое рассуждение и событие инструмента отдельной хронологической раскрываемой строкой. Режим «Только финальный ответ» скрывает строки активности, оставляя видимым финальный ответ.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Время до первого токена', processed_elapsed: _i18nProcessedElapsedRu, worklog_thinking: 'Размышление', @@ -8372,6 +8380,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'When enabled, new Worklog details start expanded so tool, thinking, and progress cards are visible without an extra click. When off, Worklog details stay folded by default; per-turn manual collapse/expand choices still win.', settings_label_chat_activity_display_mode: 'Activity display', settings_desc_chat_activity_display_mode: 'Compact Worklog groups supporting activity into a quiet summary. Transparent Stream keeps each thinking/tool event as its own chronological expandable row. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Time to first token', processed_elapsed: _i18nProcessedElapsedEn, worklog_thinking: 'Thinking', @@ -9719,6 +9729,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'When enabled, new Worklog details start expanded so tool, thinking, and progress cards are visible without an extra click. When off, Worklog details stay folded by default; per-turn manual collapse/expand choices still win.', settings_label_chat_activity_display_mode: 'Activity display', settings_desc_chat_activity_display_mode: 'Compact Worklog groups supporting activity into a quiet summary. Transparent Stream keeps each thinking/tool event as its own chronological expandable row. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Time to first token', processed_elapsed: _i18nProcessedElapsedEn, worklog_thinking: 'Thinking', @@ -11743,6 +11755,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: '当启用此功能时,新的工作日志详情会自动展开,因此无需额外点击即可查看工具、思路和进度卡片。当禁用此功能时,工作日志详情默认保持折叠状态;不过每次仍可手动选择折叠或展开。', settings_label_chat_activity_display_mode: '活动显示', settings_desc_chat_activity_display_mode: '紧凑的工作日志将支持活动归纳为简洁摘要。透明流模式则将每个思考/工具使用事件按时间顺序单独列为可展开的行。 Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: '首个令牌生成时间', processed_elapsed: _i18nProcessedElapsedZh, worklog_thinking: '正在思考', @@ -12660,6 +12674,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'When enabled, new Worklog details start expanded so tool, thinking, and progress cards are visible without an extra click. When off, Worklog details stay folded by default; per-turn manual collapse/expand choices still win.', settings_label_chat_activity_display_mode: 'Activity display', settings_desc_chat_activity_display_mode: 'Compact Worklog groups supporting activity into a quiet summary. Transparent Stream keeps each thinking/tool event as its own chronological expandable row. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Time to first token', processed_elapsed: _i18nProcessedElapsedZhHant, worklog_thinking: '正在思考', @@ -14293,6 +14309,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'When enabled, new Worklog details start expanded so tool, thinking, and progress cards are visible without an extra click. When off, Worklog details stay folded by default; per-turn manual collapse/expand choices still win.', settings_label_chat_activity_display_mode: 'Activity display', settings_desc_chat_activity_display_mode: 'Compact Worklog groups supporting activity into a quiet summary. Transparent Stream keeps each thinking/tool event as its own chronological expandable row. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Time to first token', processed_elapsed: _i18nProcessedElapsedEn, worklog_thinking: 'Thinking', @@ -15930,6 +15948,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'When enabled, new Worklog details start expanded so tool, thinking, and progress cards are visible without an extra click. When off, Worklog details stay folded by default; per-turn manual collapse/expand choices still win.', settings_label_chat_activity_display_mode: 'Activity display', settings_desc_chat_activity_display_mode: 'Compact Worklog groups supporting activity into a quiet summary. Transparent Stream keeps each thinking/tool event as its own chronological expandable row. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Time to first token', processed_elapsed: _i18nProcessedElapsedEn, worklog_thinking: 'Thinking', @@ -17682,6 +17702,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'Lorsqu\'il est activé, les nouveaux détails du journal de travail commencent développés, de sorte que les cartes d\'outils, de réflexion et de progression soient visibles sans clic supplémentaire. Lorsqu\'il est désactivé, les détails du journal de travail restent repliés par défaut ; les choix manuels de réduction/développement par tour prévalent.', settings_label_chat_activity_display_mode: 'Affichage des activités', settings_desc_chat_activity_display_mode: 'Journal de travail compact regroupe les activités de support dans un résumé discret. Flux transparent conserve chaque événement de réflexion/outil comme une ligne extensible chronologique. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Délai jusqu\'au premier jeton', processed_elapsed: _i18nProcessedElapsedEn, worklog_thinking: 'Réflexion', @@ -19628,6 +19650,7 @@ const LOCALES = { settings_desc_auxiliary_models: 'Směrování vedlejších úloh pro vision, kompresi, generování názvů atd. "Auto" používá váš hlavní chatovací model.', settings_desc_bot_name: 'Použito pouze pro výchozí profil. Ostatní profily používají vlastní názvy profilů.', settings_desc_chat_activity_display_mode: 'Kompaktní Worklog seskupuje podpůrnou aktivitu do tichého souhrnu. Transparentní Stream zachovává každou událost přemýšlení/nástroje jako vlastní chronologicky rozbalitelný řádek. Final answer only hides activity rows while keeping the final answer visible.', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', settings_desc_check_updates: 'Zobrazit banner když jsou dostupné novější verze WebUI nebo Agenta. Spouští periodické git fetch na pozadí.', settings_desc_claude_code_sessions: 'Zobrazit importované relace Claude Code v bočním panelu, nebo je skrýt při zachování ostatních externích relací viditelných.', settings_desc_composer_controls: 'Přepínat které ovládací prvky jsou zobrazeny v zápatí chatu. Přetáhněte čipy pro změnu pořadí každé skupiny zápatí.', @@ -19700,6 +19723,7 @@ const LOCALES = { settings_label_auxiliary_models: 'Pomocné modely', settings_label_bot_name: 'Výchozí název asistenta', settings_label_chat_activity_display_mode: 'Zobrazení aktivity', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', settings_label_check_updates: 'Kontrolovat aktualizace', settings_label_update_channel: 'Kanál aktualizací', settings_update_channel_stable: 'Stabilní (doporučeno)', @@ -21085,6 +21109,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'When enabled, new Worklog details start expanded so tool, thinking, and progress cards are visible without an extra click. When off, Worklog details stay folded by default; per-turn manual collapse/expand choices still win.', settings_label_chat_activity_display_mode: 'Activity display', settings_desc_chat_activity_display_mode: 'Compact Worklog groups supporting activity into a quiet summary. Transparent Stream keeps each thinking/tool event as its own chronological expandable row. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Time to first token', processed_elapsed: _i18nProcessedElapsedEn, worklog_thinking: 'Thinking', @@ -22837,6 +22863,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'Gdy ta opcja jest włączona, nowe szczegóły Worklog zaczynają rozwinięte, dzięki czemu karty narzędzi, Thinking i postępu są widoczne bez dodatkowego kliknięcia. Gdy jest wyłączona, szczegóły Worklog pozostają domyślnie zwinięte. Ręczne decyzje o zwinięciu/rozwinięciu w danej turze mają pierwszeństwo.', settings_label_chat_activity_display_mode: 'Wyświetlanie aktywności', settings_desc_chat_activity_display_mode: 'Kompaktowy dziennik pracy grupuje aktywność wspierającą w dyskretne podsumowanie. Transparentny strumień zachowuje każde zdarzenie myślenia/narzędzia jako osobny chronologiczny wiersz z możliwością rozwinięcia. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Czas do pierwszego tokenu', processed_elapsed: _i18nProcessedElapsedPl, worklog_thinking: 'Myślenie', @@ -24467,6 +24495,8 @@ const LOCALES = { settings_desc_worklog_details_expanded_default: 'Khi bật, chi tiết Worklog mới sẽ được mở sẵn để hiển thị tool, suy nghĩ và thẻ tiến trình mà không cần bấm thêm. Khi tắt, Worklog sẽ mặc định thu gọn; các lựa chọn mở/thu gọn thủ công theo từng lượt vẫn được ưu tiên.', settings_label_chat_activity_display_mode: 'Hiển thị hoạt động', settings_desc_chat_activity_display_mode: 'Compact Worklog gom nhóm hoạt động thành bản tóm tắt gọn. Transparent Stream giữ mỗi sự kiện thinking/tool thành một dòng theo thứ tự thời gian có thể mở rộng. Final answer only hides activity rows while keeping the final answer visible.', + settings_label_transparent_stream_event_timestamps: 'Show Transparent Stream event timestamps', + settings_desc_transparent_stream_event_timestamps: 'Keeps the response footer time visible while hiding the per-event timestamp chips.', first_token_time: 'Thời gian tới token đầu tiên', processed_elapsed: _i18nProcessedElapsedVi, worklog_thinking: 'Đang suy nghĩ', diff --git a/static/index.html b/static/index.html index 7b6319bb..6844ae21 100644 --- a/static/index.html +++ b/static/index.html @@ -1065,6 +1065,11 @@
Compact Worklog groups supporting activity into a quiet summary. Transparent Stream keeps each thinking/tool event as its own chronological expandable row. Final answer only hides activity rows while keeping the final answer visible.
+ +
Keeps the response footer time visible while hiding the per-event timestamp chips.