FN-6933: show stopped engine state in footer
Show the dashboard footer when the global AI engine stop control is active. - Add a stopped executor state derived from globalPause and expose it through the legacy API types. - Render Stopped with error-red styling and a stop-rectangle icon in the executor status bar. - Cover stopped state derivation, footer rendering, API responses, and localized labels. Files changed: .../dashboard/app/__tests__/api-projects.test.ts | 3 ++- packages/dashboard/app/api/legacy.ts | 14 +++++++---- .../dashboard/app/components/ExecutorStatusBar.tsx | 11 ++++++--- .../__tests__/ExecutorStatusBar.test.tsx | 27 ++++++++++++++++++++++ .../app/hooks/__tests__/useExecutorStats.test.ts | 22 ++++++++++++++++-- packages/dashboard/app/hooks/useExecutorStats.ts | 10 +++++--- packages/i18n/locales/en/app.json | 1 + packages/i18n/locales/es/app.json | 2 ++ packages/i18n/locales/fr/app.json | 2 ++ packages/i18n/locales/ko/app.json | 2 ++ packages/i18n/locales/zh-CN/app.json | 2 ++ packages/i18n/locales/zh-TW/app.json | 2 ++ 12 files changed, 85 insertions(+), 13 deletions(-) Fusion-Task-Id: FN-6933 Fusion-Task-Lineage: 1f128b36-105a-4133-87ce-75bb8df8a42f
This commit is contained in:
@@ -6709,8 +6709,13 @@ export interface ProjectHealth {
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
/** Executor state values */
|
||||
export type ExecutorState = "idle" | "running" | "paused";
|
||||
/**
|
||||
* Executor state values.
|
||||
*
|
||||
* FNXC:EngineControls 2026-06-22-00:00:
|
||||
* A globally stopped AI engine (`globalPause`) is an operator action, not idleness; the footer must expose it as "Stopped" in error red with the stop-rectangle icon.
|
||||
*/
|
||||
export type ExecutorState = "idle" | "running" | "paused" | "stopped";
|
||||
|
||||
/** Aggregated executor statistics for the status bar.
|
||||
*
|
||||
@@ -6721,7 +6726,8 @@ export type ExecutorState = "idle" | "running" | "paused";
|
||||
* lastActivityAt from the activity log.
|
||||
*
|
||||
* The executorState is derived from:
|
||||
* - "idle": globalPause is true OR (enginePaused is true AND runningTaskCount is 0)
|
||||
* - "stopped": globalPause is true
|
||||
* - "idle": (enginePaused is true AND runningTaskCount is 0) OR not paused with nothing running
|
||||
* - "paused": enginePaused is true AND runningTaskCount > 0
|
||||
* - "running": globalPause is false AND enginePaused is false AND runningTaskCount > 0
|
||||
*/
|
||||
@@ -6736,7 +6742,7 @@ export interface ExecutorStats {
|
||||
queuedTaskCount: number;
|
||||
/** Number of tasks in "in-review" column */
|
||||
inReviewCount: number;
|
||||
/** Derived executor state: "idle", "running", or "paused" */
|
||||
/** Derived executor state: "idle", "running", "paused", or "stopped" */
|
||||
executorState: ExecutorState;
|
||||
/** Maximum concurrent tasks allowed from settings */
|
||||
maxConcurrent: number;
|
||||
|
||||
Reference in New Issue
Block a user