Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ export function ChannelTimeline({
return (
<button className={`personal-proposal-row is-${item.proposal.status}`} key={item.id} onClick={() => onSelect({ item: item.proposal, kind: "proposal" })} type="button">
<span><Sparkles size={17} /></span>
<span><small>{item.proposal.actionKind} · {item.proposal.status}</small><strong>{item.proposal.title}</strong><p>{item.proposal.impact}</p></span>
<span><small>{item.proposal.actionKind} · {item.proposal.status}</small><strong>{item.proposal.title}</strong>{item.proposal.impact ? <p>{item.proposal.impact}</p> : null}</span>
<b>{item.proposal.status === "gated" && item.proposal.actionKind !== "operation.execute" ? t("timeline.review") : item.proposal.primaryLabel ?? t("timeline.reviewAndConfirm")}</b>
</button>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1010,7 +1010,7 @@ export function ContextDrawer({ agents, attentionHistory = [], onSelectAttention
{selection.item.actionKind === "team.plan" && selection.item.status === "applied" ? <TeamPlanResult proposal={selection.item} t={t} /> : <section className="personal-proposal-card">
<small>{selection.item.actionKind} · {selection.item.status}</small>
<h3>{selection.item.title}</h3>
<p>{selection.item.impact}</p>
{selection.item.impact ? <p>{selection.item.impact}</p> : null}
{selection.item.reviewPlan && !selection.item.reviewPlan.retryOriginal && selection.item.actionKind !== "team.plan" ? <p className="personal-proposal-explainer" data-action-review={selection.item.reviewPlan.interaction}>{selection.item.actionKind === "operation.execute" && selection.item.status === "gated"
? t("actionReview.operation_group_confirmation")
: selection.item.actionKind === "operation.execute" && selection.item.reviewPlan.reason === "readback_unverified"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -683,7 +683,6 @@ const en = {
"actionReview.apply_failed": "Execution did not complete. Check the failure and regenerate the preview before retrying.",
"actionReview.inactive_proposal": "This proposal is no longer ready to execute. Recheck it before continuing.",
"proposal.gate.default": "Host confirmation required",
"proposal.impact.default": "After confirmation, the canonical LoopX service will write the state change.",
"proposal.impact.goalCreate": "After confirmation, LoopX will create the Goal and its initial Todo, then let the selected Agent start the first run.",
"proposal.impact.lifecycleDelete": "After confirmation, this stopped Goal is removed from the source and global registries. Project files, history state, and backups are preserved.",
"proposal.impact.lifecycleResume": "After confirmation, the Goal becomes eligible for automatic scheduling and returns to Active Goals. Actual execution still follows quota, Gate, and Todo constraints.",
Expand Down Expand Up @@ -1754,7 +1753,6 @@ const zhCN: Record<WorkspaceMessageKey, string> = {
"actionReview.apply_failed": "执行未完成。请检查失败原因并重新生成预览后再试。",
"actionReview.inactive_proposal": "此提案当前不可执行。请重新检查后再继续。",
"proposal.gate.default": "需要宿主确认",
"proposal.impact.default": "确认后会调用规范 LoopX 服务写入状态。",
"proposal.impact.goalCreate": "确认后会创建 Goal 和首个 Todo,并让选定 Agent 开始首轮推进。",
"proposal.impact.lifecycleDelete": "确认后会从 source registry 和 global registry 移除这个已停止 Goal;项目文件、历史状态文件和备份不会被删除。",
"proposal.impact.lifecycleResume": "确认后会恢复 Goal 的自动调度资格并移回 Active Goals;实际执行仍受 quota、Gate 和 Todo 约束。",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,7 @@ function workspaceProposal(proposal: TypedActionProposal, t: WorkspaceTranslate)
? t("proposal.impact.lifecycleResume")
: proposal.permission_classification === "protected"
? t("proposal.impact.protected")
: t("proposal.impact.default"),
: "",
previewId: proposal.proposal_id,
lifecycleOperation,
gate: proposal.gate ? {
Expand Down
8 changes: 4 additions & 4 deletions loopx/web/chat/asset-retention.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
"assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2",
"assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2",
"assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2",
"assets/index-DqTQqqop.css",
"assets/index-Dw5XdTH0.js"
"assets/index-7uKjmaHx.js",
"assets/index-DqTQqqop.css"
],
[
"assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2",
Expand All @@ -28,8 +28,8 @@
"assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2",
"assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2",
"assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2",
"assets/index-C6Jsf2dJ.js",
"assets/index-DqTQqqop.css"
"assets/index-DqTQqqop.css",
"assets/index-Dw5XdTH0.js"
]
]
}

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion loopx/web/chat/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
content="LoopX 个人 Agent 工作区:在同一个频道里查看、纠偏并推进 Goal。"
/>
<title>LoopX 个人 Agent 工作区</title>
<script type="module" crossorigin src="/chat/assets/index-Dw5XdTH0.js"></script>
<script type="module" crossorigin src="/chat/assets/index-7uKjmaHx.js"></script>
<link rel="stylesheet" crossorigin href="/chat/assets/index-DqTQqqop.css">
</head>
<body>
Expand Down
Loading