feat(ui): show forgeplan CLI + web versions in footer#57
Merged
Conversation
Adds a small bottom-left footer rendering both the @forgeplan/web package
version (baked at vite-build time via a `define` constant) and the host
forgeplan CLI version (resolved on first request via a memoized
`forgeplan --version` spawn). New read-only `/api/version` endpoint serves
both. CLI lookup degrades to `null` on ENOENT / parse failure; UI then
shows `cli ?` instead of erroring.
Rule 22 is amended to make the flag-only `--version` invocation an
explicit, narrowly scoped exception to the subcommand allow-list — it
flows through a dedicated `getForgeplanVersion()` helper that reuses the
same FORGEPLAN_BIN validation, concurrency cap, and timeout as
`runForgeplan`, and never reaches the subcommand check.
Smoke: `npm run check` clean; `curl /api/version` returns
`{ web: "0.1.11", cli: "0.27.0" }` against vite dev with the repo's own
.forgeplan/; spawn-error path empirically reachable via ENOENT.
Refs: PRD-012, RFC-011, EVID-016
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 tasks
explosivebit
added a commit
that referenced
this pull request
May 6, 2026
… light theme (#65) ## Summary Bundles three feature streams from develop into v0.1.12: - **F18 Time-travel slider — SINGLE mode** (PR #63) — `/api/snapshot?at=ISO`, `/api/timeline-events`, `widgets/timeline/`, canvas snapshot hydration. PRD-008 / RFC-007 / EVID-020 active. - **`init --experimental` flag** (PR #60) — opt-in to esbuild single-file bundle, ~9× smaller `dist/`. PRD-014 / RFC-013 / EVID-018 active. Closes the verification ask in #59. - **Multi-graph mosaic dashboard** (PR #64) — split-pane layout with persistent layout, addresses #61. - **Version display footer** (PR #57) — `getForgeplanVersion()` + `compareSemver`. PRD-012 / RFC-011 / EVID-016 active. - **Shared UI primitives + npm update notification** (PR #58) — modal manager + update checker. PRD-013 / RFC-012 / EVID-017 active. - **Light theme** (PR #62) — dual-token CSS + `data-theme` attribute. PRD-015 / RFC-014 / EVID-019 active. COMPARE mode for time-travel (Alt-drag two scrubbers + diff overlay) intentionally deferred — endpoint returns 501 with TODO marker. ## Why Five feature PRs accumulated on develop since v0.1.11 (May 6). Cutting them as a single minor-patch release rather than gating on the v0.2.0 milestone (full proactive-surfacer arc) keeps the cadence steady and ships the bundle-size win + multi-graph layout to users now. ## Test plan - [x] `npm run check` — 0 errors / 0 warnings across 486 files - [x] `npx vitest run` — 14 files / 127 tests pass - [x] PR #63 CI matrix (3 OS, node 22) — green before merge - [ ] release/v0.1.12 CI matrix — pending on this PR - [ ] Manual smoke after tag → GitHub Release fires `release.yml` workflow ## Refs PRDs activated since v0.1.11: PRD-008, PRD-012, PRD-013, PRD-014, PRD-015. RFCs activated: RFC-007, RFC-011, RFC-012, RFC-013, RFC-014. Evidence: EVID-016 / EVID-017 / EVID-018 / EVID-019 / EVID-020. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a small bottom-left footer rendering both the @forgeplan/web package version (baked at vite-build time via a
defineconstant) and the host forgeplan CLI version (resolved on first request via a memoizedforgeplan --versionspawn). New read-only/api/versionendpoint serves both. CLI lookup degrades tonullon ENOENT / parse failure; UI then showscli ?instead of erroring.Rule 22 is amended to make the flag-only
--versioninvocation an explicit, narrowly scoped exception to the subcommand allow-list — it flows through a dedicatedgetForgeplanVersion()helper that reuses the same FORGEPLAN_BIN validation, concurrency cap, and timeout asrunForgeplan, and never reaches the subcommand check.Smoke:
npm run checkclean;curl /api/versionreturns{ web: "0.1.11", cli: "0.27.0" }against vite dev with the repo's own .forgeplan/; spawn-error path empirically reachable via ENOENT.Refs: PRD-012, RFC-011, EVID-016