Repository navigation
Make Build plan explicit and show build status in one capsule - #508
Merged
Merged
Conversation
Collaborator
Author
|
Review: Looks good (with fixes worth folding in before or with #510) Checked out Verified
Findings
Screenshots (local only): every state at both widths, hover on each end, hand-off frame sheets with and without reduced motion. |
MaggieAppleton
added a commit
that referenced
this pull request
Oct 12, 2026
The Build capsule (#508) keeps the Build tab off until a build exists and explains what blocks Build plan in its own reason, so a blocked Build tab on a phone no longer appears for a document that was never built. Drop the phone empty state and its test rather than land a screen that is about to become unreachable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 12, 2026
MaggieAppleton
force-pushed
the
design-build-capsule
branch
from
October 12, 2026 10:31
0b39f4d to
891b7c9
Compare
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 12, 2026 10:31
151d98d to
76ed04f
Compare
MaggieAppleton
added a commit
that referenced
this pull request
Oct 12, 2026
The Build capsule (#508) keeps the Build tab off until a build exists and explains what blocks Build plan in its own reason, so a blocked Build tab on a phone no longer appears for a document that was never built. Drop the phone empty state and its test rather than land a screen that is about to become unreachable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaggieAppleton
added a commit
that referenced
this pull request
Oct 12, 2026
The Build capsule (#508) keeps the Build tab off until a build exists and explains what blocks Build plan in its own reason, so a blocked Build tab on a phone no longer appears for a document that was never built. Drop the phone empty state and its test rather than land a screen that is about to become unreachable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaggieAppleton
added a commit
that referenced
this pull request
Oct 12, 2026
The Build capsule (#508) keeps the Build tab off until a build exists and explains what blocks Build plan in its own reason, so a blocked Build tab on a phone no longer appears for a document that was never built. Drop the phone empty state and its test rather than land a screen that is about to become unreachable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 12, 2026 11:27
76ed04f to
c7d8997
Compare
MaggieAppleton
force-pushed
the
design-build-capsule
branch
3 times, most recently
from
October 12, 2026 12:34
3aa5751 to
fc7364c
Compare
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 12, 2026 13:08
c7d8997 to
ee9fce3
Compare
MaggieAppleton
force-pushed
the
design-build-capsule
branch
from
October 12, 2026 13:09
fc7364c to
a37a5d3
Compare
MaggieAppleton
force-pushed
the
design-build-capsule
branch
from
October 12, 2026 13:46
a37a5d3 to
0aefc7d
Compare
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 12, 2026 15:57
ee9fce3 to
b8054ff
Compare
MaggieAppleton
force-pushed
the
design-build-capsule
branch
from
October 12, 2026 16:22
0aefc7d to
60a8677
Compare
Opening the Build tab no longer drafts tasks; only Build plan in the header does. Build plan is always visible to writers, inert with its reason until it can run, then becomes a quiet capsule whose glyph is shared with the Build tab. The tab stays off until the plan has been built. Live builds report how many top-level blocks changed since the last build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e capsule's target Reads between edits reuse the last count instead of reparsing the document under the plan lock. A missing builder login is left unnamed. On a coarse pointer the capsule gets the shared 44px target. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Under HARNESS=remote a one-click build's draft queued with no Planner attached would never run, and the build request stayed set behind it. postDraft now refuses with planner-not-attached before queueing, so the request is never recorded, and the refusal carries its code to the browser. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refused starts and drafts read as plain copy, including Connect a Planner to this document to build while no Planner is attached; Build plan is inert for that reason when drafting needs one. Edits made while tasks were drafted get one more draft, then say the document changed. The capsule's tip is an aria-describedby description, state changes are announced politely, Retry stays focusable with aria-busy while a press runs, and the loader only spins without reduced motion. On a phone, tapping the unavailable Build tab or an inert Build plan shows the reason above the bar for a moment. The e2e tests wait on ordered frames instead of 500 ms pauses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Whitespace in the implementation routes, and a source-hash renewal for SurfaceToggle in workspace.tsx, whose covered classes are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaggieAppleton
force-pushed
the
design-build-capsule
branch
from
October 12, 2026 16:41
60a8677 to
d58b3dc
Compare
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.
Implements the approved build-plan jig (v2), slice 1 of 2. Stacks on #453.
What changes
implementation:draft(auto-draft,shouldAutoDraft,draftKey, activation andautoSentare gone). Only Build plan drafts or starts a build.LIVE_BUILD), a document with no blockers is ready.LIVE_BUILD) → Building changes… → Build stopped / Build failed (warning) with Retry. It stays visible while Build is open and opens Build when clicked. A collaborator sees the same status, with no action unless they can act. No “sync” wording.BuildGlyph(ring, dot, clock, warning) renders identically in the capsule, on the Build tab and in Build’s headline. The ring fills in lockstep. Dots are 9px and sit 4px from the word (Maggie’s tweaks).LiveSnapshot.changescounts top-level blocks added, removed or changed since the last built source (tasks/changes.ts).BuildReadinesstreats documents past readiness as ready.One snapshot read (
useBuildPlan) now feeds the capsule, the tab and the view. The capsule is self-contained inbuild-plan-button.tsx, so it can move to the two-bar header later.Slice 2 (next PR): in manual mode (
LIVE_BUILDoff), record the last-built source and add a user-triggered Build for “N changes to build” that reusesqueueRebuild, without the auto-trigger.Tests
build-model.test.tscovers the look, labels, tooltips, tab readiness and the first-build steps.changes.test.tscovers the change count.implementation-launcher,harness.e2eandresponsive-workspacepass.bun testhas only the 3 failures already on the base (design-jig files).check-design-contract: the only finding from this change is the reviewed-owner hash forworkspace.tsx. It is not renewed here, per the cleanup rules.Screenshots
Desktop: empty (tab tooltip), open decisions, ready, breaking into tasks, building, Build open, first build stopped, built, hover capsule → tab lit, hover tab → capsule lit, Build open, 3 changes (manual), 3 changes (live), building changes, failed, collaborator built, collaborator edited (live). Phone: ready, building, built open, 3 changes. Hand-off frames: before, in flight, landed.
Review fixes
changescount is memoized per open document by plan revision and last-built source, and is computed only when the document is out of date. Reads between edits no longer re-parse the document under the plan lock.changedBlocksdoc comment now says a reorder of any size counts only through the floor of one change.workspace.tsxwas renewed in its own commit, after checking that its data flow is unchanged.Review fixes (restack, 2026-10-12)
buildRefusalCopyanddraftRefusalCopy), so raw server reasons never show.aria-describedbysr-only description.aria-disabledandaria-busywhile a press runs..build-glyph-spinonly animates underprefers-reduced-motion: no-preference.postDraftrefuses withplanner-not-attachedbefore queueing, so no build request is left behind; it carries the code to the browser.session:plannerreports none attached and a draft is needed.aria-disabled, not disabled. Tapping it, or an inert Build plan, shows the reason above the tab bar for four seconds in a polite live region.aria-descriptionchecks by accessible-description checks. Main's phone tab-bar test now expects Build to be off until built. New phone e2e and model tests are added.🤖 Generated with Claude Code