feat(voyage): implement dashboard via fleet-grid + fleet-tile with status vocabulary
Step 14 (v4.3 Sesjon 3 — Wave 3) — adds renderDashboard pipeline that turns a ProjectArtifacts struct (produced by loadProjectDirectory in Step 13) into a fleet-grid of fleet-tiles, one per artifact-type (brief / plan / review / research / progress). Status vocabulary: complete, in-progress, blocked, missing, stale Severity mapping: missing → critical, blocked → high, in-progress + stale → medium, complete → low. Severity drives DS color tokens via [data-severity] attribute selectors. When loadProjectDirectory completes, dashboard takes over the main stage (paste-flow elements hidden); topbar updates with project breadcrumb. Step 13's pipeline already calls renderDashboard via graceful-fallback, so wiring is automatic. Test additions (4): fleet-grid + fleet-tile presence, renderDashboard function declaration, status vocabulary completeness.
This commit is contained in:
parent
68842cf773
commit
a479f47b4e
2 changed files with 221 additions and 0 deletions
|
|
@ -149,3 +149,30 @@ test('voyage-playground.html uses clipboard.writeText for copy flow (Step 11 exp
|
|||
const text = readFileSync(HTML, 'utf-8');
|
||||
assert.match(text, /clipboard\.writeText/, 'navigator.clipboard.writeText path required for command-copy');
|
||||
});
|
||||
|
||||
// --- v4.3 Sesjon 3 — Step 14 (dashboard) + Step 15 (drill-down + URL routing) ----
|
||||
|
||||
test('voyage-playground.html declares fleet-grid container (v4.3 Step 14 dashboard)', () => {
|
||||
const text = readFileSync(HTML, 'utf-8');
|
||||
assert.match(text, /fleet-grid/, 'fleet-grid container required for dashboard layout');
|
||||
});
|
||||
|
||||
test('voyage-playground.html declares fleet-tile (v4.3 Step 14 dashboard)', () => {
|
||||
const text = readFileSync(HTML, 'utf-8');
|
||||
assert.match(text, /fleet-tile/, 'fleet-tile required for per-artifact dashboard cell');
|
||||
});
|
||||
|
||||
test('voyage-playground.html declares renderDashboard JS function (v4.3 Step 14)', () => {
|
||||
const text = readFileSync(HTML, 'utf-8');
|
||||
assert.match(text, /function renderDashboard\b/, 'renderDashboard function required');
|
||||
});
|
||||
|
||||
test('voyage-playground.html declares dashboard status vocabulary (v4.3 Step 14)', () => {
|
||||
const text = readFileSync(HTML, 'utf-8');
|
||||
// Status vocabulary per plan: complete, in-progress, blocked, missing, stale
|
||||
assert.match(text, /'complete'/, 'status complete required');
|
||||
assert.match(text, /'in-progress'/, 'status in-progress required');
|
||||
assert.match(text, /'blocked'/, 'status blocked required');
|
||||
assert.match(text, /'missing'/, 'status missing required');
|
||||
assert.match(text, /'stale'/, 'status stale required');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue