Conversation
Generated-by: Codex
Generated-by: OpenAI Codex
Generated-by: Codex
Preserve the composer and split width, allow empty browser focus, and improve progress card hit targets and native titlebar clearance. Generated-by: Codex
Show a release hint at the divider threshold, return drag focus to the mounted composer, and support browser Escape without navigating an unsubmitted address. Generated-by: Codex
Keep the bounded live projection when no persisted assistant reply exists, label interrupted turns, and avoid projecting an earlier turn into a newly running turn. Generated-by: Codex
Add eleven real Electron screenshots covering split, drag focus, latest reply, reading mode, restore, native Browser, live and stopped turns, and a narrow window. Generated-by: Codex
Allow only the two focused-preview layout declarations while continuing to reject palette tokens and unknown custom properties. Add a regression check for both sides of the guard. Generated-by: Codex
M4n5ter
left a comment
There was a problem hiding this comment.
English
The direction makes sense: focusing the document while preserving the same composer, draft, and attachments supports a useful reading-and-follow-up workflow. Sharing ProgressCard with Workhub is also a good choice. I’d address these interaction issues before merging:
-
Make Escape predictable in focused mode.
Escape restores the split view from the preview toolbar, but stops a running turn from the composer. Entering focus by dragging also moves keyboard focus into that composer, making an attempted exit potentially interrupt the task. After dismissing any local popup, Escape should consistently leave focused mode; stopping execution should remain an explicit action. -
Preserve the reply’s reading position.
Expanding a reply scrolls directly to the bottom, including completed replies. Minimizing and restoring also loses a manually selected reading position. Open completed replies at the beginning, follow live output only while the reader remains at the end, and preserve the position across collapse/restore. -
Make partial content explicit and provide access to the full conversation.
Expanded replies are capped at 16,000 characters, and the live projection retains only the last 12 items. Neither limitation is visible to the reader. Keep the bounds if needed, but show a truncation notice and a “View full conversation” action that restores the conversation at the relevant turn. -
Remove the layout jump around 990px.
Increasing the viewport from 990px to 991px shrinks the card from approximately 958px to 674px and switches the composer into a taller layout. A wider window consequently obscures more of the document. Use a continuous, container-based width rule and adapt the controls to the available space.
For consistency with Workhub, I’d share the status vocabulary—working, paused, needs attention, finished—and the path from a summary to the full conversation. The secondary actions can remain different: hiding a floating progress window and minimizing an in-document composer serve different purposes.
Visually, a compact status row plus the composer would make a calmer default, with reply details expanded on demand. The document should remain the primary surface.
中文
整体方向合理:让文档成为主视图,同时保留同一个输入框、草稿和附件,适合边阅读边继续提问。与 Workhub 共享 ProgressCard 也值得保留。建议合并前修正以下交互问题:
-
统一聚焦模式下 Escape 的行为。
在预览工具栏按 Escape 会还原分栏,在输入框中却会停止正在运行的任务。而通过拖动进入聚焦后,焦点恰好会自动移到输入框,用户想退出聚焦时可能误停任务。建议先关闭局部弹层,再统一退出聚焦;停止执行保留明确入口。 -
保留回复的阅读位置。
展开回复会直接滚到底部,已完成的回复也如此;手动读到中段后收起、恢复,阅读位置也会丢失。建议已完成回复首次从头展示,仅在用户停留于末尾时跟随实时输出,并在收起、恢复之间保留位置。 -
明确说明内容不完整,并提供完整对话入口。
展开的回复最多显示 16,000 字符,实时内容仅保留最后 12 项,但界面没有说明这些限制。可以保留容量上限,同时显示截断提示,并提供“查看完整对话”,还原分栏并定位到对应回合。 -
消除 990px 附近的布局跳变。
窗口从 990px 加宽到 991px,卡片反而从约 958px 缩到 674px,输入区也变成更高的分行布局,导致更宽的窗口遮住更多正文。建议采用连续、基于容器的宽度规则,再根据实际空间调整控件布局。
与 Workhub 应统一的是“处理中、已暂停、需要查看、已结束”等状态语言,以及从摘要进入完整对话的路径。次要操作可以不同:隐藏独立进度浮窗与收起文档内输入框,本来就服务于不同场景。
视觉上,建议默认保留紧凑状态行和输入框,按需展开回复详情,让文档始终占据主要视觉空间。
Generated-by: Codex
Preserve reading position, make Escape exit focused previews, expose bounded content and full conversation navigation, and use continuous composer widths. Verify with the live Terra provider in the native app. Generated-by: Codex
Keep the real native-menu lifecycle assertions while avoiding Electron close-all teardown in the test. Remove superseded preview design notes and screenshot iterations from the PR. Generated-by: Codex
Wait until parent layout effects apply the focused width before restoring the reader offset. Keep the existing 360px regression assertion and verify collapse, minimize, and settled-turn handoff without extra state. Generated-by: Codex
Review(对抗式复核,基于
|
me2seeks
left a comment
There was a problem hiding this comment.
方向认可,但合并前建议处理:P1 composerTarget 可能永久为 null 导致「假聚焦」且无兜底;P1 键盘 End 在 <=840px 窗口会意外进入聚焦;P2 共享 ProgressCard 把 role="status" 移入 button,WorkHub 无障碍回归。详见上方 review 评论。
Summary
Files and Browser can focus the preview while retaining the same mounted composer, draft and attachments. Drag the center divider left or use the focus control; restore returns to the original split width. WorkHub and focused previews share
ProgressCardand the Working / Paused / Needs attention / Finished vocabulary.Fixes #5469. Workspace-reference opening remains tracked by #2664.
Review changes
The default now contains just the compact status row and composer; reply details expand on demand. Main has been merged and the conflicts resolved.
Real application captures
These are actual macOS Electron window screenshots with a live provider, using the local Codex connection and gpt-5.6-terra / medium. Prompts were sent through the actual composer. The model generated the HTML with Write and produced the long reply and real Bash calls. No mocked backend or seeded reply supplied these captures. The Browser loads a real native
WebContentsView.Full illustrated acceptance notes
Compact default and completed reply
Reading position before → after minimize/restore
The same Weather paragraph and Gear heading remain at the same position, together with the unsent draft.
990px → 991px native window
Escape, full conversation, native Browser and explicit Stop
Escape restores the split while the real turn continues.
View full conversation restores the split and targets the corresponding turn.
The native webpage leaves room for the composer, including at 720px.
Explicit Stop retains received content and displays Paused.
Verification
Full GitHub CI passed for
0fc0491ee, including the native desktop tests and Storybook interaction checks.The native WorkHub menu test closes the popup on its owning window. Preview scroll restoration runs after the parent applies its focused width; the original 360px regression assertion is retained.
Real native application: generated HTML, divider focus, draft retention, completed-reply first position, reply collapse, composer minimize/restore, both truncation bounds, full-conversation navigation, local-menu Escape, composer Escape during execution, explicit Stop, webpage input and window resizing.
Desktop production build; renderer and Storybook TypeScript; changed-file Biome; renderer architecture; locale hygiene; Astryx inventory; staged source-header checks passed.
Existing preview rendering and security limits remain unchanged. Dedicated Office/CSV/Notebook viewers remain outside this change.
AI use
Codex implemented and reviewed the changes, operated the real app, captured the screenshots and wrote the description. GPT-5.6 Terra generated the test document and replies. Commits include
Generated-by: Codex; human review is required before merging.Checklist