feat(storybook): stories for repository browsing and first-run onboarding #442
No reviewers
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
gmackie/ForgeGraph!442
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/storybook-repo-onboarding"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Two more uncovered surfaces: the repository browser with its file viewer, and the first-run onboarding wizard.
The wizard is the one nobody sees twice. Reviewing step one by hand means tearing a workspace down — which is exactly why this kind of surface drifts. Its progress is derived from what exists rather than stored, so each story is simply the world at that point and the wizard works out which step is current. Every rung from a bare server to a deployed app is now a story.
29 stories
Three fixture details only the rendered result caught
All three are in stubbed server-action returns, which nothing type-checks — the same blind spot as the streamed payloads in #436 and #438:
BlameLinecarriestext, notsummary. The wrong key left the gutter renderingundefinedwith no complaint.Verified
450/450 stories render clean in a browser. The binary refusal, blame gutter and outline were each checked in the DOM rather than assumed — the first two would have passed a "does it render without erroring" sweep while being wrong.
Typecheck, lint and build all pass.
Two more surfaces with no coverage: the repo code/PR/issue browser with its file viewer, and the getting-started wizard. The wizard is the one nobody sees twice. Reviewing step one by hand means tearing a workspace down, which is exactly why it drifts. Its progress is derived from what exists rather than stored, so each story is just the world at that point and the wizard works out which step is current — every rung from a bare server to a deployed app is now a story. 29 stories: - repo browser code tab at root and nested, empty repo, pull requests and issues (populated and empty), a non-default branch - file viewer TypeScript, markdown, extensionless, binary, a 400-line file, empty, blame on and unavailable, editing, save rejected - onboarding all six rungs, load error, no teams, two rejected steps, slow backend Three fixture details that only the rendered result would have caught, all in stubbed server-action returns, which nothing type-checks: - BlameLine carries `text`, not `summary`; the wrong key left the gutter rendering undefined without complaint - the binary refusal keys off a real NUL byte in the first 8KB, so the fixture needs actual escapes — a binary-looking string of printable characters renders as text and the refusal never fires - blame shas are sliced to 7 characters, so a 6-character fixture never exercised the slice Verified: 450/450 stories render clean in a browser, and the binary refusal, blame gutter and outline were each checked in the DOM rather than assumed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>Preview environment is live: https://pr-442-forgegraph.forgegraf.com
Deployed
15470917with the beta stage's environment. It redeploys on every push and is destroyed when this PR closes.