Skip to content

Remove dead personal-workspace i18n keys and the unused ManagerBrief operations prop - #8414

Open
LIHUA919 wants to merge 1 commit into
loopx-project:mainfrom
LIHUA919:codex/manager-panel-dead-i18n-cleanup-20261109
Open

LIHUA919 wants to merge 1 commit into
loopx-project:mainfrom
LIHUA919:codex/manager-panel-dead-i18n-cleanup-20261109

Conversation

@LIHUA919

@LIHUA919 LIHUA919 commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Delivery brief

  • Goal/source: user-requested cleanup of the LoopX Manager panel surfaces (apps/presentation/dashboard personal workspace).
  • Gap: i18n.tsx carried 57 message keys (en + zh-CN, 114 lines) with no remaining reference anywhere (src, smoke, i18n-internal localization helpers, repo-wide literal scan). onViewAllOperations was threaded from PersonalWorkspacePage through ManagerHomeBoard into ManagerBrief, which declared it but never read it.
  • Observable result: none — every removed string was unreachable and the removed prop was unread, so rendered output is unchanged by construction. This is dead-weight removal only.
  • Owning boundary: dashboard personal-workspace feature; no protocol, backend or control-plane surface touched.

What was removed

  • 57 unused i18n keys, symmetrically from both dictionaries: retired composer hint/placeholder copy (superseded by the inline composer placeholder), the removed header description/theme/agent-selection labels, and leftover conversation.*, drawer.*, tasks.*, sidebar.*, lark.*, storage.counts, workspace.placeholder and similar copy.
  • The onViewAllOperations prop chain (4 touchpoints in personal-workspace-page.tsx, 1 in manager-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:141 builds t(`palette.${entry.group}`) behind a conditional — caught by tsc), goal.defaultTitle, and the whole actionReview.* / 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 the smoke/ tree.

Validation

  • tsc --noEmit clean (the WorkspaceMessageKey union 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-readback fails with route.fetch: connect ECONNRESET reproducibly on pristine origin/main in 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.
  • No first-screen screenshot: no rendered output changes (removal-only diff of unreachable strings and an unread prop).

Notes for review

  • Branched from 71190b6b4 (= current loopx-project/loopx main HEAD; exact merge base verified). Pushed via the author fork because this machine's credentials have pull-only access to loopx-project/loopx.
  • No RFC/bilingual-doc pair touched; uv.lock generated by local env prep is untracked and excluded.

…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 loopx-agent 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.

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.

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants