Skip to content

持续优化 Web 使用体验:设置、浏览器、文件与会话交互 #597

Description

@testikun

目标

持续优化 OpenPI Web 的日常使用体验,围绕真实使用中的“输入 → 发送 → 查看执行与文件变化 → 切换会话 → 取消或恢复”闭环,按可复现的小批次修复交互与生命周期问题。

Related to #455。#455 保持总体体验入口;本 Issue 聚焦 PR #561 合并后的使用测试与迭代,不重复建设已完成的工作栏、设置页、终端或浏览器功能。

当前已确认的问题

基于 PR #561 的真实 Web 实例和两轮确定性回归,发现以下需要继续修复的场景:

  1. 图片仍在读取时可以发送文字,导致待导入图片漏发。
  2. 图片读取期间切换会话,迟到结果可能进入另一会话的草稿。
  3. 内嵌浏览器不能粘贴文本,Shift+Tab 又丢失 Shift 状态,影响表单填写和反向导航。
  4. 分栏手柄只能使用指针,键盘用户无法调整阅读区域。
  5. 切换会话后可能继续显示上一会话的 Git 文件变化,迟到响应或失败路径会扩大误导。
  6. Diff 自动刷新可能抢走主输入框焦点,中断正在编辑的草稿。
  7. 终端输入排队期间发生失败、断连或组件卸载,尚未发送的命令仍可能继续派发。
  8. 文件引用校验过程中无法点击取消;会话改变或对话框卸载后的迟到结果可能继续插入引用。

另发现的“Session 切换或清理后仍创建旧 PTY”已由 #561 最终合并版本修复。本轮沿用主分支实现,补充排队、加载、切换工作目录及清理边界测试,不重复替换实现。

以上是已经复现的问题或已合并的修复事实;更广泛的移动端、输入法、长期断线和性能体验属于后续调查方向,不视为当前已证实缺陷。

迭代方式与边界

  • 以真实使用场景为入口,记录操作步骤、预期行为、实际结果及运行版本;对竞态使用可控延迟测试固定证据。
  • 优先处理误发、跨会话混淆、取消后继续执行、焦点中断,再处理操作反馈与视觉细节。
  • 保持 Pi 对 Session、模型、配置、权限和工具执行的所有权;复用现有 WebHost 与组件生命周期,不增加第二套会话或编排系统。
  • 每批修复给出清楚的范围、回归测试和真实浏览器复测;尝试移除不必要的状态和抽象。
  • 延续 迭代 Web 体验,修复日常使用 bug 并完善子代理查看 #559 / feat(web): 打开子代理任务并查看真实执行过程 #560 的工作记录,不改写已有结论,不公开密钥、私人 Session 或本地原始配置。

本轮验收标准

  • 图片导入完成后才能提交;取消或切换会话后的旧结果不能污染当前草稿。
  • 内嵌浏览器支持受限文本粘贴并正确传递 Shift;分栏可通过键盘操作。
  • Git 变更只对应当前选中会话;Diff 刷新不打断正在输入的内容。
  • 终端停止、断连或失败后不继续派发未发送的输入;创建与清理边界有回归覆盖。
  • 文件引用校验可取消,且迟到结果不插入、不遗留 artifact handle。
  • bun run check、bun run test 与 Chromium 端到端测试通过;明确记录真实模型与真实 PTY smoke 的结果和局限。

本 Issue 用于持续跟进,首个修复 PR 完成上述批次后更新状态;尚未验证的后续方向单独复现、评估和拆分,不由一个 PR 宣称全部解决。

本轮进展

前两轮修复已合并到同一个 PR:#598,由 @testikun 提交,已推送,待 Review / 合并。本轮不再拆分多个 PR。

初始整合时(2026-09-20),在已合并 #561 的 main 上,bun run check 通过;Node 1703 passed / 1 platform skip,Vitest 309 / 309,Chromium 端到端 52 / 52。两个源码研究记录保留复现步骤、消融、真实模型与 PTY smoke 以及验证局限:

已在本 Issue 留言认领;当前账号无权修改仓库 Assignee 字段,需维护者设置为 @testikun。实现和提交不受此字段限制。

2026-09-21 更新:同一 PR 的后续使用迭代

所有修复继续集中在 #598,最新提交 4d229e5,没有拆分新的 PR。

  • 设置与思考菜单在第一次发消息之前即可使用,保留草稿;headless 会话不再为未使用的搜索工具等待二进制下载。
  • 设置页可添加/编辑自定义模型、保存 API Key;写入 Pi 原生配置/凭据。OpenPI 自有设置、子代理角色与并发、技能及插件需求仍统一通过 /openpi-setup,密钥不会进入模型对话。
  • 浏览器改用 DPR 感知的 PNG screencast,限制帧积压、合并滚轮输入,并正确跟随面板尺寸。
  • Git 默认使用未暂存状态,提供暂存/分支范围并按需读取文件差异;大未跟踪文件不再让整页依赖基线捕获失败。会话基线不可用时给出可操作说明。
  • 跨 worktree 的原生编辑记录可查看;外部文件需显式授权只读打开单个文件,支持后续刷新,不扩大目录权限。

参考调查覆盖 Codex 官方 Review、Claude Checkpointing,以及固定版本 Maka、两种 Pi Web 和 Chromium 实现;结论、范围、消融与证据边界保存在 原生 Web 交互调查记录。

最新验证:bun run check 通过;Node 1711 passed / 1 Windows-only skip,Vitest 317 passed,生产构建 Chromium E2E 54/54 passed。独立实例验证模型/测试密钥保存与 setup 表单;真实 Chromium 验证 2x PNG 视口及输入坐标。均不是通用性能 Benchmark,也未声称覆盖所有超时原因。

用户正在使用的 57161 常驻实例未更新或重启;测试服务和临时测试页已关闭。后续未验证体验仍留在本 Issue 持续跟进。

2026-09-21 第三轮:五项交互与响应问题

继续集中在 #598,提交 c781376:

  1. 模型配置输入未保存时,切换设置标签会清空表单;现保留同一 Session 下的编辑草稿。
  2. 相同 Git revision 的摘要刷新会重复读取选中的 diff;现只在版本、文件或读取目标变化时重新读取。
  3. 裸写本地浏览器地址被补成 HTTPS;现正确选择 loopback HTTP,并保留端口和显式 HTTPS。
  4. Control/Command 全选、撤销等编辑组合键被前端忽略;现转发修饰位并使用原生 CDP 编辑命令,粘贴仍走宿主剪贴板路径。
  5. 主机响应慢时鼠标移动持续排队;现限制为一个在途请求和最新位置,关闭工具后丢弃未发送位置。消融移除了多余的 60ms 等待,相关测试仍通过。

修复前新增用例有 6 条失败(Control/Meta 分别覆盖),修复后通过。最终 bun run check 通过;Node 1711 passed / 1 Windows-only skip,Vitest 329 passed,生产构建 Chromium E2E 56/56 passed。

真实 Chromium 用例验证本地 HTTP 页面、全选替换与撤销,并读取外层 UI 已显示 PNG 的像素确认画面改变。两次本机按键到画面更新上界样本为 151ms 和 123ms,含自动化及轮询开销,不作为通用性能保证。完整复现、消融及证据边界。

57161 常驻实例仍未更新或重启。配置归属与 /openpi-setup 入口保持原有约定。

2026-09-21 第四轮:保存反馈、键盘与拖拽

已继续提交到同一个 #598,提交 ece3e42。本轮五类修复:

  1. 修改模型数值、API 或推理开关后,旧“已保存”提示没有清除。
  2. 配置冲突后的刷新只更新 revision,表单仍显示旧值,重试可能覆盖外部修改。
  3. 切换服务商后,旧服务商保存请求的迟到回执显示在新服务商下。
  4. 设置标签没有方向键/Home/End 导航,也没有单一 Tab 焦点入口。
  5. 内嵌浏览器拖出面板后丢失 mouseup,右键被当作左键,拖拽按钮状态不完整。

修复前 7 条设置用例、2 条鼠标用例失败;真实 Chromium 越界拖拽也复现失败。修复后 bun run check 通过,Node 1711 passed / 1 Windows-only skip,Vitest 338 passed,生产构建 Chromium E2E 56/56 passed。

独立 57461 实例确认:方向键切换生效,编辑即清除成功提示,外部修改后能载入最新字段值。真实 Chromium 验证越界松开和右键身份。测试页与测试服务已关闭,57161 常驻实例未更新或重启。

第四轮复现、消融与验证记录。持续优化目标保持开放;没有把本轮五类修复解释为所有 UI 问题已经清除。

2026-09-22 第五轮:侧栏、图片、设置与回合反馈

继续集中在 #598,最新提交 fbf15d2;已合入 main 6132d99(合并提交 d9568c4),保留上游会话 ID/路径校验和前台 post-edit 生命周期。

  • Git、diff、子会话和文件记录减少隐藏面板中的重复工作;Git 一次只保留一个在途读取,并在打开面板时提升刷新优先级。
  • 长会话标题使用紧凑单行显示。已授权的 PNG/JPEG/GIF/WebP 支持内容预览;相同内容不重复下载,撤销或关闭释放资源。
  • 混合文字/图片粘贴保留原生光标与撤销,图片顺序有界导入;首次创建会话只按精确创建回执迁移待导入图片,跨会话仍取消。
  • 设置模型树驱动编辑对象并保留草稿;窄屏使用带文字的分类选择器,补齐尺寸重置、键盘导航和忙碌反馈。所有 OpenPI 自有设置继续走 /openpi-setup。
  • 配置操作、结果、错误不再被隐藏;新增 setup episode 明确区分历史关闭回执。运行中显示已处理时间,结束后显示用时;来自 Pi 实际生命周期并保存到原生 Session。
  • / 菜单开放原生 setup 与现有 Web 面板快捷入口,其他命令显示不可用原因。参数不适用时保留草稿并说明。

