Skip to content

feat(web): restore polished workbench UI and conversation rendering - #352

Open
somewan820 wants to merge 2 commits into
openpi-dev:mainfrom
somewan820:feat/restore-web-workbench-ui
Open

feat(web): restore polished workbench UI and conversation rendering#352
somewan820 wants to merge 2 commits into
openpi-dev:mainfrom
somewan820:feat/restore-web-workbench-ui

Conversation

@somewan820

Copy link
Copy Markdown
Collaborator

Problem

The session-admission hardening inside #326 (commit d1118f8) rewrote web/ui and silently dropped most of the polished design from 4421944 (feat(web): polish workbench UI): the settings dialog (language/theme pickers), the landing logo animation, rich thinking/tool-call rendering, subagent/workflow status cards, the turn rail, the composer activity bar, the favicon, and the engineering-grid backdrop. The merged workbench shipped with a minimal generic transcript instead, far from the workbench experience outlined in #76.

Value

Approach

  • Restored web/ui/{app.js,index.html,styles.css} to the 4421944 design, embedded into the current hardened data flow rather than overwriting it: sessionSwitching, applyRuntimeEvent, prompt admission tokens, and resetLiveState are preserved.
  • Ported the rendering layer: thinking rows with live timers (timed in applyRuntimeEvent, reset in resetLiveState), tool lines with icons/argument summaries and right-edge outcome glyphs (✓/✗/running dot), 4+ run grouping, family cards for subagent/workflow calls, per-turn copy/time message actions, turn rail, and composer activity chips adapted to the current { items, omitted } capability projections.
  • Restored the settings dialog with browser-local persistence (openpi.language, openpi.web.theme) matching the original behavior; canonical setup-config integration remains future work tracked by feat(web): add persistent theme/language preferences and accessibility/mobile hardening #350.
  • Restored favicon.svg and its static route in web/host/web-host.ts.
  • Tests: converted d1118f8-era doesNotMatch lock-in assertions back to positive assertions for the revived UI surface; fixtures aligned to current protocol types.

Validation

  • node --check web/ui/app.js — OK
  • bun run check — config contract, biome format/lint, tsc all pass
  • bun run test — 1236 tests, 1235 pass / 0 fail / 1 skip
  • Not run: real-browser manual audit; visual fidelity targets the 4421944 snapshot.

Impact

  • User-visible behavior: settings dialog (language/theme), landing logo animation + click replay, rich transcript rendering (thinking timers, tool status, activity cards), turn rail, activity bar, favicon, and grid backdrop all return.
  • Model-visible context/tools: none.
  • Runtime/lifecycle: none, except web-host.ts serving /favicon.svg from the existing static allowlist.
  • Persisted config/data: two browser-local keys (openpi.language, openpi.web.theme); no canonical configuration changes.
  • Compatibility/risk: low — no protocol or backend logic changes.

Refs #76. Relates to #345, #346, #350 (partial — restores the baseline these issues extend).

The session-admission hardening in openpi-dev#326 (d1118f8) rewrote web/ui and
dropped most of the polished design: the settings dialog (language/theme),
landing logo animation, rich thinking/tool-call rendering, subagent/workflow
status cards, turn rail, activity bar, favicon, and the engineering-grid
background. Restore the 4421944 design baseline while keeping the admission
and recovery hardening intact.

- Settings dialog with language/theme pickers persisted browser-locally
- Thinking rows with live timers, tool lines with icons/summaries and
  right-edge outcome glyphs, 4+ run grouping, per-turn copy/time actions
- Subagent/workflow activity cards and composer activity chips adapted to
  the current { items, omitted } capability projections
- Turn rail, favicon.svg + static route, grid/sidebar/paper-lane backdrop
- Tests: restore positive assertions for the revived UI surface

Refs openpi-dev#76, relates to openpi-dev#345, openpi-dev#346, openpi-dev#350

@tt-a1i tt-a1i left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

我在 exact head 4724e5c 上完成了代码、完整测试和 Chromium 实机审查。bun run check 通过;bun run test 为 1235 pass / 0 fail / 1 skip。桌面布局、主题切换和设置弹窗正常,但当前有两个合并阻塞项:窄屏主界面会被整体模糊;另外本 PR 已经新增了持久化的主题/语言选择,却把仓库规定的统一配置契约留给 #350。建议本 PR 保持恢复 UI 基线的小范围:修掉窄屏 blur,并暂时移除设置持久化/入口(或在本 PR 完成统一配置契约)。修复后我可以立即复审。

Comment thread web/ui/app.js Outdated
Comment thread web/ui/styles.css
@tt-a1i

tt-a1i commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

维护者已明确当前没有手机端范围,因此我撤回窄屏模糊作为本次合并阻塞项;该问题可以留到后续移动端支持时处理。当前只剩主题/语言持久化形成第二配置源这一项仓库配置契约问题。PR head 仍为 4724e5c,尚未包含对应修复。

…penpi-dev#350

P1: an off-canvas sidebar with backdrop-filter makes Chromium blur the
whole page backdrop at <=760px. The narrow drawer is now opaque and skips
the backdrop filter and ghost grid; regression assertions lock the media
query rules.

P2: theme/language pickers persisted to localStorage would fork a second
config store from the package configuration contract. Remove the settings
entry, dialog, pickers, theme overrides, and persistence from this PR;
openpi-dev#350 lands preferences through the canonical setup config.
@somewan820
somewan820 requested a review from tt-a1i September 2, 2026 05:26
@somewan820

Copy link
Copy Markdown
Collaborator Author

两个阻塞项均已在 1b340f2 处理(详见两条行内回复):P1 窄屏整页模糊已修复(≤760px 侧栏改不透明、禁用 backdrop-filter,并补了窄屏回归断言);P2 设置入口与主题/语言持久化已整体撤下,留给 #350 按统一配置契约实现。bun run check 与 bun run test(1235 pass / 0 fail / 1 skip)均通过,可以再次 review。

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants