Repository navigation
Conversation
…operations prop Delete 57 workspace i18n message keys (114 lines, en + zh-CN) that no longer have any reference: composer hint/placeholder text replaced by the inline composer placeholder, the retired header description/theme/agent labels, and leftover drawer/tasks/conversation/sidebar/palette-adjacent copy. Keys composed at runtime (palette.*, goal.*, actionReview.*, capabilities.*, runs.*, time.*) were verified as live and kept; the scan covered quoted literals plus template/concatenation construction across src, smoke and i18n-internal localization helpers, and tsc confirms the WorkspaceMessageKey union stays consistent in both dictionaries. Also drop onViewAllOperations, which personal-workspace-page threaded through ManagerHomeBoard into ManagerBrief where it was declared but never read. Validation: tsc --noEmit clean; smoke:usage-progress (asserts i18n source spelling), smoke:home-route, smoke:conversation-input and the personal-workspace contract tests pass; the personal-workspace smoke suite passes its node/SSR steps and the browser lane passes 37/38 scenarios — research-worker-readback fails with route.fetch ECONNRESET reproducibly on pristine origin/main in the same fresh-worktree environment, so it is a pre-existing environment gap, not a regression from this change. No rendered output changes; removed strings were unreachable. Signed-off-by: Lihua <1017343802@qq.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent, gpt-6.1-sol, OpenAI, runtime_reported, reasoning_effort=max
动机 / Motivation
维护个人工作区的开发者需要知道哪些双语标签仍有消费者,才能继续调整管家总览和操作入口。 原代码把两套废弃文案和一个无人读取的回调留在消息目录与组件接线中。删除后,同一份工作区状态仍能打开原来的总览、命令面板和操作详情。 删除不可达的消息和回调,保留正在使用的动态词条、输入框及操作选择行为。 范围限于打包工作区的代码清理。配置、控制面、原操作权限与执行入口沿用当前契约。 安装版、真实远端控制面和整套研究读取浏览器场景没有在本次复跑。
改动思路 / Approach
保留现有字典和选择处理可以把清理限于三处。保留未使用的回调会误导以后接线,另建消息注册或回调适配器只会增加维护工作。 本提交只删 57 对不可达键与一个无消费者的 prop,继续保留原命令和操作路径。 原双语消息、live onSelectOperation 与操作详情 readback 继续由同一组组件负责。
具体改动 / Changes
审查提交 a069ee45f5dc786a2f2992c614afaed90937cdc1,对照 71190b6b4ef4e146f3bf4a10d31ce61ac42fd021。两份语言表删除 114 行,两个组件移除 prop 的声明、转发与构造。总计三个路径 +2/−120。
基线规范固定在 71190b6b4ef4e146f3bf4a10d31ce61ac42fd021。 docs/development/frontend-delivery.md
- workspace-surface-parity(已验证)。继续通过既有管家总览和详情完成原有阅读任务。相同英中输入、四组首屏、命令面板和四种操作回执在打包版本均通过。
- localized-and-failure-paths(已验证)。动态标签和本地语言失败有同样的可读结果。仍使用 WorkspaceMessageKey 字典,浏览器验证有效偏好、坏值和不可写存储。
- read-only-operation-scope(已验证)。查看操作回执保持原只读边界。独立浏览器场景对照回执四态,操作检查持久写入为零。
关键代码讲解
useWorkspaceI18n。英语字典仍定义 WorkspaceMessageKey,简体中文继续用同一键类型校验。对照移除的 57 对键与实际字面量、动态前缀及构建结果。 审查位置ManagerBrief。移除的 prop 原来只存在于类型声明。实际列表仍保留 operations 与 onSelectOperation。 审查位置ManagerHomeBoard。仍把操作列表和选中回调传到简报。页面外层仍在操作读回失败时传空列表,并用同一选择事件打开详情。 审查位置
对主干的风险 / Risks
PASS。两个提交都完成打包、三项局部 smoke 和两项打包浏览器场景。四组首屏截图逐字节一致,两组命令面板文字一致。两种语言、两个视口的四种操作状态均可只读检查。 两个提交的打包构建和三项局部 smoke 通过。准确 head 的 4 项直接与 2 项所选快速检查通过。
PASS。模拟语言设置不可写和无效语言偏好后仍按原 locale 回退。操作检查的持久写入计数为零,批准与已消费状态仍不显示为正在执行。 准确差异的严格质量凭据已回读。
UNVERIFIED。独立验证覆盖受影响的 Chat、操作详情与本地语言回退。作者另报研究读取测试的连接重置,本轮没有复跑该场景。未查询远端 CI。
语义与 CI 对齐
复用 WorkspaceMessageKey 及既有操作状态;没有扩展协议或共享语义类型。 以同一入口的基线对照检查失败回退和既有权限。
我的整体评价 / Verdict
原有任务和决策入口的长期行为保持一致,少一处误接已废弃回调的机会。 桌面和窄屏的总览、输入框与动态命令组标签保持一致,操作回执仍可阅读。 已人工查看两种语言的打包总览首屏及操作详情。四组首屏截图逐字节一致,命令面板的动态组标签也一致。 采用了从现有入口走到结果回读的检查方法。该经验讨论分期 RFC,本次仅用于验证当前代码清理的用户路径。
Ego 使用相同的仓库模拟数据和两个准确的打包版本。实际安装版和远端控制面的呈现留待独立验证。
English verdict: APPROVE. Head a069ee4. The packaged base/head match across both locales and viewport sizes. Dynamic palette copy, storage fallback and read-only operation receipts are preserved.
Delivery brief
apps/presentation/dashboardpersonal workspace).i18n.tsxcarried 57 message keys (en + zh-CN, 114 lines) with no remaining reference anywhere (src, smoke, i18n-internal localization helpers, repo-wide literal scan).onViewAllOperationswas threaded fromPersonalWorkspacePagethroughManagerHomeBoardintoManagerBrief, which declared it but never read it.What was removed
conversation.*,drawer.*,tasks.*,sidebar.*,lark.*,storage.counts,workspace.placeholderand similar copy.onViewAllOperationsprop chain (4 touchpoints inpersonal-workspace-page.tsx, 1 inmanager-brief.tsx).What was deliberately kept
Keys that looked literal-dead but are live through runtime composition were rescued and verified:
palette.*(workspace-command-palette.tsx:141buildst(`palette.${entry.group}`)behind a conditional — caught bytsc),goal.defaultTitle, and the wholeactionReview.*/capabilities.*/attentionDetail.*/runs.*/time.*/startup.error.*dynamic groups. The verification scan covers quoted literals, template-literal construction at any expression depth, string concatenation, i18n-internal helpers (localizedSessionStatus,localizedGoalState,localizedAttentionAge) and thesmoke/tree.Validation
tsc --noEmitclean (theWorkspaceMessageKeyunion confirms both dictionaries stay consistent).npm run smoke:usage-progress(asserts i18n source spelling),smoke:home-route,smoke:conversation-input, and the personal-workspace contract tests pass.npm run smoke:personal-workspace: all node/SSR steps pass; browser lane passes 37/38 scenarios.research-worker-readbackfails withroute.fetch: connect ECONNRESETreproducibly on pristineorigin/mainin the same fresh-worktree environment (attributed by stash-and-rerun), i.e. a pre-existing environment gap disclosed here, not a regression from this change. Environment prep needed in the fresh worktree:npm ci(root + dashboard),npm run build:chat,uv sync --extra test.Notes for review
71190b6b4(= currentloopx-project/loopxmain HEAD; exact merge base verified). Pushed via the author fork because this machine's credentials have pull-only access toloopx-project/loopx.uv.lockgenerated by local env prep is untracked and excluded.