feat: publish the UI as a static site - #2
Merged
Merged
Conversation
The map pins one version at a time, so the set of questions it can ask is finite: the unpinned view plus one per clickable node, 55 in all. `vkstack static` drives every one of them through the same handlers `serve` uses and writes the answers as a single bundle, so a published site and a hosted one cannot disagree — the same code produced both. Selecting a version becomes a lookup rather than a round trip. This covers the UI's questions, not the tool's. Multi-pin solves and `check` span combinations that cannot be enumerated ahead of time, and stay on the CLI, the HTTP API and MCP. A static site is the sample for people. Two things follow from shipping a snapshot rather than a server. The page now says which build generated it, because nothing else can place a file that has no process behind it. And age is derived from fetchedAt in the client instead of being read off the response: the server stamps ageHours when it answers, which is the same instant on a live server and days earlier on a static build. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mgcy2W4YFEKvgqoN3nvw1J
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.
The map pins one version at a time, so the set of questions it can ask is finite: the unpinned view plus one per clickable node, 55 in all.
vkstack staticdrives every one of them through the same handlersserveuses and writes the answers as a single bundle, so a published site and a hosted one cannot disagree.Deployed to Cloudflare Pages at vkstack.warroyo.com by a new
pagesworkflow, on push tomain, on release, and nightly to pick up upstream.Scope
This covers the UI's questions, not the tool's. Multi-pin solves (
stack --vcenter … --vks …) andcheckspan combinations that cannot be enumerated ahead of time, and stay on the CLI, the HTTP API and MCP.serve, the container anddeploy/k8sare unchanged.Two consequences of shipping a snapshot
fetchedAtin the client rather than read off the response. The server stampsageHourswhen it answers, which is the same instant on a live server and days earlier on a static build. The server's figure stays in the payload for API consumers.Verification
gofmt,go build,go vet,go test ./...pass.serve --read-only.node.pin || node.label).data.jsonis 1.5 MB, 45 KB gzipped; the page already ships 3.5 MB of mermaid.Before merging
The
pagesworkflow needsCLOUDFLARE_API_TOKEN(Account → Cloudflare Pages → Edit) andCLOUDFLARE_ACCOUNT_ID, and thevkstackPages project must exist. Merging without them fails the first run.🤖 Generated with Claude Code
https://claude.ai/code/session_01Mgcy2W4YFEKvgqoN3nvw1J