验证:bun run check;Node 1856 passed / 1 Windows-only skip,Vitest 417 passed,生产构建 Chromium E2E 61/61 passed。真实 UI 完成配置保存及25秒耗时显示;独立采样确认连续 setup 正确重新暴露 writer,澄清提示后的两次真实配置各应用一次并保存。该样本不代表普遍模型可靠性;曾观察到的未应用结果与正反证据均保留在记录中。

第五轮复现、消融、参考与验证边界。原始截图和日志单独归档,凭据与私有 Session 不进 Git。57161 常驻服务未更新或重启,独立57561测试服务已在空闲时关闭。

持续优化仍在进行;下一批优先修复长会话历史缺页、正文阅读排版,并复现侧边对话导航、终端焦点和文件预览关闭状态等候选;执行过程区域保持原设计,未验证项不提前记为已解决。

2026-09-22:历史阅读、后台进度和输入控制

继续集中在 #598,提交 2f78cf3;main 6132d99 已包含在分支内。本轮补齐以下实际使用问题:

  • 长单轮产生超过250条记录或2MiB输出后,旧用户消息会被初始快照省略;新增有界历史分页与阅读锚点,旧分支迟到页不会进入当前视图。
  • 正文改进段落、列表编号、行内代码与文件链接;保留已有字号设置和执行过程设计。
  • 后台Session继续工作但不推送进度、旁观又误用当前控制者的idle状态;现独立投影所看Session,保存/恢复原有取消与计时身份,并复用原生manager避免反复解析文件。
  • 同文输入被一次清空、直播缓存挤掉待处理项、刷新抢回其他会话、关联记录离开窗口后旧消息回漂;现按scope、实际准入、原生边界和队列下限保守处理,展示关联不被当成执行回执。
  • 同ID复制文件可能出现另一会话的停止控件;输入控制使用原生ID和文件路径,旁观提供明确激活入口。运行中可分别选择发送或停止,旁观隐藏另一控制者的模型与旧回执。
  • 侧边导航被迟到结果覆盖、终端连接/重启抢焦点、预览自动关闭后外层状态残留,以及浏览器退出信号误报启动超时,均有失败回归及修复。

最终本地验证:bun run check通过;Node 1869 passed/1平台skip,Vitest459 passed,真实Chromium E2E65/65 passed。SDK与HTTP的双Session浏览器场景确认A继续显示进度,停止只影响A、B继续运行。读历史锚点偏移≤2px。远端CI将按新提交重新运行。

完整证据、消融、边界与SDK关联限制。原始证据在私有round6归档,凭据和用户Session不进Git。

用户57161常驻服务未更新、重启或中断。其GitHub连接超时与启动环境的代理差异相关,未擅自修改用户Git或代理配置;这与已修复的后台UI状态盲点分开记录。本Issue继续开放,不声明所有Web问题均已消除。

2026-09-22 收尾验证

同一 PR #598 已推送历史/输入修复 4e9ba87、启动诊断 0b5a0f2 和关闭清理修复 4480b8d,继续保留 main 6132d99。

  • 外部标签页切换输入控制者时,保留当前历史阅读视图、旧消息和滚动锚点;身份刷新期间不允许误发。真实 App、Store 与历史 hook 集成回归及权限消融通过。
  • 浏览器迟到的初始状态及打开/刷新回执不会覆盖新编辑的网址;五项专项场景通过,去掉保护后四项准确失败。
  • CI 的原生文字拖放与普通鼠标拖动分开验证。保留 Linux 原生 Chrome sandbox;Windows 完整套件按实测持续时间保留十分钟上限,进程组仍隔离。
  • 新增 Linux 冷启动门禁抓到 ENOTEMPTY:发送结束信号后就删除目录,而 Chromium 仍在写文件。现在等待原生 close 后清理目录,保留有限清理重试;原始启动失败不再被次级清理错误覆盖。旧实现两项真实进程回归失败,新实现通过。
  • 启动期保留最多4KiB诊断到宿主日志,成功后释放,HTTP不暴露原始stderr。另一例八秒端口等待超时的历史根因仍未确认,不把清理修复当作已经证明的唯一原因。
  • 当时本地 bun run check 通过;Node 1873 passed / 1 skip、Vitest 465 passed、生产构建 Chromium 65/65 passed。该次 CI 的 Linux 冷启动与 Web E2E 通过,另外两项失败来自 React 效果未就绪和 POSIX/Windows 管道语义不同的测试前提,随后在 13465ad 修正,保留实际输入断言及所有平台的原生进程关闭覆盖。
  • 代理配置只准备了未应用候选;后续相同只读命令对照中,原环境约2.97秒、候选约1.70秒均能连接 GitHub。因此代理差异不能确定为此前超时的唯一根因,更不是已经验证的永久修复。原 plist、57161、用户 Git 配置均未改动。

原始复现、失败日志、消融与最终验证在原 round6 私有证据目录追加归档;公共结论仍见历史与生命周期记录。

2026-09-23:同步最新 main 并完成集成验证

