Repository navigation
fix(dashboard): surface host activity delivery windows - #6465
huangruiteng merged 3 commits into
Conversation
Signed-off-by: ikun <ikunikun1145@gmail.com>
Signed-off-by: ikun <ikunikun1145@gmail.com>
Signed-off-by: ikun <ikunikun1145@gmail.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; reasoning_effort=xhigh; declaration_source=runtime_reported
动机
评审 e8997a0a9c4efb861288d10a036f00ad4192e82f,base 3c681f1132fe719e01f75e5a41bfd854dfa9e346。查看多个 Goal 的用户,需要在原工作区判断哪个宿主长时间没有活动。旧页面丢弃后台已有的时间窗,用户得另查诊断才能发现缺失活动,也容易把正常排队与缺少观察混在一起。同一份后台超时或缺失观察,旧版列表只有原活动状态;现在原行直接出现对应徽标和宿主、Agent、时间详情,无需增加配置步骤。真实打包页面对照中,超时和缺失变得可见,fresh 不产生运行中标识,无预期时间窗的旧文案保持;390px 页面没有横向溢出。本次只是既有诊断的可见性,不证明实际定时正文送达、Agent 启动或 #3927 整体关闭。原 #3927 的实际宿主送达和启动凭据仍由宿主集成 owner 验证;安装态采用未验。
改动思路
状态仍由后台既有 HostDeliveryWindow 计算;Dashboard 仅保留该字段,并由共享的活动投影生成文案和徽标。本次只改变既有 Goal 行与活动摘要的诊断可见性,不改宿主观察、调度或运行判定。 本轮按完整原 issue、现有调用链和作者声明判断独立交付边界,未把测试数量当整体验收,也没有继承历史批准。体验建议仅用于追踪真实入口、失败和读回,不构成新的 roadmap、权限或长期收益证明。
具体改动
status.ts保留可选的delivery_window,覆盖后台既有四种状态、原因和年龄;旧服务未提供字段仍可读。dashboard-page.tsx将每条 thread 的 Agent、状态、年龄和原因传入既有工作区模型。goalHostDeliveryWindows(goal-activity.ts:144)只选 fresh/stale/missing 并排序,unknown/no_expectation 不报警;不重算时间窗。useGoalActivity(goal-activity-view.tsx:45)复用原运行判定,拼接双语宿主/Agent/年龄信息,选取一个超时或缺失徽标。GoalActivityChip和GoalRowActivity共用该结果;CSS 使长详情截断而保留徽标,tooltip 保留全文。英文、中文十条消息和两个既有 smoke 一起更新。
完整九路径 +137/-5,三份提交均有 DCO。对照 #3927 与 base 的 HostDeliveryWindow:preserve_backend_window、visible_without_execution_claim implemented;actual_host_delivery_receipt deferred,原 issue 的宿主集成 owner 继续负责真实正文送达与 Agent 启动凭据。
对主干的风险
最重要的风险是把时间窗误读为正在运行或送达成功。本轮使用正常 build:chat 的完整打包页面、相同合成观测和真实未改动的 Python 时间窗 owner,在 1512px/390px 对照 base/head:旧四行均无时间窗提示;head 的 stale/missing 有明确徽标与全文,fresh 只有信息文案,no_expectation 保留原文案;四行都没有 live 标记,页面宽度与 viewport 一致。中文桌面/手机及英文桌面/手机、刷新、导航打开和 Escape 均检查,截图已目检。辅助聊天、排序、提案 API 是合成边界,产生的不可用提示不当作本 PR 后台缺陷或真实功能资格;没有安装或触发实际 Codex 自动化。
smoke:goal-activity、smoke:status-projection-contract、正常打包构建、时间窗 owner 69 tests、当前本地 canary 3 direct +8 selected 均通过,零失败/hold。先跑 advisory 再跑全 27 vocabulary smoke;advisory 的零路径是工具覆盖限制,已人工检查九个路径及既有四态归属。未查询、轮询或等待 CI。作者报告的 LaunchAgent/demo-readiness 与另一浏览器 attribution 失败未独立重跑,保留为未验证历史限制,未宣称修复。
非阻断建议:新 .personal-goal-window-badge 固定为 10px,实际手机 DOM 也为 10px;仓库 design.md 要求 caption token 和至少 12px。建议换用既有 caption/line-height token,并重看 390px 导航。当前同一事实还出现在正常字号的详情和 tooltip,未发现信息丢失,因此不阻断本次 readback 修复。
我的整体评价
未发现阻断本次有界修复的问题。APPROVE,justified_increment。 long_horizon improved:后台已有的缺失/超时事实不再隐藏,且没有增加持久状态、额外读取或执行副作用;user_experience improved:在原工作区即可识别问题,无新增配置、确认或复制命令步骤。未来变更检查已做:两处视图共享 useGoalActivity,无需新增缓存或第二个分类 owner。批准限定于诊断展示;真实宿主送达/启动、安装态采用和长期净收益仍未验收。公开首屏的 owner review 与合并权限保持原规则。
English verdict: APPROVE — e8997a0a9c4efb861288d10a036f00ad4192e82f preserves existing host-window diagnostics through the Dashboard and exposes stale/missing states without claiming execution. Independent paired packaged UI, source smokes, 69 backend tests and local canary pass. Live delivery remains unqualified; the 10px badge is a non-blocking readability follow-up.
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEADFor a same-repository clone whose Keep the DCO |
…ivity-windows Maintainer adoption of #6465 by @ikunikun1145. The original branch conflicted with main and the fork disallows maintainer edits, so the reviewed content was carried onto a maintainer branch. The merge resolved one import-line conflict in goal-activity.test.mjs by keeping both goalHostDeliveryWindows (PR) and taskSessionStatus (main). The author's three commits are preserved unchanged; the only additions are the main merge and a caption-token correction of the new badge, which had used a 10px literal against docs/development/design.md. Exact-head review 5529175354 on 71f5e3b; change-quality receipt cqr_0e1401cdf60efa98c071 (pass); merge-readiness ready=true. Validation: smoke:goal-activity, smoke:status-projection-contract, build:desktop and check:css-custom-properties all pass. The premerge catalog run is 7/8; the single failure examples/control_plane/quota-work-lane-policy-smoke.py is a pure-Python work-lane smoke reproduced identically on unchanged 51832c5 (introduced by 3f9f5b3 / #6475) and is recorded as a separate merge-readiness hold rather than a regression of this dashboard diff.
|
Landed. Thanks @ikunikun1145 — the dashboard readback in this pull request is now on Why it went that way: this branch had drifted into a merge conflict with The merge with One review finding was fixed on top of your commits: Two notes for follow-up, both non-blocking and neither about your change being wrong:
|
Goal and delivered outcome
Author declaration
Implemented against
Scope and continuation
Validation
Frontend / Visual Evidence
Type of change
LoopX area
Technical direction
Shared-authority RFC fixture impact
Boundary checklist