{row.axis}
+-
+
- Current +
- {row.current} +
- Proposed +
- {row.proposed} +
- Gate +
- {row.gate} +
From 681d0b997380dcee68f23dcaf378ea58ac81104f Mon Sep 17 00:00:00 2001
From: xiaoan17
{context.join(" · ")}
: null} > ); @@ -196,55 +197,31 @@ export function GoalVitals({ goal, items, onFocusRegion, userTodos, digest: shar const lastTime = last ? relativeTime(last.at, locale) : null; const stateLabel = finishing ? t("vitals.stopping") : t(activity.labelKey as WorkspaceMessageKey); + const stages = locale === "zh-CN" ? ["计划", "执行", "验收"] : ["Plan", "Run", "Accept"]; + const stageIndex = goal.state === "已完成" ? 3 + : (work.classes.running_observed > 0 || work.open > 0 || goal.execution?.kind === "running") ? 1 + : goal.acceptanceObservation ? 2 : 0; + const waitingOn = needs.availability === "ok" && needs.blocking + ? (locale === "zh-CN" ? "等你决定" : "Waiting on you") + : work.classes.running_observed ? (locale === "zh-CN" ? "Agent 执行中" : "Agent running") : null; + return ( -{stateSub}
{t("vitals.scope")}
{work.coverage !== "complete" ?{t("vitals.workCoverageUnknown")}
: null} - {work.done === null ?{t("vitals.workDoneUnknown")}
: null} -{work.projectedOpen !== null ? t("vitals.workPartial", {listed: work.listedOpen, projected: work.projectedOpen}) : `${work.listedOpen} ${locale === "zh-CN" ? "项已列出" : "listed"}`}
-{needs.availability === "ok" ? t("vitals.needsYouPartial", {count: needs.listed}) : t("vitals.unavailable")}
{t("vitals.notMeasured")}
{t("vitals.notMeasured")}
{t("vitals.noActivity")}
01{locale === "zh-CN" ? "现状" : "Current state"}
{digest.objective ?{digest.objective}
:{copy.objectiveUnavailable}
{locale === "zh-CN" ? "没有等你决定的事" : "Nothing is waiting on you"}
} {moreAttention ?{copy.remote}
{zh ? "所选任务不在当前筛选范围中,详情仍保留。" : "The selected task is outside these filters. Its details are retained."}
{t("tasks.emptyConfirm")}
{t("tasks.emptyConfirm")}
: null} : null} {filter !== "done" ?{t("tasks.emptyRunning")}
{t("tasks.emptyRunning")}
: null} : null} {filter === "all" ?{t("tasks.emptySchedules")}
{t("tasks.emptySchedules")}
: null}{digest.work.coverage !== "complete" ? (zh ? `已列出 ${digest.work.listedOpen} 项,当前快照的总数或覆盖范围不完整。` : `${digest.work.listedOpen} items listed; the snapshot's total or coverage is incomplete.`)
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 2390d4a316..7b956a054d 100644
--- a/apps/presentation/dashboard/src/features/personal-workspace/manager-brief.tsx
+++ b/apps/presentation/dashboard/src/features/personal-workspace/manager-brief.tsx
@@ -2,8 +2,9 @@ import {ContextHelp} from "./context-help";
import {ArrowRight, Check, CircleHelp, Hand} from "lucide-react";
import {useState, type ReactNode} from "react";
import { useWorkspaceI18n } from "./i18n";
-import type { WorkspaceActionPreview, WorkspaceAttention, WorkspaceGoal } from "./personal-workspace-model";
+import type { WorkspaceActionPreview, WorkspaceAttention, WorkspaceGoal, WorkspaceRunHistoryEntry, WorkspaceTimelineItem } from "./personal-workspace-model";
import { workspaceHomeLaneForGoal } from "./personal-workspace-model";
+import { goalShortLabel } from "./goal-display";
import { goalWorkKind, presentGoalActivity } from "./goal-activity";
import { GoalIdentityMark, useExecutionDetail } from "./goal-activity-view";
import { canReviewAttention } from "./attention-details";
@@ -15,7 +16,7 @@ const briefRowLimit = 3;
type BriefRow = { goal: WorkspaceGoal; key: string; meta?: ReactNode; text: string; proposal?: WorkspaceActionPreview; attention?: WorkspaceAttention };
function RunningMeta({ goal }: { goal: WorkspaceGoal }) {
- return <>{useExecutionDetail(goal.execution).join(" · ") || goal.title}>;
+ return <>{useExecutionDetail(goal.execution).join(" · ") || goalShortLabel(goal)}>;
}
function BriefTile({ count, empty, kind, live = false, onSelectGoal, onSelectOperation, onSelectAttention, rows, title, total }: {
@@ -43,7 +44,7 @@ function BriefTile({ count, empty, kind, live = false, onSelectGoal, onSelectOpe
: row.attention && onSelectAttention ? onSelectAttention(row.attention) : onSelectGoal(row.goal.goalId)} type="button">
{kind === "completed" ?
+ 最近 {recent.length} 次运行
+ {span ? {span} : null}
+ {recent.length - failed} 完成
+ {failed} 失败
+ {goal.loadError ? t(`startup.error.${goal.loadError}`) : goal.needsYou ?? goal.nextSentence}{t("home.health.diagnostics")}
+
+ {systemHealth.issues.map((issue, idx) =>
+
{scopeHint}
{scopeHint}
: null} {scope === "goal" && initialGoalId && !editableGoal ?{selectedGoal?.sourceAccess ? t("settings.goalReadOnly", {source: selectedGoal.sourceAccess.label}) @@ -282,24 +282,6 @@ export function WorkspaceSettingsPage({ {t("settings.themeHighContrast")} - {attentionNotifications && onAttentionNotificationsChange ? ( -
{t("settings.attentionNotificationsHint")}
- {t(attentionNotificationSupportCopy[attentionNotifications.support])} -
-