From 6c9770db151f18d2cada2331bc3f4aef1957db79 Mon Sep 17 00:00:00 2001 From: M T Date: Tue, 23 Jun 2026 11:38:57 +1000 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20gstack-sprint-dashboard=20=E2=80=94?= =?UTF-8?q?=20in-flight=20branch/stage=20visibility?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Read-only CLI that renders a self-contained HTML sprint board from gstack's own on-disk state (timeline.jsonl, analytics/*.jsonl, CHANGELOG.md, TODOS.md, git, gh pr list). No new instrumentation. Fills a gap /retro (backward-looking) and /landing-report (VERSION-queue-scoped) don't cover: what stage is each in-flight branch at right now, across a whole project. Design doc + 3-round adversarial review (10/10): /office-hours session. Co-Authored-By: Claude Sonnet 4.6 --- bin/gstack-sprint-dashboard | 686 ++++++++++++++++++++++++++++++++++++ 1 file changed, 686 insertions(+) create mode 100755 bin/gstack-sprint-dashboard diff --git a/bin/gstack-sprint-dashboard b/bin/gstack-sprint-dashboard new file mode 100755 index 000000000..78a342668 --- /dev/null +++ b/bin/gstack-sprint-dashboard @@ -0,0 +1,686 @@ +#!/usr/bin/env bun +/** + * gstack-sprint-dashboard — in-flight branch/stage visibility. + * + * Read-only. Generates a self-contained HTML sprint board from gstack's own + * on-disk state (timeline.jsonl, analytics/*.jsonl, CHANGELOG.md, TODOS.md, + * git, gh pr list) — no new instrumentation, no new user input. + * + * Usage: + * gstack-sprint-dashboard # write ./sprint.html, don't open + * gstack-sprint-dashboard open # write ./sprint.html, open it + * gstack-sprint-dashboard out # write to , don't open + * + * A leading "--" (e.g. `bun run bin/gstack-sprint-dashboard -- open`) is + * stripped before parsing, so both invocation styles work. + * + * Design doc: ~/.gstack/projects/garrytan-gstack/mst-feature-ui-workflow-design-20260623-105354.md + */ + +import { existsSync, readFileSync, writeFileSync, statSync, readdirSync } from "fs"; +import { join, basename } from "path"; +import { execFileSync, spawn } from "child_process"; +import { homedir } from "os"; + +const HISTORY_WINDOW_DAYS = 30; +const ACTIVITY_FEED_LIMIT = 20; +const DESIGN_DOCS_LIMIT = 10; + +// ─── Slug + paths ────────────────────────────────────────────────────────── + +function resolveSlug(): string { + const scriptDir = import.meta.dir; + const slugBin = join(scriptDir, "gstack-slug"); + try { + let output: string; + if (process.platform === "win32") { + // Windows: gstack-slug is a bash script; run it via bash with a + // forward-slash path (import.meta.dir gives backslashes on Windows, + // which bash on Windows chokes on). + const forwardSlashPath = slugBin.replace(/\\/g, "/"); + output = execFileSync("bash", [forwardSlashPath], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }); + } else { + output = execFileSync(slugBin, [], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }); + } + const match = output.match(/^SLUG=(.*)$/m); + if (match && match[1]) return match[1].trim(); + } catch { + // fall through to basename fallback + } + return basename(process.cwd()).replace(/[^a-zA-Z0-9._-]/g, ""); +} + +function gstackHome(): string { + return process.env.GSTACK_HOME || join(homedir(), ".gstack"); +} + +// ─── Generic helpers ─────────────────────────────────────────────────────── + +function readJsonlSafe(path: string): Record[] { + if (!existsSync(path)) return []; + const lines = readFileSync(path, "utf-8").split("\n"); + const out: Record[] = []; + for (const line of lines) { + const trimmed = line.trim(); + if (!trimmed) continue; + try { + out.push(JSON.parse(trimmed)); + } catch { + // skip unparseable/torn lines (concurrent Conductor writes) — not fatal + } + } + return out; +} + +function withinWindow(ts: string | undefined, days: number): boolean { + if (!ts) return false; + const t = new Date(ts).getTime(); + if (Number.isNaN(t)) return false; + return Date.now() - t <= days * 24 * 60 * 60 * 1000; +} + +function escapeHtml(s: string): string { + return s + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} + +// ─── Widget: Pipeline board ──────────────────────────────────────────────── + +const SKILL_TO_STAGE: Record = { + "office-hours": "office-hours", + spec: "spec", + "plan-ceo-review": "plan-review", + "plan-eng-review": "plan-review", + "plan-design-review": "plan-review", + "plan-devex-review": "plan-review", + autoplan: "plan-review", + review: "review", + codex: "review", + "design-review": "review", + "devex-review": "review", + qa: "implement", + "qa-only": "implement", + investigate: "implement", + ship: "ship", + "land-and-deploy": "ship", +}; + +function stageForSkill(skill: string): string { + return SKILL_TO_STAGE[skill] || "implement"; +} + +interface PrBadge { + number: number; + state: string; +} + +let cachedGhUser: string | null | undefined; // undefined = not resolved yet + +// Owner-scoped: `gh pr list --head ` alone matches by branch name +// across the WHOLE repo, including every fork's PRs. A repo with hundreds of +// open community PRs has multiple unrelated forks sharing common branch names +// (verified: 3 separate fork PRs all named "main" in this repo) — a bare +// branch-name match silently shows someone else's PR badge on your own +// branch. Scoping to ":" via one cached `gh api user` +// call disambiguates correctly. +function resolveGhUser(): string | null { + if (cachedGhUser !== undefined) return cachedGhUser; + try { + cachedGhUser = execFileSync("gh", ["api", "user", "--jq", ".login"], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }).trim(); + } catch { + cachedGhUser = null; // not authenticated, or gh unavailable + } + return cachedGhUser; +} + +function fetchPrBadge(branch: string): PrBadge | undefined { + const user = resolveGhUser(); + const head = user ? `${user}:${branch}` : branch; + try { + const out = execFileSync( + "gh", + ["pr", "list", "--head", head, "--json", "number,state", "--limit", "1"], + { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] } + ); + const prs = JSON.parse(out) as { number: number; state: string }[]; + return prs[0] ? { number: prs[0].number, state: prs[0].state } : undefined; + } catch { + // gh not installed, not authenticated, or errored — best-effort, no PR badge + return undefined; + } +} + +// The default branch (main/master) is the trunk, never a PR head — skip the +// PR lookup for it entirely rather than relying on owner-scoping alone. +function resolveDefaultBranch(): string | null { + try { + return execFileSync( + "gh", + ["repo", "view", "--json", "defaultBranchRef", "--jq", ".defaultBranchRef.name"], + { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] } + ).trim(); + } catch { + try { + const ref = execFileSync("git", ["symbolic-ref", "refs/remotes/origin/HEAD"], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }).trim(); + return ref.replace(/^refs\/remotes\/origin\//, ""); + } catch { + return null; + } + } +} + +function buildPipelineBoard(timeline: Record[]): string { + let branches: string[] = []; + try { + const out = execFileSync("git", ["branch", "--format=%(refname:short)"], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }); + branches = out.split("\n").map((l) => l.trim()).filter(Boolean); + } catch { + branches = []; + } + + const latestByBranch = new Map>(); + for (const entry of timeline) { + if (entry.event !== "completed" || !entry.branch || !entry.ts) continue; + const prev = latestByBranch.get(entry.branch); + if (!prev || new Date(entry.ts).getTime() > new Date(prev.ts).getTime()) { + latestByBranch.set(entry.branch, entry); + } + } + + if (branches.length === 0) { + return `
no data yet — no local git branches found
`; + } + + const defaultBranch = resolveDefaultBranch(); + + const rows = branches + .map((branch) => { + const latest = latestByBranch.get(branch); + const stage = latest ? stageForSkill(latest.skill) : "untracked"; + const lastActivity = latest + ? `${escapeHtml(latest.skill)} · ${new Date(latest.ts).toLocaleString()}` + : "—"; + // The default branch is trunk, never a PR head — skip the lookup + // rather than relying on owner-scoping alone to avoid a false match. + const pr = branch === defaultBranch ? undefined : fetchPrBadge(branch); + const prCell = pr ? `#${pr.number} ${pr.state}` : "—"; + return ` + ${escapeHtml(branch)} + ${escapeHtml(stage)} + ${lastActivity} + ${prCell} + `; + }) + .join("\n"); + + return ` + + ${rows} +
BranchStageLast ActivityPR
`; +} + +// ─── Widget: Activity feed ───────────────────────────────────────────────── + +function buildActivityFeed(timeline: Record[]): string { + const events = timeline + .filter((e) => e.ts && e.skill) + .sort((a, b) => new Date(b.ts).getTime() - new Date(a.ts).getTime()) + .slice(0, ACTIVITY_FEED_LIMIT); + + if (events.length === 0) { + return `
no data yet — timeline.jsonl has no events
`; + } + + const items = events + .map( + (e) => `
  • + ${new Date(e.ts).toLocaleString()} + ${escapeHtml(e.skill)} + ${escapeHtml(e.branch || "unknown")} + ${escapeHtml(e.event || "")} +
  • ` + ) + .join("\n"); + + return `
      ${items}
    `; +} + +// ─── Widget: Top skills chart ─────────────────────────────────────────────── + +function buildTopSkillsChart(slug: string): string { + const path = join(gstackHome(), "analytics", "skill-usage.jsonl"); + const entries = readJsonlSafe(path).filter((e) => e.skill && withinWindow(e.ts, HISTORY_WINDOW_DAYS)); + + if (entries.length === 0) { + return `
    no data yet — analytics/skill-usage.jsonl has no recent entries
    `; + } + + const counts = new Map(); + for (const e of entries) counts.set(e.skill, (counts.get(e.skill) || 0) + 1); + const sorted = [...counts.entries()].sort((a, b) => b[1] - a[1]); + const max = sorted[0]?.[1] || 1; + + const bars = sorted + .map( + ([skill, count]) => `
    + ${escapeHtml(skill)} +
    + ${count} +
    ` + ) + .join("\n"); + + return `
    ${bars}
    `; +} + +// ─── Widget: Quality scores ───────────────────────────────────────────────── + +function buildQualityScores(): string { + const path = join(gstackHome(), "analytics", "spec-review.jsonl"); + const entries = readJsonlSafe(path) + .filter((e) => e.ts && withinWindow(e.ts, HISTORY_WINDOW_DAYS) && e.quality_score !== undefined) + .sort((a, b) => new Date(b.ts).getTime() - new Date(a.ts).getTime()) + .slice(0, 10); + + if (entries.length === 0) { + return `
    no data yet — analytics/spec-review.jsonl has no recent entries
    `; + } + + const rows = entries + .map( + (e) => ` + ${new Date(e.ts).toLocaleDateString()} + ${escapeHtml(e.skill || "—")} + ${e.iterations ?? "—"} + ${e.quality_score}/10 + ` + ) + .join("\n"); + + return ` + + ${rows} +
    DateSkillIterationsScore
    `; +} + +// ─── Widget: Active design docs ───────────────────────────────────────────── + +function buildActiveDesignDocs(slug: string): string { + const projectDir = join(gstackHome(), "projects", slug); + if (!existsSync(projectDir)) { + return `
    no data yet — no project directory for this repo
    `; + } + + let files: string[]; + try { + files = readdirSync(projectDir).filter((f) => /-design-.*\.md$/.test(f)); + } catch { + return `
    no data yet — could not read project directory
    `; + } + + if (files.length === 0) { + return `
    no data yet — no design docs for this project
    `; + } + + const withMtime = files.map((f) => { + const fullPath = join(projectDir, f); + let mtime = 0; + try { + mtime = statSync(fullPath).mtimeMs; + } catch { + // leave mtime at 0 + } + return { name: f, fullPath, mtime }; + }); + + withMtime.sort((a, b) => b.mtime - a.mtime); + + const items = withMtime + .slice(0, DESIGN_DOCS_LIMIT) + .map( + (f) => `
  • + ${escapeHtml(f.name)} + ${f.mtime ? new Date(f.mtime).toLocaleDateString() : "—"} +
  • ` + ) + .join("\n"); + + return `
      ${items}
    `; +} + +// ─── Widget: Release velocity ─────────────────────────────────────────────── + +function buildReleaseVelocity(): string { + const changelogPath = join(process.cwd(), "CHANGELOG.md"); + if (!existsSync(changelogPath)) { + return `
    no data yet — no CHANGELOG.md in this repo
    `; + } + + const changelog = readFileSync(changelogPath, "utf-8"); + const versionHeadingRe = /^## \[(\d+\.\d+\.\d+\.\d+)\] - (\d{4}-\d{2}-\d{2})/gm; + const versions: { version: string; date: string }[] = []; + let m: RegExpExecArray | null; + while ((m = versionHeadingRe.exec(changelog)) !== null) { + versions.push({ version: m[1], date: m[2] }); + } + + const recentVersions = versions.filter((v) => withinWindow(v.date, HISTORY_WINDOW_DAYS)); + + if (recentVersions.length === 0) { + return `
    no data yet — no versions shipped in the last ${HISTORY_WINDOW_DAYS} days
    `; + } + + // Commits per version: PR-merge commit subjects are conventionally + // prefixed "vX.Y.Z.W " in this repo's commit log. + let subjects: string[] = []; + try { + const out = execFileSync( + "git", + ["log", `--since=${HISTORY_WINDOW_DAYS} days ago`, "--pretty=format:%s"], + { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] } + ); + subjects = out.split("\n").filter(Boolean); + } catch { + subjects = []; + } + + const commitCounts = new Map(); + for (const subject of subjects) { + const vm = subject.match(/^v(\d+\.\d+\.\d+\.\d+)\s/); + if (vm) commitCounts.set(vm[1], (commitCounts.get(vm[1]) || 0) + 1); + } + + // Chronological order, oldest first, for a left-to-right sparkline. + recentVersions.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); + const counts = recentVersions.map((v) => commitCounts.get(v.version) || 0); + const max = Math.max(1, ...counts); + const blocks = " ▁▂▃▄▅▆▇█"; + + const sparkline = recentVersions + .map((v, i) => { + const count = counts[i]; + const level = Math.min(8, Math.round((count / max) * 8)); + return `${blocks[level]}`; + }) + .join(""); + + const versionList = recentVersions + .map((v, i) => `
  • v${escapeHtml(v.version)} — ${v.date} — ${counts[i]} commit(s)
  • `) + .join("\n"); + + return `
    +
    ${sparkline}
    +
      ${versionList}
    +
    `; +} + +// ─── Widget: TODOS backlog health ─────────────────────────────────────────── + +function buildBacklogHealth(): string { + const todosPath = join(process.cwd(), "TODOS.md"); + if (!existsSync(todosPath)) { + return `
    no data yet — no TODOS.md in this repo
    `; + } + + const todos = readFileSync(todosPath, "utf-8"); + const headingRe = /^### (.+)$/gm; + const counts: Record = { P0: 0, P1: 0, P2: 0, P3: 0, P4: 0, unparsed: 0 }; + let m: RegExpExecArray | null; + while ((m = headingRe.exec(todos)) !== null) { + const heading = m[1]; + const pm = heading.match(/^(P[0-4]):/); + if (pm) counts[pm[1]]++; + else counts.unparsed++; + } + + const total = Object.values(counts).reduce((a, b) => a + b, 0); + if (total === 0) { + return `
    no data yet — TODOS.md has no level-3 headings
    `; + } + + const rows = (["P0", "P1", "P2", "P3", "P4", "unparsed"] as const) + .filter((p) => counts[p] > 0) + .map((p) => `${p}${counts[p]}`) + .join("\n"); + + return ` + + ${rows} +
    PriorityCount
    `; +} + +// ─── HTML shell ────────────────────────────────────────────────────────── + +function renderPage(slug: string, branch: string, sections: Record): string { + const generatedAt = new Date().toLocaleString(); + return ` + + + +gstack sprint dashboard — ${escapeHtml(slug)} + + + +
    +

    gstack sprint dashboard

    +
    project: ${escapeHtml(slug)} · branch: ${escapeHtml(branch)} · generated ${escapeHtml(generatedAt)}
    +
    + +

    Pipeline board

    +
    ${sections.pipeline}
    + +
    +
    +

    Activity feed

    +
    ${sections.activity}
    +
    +
    +

    Top skills (last ${HISTORY_WINDOW_DAYS}d)

    +
    ${sections.topSkills}
    +
    +
    + +
    +
    +

    Quality scores (last ${HISTORY_WINDOW_DAYS}d)

    +
    ${sections.quality}
    +
    +
    +

    Active design docs

    +
    ${sections.designDocs}
    +
    +
    + +
    +
    +

    Release velocity (last ${HISTORY_WINDOW_DAYS}d)

    +
    ${sections.releaseVelocity}
    +
    +
    +

    TODOS backlog health

    +
    ${sections.backlog}
    +
    +
    + + +`; +} + +// ─── Open helper ───────────────────────────────────────────────────────── + +function openInBrowser(path: string) { + let cmd: string; + let args: string[]; + if (process.platform === "darwin") { + cmd = "open"; + args = [path]; + } else if (process.platform === "win32") { + // explorer.exe, not `cmd /c start` — start mishandles paths with + // special characters and pops a console window on some configs. + cmd = "explorer.exe"; + args = [path]; + } else { + cmd = "xdg-open"; + args = [path]; + } + try { + const child = spawn(cmd, args, { stdio: "ignore", detached: true }); + child.unref(); + } catch { + console.error(`Could not auto-open ${path} — open it manually.`); + } +} + +// ─── Main ──────────────────────────────────────────────────────────────── + +function main() { + const args = process.argv.slice(2).filter((a) => a !== "--"); + const command = args[0] || "out"; + const outPath = command === "out" ? args[1] || "sprint.html" : "sprint.html"; + + const slug = resolveSlug(); + let branch = "unknown"; + try { + branch = execFileSync("git", ["rev-parse", "--abbrev-ref", "HEAD"], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }).trim(); + } catch { + // leave as "unknown" + } + + const timelinePath = join(gstackHome(), "projects", slug, "timeline.jsonl"); + const timeline = readJsonlSafe(timelinePath); + + const sections = { + pipeline: buildPipelineBoard(timeline), + activity: buildActivityFeed(timeline), + topSkills: buildTopSkillsChart(slug), + quality: buildQualityScores(), + designDocs: buildActiveDesignDocs(slug), + releaseVelocity: buildReleaseVelocity(), + backlog: buildBacklogHealth(), + }; + + const html = renderPage(slug, branch, sections); + writeFileSync(outPath, html, "utf-8"); + console.log(`Wrote ${outPath}`); + + if (command === "open") { + openInBrowser(outPath); + } +} + +main(); From 8ffb72bf879b48628821a5c9e61b67cff8cc63d6 Mon Sep 17 00:00:00 2001 From: M T Date: Tue, 23 Jun 2026 11:39:32 +1000 Subject: [PATCH 2/6] docs: add gstack-sprint-dashboard screenshot for PR review Co-Authored-By: Claude Sonnet 4.6 --- .../sprint-dashboard-2026-06-23.png | Bin 0 -> 187623 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/screenshots/sprint-dashboard-2026-06-23.png diff --git a/docs/screenshots/sprint-dashboard-2026-06-23.png b/docs/screenshots/sprint-dashboard-2026-06-23.png new file mode 100644 index 0000000000000000000000000000000000000000..21339e4d41b3b6db122cb0c5745321e28c0bb946 GIT binary patch literal 187623 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 literal 0 HcmV?d00001 From ad41757b2ccade0f161352618f082f1f9eda89ae Mon Sep 17 00:00:00 2001 From: M T Date: Tue, 23 Jun 2026 11:52:49 +1000 Subject: [PATCH 3/6] feat: header stats bar + full stage-checklist pipeline board MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Header stats: current version, in-flight branch count, ships this month, avg days/release, P1 backlog open, open decisions — all derived from existing state (VERSION, CHANGELOG.md, TODOS.md, decisions.active.json via gstack-decision-search). Pipeline board: replaces the single "latest stage" badge with all 7 stages as columns (office-hours/spec/plan-review/implement/review/ ship/canary), ticking every stage a branch's history has passed through, not just the latest. Canary added as a stage after ship. Shared computeBranchStageData/getChangelogVersions/getBacklogCounts helpers so the header stats and the existing widgets parse each source file once, not twice. Co-Authored-By: Claude Sonnet 4.6 --- bin/gstack-sprint-dashboard | 275 ++++++++++++++++++++++++++++-------- 1 file changed, 216 insertions(+), 59 deletions(-) diff --git a/bin/gstack-sprint-dashboard b/bin/gstack-sprint-dashboard index 78a342668..c75a75969 100755 --- a/bin/gstack-sprint-dashboard +++ b/bin/gstack-sprint-dashboard @@ -93,6 +93,74 @@ function escapeHtml(s: string): string { .replace(/"/g, """); } +interface ChangelogVersion { + version: string; + date: string; +} + +// Shared by Release Velocity and the header stats bar — parsed once. +function getChangelogVersions(): ChangelogVersion[] { + const changelogPath = join(process.cwd(), "CHANGELOG.md"); + if (!existsSync(changelogPath)) return []; + const changelog = readFileSync(changelogPath, "utf-8"); + const versionHeadingRe = /^## \[(\d+\.\d+\.\d+\.\d+)\] - (\d{4}-\d{2}-\d{2})/gm; + const versions: ChangelogVersion[] = []; + let m: RegExpExecArray | null; + while ((m = versionHeadingRe.exec(changelog)) !== null) { + versions.push({ version: m[1], date: m[2] }); + } + return versions; +} + +interface BacklogCounts { + P0: number; + P1: number; + P2: number; + P3: number; + P4: number; + unparsed: number; +} + +// Shared by the TODOS backlog-health widget and the header stats bar. +function getBacklogCounts(): BacklogCounts | null { + const todosPath = join(process.cwd(), "TODOS.md"); + if (!existsSync(todosPath)) return null; + const todos = readFileSync(todosPath, "utf-8"); + const headingRe = /^### (.+)$/gm; + const counts: BacklogCounts = { P0: 0, P1: 0, P2: 0, P3: 0, P4: 0, unparsed: 0 }; + let m: RegExpExecArray | null; + while ((m = headingRe.exec(todos)) !== null) { + const pm = m[1].match(/^(P[0-4]):/); + if (pm) counts[pm[1] as keyof BacklogCounts]++; + else counts.unparsed++; + } + return counts; +} + +// Best-effort: shells out to the sibling gstack-decision-search binary rather +// than re-implementing the active-decisions snapshot format. Returns null +// (renders "—") if the binary is missing, errors, or returns unparseable +// output — open decisions is a "nice to have" stat, never a hard dependency. +function getOpenDecisionsCount(): number | null { + try { + const out = execFileSync(join(import.meta.dir, "gstack-decision-search"), ["--json"], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }); + const rows = JSON.parse(out || "[]"); + return Array.isArray(rows) ? rows.length : null; + } catch { + return null; + } +} + +function getCurrentVersion(): string | null { + const versionPath = join(process.cwd(), "VERSION"); + if (!existsSync(versionPath)) return null; + const v = readFileSync(versionPath, "utf-8").trim(); + return v || null; +} + // ─── Widget: Pipeline board ──────────────────────────────────────────────── const SKILL_TO_STAGE: Record = { @@ -112,12 +180,66 @@ const SKILL_TO_STAGE: Record = { investigate: "implement", ship: "ship", "land-and-deploy": "ship", + canary: "canary", }; +// Ordered left-to-right in the pipeline board grid. +const STAGES: { id: string; label: string }[] = [ + { id: "office-hours", label: "OH" }, + { id: "spec", label: "Spec" }, + { id: "plan-review", label: "Plan" }, + { id: "implement", label: "Impl" }, + { id: "review", label: "Review" }, + { id: "ship", label: "Ship" }, + { id: "canary", label: "Canary" }, +]; + function stageForSkill(skill: string): string { return SKILL_TO_STAGE[skill] || "implement"; } +interface BranchStageData { + branch: string; + stagesReached: Set; + latestStage: string | null; + latestEntry: Record | null; +} + +// Shared by the pipeline board and the header stats bar — computed once so +// both widgets agree on what "in-flight" means and don't re-walk the +// timeline/git-branch list twice. +function computeBranchStageData(timeline: Record[]): BranchStageData[] { + let branches: string[] = []; + try { + const out = execFileSync("git", ["branch", "--format=%(refname:short)"], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }); + branches = out.split("\n").map((l) => l.trim()).filter(Boolean); + } catch { + branches = []; + } + + const entriesByBranch = new Map[]>(); + for (const entry of timeline) { + if (entry.event !== "completed" || !entry.branch || !entry.ts || !entry.skill) continue; + const list = entriesByBranch.get(entry.branch) || []; + list.push(entry); + entriesByBranch.set(entry.branch, list); + } + + return branches.map((branch) => { + const entries = entriesByBranch.get(branch) || []; + const stagesReached = new Set(entries.map((e) => stageForSkill(e.skill))); + let latestEntry: Record | null = null; + for (const e of entries) { + if (!latestEntry || new Date(e.ts).getTime() > new Date(latestEntry.ts).getTime()) latestEntry = e; + } + const latestStage = latestEntry ? stageForSkill(latestEntry.skill) : null; + return { branch, stagesReached, latestStage, latestEntry }; + }); +} + interface PrBadge { number: number; state: string; @@ -184,47 +306,31 @@ function resolveDefaultBranch(): string | null { } } -function buildPipelineBoard(timeline: Record[]): string { - let branches: string[] = []; - try { - const out = execFileSync("git", ["branch", "--format=%(refname:short)"], { - encoding: "utf-8", - stdio: ["ignore", "pipe", "ignore"], - }); - branches = out.split("\n").map((l) => l.trim()).filter(Boolean); - } catch { - branches = []; - } - - const latestByBranch = new Map>(); - for (const entry of timeline) { - if (entry.event !== "completed" || !entry.branch || !entry.ts) continue; - const prev = latestByBranch.get(entry.branch); - if (!prev || new Date(entry.ts).getTime() > new Date(prev.ts).getTime()) { - latestByBranch.set(entry.branch, entry); - } - } - - if (branches.length === 0) { +function buildPipelineBoard(branchData: BranchStageData[]): string { + if (branchData.length === 0) { return `
    no data yet — no local git branches found
    `; } const defaultBranch = resolveDefaultBranch(); + const stageHeaders = STAGES.map((s) => `${escapeHtml(s.label)}`).join(""); - const rows = branches - .map((branch) => { - const latest = latestByBranch.get(branch); - const stage = latest ? stageForSkill(latest.skill) : "untracked"; - const lastActivity = latest - ? `${escapeHtml(latest.skill)} · ${new Date(latest.ts).toLocaleString()}` + const rows = branchData + .map(({ branch, stagesReached, latestStage, latestEntry }) => { + const lastActivity = latestEntry + ? `${escapeHtml(latestEntry.skill)} · ${new Date(latestEntry.ts).toLocaleString()}` : "—"; // The default branch is trunk, never a PR head — skip the lookup // rather than relying on owner-scoping alone to avoid a false match. const pr = branch === defaultBranch ? undefined : fetchPrBadge(branch); const prCell = pr ? `#${pr.number} ${pr.state}` : "—"; + const stageCells = STAGES.map((s) => { + if (!stagesReached.has(s.id)) return ``; + const isCurrent = s.id === latestStage; + return ``; + }).join(""); return ` - ${escapeHtml(branch)} - ${escapeHtml(stage)} + ${escapeHtml(branch)}${latestStage === null ? ' (untracked)' : ""} + ${stageCells} ${lastActivity} ${prCell} `; @@ -232,7 +338,7 @@ function buildPipelineBoard(timeline: Record[]): string { .join("\n"); return ` - + ${stageHeaders}${rows}
    BranchStageLast ActivityPR
    BranchLast ActivityPR
    `; } @@ -368,20 +474,11 @@ function buildActiveDesignDocs(slug: string): string { // ─── Widget: Release velocity ─────────────────────────────────────────────── -function buildReleaseVelocity(): string { - const changelogPath = join(process.cwd(), "CHANGELOG.md"); - if (!existsSync(changelogPath)) { +function buildReleaseVelocity(versions: ChangelogVersion[]): string { + if (versions.length === 0) { return `
    no data yet — no CHANGELOG.md in this repo
    `; } - const changelog = readFileSync(changelogPath, "utf-8"); - const versionHeadingRe = /^## \[(\d+\.\d+\.\d+\.\d+)\] - (\d{4}-\d{2}-\d{2})/gm; - const versions: { version: string; date: string }[] = []; - let m: RegExpExecArray | null; - while ((m = versionHeadingRe.exec(changelog)) !== null) { - versions.push({ version: m[1], date: m[2] }); - } - const recentVersions = versions.filter((v) => withinWindow(v.date, HISTORY_WINDOW_DAYS)); if (recentVersions.length === 0) { @@ -434,23 +531,11 @@ function buildReleaseVelocity(): string { // ─── Widget: TODOS backlog health ─────────────────────────────────────────── -function buildBacklogHealth(): string { - const todosPath = join(process.cwd(), "TODOS.md"); - if (!existsSync(todosPath)) { +function buildBacklogHealth(counts: BacklogCounts | null): string { + if (!counts) { return `
    no data yet — no TODOS.md in this repo
    `; } - const todos = readFileSync(todosPath, "utf-8"); - const headingRe = /^### (.+)$/gm; - const counts: Record = { P0: 0, P1: 0, P2: 0, P3: 0, P4: 0, unparsed: 0 }; - let m: RegExpExecArray | null; - while ((m = headingRe.exec(todos)) !== null) { - const heading = m[1]; - const pm = heading.match(/^(P[0-4]):/); - if (pm) counts[pm[1]]++; - else counts.unparsed++; - } - const total = Object.values(counts).reduce((a, b) => a + b, 0); if (total === 0) { return `
    no data yet — TODOS.md has no level-3 headings
    `; @@ -467,6 +552,55 @@ function buildBacklogHealth(): string { `; } +// ─── Widget: Header stats bar ─────────────────────────────────────────────── + +function buildHeaderStats( + branchData: BranchStageData[], + versions: ChangelogVersion[], + backlogCounts: BacklogCounts | null +): string { + const version = getCurrentVersion(); + + const inFlight = branchData.filter( + (b) => b.latestStage !== null && b.latestStage !== "ship" + ).length; + + const now = new Date(); + const shipsThisMonth = versions.filter((v) => { + const d = new Date(v.date); + return d.getFullYear() === now.getFullYear() && d.getMonth() === now.getMonth(); + }).length; + + const recentVersions = versions + .filter((v) => withinWindow(v.date, HISTORY_WINDOW_DAYS)) + .sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); + let avgDaysPerRelease: string = "—"; + if (recentVersions.length >= 2) { + const first = new Date(recentVersions[0].date).getTime(); + const last = new Date(recentVersions[recentVersions.length - 1].date).getTime(); + const spanDays = (last - first) / (24 * 60 * 60 * 1000); + avgDaysPerRelease = (spanDays / (recentVersions.length - 1)).toFixed(1); + } + + const p1Open = backlogCounts ? backlogCounts.P1 : null; + const openDecisions = getOpenDecisionsCount(); + + const stat = (label: string, value: string | number | null) => + `
    +
    ${value === null ? "—" : escapeHtml(String(value))}
    +
    ${escapeHtml(label)}
    +
    `; + + return `
    + ${stat("Version", version ? `v${version}` : null)} + ${stat("In-flight", inFlight)} + ${stat("Ships this month", shipsThisMonth)} + ${stat("Avg days/release", avgDaysPerRelease === "—" ? null : avgDaysPerRelease)} + ${stat("P1 open", p1Open)} + ${stat("Open decisions", openDecisions)} +
    `; +} + // ─── HTML shell ────────────────────────────────────────────────────────── function renderPage(slug: string, branch: string, sections: Record): string { @@ -570,12 +704,31 @@ function renderPage(slug: string, branch: string, sections: Record

    gstack sprint dashboard

    project: ${escapeHtml(slug)} · branch: ${escapeHtml(branch)} · generated ${escapeHtml(generatedAt)}
    + ${sections.headerStats}

    Pipeline board

    @@ -663,15 +816,19 @@ function main() { const timelinePath = join(gstackHome(), "projects", slug, "timeline.jsonl"); const timeline = readJsonlSafe(timelinePath); + const branchData = computeBranchStageData(timeline); + const versions = getChangelogVersions(); + const backlogCounts = getBacklogCounts(); const sections = { - pipeline: buildPipelineBoard(timeline), + headerStats: buildHeaderStats(branchData, versions, backlogCounts), + pipeline: buildPipelineBoard(branchData), activity: buildActivityFeed(timeline), topSkills: buildTopSkillsChart(slug), quality: buildQualityScores(), designDocs: buildActiveDesignDocs(slug), - releaseVelocity: buildReleaseVelocity(), - backlog: buildBacklogHealth(), + releaseVelocity: buildReleaseVelocity(versions), + backlog: buildBacklogHealth(backlogCounts), }; const html = renderPage(slug, branch, sections); From cd518288f913c08f0a618056330d96de77ffbd99 Mon Sep 17 00:00:00 2001 From: M T Date: Tue, 23 Jun 2026 11:53:00 +1000 Subject: [PATCH 4/6] docs: update screenshot for header stats + pipeline redesign Co-Authored-By: Claude Sonnet 4.6 --- .../sprint-dashboard-2026-06-23.png | Bin 187623 -> 200106 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/screenshots/sprint-dashboard-2026-06-23.png b/docs/screenshots/sprint-dashboard-2026-06-23.png index 21339e4d41b3b6db122cb0c5745321e28c0bb946..052e64a22dff18cfd1603965d41f15e31f5d7ae5 100644 GIT binary patch literal 200106 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�LF+dk=O+IBy@>R*KP0)(5yc^_X#Z~7 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 From 8d396294a98e0dae68a9b9aa47954e2a779c604d Mon Sep 17 00:00:00 2001 From: M T Date: Tue, 23 Jun 2026 11:57:39 +1000 Subject: [PATCH 5/6] fix: WSL auto-open crash + Windows-interop handoff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit spawn()'s ENOENT for a missing binary surfaces via the async 'error' event, not a synchronous throw — the prior try/catch never caught it, crashing the whole process when xdg-open isn't installed (the normal case on WSL, which has no desktop environment). WSL also now hands off to explorer.exe via WSL interop (wslpath -w to get a Windows-style path) instead of trying xdg-open at all. Verified against a real WSL2 box: the prior code crashed on `-- open`, this one opens the file in the user's actual Windows browser. Co-Authored-By: Claude Sonnet 4.6 --- bin/gstack-sprint-dashboard | 42 ++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/bin/gstack-sprint-dashboard b/bin/gstack-sprint-dashboard index c75a75969..460ee6c25 100755 --- a/bin/gstack-sprint-dashboard +++ b/bin/gstack-sprint-dashboard @@ -18,7 +18,7 @@ */ import { existsSync, readFileSync, writeFileSync, statSync, readdirSync } from "fs"; -import { join, basename } from "path"; +import { join, basename, resolve } from "path"; import { execFileSync, spawn } from "child_process"; import { homedir } from "os"; @@ -773,26 +773,58 @@ function renderPage(slug: string, branch: string, sections: Record { + console.error(`Could not auto-open ${absPath} automatically — open it manually.`); + }); child.unref(); } catch { - console.error(`Could not auto-open ${path} — open it manually.`); + console.error(`Could not auto-open ${absPath} automatically — open it manually.`); } } From 30e9b249e752f925c85992d8f816be41ef874e6f Mon Sep 17 00:00:00 2001 From: M T Date: Fri, 26 Jun 2026 10:08:33 +1000 Subject: [PATCH 6/6] =?UTF-8?q?feat:=20dashboard=20skill=20=E2=80=94=20com?= =?UTF-8?q?pact=20terminal=20+=20full=20+=20web=20modes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extracts the monolithic sprint dashboard into lib/dashboard-data.ts and lib/dashboard-cli.ts, adds terminal-first output (compact default, --full), and keeps --web for HTML. Adds /dashboard skill, routing rules, tests, and proactive suggestions. Co-Authored-By: Claude Sonnet 4.6 --- AGENTS.md | 1 + CLAUDE.md | 1 + TODOS.md | 20 + bin/gstack-dash-oneliner | 17 + bin/gstack-sprint-dashboard | 903 +++++++---------------------- dashboard/SKILL.md | 570 ++++++++++++++++++ dashboard/SKILL.md.tmpl | 60 ++ docs/skills.md | 1 + gstack/llms.txt | 1 + lib/dashboard-cli.ts | 296 ++++++++++ lib/dashboard-data.ts | 505 ++++++++++++++++ scripts/proactive-suggestions.json | 5 + test/dashboard-cli.test.ts | 257 ++++++++ test/dashboard-data.test.ts | 346 +++++++++++ 14 files changed, 2292 insertions(+), 691 deletions(-) create mode 100755 bin/gstack-dash-oneliner create mode 100644 dashboard/SKILL.md create mode 100644 dashboard/SKILL.md.tmpl create mode 100644 lib/dashboard-cli.ts create mode 100644 lib/dashboard-data.ts create mode 100644 test/dashboard-cli.test.ts create mode 100644 test/dashboard-data.test.ts diff --git a/AGENTS.md b/AGENTS.md index 69651022d..a64ba1a9b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -60,6 +60,7 @@ Invoke them by name (e.g., `/office-hours`). | `/context-restore` | Resume from a saved context, even across Conductor workspaces. | | `/learn` | Manage what gstack learned across sessions. | | `/retro` | Weekly retro with per-person breakdowns and shipping streaks. | +| `/dashboard` | Sprint board: compact terminal (default), `--full` all sections, `--web` HTML in browser. | | `/health` | Code quality dashboard (type checker, linter, tests, dead code). | | `/benchmark` | Performance regression detection (page load, Core Web Vitals). | | `/benchmark-models` | Cross-model benchmark for skills (Claude, GPT, Gemini side-by-side). | diff --git a/CLAUDE.md b/CLAUDE.md index 984844902..698a2dae6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -953,6 +953,7 @@ Key routing rules: - Ship/deploy/PR → invoke /ship or /land-and-deploy - Save progress → invoke /context-save - Resume context → invoke /context-restore +- Sprint status / project dashboard → invoke /dashboard ## Cross-session decision memory diff --git a/TODOS.md b/TODOS.md index f9753970b..57ba63621 100644 --- a/TODOS.md +++ b/TODOS.md @@ -2439,6 +2439,26 @@ building once users hit multi-diagram docs; wedge perf is fine without it. **Effort:** S (human ~1d, CC ~30min). **Depends on:** diagram engine wedge shipping (lib/diagram-render bundle versioning). +### P3: Fix loadVelocity sparkline to show meaningful commit heights + +**What:** `loadVelocity()` in `lib/dashboard-data.ts` counts commits per version by +matching `git log --pretty=format:%s` against `/^v\d+\.\d+\.\d+\.\d+ /`. In gstack's +commit style, merge commits have this prefix (one per release), so every version always +gets `commitCount=1`. The sparkline in `renderFull` renders all uniform full blocks (█) +with no height variation. + +**Why:** The sparkline is meant to show release weight (bigger releases = taller bar). +With all heights equal it's visual noise, not signal. + +**Fix:** Use `git log --oneline ..` per version pair to count actual +commits per release, or use `git tag -l` to detect release tags and count commits +between them. Either approach produces meaningful height variation. + +**Context:** Surfaced in /plan-eng-review on 2026-06-26. Deferred because the sparkline +renders without crashing and the version list below it is still correct. + +**Effort:** S (human ~2h, CC ~10min). **Depends on:** None. + ### P3: Dedupe the make-pdf e2e gate-test harness **What:** Five e2e files (`combined-gate`, `emoji-gate`, `diagram-gate`, diff --git a/bin/gstack-dash-oneliner b/bin/gstack-dash-oneliner new file mode 100755 index 000000000..cd058e43b --- /dev/null +++ b/bin/gstack-dash-oneliner @@ -0,0 +1,17 @@ +#!/usr/bin/env bun +/** + * gstack-dash-oneliner — fast one-line project status for the PreToolUse hook. + * + * Disk-only (no gh, no decision-search). Exits 0 always — a missing project + * directory or malformed data silently produces no output rather than blocking. + */ + +import { buildOnelinerData } from "../lib/dashboard-data"; +import { renderOneliner } from "../lib/dashboard-cli"; + +try { + const data = buildOnelinerData(); + process.stdout.write(renderOneliner(data) + "\n"); +} catch { + // silent — best-effort, never block a skill +} diff --git a/bin/gstack-sprint-dashboard b/bin/gstack-sprint-dashboard index 460ee6c25..7b53afc37 100755 --- a/bin/gstack-sprint-dashboard +++ b/bin/gstack-sprint-dashboard @@ -1,89 +1,27 @@ #!/usr/bin/env bun /** - * gstack-sprint-dashboard — in-flight branch/stage visibility. - * - * Read-only. Generates a self-contained HTML sprint board from gstack's own - * on-disk state (timeline.jsonl, analytics/*.jsonl, CHANGELOG.md, TODOS.md, - * git, gh pr list) — no new instrumentation, no new user input. + * gstack-sprint-dashboard — sprint board in three output modes. * * Usage: - * gstack-sprint-dashboard # write ./sprint.html, don't open - * gstack-sprint-dashboard open # write ./sprint.html, open it - * gstack-sprint-dashboard out # write to , don't open + * gstack-sprint-dashboard # compact terminal (default) + * gstack-sprint-dashboard --compact # compact terminal (explicit) + * gstack-sprint-dashboard --full # full terminal view + * gstack-sprint-dashboard --web # write sprint.html + open in browser + * gstack-sprint-dashboard --out # write HTML to (implies --web) + * gstack-sprint-dashboard --slug # override project slug * - * A leading "--" (e.g. `bun run bin/gstack-sprint-dashboard -- open`) is - * stripped before parsing, so both invocation styles work. - * - * Design doc: ~/.gstack/projects/garrytan-gstack/mst-feature-ui-workflow-design-20260623-105354.md + * Backwards-compat positional args (mapped to --web): + * gstack-sprint-dashboard open # alias for --web + * gstack-sprint-dashboard out # alias for --web --out */ -import { existsSync, readFileSync, writeFileSync, statSync, readdirSync } from "fs"; -import { join, basename, resolve } from "path"; +import { writeFileSync, readFileSync } from "fs"; +import { resolve } from "path"; import { execFileSync, spawn } from "child_process"; -import { homedir } from "os"; +import { buildDashboard } from "../lib/dashboard-data"; +import { renderCompact, renderFull } from "../lib/dashboard-cli"; -const HISTORY_WINDOW_DAYS = 30; -const ACTIVITY_FEED_LIMIT = 20; -const DESIGN_DOCS_LIMIT = 10; - -// ─── Slug + paths ────────────────────────────────────────────────────────── - -function resolveSlug(): string { - const scriptDir = import.meta.dir; - const slugBin = join(scriptDir, "gstack-slug"); - try { - let output: string; - if (process.platform === "win32") { - // Windows: gstack-slug is a bash script; run it via bash with a - // forward-slash path (import.meta.dir gives backslashes on Windows, - // which bash on Windows chokes on). - const forwardSlashPath = slugBin.replace(/\\/g, "/"); - output = execFileSync("bash", [forwardSlashPath], { - encoding: "utf-8", - stdio: ["ignore", "pipe", "ignore"], - }); - } else { - output = execFileSync(slugBin, [], { - encoding: "utf-8", - stdio: ["ignore", "pipe", "ignore"], - }); - } - const match = output.match(/^SLUG=(.*)$/m); - if (match && match[1]) return match[1].trim(); - } catch { - // fall through to basename fallback - } - return basename(process.cwd()).replace(/[^a-zA-Z0-9._-]/g, ""); -} - -function gstackHome(): string { - return process.env.GSTACK_HOME || join(homedir(), ".gstack"); -} - -// ─── Generic helpers ─────────────────────────────────────────────────────── - -function readJsonlSafe(path: string): Record[] { - if (!existsSync(path)) return []; - const lines = readFileSync(path, "utf-8").split("\n"); - const out: Record[] = []; - for (const line of lines) { - const trimmed = line.trim(); - if (!trimmed) continue; - try { - out.push(JSON.parse(trimmed)); - } catch { - // skip unparseable/torn lines (concurrent Conductor writes) — not fatal - } - } - return out; -} - -function withinWindow(ts: string | undefined, days: number): boolean { - if (!ts) return false; - const t = new Date(ts).getTime(); - if (Number.isNaN(t)) return false; - return Date.now() - t <= days * 24 * 60 * 60 * 1000; -} +// ─── HTML helpers (web mode only) ─────────────────────────────────────────── function escapeHtml(s: string): string { return s @@ -93,518 +31,151 @@ function escapeHtml(s: string): string { .replace(/"/g, """); } -interface ChangelogVersion { - version: string; - date: string; +function stageIcon(reached: boolean, isCurrent: boolean): string { + if (!reached) return ""; + return ``; } -// Shared by Release Velocity and the header stats bar — parsed once. -function getChangelogVersions(): ChangelogVersion[] { - const changelogPath = join(process.cwd(), "CHANGELOG.md"); - if (!existsSync(changelogPath)) return []; - const changelog = readFileSync(changelogPath, "utf-8"); - const versionHeadingRe = /^## \[(\d+\.\d+\.\d+\.\d+)\] - (\d{4}-\d{2}-\d{2})/gm; - const versions: ChangelogVersion[] = []; - let m: RegExpExecArray | null; - while ((m = versionHeadingRe.exec(changelog)) !== null) { - versions.push({ version: m[1], date: m[2] }); - } - return versions; -} +function renderHtml(data: ReturnType): string { + const { slug, branch, version, generatedAt, inFlightCount, features, activity, + velocity, topSkills, quality, designDocs, backlog, openDecisions, prMap } = data; -interface BacklogCounts { - P0: number; - P1: number; - P2: number; - P3: number; - P4: number; - unparsed: number; -} - -// Shared by the TODOS backlog-health widget and the header stats bar. -function getBacklogCounts(): BacklogCounts | null { - const todosPath = join(process.cwd(), "TODOS.md"); - if (!existsSync(todosPath)) return null; - const todos = readFileSync(todosPath, "utf-8"); - const headingRe = /^### (.+)$/gm; - const counts: BacklogCounts = { P0: 0, P1: 0, P2: 0, P3: 0, P4: 0, unparsed: 0 }; - let m: RegExpExecArray | null; - while ((m = headingRe.exec(todos)) !== null) { - const pm = m[1].match(/^(P[0-4]):/); - if (pm) counts[pm[1] as keyof BacklogCounts]++; - else counts.unparsed++; - } - return counts; -} - -// Best-effort: shells out to the sibling gstack-decision-search binary rather -// than re-implementing the active-decisions snapshot format. Returns null -// (renders "—") if the binary is missing, errors, or returns unparseable -// output — open decisions is a "nice to have" stat, never a hard dependency. -function getOpenDecisionsCount(): number | null { - try { - const out = execFileSync(join(import.meta.dir, "gstack-decision-search"), ["--json"], { - encoding: "utf-8", - stdio: ["ignore", "pipe", "ignore"], - }); - const rows = JSON.parse(out || "[]"); - return Array.isArray(rows) ? rows.length : null; - } catch { - return null; - } -} - -function getCurrentVersion(): string | null { - const versionPath = join(process.cwd(), "VERSION"); - if (!existsSync(versionPath)) return null; - const v = readFileSync(versionPath, "utf-8").trim(); - return v || null; -} - -// ─── Widget: Pipeline board ──────────────────────────────────────────────── - -const SKILL_TO_STAGE: Record = { - "office-hours": "office-hours", - spec: "spec", - "plan-ceo-review": "plan-review", - "plan-eng-review": "plan-review", - "plan-design-review": "plan-review", - "plan-devex-review": "plan-review", - autoplan: "plan-review", - review: "review", - codex: "review", - "design-review": "review", - "devex-review": "review", - qa: "implement", - "qa-only": "implement", - investigate: "implement", - ship: "ship", - "land-and-deploy": "ship", - canary: "canary", -}; - -// Ordered left-to-right in the pipeline board grid. -const STAGES: { id: string; label: string }[] = [ - { id: "office-hours", label: "OH" }, - { id: "spec", label: "Spec" }, - { id: "plan-review", label: "Plan" }, - { id: "implement", label: "Impl" }, - { id: "review", label: "Review" }, - { id: "ship", label: "Ship" }, - { id: "canary", label: "Canary" }, -]; - -function stageForSkill(skill: string): string { - return SKILL_TO_STAGE[skill] || "implement"; -} - -interface BranchStageData { - branch: string; - stagesReached: Set; - latestStage: string | null; - latestEntry: Record | null; -} - -// Shared by the pipeline board and the header stats bar — computed once so -// both widgets agree on what "in-flight" means and don't re-walk the -// timeline/git-branch list twice. -function computeBranchStageData(timeline: Record[]): BranchStageData[] { - let branches: string[] = []; - try { - const out = execFileSync("git", ["branch", "--format=%(refname:short)"], { - encoding: "utf-8", - stdio: ["ignore", "pipe", "ignore"], - }); - branches = out.split("\n").map((l) => l.trim()).filter(Boolean); - } catch { - branches = []; - } - - const entriesByBranch = new Map[]>(); - for (const entry of timeline) { - if (entry.event !== "completed" || !entry.branch || !entry.ts || !entry.skill) continue; - const list = entriesByBranch.get(entry.branch) || []; - list.push(entry); - entriesByBranch.set(entry.branch, list); - } - - return branches.map((branch) => { - const entries = entriesByBranch.get(branch) || []; - const stagesReached = new Set(entries.map((e) => stageForSkill(e.skill))); - let latestEntry: Record | null = null; - for (const e of entries) { - if (!latestEntry || new Date(e.ts).getTime() > new Date(latestEntry.ts).getTime()) latestEntry = e; - } - const latestStage = latestEntry ? stageForSkill(latestEntry.skill) : null; - return { branch, stagesReached, latestStage, latestEntry }; - }); -} - -interface PrBadge { - number: number; - state: string; -} - -let cachedGhUser: string | null | undefined; // undefined = not resolved yet - -// Owner-scoped: `gh pr list --head ` alone matches by branch name -// across the WHOLE repo, including every fork's PRs. A repo with hundreds of -// open community PRs has multiple unrelated forks sharing common branch names -// (verified: 3 separate fork PRs all named "main" in this repo) — a bare -// branch-name match silently shows someone else's PR badge on your own -// branch. Scoping to ":" via one cached `gh api user` -// call disambiguates correctly. -function resolveGhUser(): string | null { - if (cachedGhUser !== undefined) return cachedGhUser; - try { - cachedGhUser = execFileSync("gh", ["api", "user", "--jq", ".login"], { - encoding: "utf-8", - stdio: ["ignore", "pipe", "ignore"], - }).trim(); - } catch { - cachedGhUser = null; // not authenticated, or gh unavailable - } - return cachedGhUser; -} - -function fetchPrBadge(branch: string): PrBadge | undefined { - const user = resolveGhUser(); - const head = user ? `${user}:${branch}` : branch; - try { - const out = execFileSync( - "gh", - ["pr", "list", "--head", head, "--json", "number,state", "--limit", "1"], - { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] } - ); - const prs = JSON.parse(out) as { number: number; state: string }[]; - return prs[0] ? { number: prs[0].number, state: prs[0].state } : undefined; - } catch { - // gh not installed, not authenticated, or errored — best-effort, no PR badge - return undefined; - } -} - -// The default branch (main/master) is the trunk, never a PR head — skip the -// PR lookup for it entirely rather than relying on owner-scoping alone. -function resolveDefaultBranch(): string | null { - try { - return execFileSync( - "gh", - ["repo", "view", "--json", "defaultBranchRef", "--jq", ".defaultBranchRef.name"], - { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] } - ).trim(); - } catch { - try { - const ref = execFileSync("git", ["symbolic-ref", "refs/remotes/origin/HEAD"], { - encoding: "utf-8", - stdio: ["ignore", "pipe", "ignore"], - }).trim(); - return ref.replace(/^refs\/remotes\/origin\//, ""); - } catch { - return null; - } - } -} - -function buildPipelineBoard(branchData: BranchStageData[]): string { - if (branchData.length === 0) { - return `
    no data yet — no local git branches found
    `; - } - - const defaultBranch = resolveDefaultBranch(); - const stageHeaders = STAGES.map((s) => `${escapeHtml(s.label)}`).join(""); - - const rows = branchData - .map(({ branch, stagesReached, latestStage, latestEntry }) => { - const lastActivity = latestEntry - ? `${escapeHtml(latestEntry.skill)} · ${new Date(latestEntry.ts).toLocaleString()}` - : "—"; - // The default branch is trunk, never a PR head — skip the lookup - // rather than relying on owner-scoping alone to avoid a false match. - const pr = branch === defaultBranch ? undefined : fetchPrBadge(branch); - const prCell = pr ? `#${pr.number} ${pr.state}` : "—"; - const stageCells = STAGES.map((s) => { - if (!stagesReached.has(s.id)) return ``; - const isCurrent = s.id === latestStage; - return ``; - }).join(""); - return ` - ${escapeHtml(branch)}${latestStage === null ? ' (untracked)' : ""} - ${stageCells} - ${lastActivity} - ${prCell} - `; - }) - .join("\n"); - - return ` - ${stageHeaders} - ${rows} -
    BranchLast ActivityPR
    `; -} - -// ─── Widget: Activity feed ───────────────────────────────────────────────── - -function buildActivityFeed(timeline: Record[]): string { - const events = timeline - .filter((e) => e.ts && e.skill) - .sort((a, b) => new Date(b.ts).getTime() - new Date(a.ts).getTime()) - .slice(0, ACTIVITY_FEED_LIMIT); - - if (events.length === 0) { - return `
    no data yet — timeline.jsonl has no events
    `; - } - - const items = events - .map( - (e) => `
  • - ${new Date(e.ts).toLocaleString()} - ${escapeHtml(e.skill)} - ${escapeHtml(e.branch || "unknown")} - ${escapeHtml(e.event || "")} -
  • ` - ) - .join("\n"); - - return `
      ${items}
    `; -} - -// ─── Widget: Top skills chart ─────────────────────────────────────────────── - -function buildTopSkillsChart(slug: string): string { - const path = join(gstackHome(), "analytics", "skill-usage.jsonl"); - const entries = readJsonlSafe(path).filter((e) => e.skill && withinWindow(e.ts, HISTORY_WINDOW_DAYS)); - - if (entries.length === 0) { - return `
    no data yet — analytics/skill-usage.jsonl has no recent entries
    `; - } - - const counts = new Map(); - for (const e of entries) counts.set(e.skill, (counts.get(e.skill) || 0) + 1); - const sorted = [...counts.entries()].sort((a, b) => b[1] - a[1]); - const max = sorted[0]?.[1] || 1; - - const bars = sorted - .map( - ([skill, count]) => `
    - ${escapeHtml(skill)} -
    - ${count} -
    ` - ) - .join("\n"); - - return `
    ${bars}
    `; -} - -// ─── Widget: Quality scores ───────────────────────────────────────────────── - -function buildQualityScores(): string { - const path = join(gstackHome(), "analytics", "spec-review.jsonl"); - const entries = readJsonlSafe(path) - .filter((e) => e.ts && withinWindow(e.ts, HISTORY_WINDOW_DAYS) && e.quality_score !== undefined) - .sort((a, b) => new Date(b.ts).getTime() - new Date(a.ts).getTime()) - .slice(0, 10); - - if (entries.length === 0) { - return `
    no data yet — analytics/spec-review.jsonl has no recent entries
    `; - } - - const rows = entries - .map( - (e) => ` - ${new Date(e.ts).toLocaleDateString()} - ${escapeHtml(e.skill || "—")} - ${e.iterations ?? "—"} - ${e.quality_score}/10 - ` - ) - .join("\n"); - - return ` - - ${rows} -
    DateSkillIterationsScore
    `; -} - -// ─── Widget: Active design docs ───────────────────────────────────────────── - -function buildActiveDesignDocs(slug: string): string { - const projectDir = join(gstackHome(), "projects", slug); - if (!existsSync(projectDir)) { - return `
    no data yet — no project directory for this repo
    `; - } - - let files: string[]; - try { - files = readdirSync(projectDir).filter((f) => /-design-.*\.md$/.test(f)); - } catch { - return `
    no data yet — could not read project directory
    `; - } - - if (files.length === 0) { - return `
    no data yet — no design docs for this project
    `; - } - - const withMtime = files.map((f) => { - const fullPath = join(projectDir, f); - let mtime = 0; - try { - mtime = statSync(fullPath).mtimeMs; - } catch { - // leave mtime at 0 - } - return { name: f, fullPath, mtime }; - }); - - withMtime.sort((a, b) => b.mtime - a.mtime); - - const items = withMtime - .slice(0, DESIGN_DOCS_LIMIT) - .map( - (f) => `
    ` - ) - .join("\n"); - - return `
      ${items}
    `; -} - -// ─── Widget: Release velocity ─────────────────────────────────────────────── - -function buildReleaseVelocity(versions: ChangelogVersion[]): string { - if (versions.length === 0) { - return `
    no data yet — no CHANGELOG.md in this repo
    `; - } - - const recentVersions = versions.filter((v) => withinWindow(v.date, HISTORY_WINDOW_DAYS)); - - if (recentVersions.length === 0) { - return `
    no data yet — no versions shipped in the last ${HISTORY_WINDOW_DAYS} days
    `; - } - - // Commits per version: PR-merge commit subjects are conventionally - // prefixed "vX.Y.Z.W " in this repo's commit log. - let subjects: string[] = []; - try { - const out = execFileSync( - "git", - ["log", `--since=${HISTORY_WINDOW_DAYS} days ago`, "--pretty=format:%s"], - { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] } - ); - subjects = out.split("\n").filter(Boolean); - } catch { - subjects = []; - } - - const commitCounts = new Map(); - for (const subject of subjects) { - const vm = subject.match(/^v(\d+\.\d+\.\d+\.\d+)\s/); - if (vm) commitCounts.set(vm[1], (commitCounts.get(vm[1]) || 0) + 1); - } - - // Chronological order, oldest first, for a left-to-right sparkline. - recentVersions.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); - const counts = recentVersions.map((v) => commitCounts.get(v.version) || 0); - const max = Math.max(1, ...counts); - const blocks = " ▁▂▃▄▅▆▇█"; - - const sparkline = recentVersions - .map((v, i) => { - const count = counts[i]; - const level = Math.min(8, Math.round((count / max) * 8)); - return `${blocks[level]}`; - }) - .join(""); - - const versionList = recentVersions - .map((v, i) => `
  • v${escapeHtml(v.version)} — ${v.date} — ${counts[i]} commit(s)
  • `) - .join("\n"); - - return `
    -
    ${sparkline}
    -
      ${versionList}
    -
    `; -} - -// ─── Widget: TODOS backlog health ─────────────────────────────────────────── - -function buildBacklogHealth(counts: BacklogCounts | null): string { - if (!counts) { - return `
    no data yet — no TODOS.md in this repo
    `; - } - - const total = Object.values(counts).reduce((a, b) => a + b, 0); - if (total === 0) { - return `
    no data yet — TODOS.md has no level-3 headings
    `; - } - - const rows = (["P0", "P1", "P2", "P3", "P4", "unparsed"] as const) - .filter((p) => counts[p] > 0) - .map((p) => `${p}${counts[p]}`) - .join("\n"); - - return ` - - ${rows} -
    PriorityCount
    `; -} - -// ─── Widget: Header stats bar ─────────────────────────────────────────────── - -function buildHeaderStats( - branchData: BranchStageData[], - versions: ChangelogVersion[], - backlogCounts: BacklogCounts | null -): string { - const version = getCurrentVersion(); - - const inFlight = branchData.filter( - (b) => b.latestStage !== null && b.latestStage !== "ship" - ).length; + // ── Stage constants for HTML ── + const STAGES = [ + { id: "office-hours", label: "OH" }, + { id: "spec", label: "Spec" }, + { id: "plan-review", label: "Plan" }, + { id: "implement", label: "Impl" }, + { id: "review", label: "Review" }, + { id: "ship", label: "Ship" }, + { id: "canary", label: "Canary" }, + ] as const; const now = new Date(); - const shipsThisMonth = versions.filter((v) => { - const d = new Date(v.date); - return d.getFullYear() === now.getFullYear() && d.getMonth() === now.getMonth(); - }).length; + const HISTORY_DAYS = 30; - const recentVersions = versions - .filter((v) => withinWindow(v.date, HISTORY_WINDOW_DAYS)) - .sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); - let avgDaysPerRelease: string = "—"; - if (recentVersions.length >= 2) { - const first = new Date(recentVersions[0].date).getTime(); - const last = new Date(recentVersions[recentVersions.length - 1].date).getTime(); - const spanDays = (last - first) / (24 * 60 * 60 * 1000); - avgDaysPerRelease = (spanDays / (recentVersions.length - 1)).toFixed(1); - } - - const p1Open = backlogCounts ? backlogCounts.P1 : null; - const openDecisions = getOpenDecisionsCount(); - - const stat = (label: string, value: string | number | null) => - `
    -
    ${value === null ? "—" : escapeHtml(String(value))}
    -
    ${escapeHtml(label)}
    -
    `; - - return `
    - ${stat("Version", version ? `v${version}` : null)} - ${stat("In-flight", inFlight)} - ${stat("Ships this month", shipsThisMonth)} - ${stat("Avg days/release", avgDaysPerRelease === "—" ? null : avgDaysPerRelease)} - ${stat("P1 open", p1Open)} - ${stat("Open decisions", openDecisions)} + // ── Header stats ── + const statsBar = `
    + ${[ + ["Version", version ? `v${version}` : null], + ["In-flight", inFlightCount], + ["Ships this month", velocity.releasesThisMonth], + ["Avg days/release", velocity.avgDaysBetween !== null ? velocity.avgDaysBetween.toFixed(1) : null], + ["P1 open", backlog?.P1 ?? null], + ["Open decisions", openDecisions], + ].map(([label, value]) => + `
    +
    ${value === null || value === undefined ? "—" : escapeHtml(String(value))}
    +
    ${escapeHtml(String(label))}
    +
    ` + ).join("")}
    `; -} -// ─── HTML shell ────────────────────────────────────────────────────────── + // ── Pipeline ── + const stageHeaders = STAGES.map((s) => `${s.label}`).join(""); + const pipelineRows = features.map((f) => { + const stageCells = STAGES.map((s) => { + const reached = f.stagesReached.has(s.id as any); + const isCurrent = f.latestStage === s.id; + return `${stageIcon(reached, isCurrent)}`; + }).join(""); + const pr = prMap.get(f.branch); + const prCell = pr + ? `#${pr.number} ${pr.state}` + : "—"; + const lastAct = f.latestTs + ? `${escapeHtml(f.latestSkill ?? "")} · ${new Date(f.latestTs).toLocaleString()}` + : "—"; + return ` + ${escapeHtml(f.branch)}${f.latestStage === null ? ' (untracked)' : ""} + ${stageCells} + ${lastAct} + ${prCell} + `; + }).join("\n"); + + const pipeline = features.length === 0 + ? `
    no data yet — no local git branches found
    ` + : ` + ${stageHeaders} + ${pipelineRows} +
    BranchLast ActivityPR
    `; + + // ── Activity feed ── + const activityHtml = activity.length === 0 + ? `
    no data yet
    ` + : `
      ${activity.map((e) => + `
    • + ${new Date(e.ts).toLocaleString()} + ${escapeHtml(e.skill)} + ${escapeHtml(e.branch)} + ${escapeHtml(e.event)} +
    • `).join("\n")}
    `; + + // ── Top skills ── + const topSkillsHtml = topSkills.length === 0 + ? `
    no data yet
    ` + : (() => { + const max = topSkills[0]?.count || 1; + return `
    ${topSkills.map((s) => + `
    + ${escapeHtml(s.skill)} +
    + ${s.count} +
    `).join("\n")}
    `; + })(); + + // ── Quality ── + const qualityHtml = quality.length === 0 + ? `
    no data yet
    ` + : ` + + ${quality.map((e) => + ` + + + + + `).join("\n")} +
    DateSkillIterationsScore
    ${new Date(e.ts).toLocaleDateString()}${escapeHtml(e.skill)}${e.iterations}${e.score}/10
    `; + + // ── Design docs ── + const designDocsHtml = designDocs.length === 0 + ? `
    no data yet
    ` + : `
      ${designDocs.map((d) => + `
    • + ${escapeHtml(d.name)} + ${d.mtime ? new Date(d.mtime).toLocaleDateString() : "—"} +
    • `).join("\n")}
    `; + + // ── Release velocity ── + const releaseVelocityHtml = (() => { + const recent = velocity.recentVersions; + if (recent.length === 0) return `
    no releases in the last ${HISTORY_DAYS} days
    `; + const blocks = " ▁▂▃▄▅▆▇█"; + const max = Math.max(1, ...recent.map((v) => v.commitCount)); + const sparkline = recent + .map((v) => `${blocks[Math.min(8, Math.round((v.commitCount / max) * 8))]}`) + .join(""); + const versionList = recent + .map((v) => `
  • v${escapeHtml(v.version)} — ${v.date} — ${v.commitCount} commit(s)
  • `) + .join("\n"); + return `
    ${sparkline}
      ${versionList}
    `; + })(); + + // ── Backlog ── + const backlogHtml = !backlog + ? `
    no TODOS.md found
    ` + : (() => { + const total = Object.values(backlog).reduce((a, b) => a + b, 0); + if (total === 0) return `
    no level-3 headings in TODOS.md
    `; + const rows = (["P0", "P1", "P2", "P3", "P4", "unparsed"] as const) + .filter((p) => backlog[p] > 0) + .map((p) => `${p}${backlog[p]}`) + .join("\n"); + return `${rows}
    PriorityCount
    `; + })(); -function renderPage(slug: string, branch: string, sections: Record): string { - const generatedAt = new Date().toLocaleString(); return ` @@ -612,7 +183,7 @@ function renderPage(slug: string, branch: string, sections: Recordgstack sprint dashboard — ${escapeHtml(slug)}

    gstack sprint dashboard

    -
    project: ${escapeHtml(slug)} · branch: ${escapeHtml(branch)} · generated ${escapeHtml(generatedAt)}
    - ${sections.headerStats} +
    project: ${escapeHtml(slug)} · branch: ${escapeHtml(branch)} · generated ${escapeHtml(generatedAt.toLocaleString())}
    + ${statsBar}

    Pipeline board

    -
    ${sections.pipeline}
    +
    ${pipeline}

    Activity feed

    -
    ${sections.activity}
    +
    ${activityHtml}
    -

    Top skills (last ${HISTORY_WINDOW_DAYS}d)

    -
    ${sections.topSkills}
    +

    Top skills (last ${HISTORY_DAYS}d)

    +
    ${topSkillsHtml}
    -

    Quality scores (last ${HISTORY_WINDOW_DAYS}d)

    -
    ${sections.quality}
    +

    Quality scores (last ${HISTORY_DAYS}d)

    +
    ${qualityHtml}

    Active design docs

    -
    ${sections.designDocs}
    +
    ${designDocsHtml}
    -

    Release velocity (last ${HISTORY_WINDOW_DAYS}d)

    -
    ${sections.releaseVelocity}
    +

    Release velocity (last ${HISTORY_DAYS}d)

    +
    ${releaseVelocityHtml}

    TODOS backlog health

    -
    ${sections.backlog}
    +
    ${backlogHtml}
    @@ -771,7 +305,7 @@ function renderPage(slug: string, branch: string, sections: Record`; } -// ─── Open helper ───────────────────────────────────────────────────────── +// ─── Open helper ───────────────────────────────────────────────────────────── function isWsl(): boolean { if (process.platform !== "linux") return false; @@ -790,15 +324,9 @@ function openInBrowser(path: string) { cmd = "open"; args = [absPath]; } else if (process.platform === "win32") { - // explorer.exe, not `cmd /c start` — start mishandles paths with - // special characters and pops a console window on some configs. cmd = "explorer.exe"; args = [absPath]; } else if (isWsl()) { - // WSL has no desktop environment / MIME handlers on the Linux side — - // xdg-open is typically not even installed. Hand off to the Windows - // side via WSL interop instead. explorer.exe needs a Windows-style - // path (C:\...), not the WSL /mnt/c/... or native Linux path. cmd = "explorer.exe"; try { const winPath = execFileSync("wslpath", ["-w", absPath], { @@ -815,61 +343,54 @@ function openInBrowser(path: string) { } try { const child = spawn(cmd, args, { stdio: "ignore", detached: true }); - // ENOENT (missing binary) surfaces asynchronously via the 'error' event, - // not as a synchronous throw — without this handler it's an unhandled - // exception that crashes the whole process (observed: xdg-open missing - // on a WSL box with no desktop environment). child.on("error", () => { - console.error(`Could not auto-open ${absPath} automatically — open it manually.`); + console.error(`Could not open ${absPath} automatically — open it manually.`); }); child.unref(); } catch { - console.error(`Could not auto-open ${absPath} automatically — open it manually.`); + console.error(`Could not open ${absPath} automatically — open it manually.`); } } -// ─── Main ──────────────────────────────────────────────────────────────── +// ─── Main ───────────────────────────────────────────────────────────────────── function main() { const args = process.argv.slice(2).filter((a) => a !== "--"); - const command = args[0] || "out"; - const outPath = command === "out" ? args[1] || "sprint.html" : "sprint.html"; - const slug = resolveSlug(); - let branch = "unknown"; - try { - branch = execFileSync("git", ["rev-parse", "--abbrev-ref", "HEAD"], { - encoding: "utf-8", - stdio: ["ignore", "pipe", "ignore"], - }).trim(); - } catch { - // leave as "unknown" + // Backwards-compat: positional "open" and "out " + const positionalOpen = args.includes("open"); + const positionalOutIdx = args.indexOf("out"); + const positionalOutPath = positionalOutIdx >= 0 ? args[positionalOutIdx + 1] : undefined; + + // Determine mode + let mode: "compact" | "full" | "web" = "compact"; + if (args.includes("--full")) mode = "full"; + if (args.includes("--web") || args.includes("--open") || positionalOpen || positionalOutPath) mode = "web"; + + // Options + const outArgIdx = args.indexOf("--out"); + const outPath = outArgIdx >= 0 ? args[outArgIdx + 1] : (positionalOutPath ?? "sprint.html"); + const slugArgIdx = args.indexOf("--slug"); + const slugArg = slugArgIdx >= 0 ? args[slugArgIdx + 1] : undefined; + + if (mode === "compact") { + const data = buildDashboard({ slug: slugArg, loadPr: false, loadDecisions: false }); + process.stdout.write(renderCompact(data)); + return; } - const timelinePath = join(gstackHome(), "projects", slug, "timeline.jsonl"); - const timeline = readJsonlSafe(timelinePath); - const branchData = computeBranchStageData(timeline); - const versions = getChangelogVersions(); - const backlogCounts = getBacklogCounts(); + if (mode === "full") { + const data = buildDashboard({ slug: slugArg, loadPr: true, loadDecisions: true }); + process.stdout.write(renderFull(data)); + return; + } - const sections = { - headerStats: buildHeaderStats(branchData, versions, backlogCounts), - pipeline: buildPipelineBoard(branchData), - activity: buildActivityFeed(timeline), - topSkills: buildTopSkillsChart(slug), - quality: buildQualityScores(), - designDocs: buildActiveDesignDocs(slug), - releaseVelocity: buildReleaseVelocity(versions), - backlog: buildBacklogHealth(backlogCounts), - }; - - const html = renderPage(slug, branch, sections); + // web mode + const data = buildDashboard({ slug: slugArg, loadPr: true, loadDecisions: true }); + const html = renderHtml(data); writeFileSync(outPath, html, "utf-8"); console.log(`Wrote ${outPath}`); - - if (command === "open") { - openInBrowser(outPath); - } + openInBrowser(outPath); } main(); diff --git a/dashboard/SKILL.md b/dashboard/SKILL.md new file mode 100644 index 000000000..d01dde13d --- /dev/null +++ b/dashboard/SKILL.md @@ -0,0 +1,570 @@ +--- +name: dashboard +preamble-tier: 1 +version: 1.0.0 +description: "Sprint board: compact terminal (default) · --full · --web HTML · --slug . (gstack)" +allowed-tools: + - Bash +triggers: + - sprint status + - what's in flight + - project status + - dashboard +--- + + + + +## When to invoke this skill + +Use when asked for "sprint status", "what's in flight", "project status", or "dashboard". + +## Preamble (run first) + +```bash +_UPD=$(~/.claude/skills/gstack/bin/gstack-update-check 2>/dev/null || .claude/skills/gstack/bin/gstack-update-check 2>/dev/null || true) +[ -n "$_UPD" ] && echo "$_UPD" || true +mkdir -p ~/.gstack/sessions +touch ~/.gstack/sessions/"$PPID" +_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ') +find ~/.gstack/sessions -mmin +120 -type f -exec rm {} + 2>/dev/null || true +_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true") +_PROACTIVE_PROMPTED=$([ -f ~/.gstack/.proactive-prompted ] && echo "yes" || echo "no") +_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") +echo "BRANCH: $_BRANCH" +_SKILL_PREFIX=$(~/.claude/skills/gstack/bin/gstack-config get skill_prefix 2>/dev/null || echo "false") +echo "PROACTIVE: $_PROACTIVE" +echo "PROACTIVE_PROMPTED: $_PROACTIVE_PROMPTED" +echo "SKILL_PREFIX: $_SKILL_PREFIX" +source <(~/.claude/skills/gstack/bin/gstack-repo-mode 2>/dev/null) || true +REPO_MODE=${REPO_MODE:-unknown} +echo "REPO_MODE: $REPO_MODE" +_SESSION_KIND=$(~/.claude/skills/gstack/bin/gstack-session-kind 2>/dev/null || echo "interactive") +case "$_SESSION_KIND" in spawned|headless|interactive) ;; *) _SESSION_KIND="interactive" ;; esac +echo "SESSION_KIND: $_SESSION_KIND" +# Conductor host: AskUserQuestion is unreliable here (native disabled, MCP +# variant flaky), so skills render decisions as prose instead of calling the +# tool. Gated on !headless so an eval/CI run INSIDE Conductor (GSTACK_HEADLESS) +# still BLOCKs rather than rendering prose to nobody. +if [ "$_SESSION_KIND" != "headless" ] && { [ -n "${CONDUCTOR_WORKSPACE_PATH:-}" ] || [ -n "${CONDUCTOR_PORT:-}" ]; }; then + echo "CONDUCTOR_SESSION: true" +fi +_ACTIVATED=$([ -f ~/.gstack/.activated ] && echo "yes" || echo "no") +_FIRST_LOOP_SHOWN=$([ -f ~/.gstack/.first-loop-tip-shown ] && echo "yes" || echo "no") +echo "ACTIVATED: $_ACTIVATED" +echo "FIRST_LOOP_SHOWN: $_FIRST_LOOP_SHOWN" +# First-run project detection: run the detector ONLY on the first-ever skill run +# (ACTIVATED=no, interactive) so it stays off the hot path for every run after. +_FIRST_TASK="" +if [ "$_ACTIVATED" = "no" ] && [ "$_SESSION_KIND" != "headless" ]; then + _FIRST_TASK=$(~/.claude/skills/gstack/bin/gstack-first-task-detect 2>/dev/null || true) +fi +echo "FIRST_TASK: $_FIRST_TASK" +_LAKE_SEEN=$([ -f ~/.gstack/.completeness-intro-seen ] && echo "yes" || echo "no") +echo "LAKE_INTRO: $_LAKE_SEEN" +_TEL=$(~/.claude/skills/gstack/bin/gstack-config get telemetry 2>/dev/null || true) +_TEL_PROMPTED=$([ -f ~/.gstack/.telemetry-prompted ] && echo "yes" || echo "no") +_TEL_START=$(date +%s) +_SESSION_ID="$$-$(date +%s)" +echo "TELEMETRY: ${_TEL:-off}" +echo "TEL_PROMPTED: $_TEL_PROMPTED" +_EXPLAIN_LEVEL=$(~/.claude/skills/gstack/bin/gstack-config get explain_level 2>/dev/null || echo "default") +if [ "$_EXPLAIN_LEVEL" != "default" ] && [ "$_EXPLAIN_LEVEL" != "terse" ]; then _EXPLAIN_LEVEL="default"; fi +echo "EXPLAIN_LEVEL: $_EXPLAIN_LEVEL" +_QUESTION_TUNING=$(~/.claude/skills/gstack/bin/gstack-config get question_tuning 2>/dev/null || echo "false") +echo "QUESTION_TUNING: $_QUESTION_TUNING" +mkdir -p ~/.gstack/analytics +if [ "$_TEL" != "off" ]; then +echo '{"skill":"dashboard","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null | tr -cd 'a-zA-Z0-9._-'); echo "${_repo:-unknown}")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true +fi +for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do + if [ -f "$_PF" ]; then + if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true + fi + rm -f "$_PF" 2>/dev/null || true + fi + break +done +eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true +_LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +if [ -f "$_LEARN_FILE" ]; then + _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') + echo "LEARNINGS: $_LEARN_COUNT entries loaded" + if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + fi +else + echo "LEARNINGS: 0" +fi +~/.claude/skills/gstack/bin/gstack-timeline-log '{"skill":"dashboard","event":"started","branch":"'"$_BRANCH"'","session":"'"$_SESSION_ID"'"}' 2>/dev/null & +_HAS_ROUTING="no" +if [ -f CLAUDE.md ] && grep -q "## Skill routing" CLAUDE.md 2>/dev/null; then + _HAS_ROUTING="yes" +fi +_ROUTING_DECLINED=$(~/.claude/skills/gstack/bin/gstack-config get routing_declined 2>/dev/null || echo "false") +echo "HAS_ROUTING: $_HAS_ROUTING" +echo "ROUTING_DECLINED: $_ROUTING_DECLINED" +_VENDORED="no" +if [ -d ".claude/skills/gstack" ] && [ ! -L ".claude/skills/gstack" ]; then + if [ -f ".claude/skills/gstack/VERSION" ] || [ -d ".claude/skills/gstack/.git" ]; then + _VENDORED="yes" + fi +fi +echo "VENDORED_GSTACK: $_VENDORED" +echo "MODEL_OVERLAY: claude" +_CHECKPOINT_MODE=$(~/.claude/skills/gstack/bin/gstack-config get checkpoint_mode 2>/dev/null || echo "explicit") +_CHECKPOINT_PUSH=$(~/.claude/skills/gstack/bin/gstack-config get checkpoint_push 2>/dev/null || echo "false") +echo "CHECKPOINT_MODE: $_CHECKPOINT_MODE" +echo "CHECKPOINT_PUSH: $_CHECKPOINT_PUSH" +# Plan-mode hint for skills like /spec that branch behavior on plan-mode state. +# Claude Code exposes plan mode via system reminders; we detect best-effort +# from CLAUDE_PLAN_FILE (set by the harness when plan mode is active) and +# fall back to "inactive". Codex hosts and Claude execution mode both end up +# inactive, which is the safe default (defaults to file+execute pipeline). +if [ -n "${CLAUDE_PLAN_FILE:-}${GSTACK_PLAN_MODE_FORCE:-}" ]; then + export GSTACK_PLAN_MODE="active" +elif [ "${GSTACK_PLAN_MODE:-}" = "active" ]; then + export GSTACK_PLAN_MODE="active" +else + export GSTACK_PLAN_MODE="inactive" +fi +echo "GSTACK_PLAN_MODE: $GSTACK_PLAN_MODE" +[ -n "$OPENCLAW_SESSION" ] && echo "SPAWNED_SESSION: true" || true +``` + +## Plan Mode Safe Operations + +In plan mode, allowed because they inform the plan: `$B`, `$D`, `codex exec`/`codex review`, writes to `~/.gstack/`, writes to the plan file, and `open` for generated artifacts. + +## Skill Invocation During Plan Mode + +If the user invokes a skill in plan mode, the skill takes precedence over generic plan mode behavior. **Treat the skill file as executable instructions, not reference.** Follow it step by step starting from Step 0; the first AskUserQuestion is the workflow entering plan mode, not a violation of it. AskUserQuestion (any variant — `mcp__*__AskUserQuestion` or native; see "AskUserQuestion Format → Tool resolution") satisfies plan mode's end-of-turn requirement. If AskUserQuestion is unavailable or a call fails, follow the AskUserQuestion Format failure fallback: `headless` → BLOCKED; `interactive` → the prose fallback (also satisfies end-of-turn). At a STOP point, stop immediately. Do not continue the workflow or call ExitPlanMode there. Commands marked "PLAN MODE EXCEPTION — ALWAYS RUN" execute. Call ExitPlanMode only after the skill workflow completes, or if the user tells you to cancel the skill or leave plan mode. + +If `PROACTIVE` is `"false"`, do not auto-invoke or proactively suggest skills. If a skill seems useful, ask: "I think /skillname might help here — want me to run it?" + +If `SKILL_PREFIX` is `"true"`, suggest/invoke `/gstack-*` names. Disk paths stay `~/.claude/skills/gstack/[skill-name]/SKILL.md`. + +If output shows `UPGRADE_AVAILABLE `: read `~/.claude/skills/gstack/gstack-upgrade/SKILL.md` and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). + +If output shows `JUST_UPGRADED `: print "Running gstack v{to} (just updated!)". If `SPAWNED_SESSION` is true, skip feature discovery. + +Feature discovery, max one prompt per session: +- Missing `~/.claude/skills/gstack/.feature-prompted-continuous-checkpoint`: AskUserQuestion for Continuous checkpoint auto-commits. If accepted, run `~/.claude/skills/gstack/bin/gstack-config set checkpoint_mode continuous`. Always touch marker. +- Missing `~/.claude/skills/gstack/.feature-prompted-model-overlay`: inform "Model overlays are active. MODEL_OVERLAY shows the patch." Always touch marker. + +After upgrade prompts, continue workflow. + +If `WRITING_STYLE_PENDING` is `yes`: ask once about writing style: + +> v1 prompts are simpler: first-use jargon glosses, outcome-framed questions, shorter prose. Keep default or restore terse? + +Options: +- A) Keep the new default (recommended — good writing helps everyone) +- B) Restore V0 prose — set `explain_level: terse` + +If A: leave `explain_level` unset (defaults to `default`). +If B: run `~/.claude/skills/gstack/bin/gstack-config set explain_level terse`. + +Always run (regardless of choice): +```bash +rm -f ~/.gstack/.writing-style-prompt-pending +touch ~/.gstack/.writing-style-prompted +``` + +Skip if `WRITING_STYLE_PENDING` is `no`. + +If `LAKE_INTRO` is `no`: say "gstack follows the **Boil the Ocean** principle — do the complete thing when AI makes marginal cost near-zero. Read more: https://garryslist.org/posts/boil-the-ocean" Offer to open: + +```bash +open https://garryslist.org/posts/boil-the-ocean +touch ~/.gstack/.completeness-intro-seen +``` + +Only run `open` if yes. Always run `touch`. + +If `TEL_PROMPTED` is `no` AND `LAKE_INTRO` is `yes`: ask telemetry once via AskUserQuestion: + +> Help gstack get better. Share usage data only: skill, duration, crashes, stable device ID. No code or file paths. Your repo name is recorded locally only and stripped before any upload. + +Options: +- A) Help gstack get better! (recommended) +- B) No thanks + +If A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry community` + +If B: ask follow-up: + +> Anonymous mode sends only aggregate usage, no unique ID. + +Options: +- A) Sure, anonymous is fine +- B) No thanks, fully off + +If B→A: run `~/.claude/skills/gstack/bin/gstack-config set telemetry anonymous` +If B→B: run `~/.claude/skills/gstack/bin/gstack-config set telemetry off` + +Always run: +```bash +touch ~/.gstack/.telemetry-prompted +``` + +Skip if `TEL_PROMPTED` is `yes`. + +If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: ask once: + +> Let gstack proactively suggest skills, like /qa for "does this work?" or /investigate for bugs? + +Options: +- A) Keep it on (recommended) +- B) Turn it off — I'll type /commands myself + +If A: run `~/.claude/skills/gstack/bin/gstack-config set proactive true` +If B: run `~/.claude/skills/gstack/bin/gstack-config set proactive false` + +Always run: +```bash +touch ~/.gstack/.proactive-prompted +``` + +Skip if `PROACTIVE_PROMPTED` is `yes`. + +## First-run guidance (one-time) + +If `ACTIVATED` is `no` (first skill run on this machine) AND the preamble printed a non-empty `FIRST_TASK:` value that is NOT `nongit`: show ONE short, project-specific line mapped from the token, as a heads-up, then CONTINUE with whatever the user actually asked — do NOT halt their task. Map the token: `greenfield` → "Fresh repo — shape it first with `/spec` or `/office-hours`." `code_node`/`code_python`/`code_rust`/`code_go`/`code_ruby`/`code_ios` → "There's code here — `/qa` to see it work, or `/investigate` if something's off." `branch_ahead` → "Unshipped work on this branch — `/review` then `/ship`." `dirty_default` → "Uncommitted changes — `/review` before committing." `clean_default` → "Pick one: `/spec`, `/investigate`, or `/qa`." Then substitute the token you saw for TASK_TOKEN and run (best-effort), and mark activated: +```bash +~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type first_task_scaffold_shown --skill "TASK_TOKEN" --outcome shown 2>/dev/null || true +touch ~/.gstack/.activated 2>/dev/null || true +``` + +If `ACTIVATED` is `no` but `FIRST_TASK:` is empty or `nongit` (headless, non-git, or nothing actionable): show nothing, just run `touch ~/.gstack/.activated 2>/dev/null || true`. + +Else if `ACTIVATED` is `yes` AND `FIRST_LOOP_SHOWN` is `no`: say once as a heads-up (then continue): + +> Tip: gstack pays off when you complete one loop — **plan → review → ship**. A common first loop: `/office-hours` or `/spec` to shape it, `/plan-eng-review` to lock it, then `/ship`. + +Then run `touch ~/.gstack/.first-loop-tip-shown 2>/dev/null || true`. + +Skip this section if `ACTIVATED` and `FIRST_LOOP_SHOWN` are both `yes`. + +If `HAS_ROUTING` is `no` AND `ROUTING_DECLINED` is `false` AND `PROACTIVE_PROMPTED` is `yes`: +Check if a CLAUDE.md file exists in the project root. If it does not exist, create it. + +Use AskUserQuestion: + +> gstack works best when your project's CLAUDE.md includes skill routing rules. + +Options: +- A) Add routing rules to CLAUDE.md (recommended) +- B) No thanks, I'll invoke skills manually + +If A: Append this section to the end of CLAUDE.md: + +```markdown + +## Skill routing + +When the user's request matches an available skill, invoke it via the Skill tool. When in doubt, invoke the skill. + +Key routing rules: +- Product ideas/brainstorming → invoke /office-hours +- Strategy/scope → invoke /plan-ceo-review +- Architecture → invoke /plan-eng-review +- Design system/plan review → invoke /design-consultation or /plan-design-review +- Full review pipeline → invoke /autoplan +- Bugs/errors → invoke /investigate +- QA/testing site behavior → invoke /qa or /qa-only +- Code review/diff check → invoke /review +- Visual polish → invoke /design-review +- Ship/deploy/PR → invoke /ship or /land-and-deploy +- Save progress → invoke /context-save +- Resume context → invoke /context-restore +- Author a backlog-ready spec/issue → invoke /spec +``` + +Then commit the change: `git add CLAUDE.md && git commit -m "chore: add gstack skill routing rules to CLAUDE.md"` + +If B: run `~/.claude/skills/gstack/bin/gstack-config set routing_declined true` and say they can re-enable with `gstack-config set routing_declined false`. + +This only happens once per project. Skip if `HAS_ROUTING` is `yes` or `ROUTING_DECLINED` is `true`. + +If `VENDORED_GSTACK` is `yes`, warn once via AskUserQuestion unless `~/.gstack/.vendoring-warned-$SLUG` exists: + +> This project has gstack vendored in `.claude/skills/gstack/`. Vendoring is deprecated. +> Migrate to team mode? + +Options: +- A) Yes, migrate to team mode now +- B) No, I'll handle it myself + +If A: +1. Run `git rm -r .claude/skills/gstack/` +2. Run `echo '.claude/skills/gstack/' >> .gitignore` +3. Run `~/.claude/skills/gstack/bin/gstack-team-init required` (or `optional`) +4. Run `git add .claude/ .gitignore CLAUDE.md && git commit -m "chore: migrate gstack from vendored to team mode"` +5. Tell the user: "Done. Each developer now runs: `cd ~/.claude/skills/gstack && ./setup --team`" + +If B: say "OK, you're on your own to keep the vendored copy up to date." + +Always run (regardless of choice): +```bash +eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true +touch ~/.gstack/.vendoring-warned-${SLUG:-unknown} +``` + +If marker exists, skip. + +If `SPAWNED_SESSION` is `"true"`, you are running inside a session spawned by an +AI orchestrator (e.g., OpenClaw). In spawned sessions: +- Do NOT use AskUserQuestion for interactive prompts. Auto-choose the recommended option. +- Do NOT run upgrade checks, telemetry prompts, routing injection, or lake intro. +- Focus on completing the task and reporting results via prose output. +- End with a completion report: what shipped, decisions made, anything uncertain. + +## Artifacts Sync (skill start) + +```bash +_GSTACK_HOME="${GSTACK_HOME:-$HOME/.gstack}" +# Prefer the v1.27.0.0 artifacts file; fall back to brain file for users +# upgrading mid-stream before the migration script runs. +if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then + _BRAIN_REMOTE_FILE="$HOME/.gstack-artifacts-remote.txt" +else + _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" +fi +_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" + +# /sync-gbrain context-load: teach the agent to use gbrain when it's available. +# Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the +# git toplevel to scope queries. Look for the pin in the worktree (not a global +# state file) so that opening worktree B without a pin doesn't claim "indexed" +# just because worktree A was synced. Empty string when gbrain is not +# configured (zero context cost for non-gbrain users). +_GBRAIN_CONFIG="$HOME/.gbrain/config.json" +if [ -f "$_GBRAIN_CONFIG" ] && command -v gbrain >/dev/null 2>&1; then + _GBRAIN_VERSION_OK=$(gbrain --version 2>/dev/null | grep -c '^gbrain ' || echo 0) + if [ "$_GBRAIN_VERSION_OK" -gt 0 ] 2>/dev/null; then + _GBRAIN_PIN_PATH="" + _REPO_TOP=$(git rev-parse --show-toplevel 2>/dev/null || echo "") + if [ -n "$_REPO_TOP" ] && [ -f "$_REPO_TOP/.gbrain-source" ]; then + _GBRAIN_PIN_PATH="$_REPO_TOP/.gbrain-source" + fi + if [ -n "$_GBRAIN_PIN_PATH" ]; then + echo "GBrain configured. Prefer \`gbrain search\`/\`gbrain query\` over Grep for" + echo "semantic questions; use \`gbrain code-def\`/\`code-refs\`/\`code-callers\` for" + echo "symbol-aware code lookup. See \"## GBrain Search Guidance\" in CLAUDE.md." + echo "Run /sync-gbrain to refresh." + else + echo "GBrain configured but this worktree isn't pinned yet. Run \`/sync-gbrain --full\`" + echo "before relying on \`gbrain search\` for code questions in this worktree." + echo "Falls back to Grep until pinned." + fi + fi +fi + +_BRAIN_SYNC_MODE=$("$_BRAIN_CONFIG_BIN" get artifacts_sync_mode 2>/dev/null || echo off) + +# Detect remote-MCP mode (Path 4 of /setup-gbrain). Local artifacts sync is +# a no-op in remote mode; the brain server pulls from GitHub/GitLab on its +# own cadence. Read claude.json directly to keep this preamble fast (no +# subprocess to claude CLI on every skill start). +_GBRAIN_MCP_MODE="none" +if command -v jq >/dev/null 2>&1 && [ -f "$HOME/.claude.json" ]; then + _GBRAIN_MCP_TYPE=$(jq -r '.mcpServers.gbrain.type // .mcpServers.gbrain.transport // empty' "$HOME/.claude.json" 2>/dev/null) + case "$_GBRAIN_MCP_TYPE" in + url|http|sse) _GBRAIN_MCP_MODE="remote-http" ;; + stdio) _GBRAIN_MCP_MODE="local-stdio" ;; + esac +fi + +if [ -f "$_BRAIN_REMOTE_FILE" ] && [ ! -d "$_GSTACK_HOME/.git" ] && [ "$_BRAIN_SYNC_MODE" = "off" ]; then + _BRAIN_NEW_URL=$(head -1 "$_BRAIN_REMOTE_FILE" 2>/dev/null | tr -d '[:space:]') + if [ -n "$_BRAIN_NEW_URL" ]; then + echo "ARTIFACTS_SYNC: artifacts repo detected: $_BRAIN_NEW_URL" + echo "ARTIFACTS_SYNC: run 'gstack-brain-restore' to pull your cross-machine artifacts (or 'gstack-config set artifacts_sync_mode off' to dismiss forever)" + fi +fi + +if [ -d "$_GSTACK_HOME/.git" ] && [ "$_BRAIN_SYNC_MODE" != "off" ]; then + _BRAIN_LAST_PULL_FILE="$_GSTACK_HOME/.brain-last-pull" + _BRAIN_NOW=$(date +%s) + _BRAIN_DO_PULL=1 + if [ -f "$_BRAIN_LAST_PULL_FILE" ]; then + _BRAIN_LAST=$(cat "$_BRAIN_LAST_PULL_FILE" 2>/dev/null || echo 0) + _BRAIN_AGE=$(( _BRAIN_NOW - _BRAIN_LAST )) + [ "$_BRAIN_AGE" -lt 86400 ] && _BRAIN_DO_PULL=0 + fi + if [ "$_BRAIN_DO_PULL" = "1" ]; then + ( cd "$_GSTACK_HOME" && git fetch origin >/dev/null 2>&1 && git merge --ff-only "origin/$(git rev-parse --abbrev-ref HEAD)" >/dev/null 2>&1 ) || true + echo "$_BRAIN_NOW" > "$_BRAIN_LAST_PULL_FILE" + fi + "$_BRAIN_SYNC_BIN" --once 2>/dev/null || true +fi + +if [ "$_GBRAIN_MCP_MODE" = "remote-http" ]; then + # Remote-MCP mode: local artifacts sync is a no-op (brain admin's server + # pulls from GitHub/GitLab). Show the user this is by design, not broken. + _GBRAIN_HOST=$(jq -r '.mcpServers.gbrain.url // empty' "$HOME/.claude.json" 2>/dev/null | sed -E 's|^https?://([^/:]+).*|\1|') + echo "ARTIFACTS_SYNC: remote-mode (managed by brain server ${_GBRAIN_HOST:-remote})" +elif [ -d "$_GSTACK_HOME/.git" ] && [ "$_BRAIN_SYNC_MODE" != "off" ]; then + _BRAIN_QUEUE_DEPTH=0 + [ -f "$_GSTACK_HOME/.brain-queue.jsonl" ] && _BRAIN_QUEUE_DEPTH=$(wc -l < "$_GSTACK_HOME/.brain-queue.jsonl" | tr -d ' ') + _BRAIN_LAST_PUSH="never" + [ -f "$_GSTACK_HOME/.brain-last-push" ] && _BRAIN_LAST_PUSH=$(cat "$_GSTACK_HOME/.brain-last-push" 2>/dev/null || echo never) + echo "ARTIFACTS_SYNC: mode=$_BRAIN_SYNC_MODE | last_push=$_BRAIN_LAST_PUSH | queue=$_BRAIN_QUEUE_DEPTH" +else + echo "ARTIFACTS_SYNC: off" +fi +``` + + + +Privacy stop-gate: if output shows `ARTIFACTS_SYNC: off`, `artifacts_sync_mode_prompted` is `false`, and gbrain is on PATH or `gbrain doctor --fast --json` works, ask once: + +> gstack can publish your artifacts (CEO plans, designs, reports) to a private GitHub repo that GBrain indexes across machines. How much should sync? + +Options: +- A) Everything allowlisted (recommended) +- B) Only artifacts +- C) Decline, keep everything local + +After answer: + +```bash +# Chosen mode: full | artifacts-only | off +"$_BRAIN_CONFIG_BIN" set artifacts_sync_mode +"$_BRAIN_CONFIG_BIN" set artifacts_sync_mode_prompted true +``` + +If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-init`. Do not block the skill. + +At skill END before telemetry: + +```bash +"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +``` + + +## Model-Specific Behavioral Patch (claude) + +The following nudges are tuned for the claude model family. They are +**subordinate** to skill workflow, STOP points, AskUserQuestion gates, plan-mode +safety, and /ship review gates. If a nudge below conflicts with skill instructions, +the skill wins. Treat these as preferences, not rules. + +**Todo-list discipline.** When working through a multi-step plan, mark each task +complete individually as you finish it. Do not batch-complete at the end. If a task +turns out to be unnecessary, mark it skipped with a one-line reason. + +**Think before heavy actions.** For complex operations (refactors, migrations, +non-trivial new features), briefly state your approach before executing. This lets +the user course-correct cheaply instead of mid-flight. + +**Dedicated tools over Bash.** Prefer Read, Edit, Write, Glob, Grep over shell +equivalents (cat, sed, find, grep). The dedicated tools are cheaper and clearer. + +## Voice + +Direct, concrete, builder-to-builder. Name the file, function, command, and user-visible impact. No filler. + +No em dashes. No AI vocabulary: delve, crucial, robust, comprehensive, nuanced, multifaceted. Never corporate or academic. Short paragraphs. End with what to do. + +The user has context you do not. Cross-model agreement is a recommendation, not a decision. The user decides. + +## Completion Status Protocol + +When completing a skill workflow, report status using one of: +- **DONE** — completed with evidence. +- **DONE_WITH_CONCERNS** — completed, but list concerns. +- **BLOCKED** — cannot proceed; state blocker and what was tried. +- **NEEDS_CONTEXT** — missing info; state exactly what is needed. + +Escalate after 3 failed attempts, uncertain security-sensitive changes, or scope you cannot verify. Format: `STATUS`, `REASON`, `ATTEMPTED`, `RECOMMENDATION`. + +## Operational Self-Improvement + +Before completing, if you discovered a durable project quirk or command fix that would save 5+ minutes next time, log it: + +```bash +~/.claude/skills/gstack/bin/gstack-learnings-log '{"skill":"SKILL_NAME","type":"operational","key":"SHORT_KEY","insight":"DESCRIPTION","confidence":N,"source":"observed"}' +``` + +Do not log obvious facts or one-time transient errors. + +## Telemetry (run last) + +After workflow completion, log telemetry. Use skill `name:` from frontmatter. OUTCOME is success/error/abort/unknown. + +**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes telemetry to +`~/.gstack/analytics/`, matching preamble analytics writes. + +Run this bash: + +```bash +_TEL_END=$(date +%s) +_TEL_DUR=$(( _TEL_END - _TEL_START )) +rm -f ~/.gstack/analytics/.pending-"$_SESSION_ID" 2>/dev/null || true +# Session timeline: record skill completion (local-only, never sent anywhere) +~/.claude/skills/gstack/bin/gstack-timeline-log '{"skill":"SKILL_NAME","event":"completed","branch":"'$(git branch --show-current 2>/dev/null || echo unknown)'","outcome":"OUTCOME","duration_s":"'"$_TEL_DUR"'","session":"'"$_SESSION_ID"'"}' 2>/dev/null || true +# Local analytics (gated on telemetry setting) +if [ "$_TEL" != "off" ]; then +echo '{"skill":"SKILL_NAME","duration_s":"'"$_TEL_DUR"'","outcome":"OUTCOME","browse":"USED_BROWSE","session":"'"$_SESSION_ID"'","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true +fi +# Remote telemetry (opt-in, requires binary) +if [ "$_TEL" != "off" ] && [ -x ~/.claude/skills/gstack/bin/gstack-telemetry-log ]; then + ~/.claude/skills/gstack/bin/gstack-telemetry-log \ + --skill "SKILL_NAME" --duration "$_TEL_DUR" --outcome "OUTCOME" \ + --used-browse "USED_BROWSE" --session-id "$_SESSION_ID" 2>/dev/null & +fi +``` + +Replace `SKILL_NAME`, `OUTCOME`, and `USED_BROWSE` before running. + +## Plan Status Footer + +Skills that run plan reviews (`/plan-*-review`, `/codex review`) include the EXIT PLAN MODE GATE blocking checklist at the end of the skill, which verifies the plan file ends with `## GSTACK REVIEW REPORT` before ExitPlanMode is called. Skills that don't run plan reviews (operational skills like `/ship`, `/qa`, `/review`) typically don't operate in plan mode and have no review report to verify; this footer is a no-op for them. Writing the plan file is the one edit allowed in plan mode. + +# /dashboard — sprint board + +Run `gstack-sprint-dashboard` (no flags) to display the compact sprint board. + +```bash +gstack-sprint-dashboard +``` + +Read the output and present it directly to the user. + +## Output modes + +If the user asks for **more detail**, run with `--full`: +```bash +gstack-sprint-dashboard --full +``` + +If the user asks to **open in browser** or wants the visual HTML board: +```bash +gstack-sprint-dashboard --web +``` + +If the user specifies a **different project**, pass `--slug`: +```bash +gstack-sprint-dashboard --slug +``` + +## Reading the compact output + +The compact view shows: +- **Header**: version, in-flight count, ships this month, avg days/release, P1 backlog +- **Pipeline**: each branch with stage checkmarks (✓ done, ▶ current, ○ not started) +- **Activity**: last 5 skill completions with timestamp and branch +- **Footer**: average quality score and top skills by usage count + +The `◀` marker on a pipeline row indicates the current branch. + +## What to say + +After displaying the output, offer the user a one-line summary of what stands out: +the branch closest to shipping, any P0/P1 backlog items, or the most active skill. +Keep it to one sentence. Don't repeat the data they can already see. diff --git a/dashboard/SKILL.md.tmpl b/dashboard/SKILL.md.tmpl new file mode 100644 index 000000000..93ae9f19d --- /dev/null +++ b/dashboard/SKILL.md.tmpl @@ -0,0 +1,60 @@ +--- +name: dashboard +preamble-tier: 1 +version: 1.0.0 +description: | + Sprint board: compact terminal (default) · --full · --web HTML · --slug . + Use when asked for "sprint status", "what's in flight", "project status", or "dashboard". (gstack) +allowed-tools: + - Bash +triggers: + - sprint status + - what's in flight + - project status + - dashboard +--- + +{{PREAMBLE}} + +# /dashboard — sprint board + +Run `gstack-sprint-dashboard` (no flags) to display the compact sprint board. + +```bash +gstack-sprint-dashboard +``` + +Read the output and present it directly to the user. + +## Output modes + +If the user asks for **more detail**, run with `--full`: +```bash +gstack-sprint-dashboard --full +``` + +If the user asks to **open in browser** or wants the visual HTML board: +```bash +gstack-sprint-dashboard --web +``` + +If the user specifies a **different project**, pass `--slug`: +```bash +gstack-sprint-dashboard --slug +``` + +## Reading the compact output + +The compact view shows: +- **Header**: version, in-flight count, ships this month, avg days/release, P1 backlog +- **Pipeline**: each branch with stage checkmarks (✓ done, ▶ current, ○ not started) +- **Activity**: last 5 skill completions with timestamp and branch +- **Footer**: average quality score and top skills by usage count + +The `◀` marker on a pipeline row indicates the current branch. + +## What to say + +After displaying the output, offer the user a one-line summary of what stands out: +the branch closest to shipping, any P0/P1 backlog items, or the most active skill. +Keep it to one sentence. Don't repeat the data they can already see. diff --git a/docs/skills.md b/docs/skills.md index 8e8cb7adc..fb79e2603 100644 --- a/docs/skills.md +++ b/docs/skills.md @@ -27,6 +27,7 @@ Detailed guides for every gstack skill — philosophy, workflow, and examples. | [`/document-release`](#document-release) | **Technical Writer** | Update all project docs to match what you just shipped. Catches stale READMEs automatically. | | [`/document-generate`](#document-generate) | **Technical Writer** | Generate Diataxis docs (tutorial / how-to / reference / explanation) for a feature from code. | | [`/retro`](#retro) | **Eng Manager** | Team-aware weekly retro. Per-person breakdowns, shipping streaks, test health trends, growth opportunities. | +| [`/dashboard`](#dashboard) | **Sprint Board** | Compact terminal sprint board showing branch pipeline stages, activity feed, and quality scores. `--full` for all sections, `--web` for HTML in browser. | | [`/browse`](#browse) | **QA Engineer** | Give the agent eyes. Real Chromium browser, real clicks, real screenshots. ~100ms per command. | | [`/setup-browser-cookies`](#setup-browser-cookies) | **Session Manager** | Import cookies from your real browser (Chrome, Arc, Brave, Edge) into the headless session. Test authenticated pages. | | [`/autoplan`](#autoplan) | **Review Pipeline** | One command, fully reviewed plan. Runs CEO → design → eng → DX review automatically with encoded decision principles. Surfaces only taste decisions for your approval. | diff --git a/gstack/llms.txt b/gstack/llms.txt index efe522f90..89fbad8e9 100644 --- a/gstack/llms.txt +++ b/gstack/llms.txt @@ -21,6 +21,7 @@ Conventions: - [/context-restore](context-restore/SKILL.md): Restore working context saved earlier by /context-save. - [/context-save](context-save/SKILL.md): Save working context. - [/cso](cso/SKILL.md): Chief Security Officer mode. +- [/dashboard](dashboard/SKILL.md): Sprint board: compact terminal (default) · --full · --web HTML · --slug . - [/design-consultation](design-consultation/SKILL.md): Design consultation: understands your product, researches the landscape, proposes a complete design system (aesthetic, typography, color, layout, spacing, motion), and generates font+color preview pages. - [/design-html](design-html/SKILL.md): Design finalization: generates production-quality Pretext-native HTML/CSS. - [/design-review](design-review/SKILL.md): Designer's eye QA: finds visual inconsistency, spacing issues, hierarchy problems, AI slop patterns, and slow interactions — then fixes them. diff --git a/lib/dashboard-cli.ts b/lib/dashboard-cli.ts new file mode 100644 index 000000000..9ac0d2239 --- /dev/null +++ b/lib/dashboard-cli.ts @@ -0,0 +1,296 @@ +/** + * dashboard-cli — terminal renderers for the gstack sprint dashboard. + * + * Three modes: + * renderOneliner(data) — single line, ~80 chars, for the PreToolUse hook + * renderCompact(data) — ~30 lines, default for /dashboard skill + * renderFull(data) — ~80 lines, all sections + */ + +import type { DashboardData, OnelinerData, Stage } from "./dashboard-data"; +import { STAGE_ORDER, STAGE_LABELS } from "./dashboard-data"; + +// ─── Shared helpers ───────────────────────────────────────────────────────── + +function relativeTime(ts: string): string { + const diff = Date.now() - new Date(ts).getTime(); + const mins = Math.floor(diff / 60000); + if (mins < 2) return "just now"; + if (mins < 60) return `${mins}m ago`; + const hrs = Math.floor(mins / 60); + if (hrs < 24) return `${hrs}h ago`; + return `${Math.floor(hrs / 24)}d ago`; +} + +function stageChar(reached: boolean, isCurrent: boolean): string { + if (!reached) return "○"; + if (isCurrent) return "▶"; + return "✓"; +} + +function avgQualityScore(quality: DashboardData["quality"]): string { + if (quality.length === 0) return "—"; + const avg = quality.reduce((s, q) => s + q.score, 0) / quality.length; + return `${avg.toFixed(1)}/10`; +} + +// ─── One-liner ────────────────────────────────────────────────────────────── + +export function renderOneliner(data: OnelinerData): string { + const parts: string[] = []; + + parts.push(`● ${data.branch}`); + if (data.version) parts.push(`v${data.version}`); + parts.push(`${data.inFlightCount} in-flight`); + + // Show stages: completed ones + current + first unstarted (pipeline context) + const latestIdx = data.currentBranchLatestStage + ? STAGE_ORDER.indexOf(data.currentBranchLatestStage) + : -1; + const showUpTo = Math.min(latestIdx + 2, STAGE_ORDER.length - 1); + const visibleStages = latestIdx >= 0 ? STAGE_ORDER.slice(0, showUpTo + 1) : []; + + if (visibleStages.length > 0) { + const stageParts = visibleStages.map((s: Stage) => { + const reached = data.currentBranchStages.has(s); + const isCurrent = data.currentBranchLatestStage === s; + return `${STAGE_LABELS[s]}:${stageChar(reached, isCurrent)}`; + }); + parts.push(stageParts.join(" ")); + } + + if (data.lastShipDate) { + const diffDays = Math.floor( + (Date.now() - new Date(data.lastShipDate).getTime()) / 86400000 + ); + parts.push(`shipped ${diffDays === 0 ? "today" : `${diffDays}d ago`}`); + } + if (data.p1Count !== null) parts.push(`P1:${data.p1Count}`); + + return parts.join(" "); +} + +// ─── Compact (~30 lines) ──────────────────────────────────────────────────── + +export function renderCompact(data: DashboardData): string { + const W = 72; + const heavy = "━".repeat(W); + const thin = "─".repeat(W); + const lines: string[] = []; + + // Header + const vStr = data.version ? `v${data.version}` : "—"; + const avgStr = + data.velocity.avgDaysBetween !== null + ? `avg ${data.velocity.avgDaysBetween.toFixed(1)}d` + : null; + const headerParts = [ + `gstack ${data.slug}`, + vStr, + `${data.inFlightCount} in-flight`, + `${data.velocity.releasesThisMonth} ships/mo`, + ...(avgStr ? [avgStr] : []), + ...(data.backlog?.P1 != null ? [`P1:${data.backlog.P1}`] : []), + ]; + lines.push(heavy); + lines.push(` ${headerParts.join(" · ")}`); + lines.push(heavy); + lines.push(""); + + // Pipeline + const stageHdr = STAGE_ORDER.map((s: Stage) => STAGE_LABELS[s].padEnd(6)).join(" "); + lines.push(` PIPELINE ${stageHdr}`); + lines.push(` ${thin}`); + + const tracked = data.features.filter((f) => f.latestStage !== null).slice(0, 8); + const untrackedCount = data.features.filter((f) => f.latestStage === null).length; + if (tracked.length === 0) { + lines.push(" no tracked branches yet"); + } else { + for (const f of tracked) { + const nameCol = f.branch.slice(0, 20).padEnd(20); + const stages = STAGE_ORDER.map((s: Stage) => + stageChar(f.stagesReached.has(s), f.latestStage === s).padEnd(6) + ).join(" "); + const pr = data.prMap.get(f.branch); + const prTag = pr ? ` #${pr.number}` : ""; + const current = f.branch === data.branch ? " ◀" : ""; + lines.push(` ${nameCol} ${stages}${prTag}${current}`); + } + } + if (untrackedCount > 0) { + lines.push(` (+${untrackedCount} untracked — no skill activity)`); + } + lines.push(""); + + // Activity + lines.push(" RECENT ACTIVITY"); + lines.push(` ${thin}`); + const acts = data.activity.slice(0, 5); + if (acts.length === 0) { + lines.push(" no activity yet"); + } else { + for (const a of acts) { + const time = relativeTime(a.ts).padEnd(9); + const skill = `/${a.skill}`.padEnd(20); + const branch = a.branch.slice(0, 22).padEnd(22); + lines.push(` ${time} ${skill} ${branch} ${a.event}`); + } + } + lines.push(""); + + // Quality + top skills footer + const qualStr = `QUALITY ${avgQualityScore(data.quality)}`; + const topStr = data.topSkills + .slice(0, 4) + .map((s) => `/${s.skill}:${s.count}`) + .join(" "); + lines.push(` ${qualStr} · TOP SKILLS ${topStr}`); + lines.push(""); + + return lines.join("\n"); +} + +// ─── Full (~80 lines) ─────────────────────────────────────────────────────── + +export function renderFull(data: DashboardData): string { + const W = 80; + const heavy = "━".repeat(W); + const thin = "─".repeat(W); + const lines: string[] = []; + + // Header + lines.push(heavy); + lines.push(` gstack sprint dashboard — ${data.slug}`); + const vStr = data.version ? `v${data.version}` : "—"; + const avgStr = + data.velocity.avgDaysBetween !== null + ? `${data.velocity.avgDaysBetween.toFixed(1)}d` + : "—"; + lines.push( + ` ${vStr} | ${data.inFlightCount} in-flight | ${data.velocity.releasesThisMonth} ships/mo` + + ` | avg ${avgStr}/release | P1:${data.backlog?.P1 ?? "—"} | decisions:${data.openDecisions ?? "—"}` + ); + lines.push(` generated ${data.generatedAt.toLocaleString()}`); + lines.push(heavy); + lines.push(""); + + // Pipeline + const stageHdr = STAGE_ORDER.map((s: Stage) => STAGE_LABELS[s].padEnd(7)).join(" "); + lines.push(` PIPELINE ${stageHdr} Last Activity`); + lines.push(` ${thin}`); + + if (data.features.length === 0) { + lines.push(" no local branches found"); + } else { + for (const f of data.features) { + const nameCol = f.branch.slice(0, 22).padEnd(22); + const stages = STAGE_ORDER.map((s: Stage) => + stageChar(f.stagesReached.has(s), f.latestStage === s).padEnd(7) + ).join(" "); + const lastAct = f.latestTs + ? `${relativeTime(f.latestTs)} /${f.latestSkill ?? ""}`.slice(0, 22).padEnd(22) + : "—".padEnd(22); + const pr = data.prMap.get(f.branch); + const prTag = pr ? ` #${pr.number} ${pr.state}` : ""; + const current = f.branch === data.branch ? " ◀" : ""; + lines.push(` ${nameCol} ${stages} ${lastAct}${prTag}${current}`); + } + } + lines.push(""); + + // Activity feed + lines.push(" ACTIVITY FEED"); + lines.push(` ${thin}`); + if (data.activity.length === 0) { + lines.push(" no activity yet"); + } else { + for (const a of data.activity) { + const time = relativeTime(a.ts).padEnd(10); + const skill = `/${a.skill}`.padEnd(22); + const branch = a.branch.slice(0, 24).padEnd(24); + lines.push(` ${time} ${skill} ${branch} ${a.event}`); + } + } + lines.push(""); + + // Top skills + lines.push(" TOP SKILLS (last 30d)"); + lines.push(` ${thin}`); + if (data.topSkills.length === 0) { + lines.push(" no data yet"); + } else { + const max = data.topSkills[0].count; + for (const s of data.topSkills) { + const barLen = Math.round((s.count / max) * 28); + const bar = "█".repeat(barLen) + "░".repeat(28 - barLen); + lines.push(` /${s.skill.padEnd(18)} ${bar} ${s.count}`); + } + } + lines.push(""); + + // Quality scores + lines.push(" QUALITY SCORES (last 30d)"); + lines.push(` ${thin}`); + if (data.quality.length === 0) { + lines.push(" no data yet"); + } else { + for (const q of data.quality) { + const date = new Date(q.ts).toLocaleDateString().padEnd(12); + const skill = `/${q.skill}`.padEnd(20); + const score = `${q.score}/10`.padStart(5); + lines.push(` ${date} ${skill} ${score} (${q.iterations} iter)`); + } + } + lines.push(""); + + // Release velocity + lines.push(" RELEASE VELOCITY (last 30d)"); + lines.push(` ${thin}`); + if (data.velocity.recentVersions.length === 0) { + lines.push(" no releases in the last 30 days"); + } else { + const blocks = " ▁▂▃▄▅▆▇█"; + const max = Math.max(1, ...data.velocity.recentVersions.map((v) => v.commitCount)); + const sparkline = data.velocity.recentVersions + .map((v) => blocks[Math.min(8, Math.round((v.commitCount / max) * 8))]) + .join(""); + lines.push(` ${sparkline}`); + for (const v of data.velocity.recentVersions) { + lines.push(` v${v.version.padEnd(16)} ${v.date} ${v.commitCount} commit(s)`); + } + } + lines.push(""); + + // Design docs + if (data.designDocs.length > 0) { + lines.push(" ACTIVE DESIGN DOCS"); + lines.push(` ${thin}`); + for (const d of data.designDocs) { + const date = d.mtime ? new Date(d.mtime).toLocaleDateString().padEnd(12) : "—".padEnd(12); + lines.push(` ${d.name.slice(0, 52).padEnd(52)} ${date}`); + } + lines.push(""); + } + + // Backlog + lines.push(" TODOS BACKLOG"); + lines.push(` ${thin}`); + if (!data.backlog) { + lines.push(" no TODOS.md found"); + } else { + const priorities = (["P0", "P1", "P2", "P3", "P4"] as const).filter( + (p) => data.backlog![p] > 0 + ); + if (priorities.length === 0) { + lines.push(" backlog is empty"); + } else { + for (const p of priorities) { + lines.push(` ${p}: ${data.backlog![p]}`); + } + } + } + lines.push(""); + + return lines.join("\n"); +} diff --git a/lib/dashboard-data.ts b/lib/dashboard-data.ts new file mode 100644 index 000000000..203b5bee6 --- /dev/null +++ b/lib/dashboard-data.ts @@ -0,0 +1,505 @@ +/** + * dashboard-data — shared data layer for gstack sprint dashboard. + * + * Exports typed loaders and two assemblers: + * buildDashboard(opts) — full data (may call gh/gstack-decision-search) + * buildOnelinerData(opts) — fast subset (disk only, no network) + */ + +import { existsSync, readFileSync, readdirSync, statSync } from "fs"; +import { join, basename } from "path"; +import { execFileSync } from "child_process"; +import { homedir } from "os"; +import { readJsonl } from "./jsonl-store"; +import { resolveSlug as resolveSlugBin, gitBranch } from "./bin-context"; + +// ─── Types ───────────────────────────────────────────────────────────────── + +export type Stage = + | "office-hours" + | "spec" + | "plan-review" + | "implement" + | "review" + | "ship" + | "canary"; + +export interface TimelineEvent { + ts: string; + skill: string; + branch: string; + event: string; +} + +export interface FeatureRow { + branch: string; + stagesReached: Set; + latestStage: Stage | null; + latestTs: string | null; + latestSkill: string | null; +} + +export interface ActivityFeedItem { + ts: string; + skill: string; + branch: string; + event: string; +} + +export interface VelocityData { + releasesThisMonth: number; + avgDaysBetween: number | null; + recentVersions: Array<{ version: string; date: string; commitCount: number }>; +} + +export interface SkillUsageStat { + skill: string; + count: number; +} + +export interface QualityEntry { + ts: string; + skill: string; + score: number; + iterations: number; +} + +export interface DesignDoc { + name: string; + fullPath: string; + mtime: number; +} + +export interface BacklogStats { + P0: number; + P1: number; + P2: number; + P3: number; + P4: number; + unparsed: number; +} + +export interface DashboardData { + slug: string; + branch: string; + version: string | null; + generatedAt: Date; + inFlightCount: number; + features: FeatureRow[]; + activity: ActivityFeedItem[]; + velocity: VelocityData; + topSkills: SkillUsageStat[]; + quality: QualityEntry[]; + designDocs: DesignDoc[]; + backlog: BacklogStats | null; + openDecisions: number | null; + ghAvailable: boolean; + prMap: Map; + defaultBranch: string | null; +} + +export interface OnelinerData { + slug: string; + branch: string; + version: string | null; + inFlightCount: number; + currentBranchStages: Set; + currentBranchLatestStage: Stage | null; + p1Count: number | null; + lastShipDate: string | null; +} + +// ─── Constants ────────────────────────────────────────────────────────────── + +export const STAGE_ORDER: Stage[] = [ + "office-hours", + "spec", + "plan-review", + "implement", + "review", + "ship", + "canary", +]; + +export const STAGE_LABELS: Record = { + "office-hours": "OH", + spec: "Spec", + "plan-review": "Plan", + implement: "Impl", + review: "Rev", + ship: "Ship", + canary: "Canary", +}; + +export const SKILL_TO_STAGE: Record = { + "office-hours": "office-hours", + spec: "spec", + "plan-ceo-review": "plan-review", + "plan-eng-review": "plan-review", + "plan-design-review": "plan-review", + "plan-devex-review": "plan-review", + autoplan: "plan-review", + review: "review", + codex: "review", + "design-review": "review", + "devex-review": "review", + qa: "implement", + "qa-only": "implement", + investigate: "implement", + ship: "ship", + "land-and-deploy": "ship", + canary: "canary", +}; + +const HISTORY_WINDOW_DAYS = 30; +const IN_FLIGHT_WINDOW_DAYS = 90; + +// ─── Private helpers ──────────────────────────────────────────────────────── + +function stageForSkill(skill: string): Stage { + return SKILL_TO_STAGE[skill] ?? "implement"; +} + +function withinWindow(ts: string | undefined, days: number): boolean { + if (!ts) return false; + const t = new Date(ts).getTime(); + if (Number.isNaN(t)) return false; + return Date.now() - t <= days * 24 * 60 * 60 * 1000; +} + +function binDir(): string { + // import.meta.dir is this file's directory (lib/); go up to repo root then into bin/ + return join(import.meta.dir, "..", "bin"); +} + +// ─── Path resolvers ───────────────────────────────────────────────────────── + +export function resolveGstackHome(home?: string): string { + return home ?? process.env.GSTACK_HOME ?? join(homedir(), ".gstack"); +} + +export function resolveProjectSlug(slug?: string): string { + if (slug) return slug; + const slugBin = join(binDir(), "gstack-slug"); + return resolveSlugBin(slugBin); +} + +// ─── Individual loaders ───────────────────────────────────────────────────── + +export function loadVersion(cwd = process.cwd()): string | null { + const p = join(cwd, "VERSION"); + if (!existsSync(p)) return null; + const v = readFileSync(p, "utf-8").trim(); + return v || null; +} + +export function loadTimeline(projectDir: string): TimelineEvent[] { + return readJsonl(join(projectDir, "timeline.jsonl")); +} + +export function loadInFlightFeatures(timeline: TimelineEvent[]): FeatureRow[] { + let branches: string[] = []; + try { + const out = execFileSync("git", ["branch", "--format=%(refname:short)"], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }); + branches = out.split("\n").map((l) => l.trim()).filter(Boolean); + } catch {} + + const completedEvents = timeline.filter( + (e) => e.event === "completed" && e.branch && e.ts && e.skill + ); + + const entriesByBranch = new Map(); + for (const e of completedEvents) { + const list = entriesByBranch.get(e.branch) ?? []; + list.push(e); + entriesByBranch.set(e.branch, list); + } + + return branches.map((branch) => { + const entries = entriesByBranch.get(branch) ?? []; + const recent = entries.filter((e) => withinWindow(e.ts, IN_FLIGHT_WINDOW_DAYS)); + const stagesReached = new Set(recent.map((e) => stageForSkill(e.skill))); + let latestEntry: TimelineEvent | null = null; + for (const e of entries) { + if (!latestEntry || new Date(e.ts) > new Date(latestEntry.ts)) latestEntry = e; + } + return { + branch, + stagesReached, + latestStage: latestEntry ? stageForSkill(latestEntry.skill) : null, + latestTs: latestEntry?.ts ?? null, + latestSkill: latestEntry?.skill ?? null, + }; + }); +} + +export function loadActivityFeed(timeline: TimelineEvent[], limit = 12): ActivityFeedItem[] { + return timeline + .filter((e) => e.ts && e.skill) + .sort((a, b) => new Date(b.ts).getTime() - new Date(a.ts).getTime()) + .slice(0, limit) + .map((e) => ({ ts: e.ts, skill: e.skill, branch: e.branch ?? "unknown", event: e.event ?? "" })); +} + +export function loadVelocity(cwd = process.cwd()): VelocityData { + const changelogPath = join(cwd, "CHANGELOG.md"); + if (!existsSync(changelogPath)) { + return { releasesThisMonth: 0, avgDaysBetween: null, recentVersions: [] }; + } + const changelog = readFileSync(changelogPath, "utf-8"); + const re = /^## \[(\d+\.\d+\.\d+\.\d+)\] - (\d{4}-\d{2}-\d{2})/gm; + const all: Array<{ version: string; date: string }> = []; + let m: RegExpExecArray | null; + while ((m = re.exec(changelog)) !== null) all.push({ version: m[1], date: m[2] }); + + const now = new Date(); + const releasesThisMonth = all.filter((v) => { + const d = new Date(v.date); + return d.getFullYear() === now.getFullYear() && d.getMonth() === now.getMonth(); + }).length; + + const recent = all + .filter((v) => withinWindow(v.date, HISTORY_WINDOW_DAYS)) + .sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); + + let avgDaysBetween: number | null = null; + if (recent.length >= 2) { + const span = + new Date(recent[recent.length - 1].date).getTime() - new Date(recent[0].date).getTime(); + avgDaysBetween = span / (24 * 60 * 60 * 1000) / (recent.length - 1); + } + + let subjects: string[] = []; + try { + const out = execFileSync( + "git", + ["log", `--since=${HISTORY_WINDOW_DAYS} days ago`, "--pretty=format:%s"], + { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] } + ); + subjects = out.split("\n").filter(Boolean); + } catch {} + + const commitCounts = new Map(); + for (const s of subjects) { + const vm = s.match(/^v(\d+\.\d+\.\d+\.\d+)\s/); + if (vm) commitCounts.set(vm[1], (commitCounts.get(vm[1]) ?? 0) + 1); + } + + return { + releasesThisMonth, + avgDaysBetween, + recentVersions: recent.map((v) => ({ ...v, commitCount: commitCounts.get(v.version) ?? 0 })), + }; +} + +export function loadOpenDecisions(projectDir: string): number | null { + const activePath = join(projectDir, "decisions.active.json"); + if (existsSync(activePath)) { + try { + const arr = JSON.parse(readFileSync(activePath, "utf-8")); + return Array.isArray(arr) ? arr.length : null; + } catch {} + } + try { + const out = execFileSync(join(binDir(), "gstack-decision-search"), ["--json"], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }); + const rows = JSON.parse(out || "[]"); + return Array.isArray(rows) ? rows.length : null; + } catch { + return null; + } +} + +export function loadPrData( + features: FeatureRow[], + defaultBranch: string | null +): { ghAvailable: boolean; prMap: Map } { + const prMap = new Map(); + try { + const out = execFileSync( + "gh", + ["pr", "list", "--json", "number,state,headRefName", "--limit", "100"], + { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] } + ); + const prs = JSON.parse(out) as { number: number; state: string; headRefName: string }[]; + const branchSet = new Set( + features.filter((f) => f.branch !== defaultBranch).map((f) => f.branch) + ); + for (const pr of prs) { + if (branchSet.has(pr.headRefName)) { + prMap.set(pr.headRefName, { number: pr.number, state: pr.state }); + } + } + return { ghAvailable: true, prMap }; + } catch { + return { ghAvailable: false, prMap }; + } +} + +function resolveDefaultBranch(): string | null { + try { + return execFileSync( + "gh", + ["repo", "view", "--json", "defaultBranchRef", "--jq", ".defaultBranchRef.name"], + { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] } + ).trim(); + } catch { + try { + const ref = execFileSync("git", ["symbolic-ref", "refs/remotes/origin/HEAD"], { + encoding: "utf-8", + stdio: ["ignore", "pipe", "ignore"], + }).trim(); + return ref.replace(/^refs\/remotes\/origin\//, ""); + } catch { + return null; + } + } +} + +export function loadTopSkills(analyticsDir: string, limit = 6): SkillUsageStat[] { + const entries = readJsonl<{ skill?: string; ts?: string }>( + join(analyticsDir, "skill-usage.jsonl") + ).filter((e) => e.skill && withinWindow(e.ts, HISTORY_WINDOW_DAYS)); + + const counts = new Map(); + for (const e of entries) counts.set(e.skill!, (counts.get(e.skill!) ?? 0) + 1); + return [...counts.entries()] + .sort((a, b) => b[1] - a[1]) + .slice(0, limit) + .map(([skill, count]) => ({ skill, count })); +} + +export function loadQualityHistory(analyticsDir: string, limit = 8): QualityEntry[] { + return readJsonl<{ ts?: string; skill?: string; quality_score?: number; iterations?: number }>( + join(analyticsDir, "spec-review.jsonl") + ) + .filter((e) => e.ts && withinWindow(e.ts, HISTORY_WINDOW_DAYS) && e.quality_score !== undefined) + .sort((a, b) => new Date(b.ts!).getTime() - new Date(a.ts!).getTime()) + .slice(0, limit) + .map((e) => ({ + ts: e.ts!, + skill: e.skill ?? "—", + score: e.quality_score!, + iterations: e.iterations ?? 0, + })); +} + +export function loadDesignDocs(projectDir: string, limit = 10): DesignDoc[] { + if (!existsSync(projectDir)) return []; + let files: string[]; + try { + files = readdirSync(projectDir).filter((f) => /-design-.*\.md$/.test(f)); + } catch { + return []; + } + return files + .map((name) => { + const fullPath = join(projectDir, name); + let mtime = 0; + try { + mtime = statSync(fullPath).mtimeMs; + } catch {} + return { name, fullPath, mtime }; + }) + .sort((a, b) => b.mtime - a.mtime) + .slice(0, limit); +} + +export function loadBacklog(cwd = process.cwd()): BacklogStats | null { + const todosPath = join(cwd, "TODOS.md"); + if (!existsSync(todosPath)) return null; + const todos = readFileSync(todosPath, "utf-8"); + const counts: BacklogStats = { P0: 0, P1: 0, P2: 0, P3: 0, P4: 0, unparsed: 0 }; + const re = /^### (P[0-4]):/gm; + let m: RegExpExecArray | null; + while ((m = re.exec(todos)) !== null) { + counts[m[1] as keyof BacklogStats]++; + } + return counts; +} + +// ─── Assemblers ───────────────────────────────────────────────────────────── + +export interface BuildOptions { + slug?: string; + home?: string; + loadPr?: boolean; + loadDecisions?: boolean; +} + +export function buildDashboard(opts: BuildOptions = {}): DashboardData { + const { loadPr = true, loadDecisions = true } = opts; + const slug = resolveProjectSlug(opts.slug); + const home = resolveGstackHome(opts.home); + const projectDir = join(home, "projects", slug); + const analyticsDir = join(home, "analytics"); + const branch = gitBranch() ?? "unknown"; + + const timeline = loadTimeline(projectDir); + const features = loadInFlightFeatures(timeline); + const inFlightCount = features.filter( + (f) => f.stagesReached.size > 0 && !f.stagesReached.has("ship") && !f.stagesReached.has("canary") + ).length; + + const defaultBranch = loadPr ? resolveDefaultBranch() : null; + const { ghAvailable, prMap } = loadPr + ? loadPrData(features, defaultBranch) + : { ghAvailable: false, prMap: new Map() }; + + return { + slug, + branch, + version: loadVersion(), + generatedAt: new Date(), + inFlightCount, + features, + activity: loadActivityFeed(timeline), + velocity: loadVelocity(), + topSkills: loadTopSkills(analyticsDir), + quality: loadQualityHistory(analyticsDir), + designDocs: loadDesignDocs(projectDir), + backlog: loadBacklog(), + openDecisions: loadDecisions ? loadOpenDecisions(projectDir) : null, + ghAvailable, + prMap, + defaultBranch, + }; +} + +export function buildOnelinerData(opts: { slug?: string; home?: string } = {}): OnelinerData { + const slug = resolveProjectSlug(opts.slug); + const home = resolveGstackHome(opts.home); + const projectDir = join(home, "projects", slug); + const branch = gitBranch() ?? "unknown"; + + const timeline = loadTimeline(projectDir); + const features = loadInFlightFeatures(timeline); + const inFlightCount = features.filter( + (f) => f.stagesReached.size > 0 && !f.stagesReached.has("ship") && !f.stagesReached.has("canary") + ).length; + + const currentFeature = features.find((f) => f.branch === branch); + const velocity = loadVelocity(); + const lastShipDate = + velocity.recentVersions.length > 0 + ? velocity.recentVersions[velocity.recentVersions.length - 1].date + : null; + + const backlog = loadBacklog(); + + return { + slug, + branch, + version: loadVersion(), + inFlightCount, + currentBranchStages: currentFeature?.stagesReached ?? new Set(), + currentBranchLatestStage: currentFeature?.latestStage ?? null, + p1Count: backlog?.P1 ?? null, + lastShipDate, + }; +} diff --git a/scripts/proactive-suggestions.json b/scripts/proactive-suggestions.json index d08c60853..bd60bfe0b 100644 --- a/scripts/proactive-suggestions.json +++ b/scripts/proactive-suggestions.json @@ -53,6 +53,11 @@ "routing": "Infrastructure-first security audit: secrets archaeology,\ndependency supply chain, CI/CD pipeline security, LLM/AI security, skill supply chain\nscanning, plus OWASP Top 10, STRIDE threat modeling, and active verification.\nTwo modes: daily (zero-noise, 8/10 confidence gate) and comprehensive (monthly deep\nscan, 2/10 bar). Trend tracking across audit runs.\nUse when: \"security audit\", \"threat model\", \"pentest review\", \"OWASP\", \"CSO review\".", "voice_line": "Voice triggers (speech-to-text aliases): \"see-so\", \"see so\", \"security review\", \"security check\", \"vulnerability scan\", \"run security\"." }, + "dashboard": { + "lead": "Sprint board: compact terminal (default) · --full · --web HTML · --slug .", + "routing": "Use when asked for \"sprint status\", \"what's in flight\", \"project status\", or \"dashboard\".", + "voice_line": null + }, "design-consultation": { "lead": "Design consultation: understands your product, researches the landscape, proposes a complete design system (aesthetic, typography, color, layout, spacing, motion), and generates font+color preview...", "routing": "Creates DESIGN.md as your project's design source\nof truth. For existing sites, use /plan-design-review to infer the system instead.\nUse when asked to \"design system\", \"brand guidelines\", or \"create DESIGN.md\".\nProactively suggest when starting a new project's UI with no existing\ndesign system or DESIGN.md.", diff --git a/test/dashboard-cli.test.ts b/test/dashboard-cli.test.ts new file mode 100644 index 000000000..0e8c55e3d --- /dev/null +++ b/test/dashboard-cli.test.ts @@ -0,0 +1,257 @@ +/** + * Unit tests for lib/dashboard-cli.ts — terminal renderers. + * + * Uses fabricated DashboardData/OnelinerData objects to test rendering + * in isolation — no file I/O, no network calls. + */ + +import { describe, it, expect } from "bun:test"; +import { renderOneliner, renderCompact, renderFull } from "../lib/dashboard-cli"; +import type { OnelinerData, DashboardData } from "../lib/dashboard-data"; +import { STAGE_ORDER } from "../lib/dashboard-data"; + +// ─── Fixtures ──────────────────────────────────────────────────────────────── + +function makeOneliner(overrides: Partial = {}): OnelinerData { + return { + slug: "test-project", + branch: "feature/test", + version: "1.0.0.0", + inFlightCount: 2, + currentBranchStages: new Set(), + currentBranchLatestStage: null, + p1Count: 3, + lastShipDate: new Date(Date.now() - 2 * 86400000).toISOString().slice(0, 10), + ...overrides, + }; +} + +function makeDashboard(overrides: Partial = {}): DashboardData { + return { + slug: "test-project", + branch: "feature/test", + version: "1.2.3.0", + generatedAt: new Date("2026-01-01T12:00:00Z"), + inFlightCount: 1, + features: [], + activity: [], + velocity: { releasesThisMonth: 2, avgDaysBetween: 7.5, recentVersions: [] }, + topSkills: [], + quality: [], + designDocs: [], + backlog: { P0: 0, P1: 3, P2: 5, P3: 10, P4: 2, unparsed: 0 }, + openDecisions: 2, + ghAvailable: false, + prMap: new Map(), + defaultBranch: "main", + ...overrides, + }; +} + +// ─── renderOneliner ────────────────────────────────────────────────────────── + +describe("renderOneliner", () => { + it("includes branch name and version", () => { + const line = renderOneliner(makeOneliner()); + expect(line).toContain("feature/test"); + expect(line).toContain("v1.0.0.0"); + }); + + it("includes in-flight count", () => { + const line = renderOneliner(makeOneliner({ inFlightCount: 5 })); + expect(line).toContain("5 in-flight"); + }); + + it("shows no stage section when currentBranchLatestStage is null", () => { + const line = renderOneliner(makeOneliner({ + currentBranchLatestStage: null, + currentBranchStages: new Set(), + })); + // No stage labels should appear + expect(line).not.toContain("OH:"); + expect(line).not.toContain("Spec:"); + }); + + it("shows stage progress when latestStage is set", () => { + const line = renderOneliner(makeOneliner({ + currentBranchLatestStage: "spec", + currentBranchStages: new Set(["office-hours", "spec"]), + })); + expect(line).toContain("OH:"); + expect(line).toContain("Spec:"); + // plan-review should be visible (latestIdx+2 = spec is index 1, showUpTo = min(3, 6) = 3) + expect(line).toContain("Plan:"); + }); + + it("marks reached stages with ✓ and current with ▶", () => { + const line = renderOneliner(makeOneliner({ + currentBranchLatestStage: "spec", + currentBranchStages: new Set(["office-hours", "spec"]), + })); + expect(line).toContain("OH:✓"); + expect(line).toContain("Spec:▶"); + }); + + it("shows P1 count", () => { + const line = renderOneliner(makeOneliner({ p1Count: 7 })); + expect(line).toContain("P1:7"); + }); + + it("omits P1 when p1Count is null", () => { + const line = renderOneliner(makeOneliner({ p1Count: null })); + expect(line).not.toContain("P1:"); + }); + + it("shows 'today' when lastShipDate is today", () => { + const today = new Date().toISOString().slice(0, 10); + const line = renderOneliner(makeOneliner({ lastShipDate: today })); + expect(line).toContain("shipped today"); + }); + + it("omits ship date when lastShipDate is null", () => { + const line = renderOneliner(makeOneliner({ lastShipDate: null })); + expect(line).not.toContain("shipped"); + }); +}); + +// ─── renderCompact ─────────────────────────────────────────────────────────── + +describe("renderCompact", () => { + it("includes slug, version, in-flight, ships/mo in header", () => { + const out = renderCompact(makeDashboard()); + expect(out).toContain("test-project"); + expect(out).toContain("v1.2.3.0"); + expect(out).toContain("1 in-flight"); + expect(out).toContain("2 ships/mo"); + }); + + it("shows 'no tracked branches yet' when no tracked features", () => { + const out = renderCompact(makeDashboard({ features: [] })); + expect(out).toContain("no tracked branches yet"); + }); + + it("shows untracked count when branches have no stage activity", () => { + const features = [ + { + branch: "feature/untracked", + stagesReached: new Set() as Set, + latestStage: null, + latestTs: null, + latestSkill: null, + }, + { + branch: "feature/also-untracked", + stagesReached: new Set() as Set, + latestStage: null, + latestTs: null, + latestSkill: null, + }, + ]; + const out = renderCompact(makeDashboard({ features })); + expect(out).toContain("(+2 untracked"); + }); + + it("shows ◀ marker for current branch", () => { + const features = [ + { + branch: "feature/test", + stagesReached: new Set(["spec"]) as Set, + latestStage: "spec" as import("../lib/dashboard-data").Stage, + latestTs: new Date().toISOString(), + latestSkill: "spec", + }, + ]; + const out = renderCompact(makeDashboard({ features })); + expect(out).toContain("◀"); + }); + + it("shows PR badge when prMap has entry", () => { + const features = [ + { + branch: "feature/test", + stagesReached: new Set(["spec"]) as Set, + latestStage: "spec" as import("../lib/dashboard-data").Stage, + latestTs: new Date().toISOString(), + latestSkill: "spec", + }, + ]; + const prMap = new Map([["feature/test", { number: 42, state: "open" }]]); + const out = renderCompact(makeDashboard({ features, prMap })); + expect(out).toContain("#42"); + }); + + it("shows 'no activity yet' when activity is empty", () => { + const out = renderCompact(makeDashboard({ activity: [] })); + expect(out).toContain("no activity yet"); + }); + + it("shows avg days/release in header when available", () => { + const out = renderCompact(makeDashboard()); + expect(out).toContain("avg 7.5d"); + }); + + it("includes P1 backlog count in header", () => { + const out = renderCompact(makeDashboard()); + expect(out).toContain("P1:3"); + }); +}); + +// ─── renderFull ────────────────────────────────────────────────────────────── + +describe("renderFull", () => { + it("includes all section headers", () => { + const out = renderFull(makeDashboard()); + expect(out).toContain("PIPELINE"); + expect(out).toContain("ACTIVITY FEED"); + expect(out).toContain("TOP SKILLS"); + expect(out).toContain("QUALITY SCORES"); + expect(out).toContain("RELEASE VELOCITY"); + expect(out).toContain("TODOS BACKLOG"); + }); + + it("shows open decisions in header", () => { + const out = renderFull(makeDashboard({ openDecisions: 5 })); + expect(out).toContain("decisions:5"); + }); + + it("shows — when openDecisions is null", () => { + const out = renderFull(makeDashboard({ openDecisions: null })); + expect(out).toContain("decisions:—"); + }); + + it("shows 'no local branches found' when features is empty", () => { + const out = renderFull(makeDashboard({ features: [] })); + expect(out).toContain("no local branches found"); + }); + + it("shows 'no TODOS.md found' when backlog is null", () => { + const out = renderFull(makeDashboard({ backlog: null })); + expect(out).toContain("no TODOS.md found"); + }); + + it("shows backlog priority counts", () => { + const out = renderFull(makeDashboard()); + expect(out).toContain("P1: 3"); + expect(out).toContain("P2: 5"); + }); + + it("skips ACTIVE DESIGN DOCS section when designDocs is empty", () => { + const out = renderFull(makeDashboard({ designDocs: [] })); + expect(out).not.toContain("ACTIVE DESIGN DOCS"); + }); + + it("shows ACTIVE DESIGN DOCS section when docs exist", () => { + const docs = [{ name: "user-feature-design-2026.md", fullPath: "/tmp/foo.md", mtime: Date.now() }]; + const out = renderFull(makeDashboard({ designDocs: docs })); + expect(out).toContain("ACTIVE DESIGN DOCS"); + expect(out).toContain("user-feature-design-2026.md"); + }); + + it("shows 'no releases in the last 30 days' when recentVersions is empty", () => { + const dashboard = makeDashboard({ + velocity: { releasesThisMonth: 0, avgDaysBetween: null, recentVersions: [] }, + }); + const out = renderFull(dashboard); + expect(out).toContain("no releases in the last 30 days"); + }); +}); diff --git a/test/dashboard-data.test.ts b/test/dashboard-data.test.ts new file mode 100644 index 000000000..45d70abe9 --- /dev/null +++ b/test/dashboard-data.test.ts @@ -0,0 +1,346 @@ +/** + * Unit tests for lib/dashboard-data.ts — loaders and assemblers. + * + * Uses real temp directories (no mocks) so the file-reading paths are + * exercised exactly as they run in production. Network calls (gh, git log) + * are not exercised here — those paths degrade gracefully in the code. + */ + +import { describe, it, expect, beforeEach, afterEach } from "bun:test"; +import { mkdtempSync, writeFileSync, mkdirSync, rmSync } from "fs"; +import { join } from "path"; +import { tmpdir } from "os"; + +import { + loadVersion, + loadBacklog, + loadVelocity, + loadDesignDocs, + loadActivityFeed, + loadInFlightFeatures, + STAGE_ORDER, + type TimelineEvent, +} from "../lib/dashboard-data"; + +function tmp(): string { + return mkdtempSync(join(tmpdir(), "gstack-dash-test-")); +} + +// ─── loadVersion ──────────────────────────────────────────────────────────── + +describe("loadVersion", () => { + let dir: string; + beforeEach(() => { dir = tmp(); }); + afterEach(() => rmSync(dir, { recursive: true, force: true })); + + it("returns null when VERSION file is missing", () => { + expect(loadVersion(dir)).toBeNull(); + }); + + it("returns trimmed version string", () => { + writeFileSync(join(dir, "VERSION"), "1.58.5.0\n"); + expect(loadVersion(dir)).toBe("1.58.5.0"); + }); + + it("returns null for empty VERSION file", () => { + writeFileSync(join(dir, "VERSION"), " \n"); + expect(loadVersion(dir)).toBeNull(); + }); +}); + +// ─── loadBacklog ───────────────────────────────────────────────────────────── + +describe("loadBacklog", () => { + let dir: string; + beforeEach(() => { dir = tmp(); }); + afterEach(() => rmSync(dir, { recursive: true, force: true })); + + it("returns null when TODOS.md is missing", () => { + expect(loadBacklog(dir)).toBeNull(); + }); + + it("counts only P0–P4 tagged headings", () => { + writeFileSync(join(dir, "TODOS.md"), [ + "### P0: urgent thing", + "", + "**What:** do the urgent thing.", + "", + "### P1: another thing", + "### P2: yet another", + "### P3: low priority", + "### P4: very low", + "", + "### Context: some context heading", + "### Eval harness: unrelated", + "### ✅ DONE (v1.0): old thing", + ].join("\n")); + + const result = loadBacklog(dir); + expect(result).not.toBeNull(); + expect(result!.P0).toBe(1); + expect(result!.P1).toBe(1); + expect(result!.P2).toBe(1); + expect(result!.P3).toBe(1); + expect(result!.P4).toBe(1); + expect(result!.unparsed).toBe(0); + }); + + it("counts multiple items per priority", () => { + writeFileSync(join(dir, "TODOS.md"), [ + "### P1: first", + "### P1: second", + "### P1: third", + "### P2: one", + ].join("\n")); + + const result = loadBacklog(dir); + expect(result!.P1).toBe(3); + expect(result!.P2).toBe(1); + expect(result!.P0).toBe(0); + }); + + it("returns zero counts (not null) for empty TODOS.md", () => { + writeFileSync(join(dir, "TODOS.md"), "# No priority items yet\n"); + const result = loadBacklog(dir); + expect(result).not.toBeNull(); + expect(result!.P0).toBe(0); + expect(result!.P1).toBe(0); + }); +}); + +// ─── loadVelocity ──────────────────────────────────────────────────────────── + +describe("loadVelocity", () => { + let dir: string; + beforeEach(() => { dir = tmp(); }); + afterEach(() => rmSync(dir, { recursive: true, force: true })); + + it("returns zeroes when CHANGELOG.md is missing", () => { + const v = loadVelocity(dir); + expect(v.releasesThisMonth).toBe(0); + expect(v.avgDaysBetween).toBeNull(); + expect(v.recentVersions).toEqual([]); + }); + + it("parses releases and counts this month", () => { + const now = new Date(); + const thisMonth = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-01`; + const prevMonth = new Date(now.getFullYear(), now.getMonth() - 1, 1); + const prevMonthStr = `${prevMonth.getFullYear()}-${String(prevMonth.getMonth() + 1).padStart(2, "0")}-01`; + + writeFileSync(join(dir, "CHANGELOG.md"), [ + `## [1.2.0.0] - ${thisMonth}`, + "", + "Some changes.", + "", + `## [1.1.0.0] - ${prevMonthStr}`, + "", + "Earlier changes.", + ].join("\n")); + + const v = loadVelocity(dir); + expect(v.releasesThisMonth).toBe(1); + // recentVersions filtered to 30-day window — prevMonth may or may not be included + expect(v.recentVersions.length).toBeGreaterThanOrEqual(1); + }); + + it("returns null avgDaysBetween with fewer than 2 recent releases", () => { + const now = new Date(); + const today = now.toISOString().slice(0, 10); + writeFileSync(join(dir, "CHANGELOG.md"), `## [1.0.0.0] - ${today}\n\nOnly one.\n`); + const v = loadVelocity(dir); + expect(v.avgDaysBetween).toBeNull(); + }); + + it("computes avgDaysBetween for 2 releases", () => { + const now = new Date(); + const d1 = new Date(now.getTime() - 10 * 86400000).toISOString().slice(0, 10); + const d2 = now.toISOString().slice(0, 10); + writeFileSync(join(dir, "CHANGELOG.md"), [ + `## [1.1.0.0] - ${d2}`, + "", + `## [1.0.0.0] - ${d1}`, + ].join("\n")); + const v = loadVelocity(dir); + expect(v.avgDaysBetween).not.toBeNull(); + expect(v.avgDaysBetween!).toBeCloseTo(10, 0); + }); +}); + +// ─── loadDesignDocs ────────────────────────────────────────────────────────── + +describe("loadDesignDocs", () => { + let dir: string; + beforeEach(() => { dir = tmp(); }); + afterEach(() => rmSync(dir, { recursive: true, force: true })); + + it("returns [] when directory does not exist", () => { + expect(loadDesignDocs(join(dir, "nonexistent"))).toEqual([]); + }); + + it("returns [] when directory exists but has no design docs", () => { + expect(loadDesignDocs(dir)).toEqual([]); + }); + + it("matches *-design-*.md files and sorts by mtime descending", () => { + writeFileSync(join(dir, "user-feature-design-20260601.md"), "# old design"); + writeFileSync(join(dir, "user-feature-design-20260620.md"), "# new design"); + writeFileSync(join(dir, "some-other-file.md"), "# not a design"); + + const docs = loadDesignDocs(dir); + expect(docs.length).toBe(2); + expect(docs.every((d) => d.name.includes("-design-"))).toBe(true); + // sorted newest first (by mtime — order of writes determines this in the test) + }); + + it("caps at limit", () => { + for (let i = 0; i < 15; i++) { + writeFileSync(join(dir, `branch-feature-design-2026060${i}.md`), `# design ${i}`); + } + expect(loadDesignDocs(dir, 5).length).toBe(5); + expect(loadDesignDocs(dir, 10).length).toBe(10); + }); +}); + +// ─── loadActivityFeed ──────────────────────────────────────────────────────── + +describe("loadActivityFeed", () => { + const now = new Date(); + const makeEvent = (skill: string, branch: string, minsAgo: number): TimelineEvent => ({ + ts: new Date(now.getTime() - minsAgo * 60000).toISOString(), + skill, + branch, + event: "completed", + }); + + it("returns empty array for no events", () => { + expect(loadActivityFeed([])).toEqual([]); + }); + + it("sorts descending by timestamp", () => { + const events = [ + makeEvent("spec", "main", 120), + makeEvent("ship", "feature/a", 10), + makeEvent("review", "feature/b", 60), + ]; + const feed = loadActivityFeed(events); + expect(feed[0].skill).toBe("ship"); + expect(feed[1].skill).toBe("review"); + expect(feed[2].skill).toBe("spec"); + }); + + it("respects limit", () => { + const events = Array.from({ length: 20 }, (_, i) => makeEvent(`skill${i}`, "main", i * 5)); + expect(loadActivityFeed(events, 5).length).toBe(5); + expect(loadActivityFeed(events, 10).length).toBe(10); + }); + + it("filters out events missing ts or skill", () => { + const events: TimelineEvent[] = [ + { ts: "", skill: "spec", branch: "main", event: "completed" }, + { ts: now.toISOString(), skill: "", branch: "main", event: "completed" }, + makeEvent("ship", "main", 5), + ]; + const feed = loadActivityFeed(events); + expect(feed.length).toBe(1); + expect(feed[0].skill).toBe("ship"); + }); +}); + +// ─── loadInFlightFeatures ──────────────────────────────────────────────────── + +describe("loadInFlightFeatures (timeline only — no git branch)", () => { + const recentTs = new Date(Date.now() - 5 * 86400000).toISOString(); // 5 days ago + const staleTs = new Date(Date.now() - 95 * 86400000).toISOString(); // 95 days ago + + it("returns empty stagesReached for branches with no completed events in window", () => { + const timeline: TimelineEvent[] = [ + { ts: staleTs, skill: "spec", branch: "feature/old", event: "completed" }, + ]; + const features = loadInFlightFeatures(timeline); + const old = features.find((f) => f.branch === "feature/old"); + // stagesReached uses 90-day window → should be empty for 95-day-old event + if (old) { + expect(old.stagesReached.size).toBe(0); + } + // latestEntry uses all-time → latestStage will still be set + if (old) { + expect(old.latestStage).toBe("spec"); + } + }); + + it("populates stagesReached for events within 90 days", () => { + const timeline: TimelineEvent[] = [ + { ts: recentTs, skill: "spec", branch: "feature/new", event: "completed" }, + { ts: recentTs, skill: "plan-eng-review", branch: "feature/new", event: "completed" }, + ]; + const features = loadInFlightFeatures(timeline); + const f = features.find((f) => f.branch === "feature/new"); + if (f) { + expect(f.stagesReached.has("spec")).toBe(true); + expect(f.stagesReached.has("plan-review")).toBe(true); + } + }); + + it("does not count stale-only branches as in-flight via stagesReached", () => { + const timeline: TimelineEvent[] = [ + { ts: staleTs, skill: "spec", branch: "feature/stale", event: "completed" }, + ]; + const features = loadInFlightFeatures(timeline); + const stale = features.find((f) => f.branch === "feature/stale"); + if (stale) { + // stagesReached is empty (outside 90-day window) → not counted in-flight + const isInFlight = + stale.stagesReached.size > 0 && + !stale.stagesReached.has("ship") && + !stale.stagesReached.has("canary"); + expect(isInFlight).toBe(false); + } + }); + + it("canary stage does not count as in-flight", () => { + const timeline: TimelineEvent[] = [ + { ts: recentTs, skill: "canary", branch: "feature/deployed", event: "completed" }, + ]; + const features = loadInFlightFeatures(timeline); + const f = features.find((f) => f.branch === "feature/deployed"); + if (f) { + const isInFlight = + f.stagesReached.size > 0 && + !f.stagesReached.has("ship") && + !f.stagesReached.has("canary"); + expect(isInFlight).toBe(false); + } + }); + + it("ship stage does not count as in-flight", () => { + const timeline: TimelineEvent[] = [ + { ts: recentTs, skill: "ship", branch: "feature/shipped", event: "completed" }, + ]; + const features = loadInFlightFeatures(timeline); + const f = features.find((f) => f.branch === "feature/shipped"); + if (f) { + const isInFlight = + f.stagesReached.size > 0 && + !f.stagesReached.has("ship") && + !f.stagesReached.has("canary"); + expect(isInFlight).toBe(false); + } + }); +}); + +// ─── STAGE_ORDER sanity ────────────────────────────────────────────────────── + +describe("STAGE_ORDER", () => { + it("has 7 stages in the correct order", () => { + expect(STAGE_ORDER).toEqual([ + "office-hours", + "spec", + "plan-review", + "implement", + "review", + "ship", + "canary", + ]); + }); +});
  • - ${escapeHtml(f.name)} - ${f.mtime ? new Date(f.mtime).toLocaleDateString() : "—"} -