Skip to content

feat(ui): show forgeplan CLI + web versions in footer#57

Merged
fedorovvvv merged 1 commit into
developfrom
feature/version-footer
May 6, 2026
Merged

feat(ui): show forgeplan CLI + web versions in footer#57
fedorovvvv merged 1 commit into
developfrom
feature/version-footer

Conversation

@fedorovvvv
Copy link
Copy Markdown
Collaborator

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

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>
@fedorovvvv fedorovvvv enabled auto-merge May 6, 2026 16:37
@fedorovvvv fedorovvvv merged commit df7f72f into develop May 6, 2026
3 checks passed
@fedorovvvv fedorovvvv deleted the feature/version-footer branch May 6, 2026 16:38
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant