Initial import: open-design source for helix-mind.ai distribution
Some checks failed
ci / Validate workspace (push) Successful in 12m32s
landing-page-ci / Validate landing page (push) Successful in 9m41s
landing-page-deploy / Deploy landing page (push) Failing after 5m23s
github-metrics / Generate repository metrics SVG (push) Failing after 2m6s
refresh-contributors-wall / Refresh contributors wall cache bust (push) Failing after 12s
Some checks failed
ci / Validate workspace (push) Successful in 12m32s
landing-page-ci / Validate landing page (push) Successful in 9m41s
landing-page-deploy / Deploy landing page (push) Failing after 5m23s
github-metrics / Generate repository metrics SVG (push) Failing after 2m6s
refresh-contributors-wall / Refresh contributors wall cache bust (push) Failing after 12s
This repository contains the open-design daemon CLI source code, built and packaged at https://helix-mind.ai/cli/open-design/latest.tgz for use by the HelixMind /design slash command. Licenses: Apache-2.0 (root) + MIT (skills/*)
This commit is contained in:
94
specs/current/status.md
Normal file
94
specs/current/status.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# Project Status
|
||||
|
||||
## Goal
|
||||
|
||||
Show a compact status on each project card that reflects the current state of the project's most relevant run.
|
||||
|
||||
## Status source
|
||||
|
||||
Project status should be a derived display value, based on runs associated with the project.
|
||||
|
||||
The recommended logic is:
|
||||
|
||||
1. If the project has an active run, show that active run's status.
|
||||
2. If the project has no active run, show the latest run's terminal status.
|
||||
3. If the project has no runs, show `not_started`.
|
||||
|
||||
An active run takes priority over the latest terminal run because it tells the user that work is currently happening in the project.
|
||||
|
||||
## Display statuses
|
||||
|
||||
```ts
|
||||
type ProjectDisplayStatus =
|
||||
| 'not_started'
|
||||
| 'queued'
|
||||
| 'running'
|
||||
| 'succeeded'
|
||||
| 'failed'
|
||||
| 'canceled';
|
||||
```
|
||||
|
||||
| Display status | Label | Source status | Meaning |
|
||||
| --- | --- | --- | --- |
|
||||
| `not_started` | Not started | No run | The project exists and has no run history. |
|
||||
| `queued` | Queued | `queued` | A run exists and is waiting to start. |
|
||||
| `running` | Running | `running`, `starting` | A run is currently executing. |
|
||||
| `succeeded` | Completed | `succeeded` | The latest relevant run completed successfully. |
|
||||
| `failed` | Failed | `failed` | The latest relevant run failed. |
|
||||
| `canceled` | Canceled | `canceled`, `cancelled` | The latest relevant run was canceled. |
|
||||
|
||||
## Derivation logic
|
||||
|
||||
```ts
|
||||
function deriveProjectDisplayStatus(projectRuns: Run[]): ProjectDisplayStatus {
|
||||
const activeRun = projectRuns
|
||||
.filter((run) => run.status === 'queued' || run.status === 'running' || run.status === 'starting')
|
||||
.sort(byMostRecent)[0];
|
||||
|
||||
if (activeRun) {
|
||||
return normalizeRunStatus(activeRun.status);
|
||||
}
|
||||
|
||||
const latestRun = projectRuns.sort(byMostRecent)[0];
|
||||
|
||||
if (latestRun) {
|
||||
return normalizeRunStatus(latestRun.status);
|
||||
}
|
||||
|
||||
return 'not_started';
|
||||
}
|
||||
|
||||
function normalizeRunStatus(status: RunStatus): ProjectDisplayStatus {
|
||||
if (status === 'starting') return 'running';
|
||||
if (status === 'cancelled') return 'canceled';
|
||||
return status;
|
||||
}
|
||||
```
|
||||
|
||||
## UI guidance
|
||||
|
||||
The project card should show the status near the existing metadata line, together with the relative timestamp when useful.
|
||||
|
||||
Examples:
|
||||
|
||||
- `Running · just now`
|
||||
- `Queued · 1 minute ago`
|
||||
- `Completed · 6 minutes ago`
|
||||
- `Failed · 36 minutes ago`
|
||||
- `Canceled · 3 hours ago`
|
||||
- `Not started`
|
||||
|
||||
Use stronger visual treatment for active and error states:
|
||||
|
||||
- `running`: primary or accent indicator.
|
||||
- `queued`: neutral pending indicator.
|
||||
- `failed`: error indicator.
|
||||
- `canceled`: muted neutral indicator.
|
||||
- `succeeded`: subtle success indicator.
|
||||
- `not_started`: muted placeholder indicator.
|
||||
|
||||
## Rationale
|
||||
|
||||
Project status represents the user's project-level mental model. Users need to know whether a project is waiting, actively running, completed, failed, canceled, or untouched.
|
||||
|
||||
Using `running` as the primary active label keeps the UI aligned with the underlying run model and covers generation, editing, repair, analysis, export, and future run types.
|
||||
Reference in New Issue
Block a user