From a069ee45f5dc786a2f2992c614afaed90937cdc1 Mon Sep 17 00:00:00 2001 From: Lihua <1017343802@qq.com> Date: Sun, 8 Nov 2026 18:10:13 -0800 Subject: [PATCH] Remove dead personal-workspace i18n keys and the unused ManagerBrief operations prop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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> --- .../src/features/personal-workspace/i18n.tsx | 114 ------------------ .../personal-workspace/manager-brief.tsx | 1 - .../personal-workspace-page.tsx | 7 +- 3 files changed, 2 insertions(+), 120 deletions(-) diff --git a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx index 6a6eadf865..18d728819e 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx @@ -87,7 +87,6 @@ const en = { "storage.title": "Goal data storage", "storage.boundary": "Confirmation changes only this existing Goal. New-Goal defaults and task ownership are separate. Preserve journal, metadata and receipts; no execution authority is granted.", "storage.current": "Current source (fresh readback)", - "storage.counts": "{todos} tasks · {leases} unsettled leases", "storage.target": "Target storage", "storage.coldCounts": "{active} active tasks · {archived} archived tasks · {leases} unsettled leases", "storage.coldCapture": "Original capture files observed; history retained.", @@ -177,26 +176,21 @@ const en = { "common.actions": "Actions", "common.agent": "Agent", - "common.allMessages": "All messages", "common.cancel": "Cancel", "common.close": "Close", "common.closeActionReceipt": "Close action receipt", "common.confirm": "Confirm", - "common.export": "Export", - "common.failed": "Failed", "common.goal": "Goal", "common.loading": "Loading…", "common.none": "None", "common.off": "Off", "common.on": "On", - "common.open": "Open", "common.owner": "Owner", "common.readOnly": "Read only", "common.recently": "Just now", "common.status": "Status", "common.task": "Task", "common.you": "You", - "common.waiting": "Waiting", "composer.addImage": "Add attachment", "composer.agentProgress": "Ask Agent for a progress report", "composer.blockers": "Ask what blocks", @@ -209,11 +203,8 @@ const en = { "composer.globalProgressPrompt": "Summarize the latest progress and blockers for all active Goals.", "composer.globalTasks": "Ask about global priorities", "composer.globalTasksPrompt": "Which Goals need me, and what should I handle first?", - "composer.goalMessageHint": "Your message is delivered to {agent} in this Goal session.", - "composer.goalRunningHint": "{count} conversations are running in this Goal · your message goes to the current {agent} conversation", "masthead.completeTitle": "Read the complete Goal", "composer.goalPrompt": "Ask about progress, or suggest a change…", - "composer.goalPlaceholder": "Ask or guide {goal}…", "composer.imageAnalysisPrompt": "Read these attachments in the context of the current Goal and tell me the next step.", "composer.imageCountError": "You can add up to {count} attachments.", "composer.imagePicker": "Attachment file picker", @@ -223,13 +214,10 @@ const en = { "composer.imageTotalSizeError": "Images must total {size} MB or less.", "composer.imageTypeError": "Choose PNG, JPEG, WebP, GIF, or UTF-8 .md / .txt documents.", "composer.imagesPending": "Attachments to send", - "composer.managerMessageHint": "Your message goes to the LoopX Manager across Goals for global questions or Goal creation.", - "composer.managerPlaceholder": "Ask the LoopX Manager, or describe a new Goal…", "composer.monitor": "Configure scheduled check", "composer.nextAction": "Ask what’s next", "composer.nextActionPrompt": "What should I do next?", "suggestions.row": "Suggested from this Goal's current state", - "suggestions.summary": "Suggestions · {first}", "suggestions.openDecisions": "Handle {count} decision(s) waiting on you", "suggestions.explainBlocked": "Explain {count} blocked task(s)", "suggestions.explainBlockedPrompt": "In this Goal, {count} task(s) are blocked: {titles}. Explain what blocks each one and what would unblock it.", @@ -243,18 +231,10 @@ const en = { "composer.sendMessageHint": "Send message", "composer.turnRunning": "A turn is in progress. Adjust or interrupt it from the reply, then send.", "composer.sentImageAlt": "Remove attachment {name}", - "conversation.agentPending": "Working…", - "conversation.close": "Close conversation receipt", - "conversation.convertHint": "Turn the Agent’s latest reply into a Task draft", - "conversation.full": "View full conversation", - "conversation.receipt": "Conversation receipt", "conversation.replying": "Replying", - "conversation.title": "Manager conversation", - "conversation.toTask": "Convert to Task", "digest.away": "Runs since your previous visit", "digest.completed": "new completions", "digest.failed": "new failed/interrupted runs", - "digest.needsYou": "currently need confirmation", "feedback.applying": "Running: {title}", "feedback.cancelFailed": "Cancel failed: {error}", "feedback.completed": "Completed: {title}", @@ -276,7 +256,6 @@ const en = { "history.retrying": "Reading…", "feedback.sendGenericError": "Could not send the message. Try again later.", "feedback.stale": "State changed, so nothing was applied. Generate a new confirmation preview.", - "feedback.taskDraftCreated": "Created a Task draft from the reply. Edit and send it to review the confirmation preview.", "goal.defaultTitle": "New personal Goal", "goal.initialTodo": "Work toward the completion criteria: {criteria}", "goal.objectiveBoundary": "Execution boundary: {boundary}", @@ -286,8 +265,6 @@ const en = { "drawer.analysis": "Analyzing", "drawer.apply": "Confirm and apply", "drawer.applying": "Applying…", - "drawer.attentionBlocking": "Blocking an Agent", - "drawer.attentionWaiting": "Waiting for your decision", "drawer.autoNotify": "Steward decision messages", "drawer.branch": "Branch", "drawer.closeDetail": "Close details and return to {context}", @@ -301,7 +278,6 @@ const en = { "drawer.copyRepositoryDone": "Repository identity copied", "drawer.copyRepositoryError": "Copy failed. Check browser clipboard permission.", "drawer.copyRepositorySuccess": "Copied. You can paste it into another tool.", - "drawer.cost": "Cost 24h / 7d", "drawer.costShort": "Cost", "drawer.durationShort": "Duration", "drawer.period24h": "24h", @@ -332,7 +308,6 @@ const en = { "attentionDetail.openReplacement": "Open replacement", "attentionDetail.boundary": "Reading records no decision and grants nothing. Every decision asks you to confirm once before it is saved.", "drawer.decisionDefaultEvidence": "No evidence is attached to this request.", - "drawer.decisionDefaultReason": "This decision affects the next step of the current Todo.", "drawer.decisionMore": "More decisions", "drawer.decisionReject": "Reject", "drawer.decisionApprove": "Approve", @@ -344,7 +319,6 @@ const en = { "drawer.gateDecisionRecheck": "It was prepared before decisions could be recorded here. Recheck it, then decide directly in this panel.", "drawer.dependencies": "Dependencies", "drawer.detailsAndActions": "Details & actions", - "drawer.duration": "Duration 24h / 7d", "drawer.evidence": "Evidence", "drawer.notes": "Notes", "drawer.executionHistory": "Execution history", @@ -388,7 +362,6 @@ const en = { "drawer.larkNotConfigured": "Not configured", "drawer.larkNotConfiguredDescription": "After setup, LoopX sends a Feishu notification when this Goal needs your confirmation.", "drawer.managerChanges": "Pending Manager changes", - "drawer.moreActions": "More actions", "drawer.moreRunActions": "More run actions", "drawer.nextTransition": "Next transition", "drawer.validationRevision": "Validation revision", @@ -401,7 +374,6 @@ const en = { "drawer.notAssigned": "Unassigned", "drawer.notLinked": "Not linked", "drawer.notSet": "Not set", - "drawer.outputDetails": "Output details", "drawer.outputRecorded": "This output is recorded on the current Goal.", "drawer.outputSafePreview": "Public-safe output preview", "drawer.outputRun": "Run", @@ -597,7 +569,6 @@ const en = { "drawer.taskSuccessorNote": "Owner marked this blocked while waiting for more context.", "drawer.taskSuccessorSummary": "Create follow-up Todo: {task}", "drawer.taskSuccessorText": "Follow-up work for {task}", - "drawer.taskType": "Task type", "drawer.topic": "Topic", "drawer.trigger": "Trigger", "drawer.titleAttention": "Needs you", @@ -607,7 +578,6 @@ const en = { "drawer.operationReadOnly": "Operation details", "drawer.operationCanonicalStatus": "Read-only canonical operation; no new execution", "drawer.titleSchedule": "Scheduled check", - "drawer.unconfigured": "Not configured", "drawer.workspaceCandidates": "Available workspaces", "files.emptySummary": "Public-safe output", "files.empty": "No delivered files or verified reports yet. Run and validation status remain in Tasks.", @@ -640,7 +610,6 @@ const en = { "readiness.recheck": "Check again", "readiness.rechecking": "Checking…", "readiness.guide": "Setup guide", - "header.chatRuntime": "Chat", "header.workAgentCount": "{count} work Agents", "header.overview": "Overview", "header.research": "Research", @@ -652,21 +621,15 @@ const en = { "since.markSeen": "Mark seen", "header.chat": "Chat", "header.files": "Files", - "header.goalCapabilities": "Capability settings", - "header.goalCapabilitiesDescription": "Manage overrides and inherited machine defaults.", - "header.goalDetails": "Goal details", - "header.goalDetailsDescription": "Review status, usage, repository, notifications, and sessions.", "header.goalSettings": "Goal settings", "header.goalSettingsDescription": "Configure this Goal’s capabilities", "header.goalNavigation": "Goal navigation", "header.goalView": "Goal view", - "header.live": "Live", "header.manager": "LoopX Manager", "header.statusOnlyAgent": "Status only", "header.statusOnlyDescription": "No model calls", "header.statusProjection": "LoopX state projection", "header.managerModelSettings": "Change steward model and reasoning effort", - "header.managerDescription": "Your personal workspace across Goals", "header.managerRuntimeTrusted": "Local tools · File edits and commands", "header.managerRuntimeRestricted": "Read-only", "header.managerRuntimeFallback": "Configuration invalid; fell back to {profile} · {sandbox}. Repair it in Machine capabilities.", @@ -701,11 +664,8 @@ const en = { "header.refreshDone": "Updated just now", "header.refreshFailed": "Refresh failed", "header.refreshing": "Refreshing", - "header.selectAgent": "Select Agent", "header.selectChatRuntime": "Select chat runtime", "header.tasks": "Tasks", - "header.themeBrutal": "Switch to brutal theme", - "header.themePaper": "Switch to default theme", "home.blockingSummary": "{count} Goals have work waiting on you.", "home.completedGoals": "Completed Goals", "home.empty": "Nothing here", @@ -787,7 +747,6 @@ const en = { "lark.createAutomatically": "Create Goal topic automatically", "lark.createAutomaticallyDescription": "A dedicated, Agent-labelled Topic will be created for every selected Agent.", "lark.defaultAgentAppDescription": "Used to find the target group and as the default for every selected Agent. Per-Agent choices below override it.", - "lark.description": "Manage reusable Lark Apps and connect group chats to Goals through dedicated topics.", "lark.editConnection": "Edit Lark Connection", "lark.goalConnections": "{count} Goal connections", "lark.goalTopicConnections": "Lark Goal Topic connections", @@ -836,7 +795,6 @@ const en = { "lark.health.startingDetail": "LoopX is starting message event listening for this App.", "lark.health.unavailable": "Auto reply unavailable", "lark.health.waiting": "Waiting", - "lark.incomingMessages": "Incoming messages", "lark.ingressAsync": "Async inbox", "lark.ingressAsyncDescription": "Write to the Agent private inbox for a later explicit drain.", "lark.editPreservesIdentity": "Saving preserves this App, group and Topic. Old connections upgrade to the Agent inbox by default.", @@ -862,7 +820,6 @@ const en = { "lark.loading": "Loading Lark configuration…", "lark.management": "Lark management", "lark.openEventSettings": "Open Feishu event settings", - "lark.mentions": "Mentions", "lark.mentionsOnly": "Mentions only", "lark.needsMessagePermissions": "Needs message permissions", "lark.needsSetup": "Needs setup", @@ -897,7 +854,6 @@ const en = { "lark.selectRegisteredAgent": "Select an available registered Agent before connecting. The previous Agent will not be replaced automatically.", "lark.topicPreview": "Topic preview", "lark.topicReply": "Topic reply", - "lark.trigger": "Trigger", "lark.waitingFeishu": "Waiting for Feishu", "lark.waitingFeishuDescription": "Complete Feishu authorization in the new window. This page updates automatically when it is ready.", "lark.waitingLink": "Generating the official Feishu creation link…", @@ -927,7 +883,6 @@ const en = { "notifications.bindFailed": "Binding failed", "notifications.bound": "Bound", "notifications.confirmBind": "Confirm binding", - "notifications.description": "Send Goal changes that need your confirmation to a Feishu group. Bindings and automatic delivery use the existing channel.", "notifications.disabled": "Disabled", "notifications.group": "Notification group: {target}", "notifications.loadFailed": "Could not load notification groups", @@ -1415,7 +1370,6 @@ const en = { "session.closeRecord": "Exit run record", "session.details": "Session details", "session.record": "Execution Session · Run record", - "session.recordDescription": "The timeline now shows messages and Turn records from this Session.", "sidebar.createGoal": "Create Goal", "sidebar.delete": "Delete", "sidebar.deleteGoal": "Delete Goal", @@ -1437,10 +1391,6 @@ const en = { "workspace.unknownTitle": "Unavailable workspace", "workspace.unavailable": "This host no longer authorizes this workspace. The history is kept; new messages will be rejected until it is authorized again.", "workspace.empty": "Talk about this workspace with continuous context. An ordinary conversation does not create a Goal or include other workspaces.", - "workspace.placeholder": "Ask about {workspace}…", - "sidebar.notifications": "Settings", - "sidebar.owner": "Personal workspace", - "sidebar.product": "Personal Agent workspace", "sidebar.resume": "Resume", "sidebar.resumeGoal": "Resume Goal", "sidebar.stop": "Stop", @@ -1578,7 +1528,6 @@ const en = { "state.waiting": "Waiting", "tasks.blocked": "Blocked", "tasks.agentLane": "Work Agent", - "tasks.agentLaneDescription": "Filter this Goal's projected work lanes", "tasks.agentLaneFilter": "Filter by work Agent", "tasks.allAgentLanes": "All Agents ({count})", "tasks.chatAgentReplied": "New conversation reply", @@ -1586,7 +1535,6 @@ const en = { "tasks.chatReturn": "Collaboration receipt", "tasks.chatPendingDescription": "Processing. Tasks update only after a task operation is confirmed.", "tasks.chatRecent": "Recent conversation", - "tasks.chatUnchangedDescription": "This conversation did not directly change Tasks. Convert the reply to a Task draft and confirm it when execution is needed.", "tasks.chatViewReply": "View reply", "tasks.convertToTask": "Draft a Task", "tasks.completed": "Completed", @@ -1594,12 +1542,9 @@ const en = { "runs.discoveryOffline": "Execution service unavailable. Reconnecting; retained task summaries may be stale.", "files.openConversation": "Go to conversation", "files.exportSummary": "Export summary", - "tasks.viewDescription": "Decisions first, then work and recent completions", "tasks.viewLabel": "Task view", "tasks.listView": "List", "tasks.boardView": "Board", - "tasks.completedSummary": "{count} tasks completed. Recent details are projected by the control plane when needed.", - "tasks.emptyCompleted": "No completed tasks yet.", "tasks.emptyConfirm": "No tasks waiting for confirmation.", "tasks.emptyRunning": "No queued or running tasks.", "tasks.emptySchedules": "No scheduled tasks.", @@ -1610,8 +1555,6 @@ const en = { "tasks.pending": "Pending", "tasks.pendingAndRunning": "Queued / Running", "tasks.scheduled": "Scheduled & continuous", - "tasks.sessionError": "Session issue", - "tasks.waiting": "Queued", "tasks.waitingAge": "Waiting {age}", "tasks.viewExecution": "View execution", "tasks.viewResult": "View result", @@ -1751,7 +1694,6 @@ const zhCN: Record = { "storage.title": "Goal 数据存储", "storage.boundary": "明确确认后仅切换此既有 Goal。新 Goal 默认值与任务所有权是各自的设置。保留日志、metadata 和回执,不授予执行权限。", "storage.current": "当前来源(实时读回)", - "storage.counts": "{todos} 项任务 · {leases} 项未结算 lease", "storage.target": "目标存储", "storage.coldCounts": "{active} 项当前任务 · {archived} 项归档任务 · {leases} 项未结算 lease", "storage.coldCapture": "已发现原 capture 文件,历史原样保留。", @@ -1840,26 +1782,21 @@ const zhCN: Record = { "acceptance.truncated": "仅展示前 12 条观测。", "common.actions": "操作", "common.agent": "Agent", - "common.allMessages": "所有消息", "common.cancel": "取消", "common.close": "关闭", "common.closeActionReceipt": "关闭操作回执", "common.confirm": "确认", - "common.export": "导出", - "common.failed": "失败", "common.goal": "Goal", "common.loading": "加载中…", "common.none": "无", "common.off": "关闭", "common.on": "开启", - "common.open": "打开", "common.owner": "Owner", "common.readOnly": "只读", "common.recently": "刚刚", "common.status": "状态", "common.task": "Task", "common.you": "你", - "common.waiting": "等待中", "composer.addImage": "添加附件", "composer.agentProgress": "向 Agent 获取进度报告", "composer.agentProgressPrompt": "请给我一份当前 Goal 的进度报告:已完成、执行中、阻塞和下一步。", @@ -1872,11 +1809,8 @@ const zhCN: Record = { "composer.globalProgressPrompt": "请帮我汇总所有活跃 Goal 的最新进展与阻塞。", "composer.globalTasks": "询问全局待办", "composer.globalTasksPrompt": "有哪些 Goal 正在等我?我现在该优先处理什么?", - "composer.goalMessageHint": "你的消息由 {agent} 在本 Goal 的会话中接收", - "composer.goalRunningHint": "本项目有 {count} 段会话正在运行 · 消息发往当前 {agent} 对话", "masthead.completeTitle": "查看完整 Goal", "composer.goalPrompt": "询问进展,或提出调整…", - "composer.goalPlaceholder": "询问或纠偏 {goal}…", "composer.imageAnalysisPrompt": "请结合这些附件分析当前 Goal,并告诉我下一步。", "composer.imageCountError": "最多添加 {count} 个附件。", "composer.imagePicker": "附件文件选择器", @@ -1886,13 +1820,10 @@ const zhCN: Record = { "composer.imageTotalSizeError": "图片总大小不能超过 {size}MB。", "composer.imageTypeError": "支持 PNG、JPEG、WebP、GIF 图片和 UTF-8 .md / .txt 文本文件。", "composer.imagesPending": "待发送附件", - "composer.managerMessageHint": "你的消息由 LoopX 管家跨 Goal 接收,支持全局询问与创建 Goal", - "composer.managerPlaceholder": "问问 LoopX 管家,或描述一个新 Goal…", "composer.monitor": "配置定时检查", "composer.nextAction": "询问下一步", "composer.nextActionPrompt": "我现在该做什么?", "suggestions.row": "根据这个 Goal 的当前状态建议", - "suggestions.summary": "快捷提问 · {first}", "suggestions.openDecisions": "先处理 {count} 项等你决定的事项", "suggestions.explainBlocked": "解释 {count} 项受阻任务", "suggestions.explainBlockedPrompt": "这个 Goal 里有 {count} 项任务受阻:{titles}。请逐项说明阻塞原因和解除条件。", @@ -1906,18 +1837,10 @@ const zhCN: Record = { "composer.sendMessageHint": "发送消息", "composer.turnRunning": "本轮回答进行中。可在回答里调整或中断本轮,结束后再发送。", "composer.sentImageAlt": "移除附件 {name}", - "conversation.agentPending": "正在整理…", - "conversation.close": "关闭对话回执", - "conversation.convertHint": "将 Agent 最新回复转为 Task 草稿", - "conversation.full": "查看完整对话", - "conversation.receipt": "对话回执", "conversation.replying": "正在回复", - "conversation.title": "管家对话", - "conversation.toTask": "转为 Task", "digest.away": "自上次访问以来的运行记录", "digest.completed": "新增完成运行", "digest.failed": "新增失败或中断", - "digest.needsYou": "当前待确认", "feedback.applying": "正在执行:{title}", "feedback.cancelFailed": "取消失败:{error}", "feedback.completed": "已完成:{title}", @@ -1939,7 +1862,6 @@ const zhCN: Record = { "history.retrying": "正在读取…", "feedback.sendGenericError": "消息发送失败,请稍后重试。", "feedback.stale": "状态已变化,操作未执行,请重新生成确认预览。", - "feedback.taskDraftCreated": "已根据回复生成 Task 草稿。编辑后发送,LoopX 会先展示确认预览。", "goal.defaultTitle": "新的个人 Goal", "goal.initialTodo": "按完成标准推进:{criteria}", "goal.objectiveBoundary": "执行边界:{boundary}", @@ -1949,8 +1871,6 @@ const zhCN: Record = { "drawer.analysis": "正在分析", "drawer.apply": "确认并应用", "drawer.applying": "正在应用…", - "drawer.attentionBlocking": "正在阻塞 Agent", - "drawer.attentionWaiting": "等待你的决定", "drawer.autoNotify": "管家决策消息", "drawer.branch": "分支", "drawer.closeDetail": "关闭详情:返回{context}", @@ -1964,7 +1884,6 @@ const zhCN: Record = { "drawer.copyRepositoryDone": "已复制仓库标识", "drawer.copyRepositoryError": "复制失败,请检查浏览器剪贴板权限。", "drawer.copyRepositorySuccess": "已复制,可粘贴到其他工具。", - "drawer.cost": "成本 24h / 7d", "drawer.costShort": "成本", "drawer.durationShort": "时长", "drawer.period24h": "24 小时", @@ -1995,7 +1914,6 @@ const zhCN: Record = { "attentionDetail.openReplacement": "打开替代事项", "attentionDetail.boundary": "阅读不会做出决定,也不授予任何权限;每个决定保存前都会再请你确认一次。", "drawer.decisionDefaultEvidence": "这项请求没有附带证据。", - "drawer.decisionDefaultReason": "该决定会影响当前 Todo 的下一步执行。", "drawer.decisionMore": "更多决定", "drawer.decisionReject": "拒绝", "drawer.decisionApprove": "批准", @@ -2007,7 +1925,6 @@ const zhCN: Record = { "drawer.gateDecisionRecheck": "它生成于还不能在这里记录决定的时候。重新检查后,就能直接在这个面板里决定。", "drawer.dependencies": "依赖", "drawer.detailsAndActions": "详情与操作", - "drawer.duration": "运行时长 24h / 7d", "drawer.evidence": "证据", "drawer.notes": "备注", "drawer.executionHistory": "执行历史", @@ -2051,7 +1968,6 @@ const zhCN: Record = { "drawer.larkNotConfigured": "未配置", "drawer.larkNotConfiguredDescription": "配置后,当这个 Goal 出现需要你确认的变更时,会自动发飞书通知。", "drawer.managerChanges": "管家待确认变更", - "drawer.moreActions": "更多操作", "drawer.moreRunActions": "更多运行操作", "drawer.nextTransition": "下一转换", "drawer.validationRevision": "验证声明修订", @@ -2064,7 +1980,6 @@ const zhCN: Record = { "drawer.notAssigned": "未分配", "drawer.notLinked": "未关联", "drawer.notSet": "未设置", - "drawer.outputDetails": "产出详情", "drawer.outputRecorded": "该产出已记录到当前 Goal。", "drawer.outputSafePreview": "公开安全产出预览", "drawer.outputRun": "Run", @@ -2260,7 +2175,6 @@ const zhCN: Record = { "drawer.taskSuccessorNote": "Owner 标记为阻塞,等待补充上下文。", "drawer.taskSuccessorSummary": "创建后续 Todo:{task}", "drawer.taskSuccessorText": "{task} 的后续工作", - "drawer.taskType": "任务类型", "drawer.topic": "Topic", "drawer.trigger": "触发方式", "drawer.titleAttention": "需要你", @@ -2270,7 +2184,6 @@ const zhCN: Record = { "drawer.operationReadOnly": "操作详情", "drawer.operationCanonicalStatus": "只读规范操作,不产生新执行", "drawer.titleSchedule": "定时检查", - "drawer.unconfigured": "未配置", "drawer.workspaceCandidates": "可选择的工作区", "files.emptySummary": "公开安全产出", "files.empty": "还没有已交付文件或已验证报告。运行和验证状态请在任务中查看。", @@ -2303,7 +2216,6 @@ const zhCN: Record = { "readiness.recheck": "重新检查", "readiness.rechecking": "正在检查…", "readiness.guide": "安装指引", - "header.chatRuntime": "Chat", "header.workAgentCount": "{count} 个工作 Agent", "header.overview": "概览", "header.research": "研究", @@ -2315,21 +2227,15 @@ const zhCN: Record = { "since.markSeen": "标记已读", "header.chat": "对话", "header.files": "成果", - "header.goalCapabilities": "能力配置", - "header.goalCapabilitiesDescription": "管理 Goal override 与继承的本机默认值。", - "header.goalDetails": "Goal 详情", - "header.goalDetailsDescription": "查看状态、用量、仓库、通知与 Session。", "header.goalSettings": "Goal 设置", "header.goalSettingsDescription": "配置此 Goal 的能力", "header.goalNavigation": "Goal 导航", "header.goalView": "Goal 视图", - "header.live": "实时", "header.manager": "LoopX 管家", "header.statusOnlyAgent": "仅查状态", "header.statusOnlyDescription": "不调用模型", "header.statusProjection": "LoopX 状态投影", "header.managerModelSettings": "调整管家模型与思考深度", - "header.managerDescription": "跨 Goal 的个人工作入口", "header.managerRuntimeTrusted": "本机工具 · 可读写文件和运行命令", "header.managerRuntimeRestricted": "只读", "header.managerRuntimeFallback": "配置无效,已回退到 {profile} · {sandbox};请在机器能力设置中修复。", @@ -2364,11 +2270,8 @@ const zhCN: Record = { "header.refreshDone": "刚刚更新", "header.refreshFailed": "刷新失败", "header.refreshing": "刷新中", - "header.selectAgent": "选择 Agent", "header.selectChatRuntime": "选择聊天 Runtime", "header.tasks": "任务", - "header.themeBrutal": "切换到野兽主题", - "header.themePaper": "切换到默认主题", "home.blockingSummary": "其中 {count} 个目标有工作正在等你。", "home.completedGoals": "已完成的 Goal", "home.empty": "当前没有", @@ -2450,7 +2353,6 @@ const zhCN: Record = { "lark.createAutomatically": "自动创建 Goal Topic", "lark.createAutomaticallyDescription": "将为每个选中的 Agent 创建带 Agent 标识的专属 Topic。", "lark.defaultAgentAppDescription": "用于查找目标群聊,并作为所有选中 Agent 的默认 App;下方的逐 Agent 选择可覆盖它。", - "lark.description": "管理可复用的 Lark App,并用独立 Topic 将群聊连接到 Goal。", "lark.editConnection": "编辑 Lark 连接", "lark.goalConnections": "{count} 个 Goal 连接", "lark.goalTopicConnections": "Lark Goal Topic 连接", @@ -2499,7 +2401,6 @@ const zhCN: Record = { "lark.health.startingDetail": "LoopX 正在启动该 App 的消息事件监听。", "lark.health.unavailable": "自动回复不可用", "lark.health.waiting": "等待处理", - "lark.incomingMessages": "接收消息", "lark.ingressAsync": "异步收件箱", "lark.ingressAsyncDescription": "写入 Agent 私有收件箱,等待后续显式处理。", "lark.editPreservesIdentity": "保存会保留此 App、群和 Topic;旧连接默认升级为 Agent 异步收件箱。", @@ -2525,7 +2426,6 @@ const zhCN: Record = { "lark.loading": "加载 Lark 配置…", "lark.management": "Lark 管理", "lark.openEventSettings": "查看飞书事件配置", - "lark.mentions": "提及机器人", "lark.mentionsOnly": "仅提及消息", "lark.needsMessagePermissions": "需要消息权限", "lark.needsSetup": "需要设置", @@ -2560,7 +2460,6 @@ const zhCN: Record = { "lark.selectRegisteredAgent": "请先选择可用的已注册 Agent;不会自动替换原先的接收者。", "lark.topicPreview": "Topic 预览", "lark.topicReply": "Topic 回复", - "lark.trigger": "触发方式", "lark.waitingFeishu": "等待飞书完成创建", "lark.waitingFeishuDescription": "请在新窗口中完成飞书授权,完成后会自动回到这里。", "lark.waitingLink": "正在生成飞书官方创建链接…", @@ -2590,7 +2489,6 @@ const zhCN: Record = { "notifications.bindFailed": "绑定失败", "notifications.bound": "已绑定", "notifications.confirmBind": "确认绑定", - "notifications.description": "把 Goal 里需要你确认的变更推送到飞书群。绑定和开关在这里完成,推送逻辑沿用现有通道。", "notifications.disabled": "已停用", "notifications.group": "通知群:{target}", "notifications.loadFailed": "通知群列表加载失败", @@ -3078,7 +2976,6 @@ const zhCN: Record = { "session.closeRecord": "退出运行记录", "session.details": "Session 详情", "session.record": "执行 Session · 运行记录", - "session.recordDescription": "当前时间线已切换到这次 Session 的消息与 Turn 记录。", "sidebar.createGoal": "创建 Goal", "sidebar.delete": "删除", "sidebar.deleteGoal": "删除 Goal", @@ -3100,10 +2997,6 @@ const zhCN: Record = { "workspace.unknownTitle": "不可用的工作区", "workspace.unavailable": "此宿主已不再授权这个工作区。历史记录会保留;重新授权前,新消息会被拒绝。", "workspace.empty": "围绕这个工作区对话,保留连续上下文。普通对话不会创建 Goal,也不会带入其他工作区。", - "workspace.placeholder": "询问 {workspace}…", - "sidebar.notifications": "设置", - "sidebar.owner": "个人工作区", - "sidebar.product": "个人 Agent 工作区", "sidebar.resume": "恢复", "sidebar.resumeGoal": "恢复 Goal", "sidebar.stop": "停止", @@ -3241,7 +3134,6 @@ const zhCN: Record = { "state.waiting": "等待条件", "tasks.blocked": "受阻", "tasks.agentLane": "工作 Agent", - "tasks.agentLaneDescription": "筛选这个 Goal 下的工作泳道", "tasks.agentLaneFilter": "按工作 Agent 筛选", "tasks.allAgentLanes": "全部 Agent({count})", "tasks.chatAgentReplied": "对话有新回复", @@ -3249,7 +3141,6 @@ const zhCN: Record = { "tasks.chatReturn": "协作回执", "tasks.chatPendingDescription": "正在处理;只有经过确认的任务操作才会更新 Tasks。", "tasks.chatRecent": "最近对话", - "tasks.chatUnchangedDescription": "本次对话没有直接修改 Tasks。需要执行时,可先转成 Task 草稿并确认。", "tasks.chatViewReply": "查看回复", "tasks.convertToTask": "转为任务草稿", "tasks.completed": "已完成", @@ -3257,12 +3148,9 @@ const zhCN: Record = { "runs.discoveryOffline": "执行服务暂不可用,正在重连;保留的任务摘要可能已过时。", "files.openConversation": "前往会话", "files.exportSummary": "导出摘要", - "tasks.viewDescription": "先处理待确认,再查看工作与完成记录", "tasks.viewLabel": "任务视图", "tasks.listView": "列表", "tasks.boardView": "看板", - "tasks.completedSummary": "已完成 {count} 项,近期完成明细由控制面按需投影。", - "tasks.emptyCompleted": "还没有完成的任务。", "tasks.emptyConfirm": "没有待确认的任务。", "tasks.emptyRunning": "没有待执行或进行中的任务。", "tasks.emptySchedules": "没有定时任务。", @@ -3273,8 +3161,6 @@ const zhCN: Record = { "tasks.pending": "待处理", "tasks.pendingAndRunning": "待执行 / 进行中", "tasks.scheduled": "定时与持续", - "tasks.sessionError": "Session 异常", - "tasks.waiting": "待执行", "tasks.waitingAge": "已等待 {age}", "tasks.viewExecution": "查看执行过程", "tasks.viewResult": "查看结果", diff --git a/apps/presentation/dashboard/src/features/personal-workspace/manager-brief.tsx b/apps/presentation/dashboard/src/features/personal-workspace/manager-brief.tsx index 966f704d34..13eedaebcd 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/manager-brief.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/manager-brief.tsx @@ -67,7 +67,6 @@ export function ManagerBrief({ goals, onSelectGoal, attention = [], onSelectAtte goals: WorkspaceGoal[]; onSelectGoal: (goalId: string) => void; attention?: WorkspaceAttention[]; onSelectAttention?: (item: WorkspaceAttention) => void; operations?: WorkspaceActionPreview[]; onSelectOperation?: (proposal: WorkspaceActionPreview) => void; - onViewAllOperations?: () => void; }) { const { t, locale } = useWorkspaceI18n(); const active = goals.filter((goal) => goal.activationState === "active" && !goal.loadState); diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx index b25cb2b032..c6309840d7 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx @@ -186,7 +186,6 @@ function ManagerHomeBoard({ systemHealth, operations, onSelectOperation, - onViewAllOperations, }: { goals: WorkspaceGoal[]; attention: WorkspaceAttention[]; @@ -204,7 +203,6 @@ function ManagerHomeBoard({ systemHealth?: WorkspaceSystemHealth; operations: WorkspaceActionPreview[]; onSelectOperation: (proposal: WorkspaceActionPreview) => void; - onViewAllOperations: () => void; }) { const { locale, t } = useWorkspaceI18n(); const currentGoals = goals.filter((goal) => goal.activationState === "active"); @@ -296,7 +294,7 @@ function ManagerHomeBoard({ : null} {goals.some((goal) => !goal.loadState) ? : null} + operations={operations} onSelectOperation={onSelectOperation} /> : null} {onboarding?.kind === "no_goals" && goals.length === 0 ? null :

{t("home.allGoals")}

}
{activeHomeLanes.filter((lane) => active[lane.key].length > 0).map((lane) => ( @@ -3017,8 +3015,7 @@ export function PersonalWorkspacePage({ onRetry={() => void callbacks.onRefresh?.("missing")} onRetrySource={() => void refreshWorkspace()} onSelectGoal={selectGoal} systemHealth={model.systemHealth} onboarding={model.onboarding} onRequestGoalCreate={readOnly ? undefined : requestGoalCreate} onSuggestRequest={readOnly ? undefined : suggestReply} runtimeReadiness={readOnly ? undefined : runtimeReadiness} recheckingRuntimes={recheckingRuntimes} onRecheckRuntimes={callbacks.onRecheckRuntimes ? recheckRuntimes : undefined} - operations={actionReadback.isError ? [] : homeOperations} onSelectOperation={proposal => setSelection({kind: "proposal", item: proposal})} - onViewAllOperations={() => setSelectedGoalTab("chat")} /> + operations={actionReadback.isError ? [] : homeOperations} onSelectOperation={proposal => setSelection({kind: "proposal", item: proposal})} /> ) : (