所有变更仍在 #598,最新提交 0bc3470,已合入实际 main 43cd2e9。保留结构化问答、计划卡片、原生命令反馈、配置诊断/回滚、锁恢复、工作区准入后身份复查、Windows PTY、工作流产物预算及会话日期等主线变更。

  • 计划修改使用 Session ID+原生路径;旧回执不能清除重新取得控制后的新请求状态。移除回执归属保护会准确触发回归失败。
  • /usage 走主线原生命令反馈,其他面板快捷入口保留;setup 原请求与结果仍显示,问答卡片只允许原控制标签提交。
  • 原生历史 entryId 与 React 渲染 key 分离;缺少消息身份的旧事件按一对一匹配,不再产生重复用户气泡。
  • 低高度窗口的发送按钮保持在视口内,命令菜单按实际空间上下摆放,执行详情可用键盘滚动。

最新本地 bun run check 通过;Node 1925 passed / 5 skipped,Vitest 497 passed;默认真实 Chromium E2E 65/65,Pi SDK+脚本化 provider 的问答/计划/命令 E2E 12/12。脚本化 provider 不作为真实模型能力证明。最终提交 CI 已全部通过:Node 22.19.0 / 24 / 26、Linux Web E2E(含三次独立 Chromium 冷启动与清理)、Windows 原生进程和完整套件。PR 无冲突;工作区已提交干净。

该轮验收时,57161 仍为 6c58e98、PID 1113,未部署或重启。曾阻断完整测试的自动审批服务已恢复,测试已实际执行;没有绕过审批或把未执行命令记为通过。

2026-09-23:PR 复审问题修复

继续提交到 #598,提交 81d4c67:

  • 逐文件详情先通过完整 raw diff 找到 rename 的旧/新路径,再以字面 pathspec 读取,两端不再丢失。覆盖纯 rename、rename 后编辑、分支比较和含方括号的文件名。
  • 摘要 revision 纳入所比较 Git 对象、文件模式与路径身份。只改 index blob、工作文件及其元数据完全不变、+/- 统计相同的情况下,staged 和 unstaged 都能产生新的 revision;HEAD 对象变化也有覆盖。
  • 新增真实 Chromium+WebHost+Git 场景,确认旧路径在详情中可见,以及保留选中文件、草稿和焦点时能刷新 index-only 修改。
  • 滚轮用例已在 13465ad 等待 React 被动效果,当前修复没有撤掉断言。本次继续等待新提交 Node 24 和完整 CI,不拿旧版本的绿色结果替代。

六项真实 Git 回归在原 head 上全部失败,修复后 Git review 15/15 通过;分别移除路径与对象身份保护,回归再次失败。完整本地检查通过,Node 1931 passed / 5 skipped、UI 497 passed、真实 Chromium 66/66 passed。

81d4c67 的 Node 24 等 Node/Windows 检查通过,Web 任务在用例运行前的冷启动门禁失败,诊断给出无效 D-Bus 地址。250731f 为 Linux CI 提供隔离会话总线;保留三次启动的失败、原超时和 sandbox。最新 CI 已全部通过:Node 22/24/26、三次 Linux 冷启动及清理、Web E2E 66/66、Windows 进程生命周期和完整套件。当前 Node 24 的完整测试包含原滚轮回归。

复现、消融和验证边界。原始证据保存在私有 openpi-pr561-usage-20260920/git-review-20260923。常驻 57161 此前已按用户要求更新到 0bc3470;本次 Git 修复未重启该实例。

2026-10-09 — Files, Terminal and Changes workbar refinement

PR #711 now includes the scoped workbar tools design and acceptance record. It separates the supplied Codex/DSH references from OpenPI's native owners and distinguishes live installed DSH/sidebar versions from latest static source.

Files gain labelled New / Import / More menus, explicit save states and keyboard focus restoration; Changes retain native status and comparison once; Terminal preserves manual reading with an explicit return to bottom. The active tool picker keeps editor/output visible and all descriptions fit the tested 320px viewport. Product 7685f38d passed the complete check and test commands: 2,324 Node passes with 9 skips, and 1,254 UI passes. Native Files/Git/PTY acceptance, provenance, ablation and limitations are recorded in the linked document; private raw evidence and credentials remain outside Git.

Activity

  1. testikun commented on Sep 20, 2026

    @testikun
    CollaboratorAuthor

    我来认领本 Issue 的本轮实现与回归验证。

    计划将 PR #561 之后已完成的两轮使用测试结果整理为独立 PR:保留最新 main 已合并的 PTY 创建取消实现,提交其余输入、会话隔离、浏览器键盘、分栏、Diff 焦点、终端输入队列和文件引用修复,并补充针对失败、取消和迟到结果的测试。

    会在新 PR 中关联本 Issue、附上可复核的研究记录,并在最新 main 上重跑仓库检查、完整测试和浏览器回归。本次认领范围为这批具体问题,后续未验证方向继续在本 Issue 中跟进。

  2. changed the title [-]持续优化 Web 使用体验:输入、会话隔离与工作栏交互回归[/-] [+]持续优化 Web 使用体验:设置、浏览器、文件与会话交互[/+] on Sep 21, 2026
  3. testikun commented on Sep 23, 2026

    @testikun
    CollaboratorAuthor

    PR #598 now includes commit 94059b5 for per-user-turn change cards, Codex-inspired native history/item pagination, and explicit recovery of truncated visible message bodies. The cumulative composer file bubble is removed. The older-reading-window duplicate-input regression and narrow-screen jump control are covered.

    Local verification: bun run check, bun run test (Node 1,948 pass / 5 skip; Vitest 498 pass), and full Chromium E2E 67/67 pass. GitHub CI is pending. No restart or deployment to the resident 57161 service was performed.

    Reusable conclusion, evidence boundaries, and ablation: https://github.com/testikun/openpi/blob/codex/web-ux-597/docs/research/WEB_TURN_EVIDENCE_AND_ITEM_RECOVERY_2026-09-23.md . Turn diffs are temporal Git comparisons, not proof of the writer; old Sessions are not backfilled and unavailable or quota-limited baselines are marked explicitly.

  4. testikun commented on Sep 23, 2026

    @testikun
    CollaboratorAuthor

    Validation follow-up for PR #598 commit 94059b5: the full CI run is green across Node 22/24/26, Linux Web E2E, and Windows background terminals: https://github.com/openpi-dev/openpi/actions/runs/35840808353 . This supersedes the pending-CI status in the prior update; the resident 57161 service has not been restarted.

  5. testikun commented on Sep 26, 2026

    @testikun
    CollaboratorAuthor

    PR #598 的 2026-09-26 批次已推送:后台 A 运行时查看 B,侧栏按精确 Session 文件身份显示运行/排队;Files、Trajectory、Git review 不再混用 A 的实时状态。设计取舍、参考源码事实、消融与验证记录见 Web 后台会话的观察身份。本地 bun run check、bun run test 和 Chromium E2E 67/67 通过;PR CI 待确认。

  6. testikun commented on Sep 26, 2026

    @testikun
    CollaboratorAuthor

    PR #598 后续提交 736ab52 已更新排队消息交互:移除独立编号卡片,改为输入区内的紧凑单行预览、限高滚动和可访问展开。设计依据来自本机 Codex Desktop 26.917.62051 的排队组件,并明确区分 Pi 原生队列与 Codex 的逐条可写操作。

    研究记录:Web 输入区的排队消息。核对 /api/prompt 的 12000 字符门限后,消融掉了不必要的超长输入摘要协议;没有新增队列存储或编辑/撤回权限。

    bun run check、完整 bun run test(Node 1954 通过、5 跳过;Vitest 504 通过)及最终 Composer 71 项回归通过。本轮按用户要求不重新运行 E2E,更新了旧移动端包含关系断言,不宣称 Codex 像素一致性。57162 预览更新,57161 常驻服务未改动。

  7. testikun commented on Sep 26, 2026

    @testikun
    CollaboratorAuthor

    继续迭代到 PR #598:d364bc3 完成设置入口、草稿离开确认和原生配置失败恢复这一批。

    • 凭据入口直接进入 Models 并一次性定位;普通 Settings 仍进入 General。
    • 关闭/转运行状态/跨服务商前保护未保存草稿;读取重试不删草稿,确认放弃也只在读取成功后替换。
    • 保存失败留在原表单并使用安全说明;模型刷新不再重建凭据输入。多个模型草稿保留各自基线,外部变更者不能直接覆盖。
    • 修复保存后选择与偏好刷新、外部模型移除与凭据确认之间的竞争。

    参考、设计推断、验证边界及消融记录 已记录在仓库,并反链本 Issue。

    验证:bun run check 通过;全套 Node 1956 通过/5 跳过,Vitest 536/536。首轮焦点测试采到异步恢复中间态,改为等待真实焦点/光标完成,未改实现或加固定延时;全套重跑通过。隔离 57162 在 390x844、1280x900 做入口和草稿确认检查,没有真实密钥保存或模型调用;未重跑 E2E,也未更新 57161。

    消融移除当前检查对象保留后,外部模型删除回归失败,恢复后通过;常驻确认组件和冗余清理则已删除。

    这个 Issue 继续保持开放。下一批候选是工作栏预览后的返回/焦点/Escape 层级,以及 Session 草稿、阅读位置和归档分页;这些尚未实现,不将本批当作整个 Web 体验迭代完成。

  8. testikun commented on Sep 26, 2026

    @testikun
    CollaboratorAuthor

    继续迭代 PR #598,本轮提交 c9350af:工作栏“检查后返回”。

    • Diff 内 Escape 先回原文件行及滚动位置,列表再关闭工作栏;终端 Escape 仍发送给 PTY,不停止资源。
    • Git 列表/预览共用刷新;失败保留内容,单文件结果按 source/path/revision 隔离。
    • Files 预览保留原列表、嵌套来源和外层入口;相同 ID 不同路径或 Session switching 撤销旧预览/焦点/grant,Tools 导航不叠加面板。
    • bun run check、完整 bun run test 通过:Node 1956 通过、5 跳过;Vitest 566/566。桌面与手机尺寸的实际 Git 刷新、两层 Escape 验证通过。
    • 没有运行 E2E、更新 57161、调用真实模型或扩展文件权限。本机 Codex 窗口仍被自动化工具直接拒绝,具体规则未暴露;参考产品本轮仅冻结源码核对。

    事实、设计、消融与验证限制已保留在工作栏研究记录。Session 工作位置及其它 Web 细节仍在本 Issue 继续迭代,不关闭 #597。

  9. testikun commented on Sep 26, 2026

    @testikun
    CollaboratorAuthor

    Session working-position iteration is now in PR #598 at e141ee0479e73f5221081b8d1abb3e72e69c1fe2.

    • Exact Session id/path scopes unsent text, caret and completed images; send cleanup uses captured revisions, creation uses exact native receipts, and navigation is not prompt-admission evidence.
    • Bounded reading windows and entry-offset bookmarks return together across Session switches. Repeated controlled selection is idempotent; hiding a workspace does not revoke an otherwise valid native reader/controller.
    • Archived Sessions use the existing native query/cursor API with abortable reads, stale-cursor refresh and scoped restore feedback. Restoration never implicitly selects a Session.
    • Full bun run check and bun run test passed: Node 1,956 passed/five skipped, Vitest 634/634. Focused tests, independent review findings/fixes, ablations, isolated desktop/mobile observations and limits are preserved in the research record.
    • No E2E rerun, real-model call or resident 57161 update in this batch. Codex native automation retry returned the same app-access denial without a policy identifier; bundled source and screenshots remain narrower evidence.

    This is one iteration, not closure of #597 or a claim that the complete Web interaction is finished.

  10. testikun commented on Sep 26, 2026

    @testikun
    CollaboratorAuthor

    Web operator action continuity: 09c18fd

    继续提交到 PR #598,本批记录:设计、消融和验证边界。

    • 原生问答按精确 Session 文件和 request 保留选择、备注、确认位置及不确定提交的原始 payload;canonical successor/null 同步更新身份,旧回执不会覆盖新提问。
    • 重命名和移除工作区等待实际结果,失败留在原位置;归档刷新保留已打开分页,新建 Session 不覆盖后来的筛选意图。
    • 完整模型目录本地筛选,截断目录复用原搜索 API;普通快照不重启搜索,settings_changed 覆盖隐藏模型修改。Slash 保留正常 Tab 导航,文件引用替换选中范围并拒绝迟到插入。

    验证:完整 bun run check 通过;bun run test Node 1,956 通过、5 跳过,Vitest 702 通过。独立复核确认两项竞态修复;聚焦回归及消融详见记录。57162 桌面/窄屏手工检查了模型弹层、文件引用和布局边界,无消息发送或凭据修改。按用户要求未跑 E2E,57161 未修改。真实问答/归档操作、多浏览器设置、Safari/完整 IME 和原生 Codex UI 不在本批验收范围。

    本机 Codex 窗口重新尝试后仍被 Computer Use 接口按应用拒绝,没有策略编号;官方说明区分自身自动化限制与 macOS 权限,不把此结果当作缺失系统授权。完整 Web 交互迭代仍在继续,不关闭 #597。

  11. testikun commented on Sep 26, 2026

    @testikun
    CollaboratorAuthor

    Continued Web interaction iteration in PR #598, commit fa0fbc2.

    • Recover terminal transport through the original PTY/offset. Restart has a locked confirmation; native modal Escape and focus stay owned by the terminal.
    • Retain full over-limit input, classify definite rejection, retry the original uncertain request, and use exact native admission/handled facts without converting execution failure to success. Late/collapsed receipts preserve newer or retyped drafts, including abandon/rejection/Session round trips.
    • Keep one child detail through overview/action refresh, expose unavailable file references honestly without wider grants, and reject same-tick duplicate side-conversation actions.

    Validation: full check passed; full test passed (Node 1,957 passed/five skipped, Web 772 passed across 46 files). Focused prompt 335, terminal 28, child/side-conversation 82 and Host 49 passed; independent final selection 17 passed. Necessary protections were restored after actual ablations; redundant state conditions, focus refs and a suppression were removed.

    Bounded 57162 observations at 1280x900 and 390x844 verified modal containment/focus, mobile Escape and full 12,001-character draft retention with Send disabled and no overflow. No prompt/model call or E2E rerun; resident 57161 is unchanged. Synthetic input and viewport overrides were cleared. Live uncertain-admission/child workflows and broader IME/Safari are not claimed.

    Reusable research record and remaining limits. This issue remains open for the broader Web iteration.

  12. testikun commented on Sep 27, 2026

    @testikun
    CollaboratorAuthor

    Continued PR #598 with 6ee6dbf5cca664e1af8f7baa55d60a18518caa08: result reading and inspection.

    • Draft image thumbnails open a native dialog with Fit/Original modes and owned close/return focus. Long screenshots remain contained and can be scrolled at natural size.
    • Large plans read the exact successful, validated native plan_ready entry, not tool arguments or result prose. Partial/full copying is explicit; reading is not approval or execution.
    • Execution rows, cards and collapsed groups preserve missing evidence, process failure and native workflow uncertainty. Per-turn review and full-text completion retain reading/return focus.
    • Healthy browser frames cannot hide operation failures; obsolete navigation, input, resize and initial-restore receipts cannot contaminate the current page or draft.
    • The two JSX-free UI suites now follow the existing .spec.ts discovery convention. A full gate also exposed and corrected a question test's DOM-before-passive-cleanup wait without weakening its assertions or changing production lifecycle.

    Validation: bun run check passed; bun run test passed with 1960 native tests / five platform skips and 51 UI suites / 841 tests. Final focused reading selection passed 91 tests. Actual ablations and necessary restored guards are in the source-scoped record.

    Bounded desktop observations used the isolated 57162 preview and synthetic local media, without submitting a model prompt. The requested mobile override remained at desktop dimensions, so this round does not claim mobile manual acceptance. No browser E2E rerun or resident 57161 update. The 57162 development runtime was explicitly restarted after the commit to load current backend source.

    #597 remains open for the wider Web interaction iteration.

  13. testikun commented on Sep 27, 2026

    @testikun
    CollaboratorAuthor

    Model entry iteration: 0693906

    Continued on PR #598 with truthful native current/unselected/loading model states, an actionable empty picker, and the existing Models settings route. Catalog refresh no longer leaves contradictory no-match feedback. Popup return preserves draft/focus; model options alone scroll so configuration remains visible.

    Pi still owns selection, prompt/auth preflight and extension commands. No automatic model, credential copy, new configuration store or Send guard was added. Removed the duplicate popup frame and unused selector placeholder after ablation/manual checks.

    Validation: bun run check passed; full tests passed 1963 native tests (5 platform skips) and 51 UI suites / 851 tests. Native focused suite 55, picker 26. Actual desktop and same-origin 390px/320px CSS viewports were inspected; a synthetic 50-model fixture confirmed scrolling bounds. Temporary fixtures/tabs removed; 57161 untouched. No browser E2E, physical phone/IME, authentication save or model execution claimed. Native Codex automation again returned its application-level tool rejection, without a bypass.

    Durable source/evidence record: Web model entry. Broader Web iteration remains open.

  14. testikun commented on Sep 28, 2026

    @testikun
    CollaboratorAuthor

    Browser committed-text iteration: e526d11

    Continued on PR #598. The screenshot browser now enables a real host text surface only after a native editable-focus receipt; final Unicode commits carry an opaque owner checked before dispatch. Physical key handling stays with the page. Password targets remain unknown to this plain-text proxy, and earlier rejected characters are not hidden by a later character or scroll.

    Reusable evidence and limitations: Web browser committed text input. The record links back to this Issue and PR. bun run check passed; bun run test passed 1,983 native tests (5 platform skips) and 52 UI suites / 907 tests. A bounded desktop Chrome check covered mixed Unicode, Tab target change, page-prevented slash, noneditable controls and password focus. Browser E2E was skipped per request; actual OS IME candidate windows and mobile keyboard activation remain unverified. Direct native Codex window automation is currently rejected by the Computer Use service, so no Codex UI parity is claimed.

    The larger Web UX issue remains open.

  15. testikun commented on Sep 28, 2026

    @testikun
    CollaboratorAuthor

    文件功能已在独立分支完成并推送:testikun/openpi#2,基于 #598 的最新浏览器提交 79a4f63,目标分支为 codex/web-ux-597。

    旧“生成文件”入口已替换为工作区文件树+原位预览;目录/搜索支持加载更多,长文本支持同版本继续读取。DSH 的冻结源码比较、支持格式、资源边界与消融记录:工作区文件与原位预览。

    本地 bun run check、完整 bun run test 通过(Node 1956 passed / 5 skips;Vitest 823 passed)。文件真实 Host/Chromium 专项 3/3 通过;合并最新浏览器实现后,其余 56 条 Chromium 用例通过。完整浏览器套件的 11 条既有失败已在未修改的 e526d11 基线全部重现,细节和验证命令范围见记录与 PR;没有禁用仓库测试,也没有将完整 E2E 声称为通过。

    Office 当前提供内容预览,不保证原软件排版;HTML/SVG 是不执行脚本的静态沙箱预览。

  16. testikun commented on Sep 29, 2026

    @testikun
    CollaboratorAuthor

    Workspace sidebar refinement is now included in PR #598 (4ecc5a3). The design and validation record documents the DSH/Maka/Pi Web references, folder and Session hierarchy, compact archive access, duplicate-path disambiguation and simplification. Local checks and the full suite passed (2,005 Node tests, eight skipped; 852 Vitest tests), plus five targeted Chromium scenarios. This remains a design record, not an accepted architectural constraint.

  17. testikun commented on Oct 8, 2026

    @testikun
    CollaboratorAuthor

    2026-10-08:完成一轮 Codex 风格执行活动区迭代,分支 codex/web-execution-codex-ui,基于上游 main 3cb2ecf。UI 实现为 ce87d266 和 bb7ef027。

    • 运行中的外层过程默认展开,执行结束后折叠;内部思考和完整工具详情设置独立生效,手动展开查看可用。
    • 使用统一线框图标和紧凑活动行,保留 read/edit/write 高亮、文件名预览、Shell 输出与复制反馈。
    • 本轮补上单行命令摘要与截断、基于成功返回 diff 的增删数、部分证据提示、简短分组标题、向右/向下折叠箭头及本地化状态说明。

    源码参考、Claude 项目对照、所有者边界、消融和验证范围见 研究记录。bun run check 通过;按用户要求未运行自动化测试套件。实际组件的合成展示确认了折叠、长命令、增删数、键盘文件预览和浅/深色交互;不作为真实工具执行或数值还原度证明。本地常驻部署已更新到检查过的构建,页面及授权快照可用。没有公开私人 Session、凭据或配置。

  18. testikun commented on Oct 9, 2026

    @testikun
    CollaboratorAuthor

    补充浏览器工具接入的本机验证:Pi browser tools and OpenPI embedded pages。来源固定为 OpenPI 3cb2ecfe、Pi 0.99.1 和已有的 pi-computer-use 0.5.1。

    OpenPI Web 原生 package loader 可以加载外部浏览器工具,独立 Chrome 的读取、中文输入和按钮操作通过。现有 iframe 面板的目标定位与精确输入未通过,原生窗口截图可用;这一结果不能当作已经完成面板自动化接入。

    此次只验证工具执行层,没有真实模型调用或当前 Web 服务配置变更。来源、失败路径、简化实验及本机原始证据引用保存在研究记录中;provider seam 的讨论也已回链到 #169。重连展示属于后续独立范围。

  19. testikun commented on Oct 9, 2026

    @testikun
    CollaboratorAuthor

    Follow-up: draft PR #720 adds a browser-only pi-computer-use source adaptation for OpenPI's existing embedded pages. The earlier standalone-package/iframe failures are retained, with the new integration evidence appended in the research record.

    Local validation passes native Pi tool exposure, bound same/cross-process iframe read, exact Chinese input/button output, real iframe PNGs, internal page creation/navigation, stale-state rejection, native cancellation before a later write and extension-owned debugger detach. Chrome keeps one top-level OpenPI tab. Full checks/tests pass; the fixture pixel and DOM verifiers are separate from provider claims.

    The default-off tool uses Pi Session/turn/controller authority and the existing Browser Bridge, with browser-reviewed debugger permission. This does not install the complete desktop package, claim a real provider/model turn, enable the live Web deployment or change reconnection presentation. Frozen local source/verifier/receipts and the remaining boundaries are named in the record; large evidence and isolated Session data stay outside Git.

  20. testikun commented on Oct 9, 2026

    @testikun
    CollaboratorAuthor

    Browser setup iteration is now in draft PR #720. The existing settings window gains one Browser page: default-off master control, separate embedded/native browser grants, default selection, real connection status, and installation/connection guidance. Users can name Chrome or Edge in conversation; unnamed requests use their configured default. Settings save through the shared writer without a model turn, and revocation works during an active turn.

    The design, simplification and validation record links this UI work to #169 and the PR. Light/dark/390px layouts, installation without implicit authorization and WCAG 2 A/AA checks passed. A local standalone screenshot HTML distinguishes synthetic settings states from real Pi/provider screenshots. Four real gpt-6.1-sol / medium cases passed on clean 0af87f36, independently checking the selected browser's input/save values; the original embedded navigation regression also passed. Full checks/tests pass (2,328 Node / 1,161 UI, nine Node skips).

    Chrome and Edge were real isolated headless profiles because the Mac desktop was locked. Native installation dialogs in the everyday profile, Brave/Chromium physical testing and Windows/Linux launch helpers remain unverified; browser-owned installation/permission clicks are still required. No resident production update or reconnection-display change is claimed. The broader Web iteration remains open.

  21. testikun commented on Oct 9, 2026

    @testikun
    CollaboratorAuthor

    Final browser setup delivery: PR #720 is updated through 97d04d2c. All final CI jobs passed, including Node 22/24/26, Windows and both browser shards. The complete local Chrome suite also passed 107/107, alongside the full Node/UI gates.

    The updated design and validation record retains the CI failures and corrections rather than replacing their history. The final real-provider run on clean production implementation f19f0442 passed all four default/explicit browser scenarios, with 12 successful calls, eight actual images and independent Chinese input/save-value verification. The local HTML report includes screenshots, exact source/browser/model identity and the final CI receipt.

    Installation remains optional and browser-reviewed; model access is separately opt-in. Pi core and upstream pi-computer-use are unchanged. The everyday desktop installation path was not manually exercised while the Mac was locked. The broader Issues #169 and #597 remain open; this PR remains a draft for review.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions