Skip to content

feat(web): refine chat reading, execution feedback, and follow-up controls - #865

Open
testikun wants to merge 13 commits into
openpi-dev:mainfrom
testikun:codex/design-reference-refinement
Open

testikun wants to merge 13 commits into
openpi-dev:mainfrom
testikun:codex/design-reference-refinement

Conversation

@testikun

@testikun testikun commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Closes #867

Long coding conversations expose inconsistent headers and controls, oversized code and input areas, and noisy execution summaries. Expanded evidence can trap scrolling before earlier messages; narrow tool rows lose their useful target text. Follow-up controls can also retain a finished turn, reject the next submission, or leave queue cancellation unclear.

Value

Makes conversations easier to read and operate, with quiet completed summaries and clear feedback while tools run. Reading position, drafts, native execution receipts, and keyboard access remain the basis for the interaction.

Approach

  • Align desktop headers at 64px, reuse the existing Tooltip for icon actions, and compact usage/model controls at narrow widths. Preserve accessible names, focus restoration, Escape dismissal, and reduced-motion behavior.
  • Add cached code highlighting after streaming finishes, expandable long-code previews, a manually expandable prompt editor, compact queued-message summaries, and stable activity-label transitions. Refine model selection, IME handling, attachment navigation, anchored image zoom, Bash evidence, and diff reading.
  • Show the current tool and target with subtle progress motion during execution; use an operation summary only after the whole group finishes and collapses. Keep elapsed time above the answer. Put tool/failure counts in hover and focus details rather than reserving space in the main row; align tool and thinking rows and suppress final-answer controls on intermediate commentary.
  • Allow expanded tool/file lists to hand scrolling back to the conversation. Keep user scrolling in control of following, reserve room for “jump to latest,” and default file-change cards to a compact summary. File read errors now have one coherent message, retry, and optional technical details.
  • Put the default Queue/Steer choice in Settings → General, persisted as ui.webFollowUpBehavior through the existing validated writer and /openpi-setup. The composer override and Command/Ctrl+Enter affect one message; once the turn ends, the next explicit submission is a normal prompt.
  • For a confirmed TURN_CONFLICT, retain the draft, release pending admission, refresh native state, and show a localized message. Queue cancellation waits for the native clear receipt and refreshes the same Session. Preserve Session/epoch guards and uncertain-delivery handling; never automatically resend the draft.
  • Show the current Session model in provider configuration and use its context capacity in usage details. Rebuild tracked Web assets. Integrate main through 16841623, retaining its tool-surface changes and bilingual README/USAGE structure.

Validation

  • bun run check passed on the integrated worktree: configuration/docs/discipline contracts, frontend build, formatting, lint, and type checks.
  • bun run test passed on the final integrated revision 01721d05: 2,359 Node tests passed, 8 skipped; 1,506 UI tests passed across 97 files. The settings test waits for the initial canonical value before editing and still verifies that saving a presentation preference preserves the unsaved workflow input.
  • Real-browser checks on the implementation before the main merge covered 1440px, 768px, and 390px layouts, tool-stat keyboard access, scrolling out of expanded evidence, jump-to-latest placement, file-change expansion, and error/retry presentation. Queue cancellation and stale-turn/resubmit paths used local fixtures without model calls. Saving and reloading the General preference was verified against an isolated source Host.
  • Existing full Web E2E coverage passed 157/157, Plan Provider coverage 5/5, and the CI matrix passed on the earlier 44446cab revision (run). These are baseline results, not validation of the latest changes. No additional E2E suite was added or rerun locally for this update; the new PR run will validate the final head.
  • No frame-time/typing-latency benchmark, real mobile-keyboard run, or exhaustive provider smoke is claimed. The build retains its existing large-chunk warning.

The existing self-contained HTML comparison covers the earlier header/help changes with synthetic data. Download and open it locally to compare viewport sizes. Newer local comparisons containing private conversation content are not included in the repository.

Impact

  • User-visible: clearer execution feedback, less persistent metadata, usable nested scrolling, compact controls and file changes, accessible hints, and predictable follow-up and queue controls.
  • Model-visible context/tools: no new model-facing tool. The setup writer gains the typed ui_web_follow_up_behavior preference; ordinary prompts retain Pi's existing delivery semantics.
  • Runtime/lifecycle: confirmed rejection and queue-clear paths reconcile with the native Session snapshot. No replacement queue, provider stack, automatic resend, or change to stop authority.
  • Persisted configuration/data: adds ui.webFollowUpBehavior (followUp by default, optional steer), with config parsing, status, Web projection, validated writes, and documentation. Old configurations preserve the existing queue default; no Session migration.
  • Compatibility/limits: desktop and narrow responsive layouts were inspected. A running Host must load the updated code before it can save the new preference; this PR update does not restart the user's running service.

Resolve the squash-history overlap using the latest pre-landing PR 820 tree as the content base. Preserve PR 825 research records, retain the latest PR 823 fixture repair, incorporate current main compatibility and restore-confirmation fixes, and regenerate Web assets.
…nce-refinement

# Conflicts:
#	tests/web/pi-runtime-native.test.ts
#	web/dist/app.js
#	web/dist/styles.css
#	web/runtime/pi-runtime.ts
@testikun testikun changed the title feat(web): polish desktop chat interactions and motion feat(web): polish desktop reading, controls, and motion Oct 17, 2026
@github-actions github-actions Bot added the area:github GitHub workflows, templates, ownership, or tests label Oct 17, 2026
@github-actions github-actions Bot added documentation Improvements or additions to documentation area:setup OpenPI setup, configuration, or setup documentation labels Oct 20, 2026
@testikun testikun changed the title feat(web): polish desktop reading, controls, and motion feat(web): refine chat reading, execution feedback, and follow-up controls Oct 20, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:github GitHub workflows, templates, ownership, or tests area:setup OpenPI setup, configuration, or setup documentation documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Web UX] 精修桌面对话、输入区与交互动效

1 participant