Repository navigation
Add Build plan and live sync status to the document toolbar - #453
Open
MaggieAppleton wants to merge 13 commits into
Open
MaggieAppleton wants to merge 13 commits into
MaggieAppleton wants to merge 13 commits into
Conversation
MaggieAppleton
added this pull request to stack #455
October 10, 2026 11:10
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 10, 2026 11:25
922bf51 to
1cca44f
Compare
MaggieAppleton
marked this pull request as ready for review
October 10, 2026 12:28
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 10, 2026 13:24
bf7505e to
623c53c
Compare
MaggieAppleton
force-pushed
the
living-sync-loop
branch
from
October 10, 2026 13:24
85e99be to
a138aba
Compare
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 10, 2026 14:56
35c88f4 to
4e5ec49
Compare
MaggieAppleton
force-pushed
the
living-sync-loop
branch
from
October 10, 2026 17:04
aa6b31a to
d5fb1ad
Compare
MaggieAppleton
force-pushed
the
living-build-ui
branch
2 times, most recently
from
October 10, 2026 17:32
74ff468 to
9cb891d
Compare
MaggieAppleton
force-pushed
the
living-sync-loop
branch
from
October 10, 2026 19:44
d1ce9b7 to
40e3a7f
Compare
MaggieAppleton
force-pushed
the
living-build-ui
branch
2 times, most recently
from
October 10, 2026 20:11
18c5bf3 to
151d98d
Compare
This was referenced Oct 11, 2026
MaggieAppleton
removed this pull request from stack #455
October 12, 2026 10:23
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 12, 2026 10:31
151d98d to
76ed04f
Compare
MaggieAppleton
force-pushed
the
living-sync-loop
branch
from
October 12, 2026 10:31
31fcf10 to
7f681ac
Compare
MaggieAppleton
force-pushed
the
living-sync-loop
branch
from
October 12, 2026 11:20
7f681ac to
d856b47
Compare
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 12, 2026 11:27
76ed04f to
c7d8997
Compare
The server judges, after edits settle, whether a document is complete enough to build (Jev, else a word and heading heuristic) and exposes it as buildReady on the implementation snapshot. A Build plan button in the document toolbar drafts tasks and starts them with no review step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Once the first build has delivered, the header's Build plan slot becomes a quiet status: Building while a rebuild runs, In sync, or Out of sync with a hint saying whether the edits will build shortly, are waiting for the builder's agent, or failed to rebuild. Build lists every rebuild's tasks after the first build's and each pull request's commits, newest first. The server announces the implementation when an edit flips the document in or out of sync, and the snapshot carries the builder's login and the live task list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Construct BuildReadiness only when LIVE_BUILD is on, expose liveBuild on the session so the client hides Build otherwise, skip documents that are live or built, bound and forget judgements, re-judge after a mid-run edit, and forward Jev errors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fixture The room chunk now reads LIVE_BUILD from the session itself, so the initial chunk stays within its gzip budget. The research close fixture evaluates closeRoom from main.ts, which now references buildReadiness. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Build plan on a connection that is only busy with a prototype now queues the build there instead of refusing it; the sweep keeps it claimable until the prototype finishes and the toolbar explains the wait. Only a missing connection maps to the start-your-agent prompt. Readiness is judged on the document without its callouts, so spike results no longer flip the verdict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…automatically A first build waiting on the agent's prototype now reads Queued in the header and the Build view, with the reason visible. The one-click draft request carries build: true so the Planner no longer reports its tasks as unapproved and unstarted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s, and flag blocked live tasks A decision raised while Build plan drafts tasks no longer drops the press: the header waits on the decision, then redrafts and starts the build. The server keeps the request in memory until the build starts or it is cancelled, so it survives a reload. Build plan on a second document while the agent builds another now queues behind it and starts in order when the agent frees up, and the header says which document it is waiting for. A living document in sync but with outstanding blocked tasks now reads "Needs attention", and an out-of-sync one notes it will retry them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The container build measured the initial JavaScript at 81502 B gzip, just over the 81500 B budget, after chunk hashes changed. The panel icon is inlined into that chunk; merging its five identical strokes into one group saves about 80 B gzip without changing how it draws. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Without the flag a busy workspace is refused with the previous 409 again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Whitespace only: dprint's indentation for lines a whitespace-insensitive rebase kept at their old depth. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Whitespace only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaggieAppleton
force-pushed
the
living-sync-loop
branch
from
October 12, 2026 13:08
d856b47 to
7723612
Compare
MaggieAppleton
force-pushed
the
living-build-ui
branch
from
October 12, 2026 13:08
c7d8997 to
ee9fce3
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.
Summary
Adds a build control to the document toolbar. Once Jev judges the document ready, a one-click Build plan button appears. It drafts the graph, approves it, and starts the build on the viewer's local agent, with no review step. After the first build, the same slot shows In sync, Building…, or Out of sync with a reason. The Build view lists tasks with the commits made to each pull request.
Stacked on the living sync loop PR. Everything is behind
LIVE_BUILD.What changed
readiness.tsasks Jev whether the document is complete enough to build, falling back to a word and heading heuristic when Jev is unavailable. Documents already living, built, or implemented are skipped. Readiness is pushed to the client when it changes.build-plan-button.tsxruns draft, approve, start in one press, and points to the Build view if no local agent can take the build.build-model.tsderives the slot's state and hint from the live snapshot and rebuild builds.Toolbar slot
stateDiagram-v2 [*] --> Hidden Hidden --> BuildPlan: Jev judges ready BuildPlan: Build plan BuildPlan --> Building: click Building: Building… Building --> InSync: build delivered InSync: In sync InSync --> OutOfSync: edits not yet built OutOfSync: Out of sync OutOfSync --> Building: rebuild starts Building --> OutOfSync: rebuild failsScreenshots
States were captured with patched snapshots on a fake-GitHub server.
Hidden on a thin document, visible on a ready one, and the toolbar while building:
Sync states (in sync, out of sync, building), and the Build view with commits per pull request:
Testing
Unit tests cover the readiness judgement, build model, and live sync. The screenshots above come from a fake-GitHub run.
On 10 Oct I ran this end to end on github.com/MaggieAppleton/margin with a Copilot coding agent (
copilot --acp --allow-all):Follow-up fixes from that run, now in this branch:
Verified end to end (second run, 10 Oct) with
copilot --acp --allow-allon github.com/MaggieAppleton/margin:With
LIVE_BUILDoff, nothing changes: no readiness judgement runs, the toolbar slot stays hidden, and the Build view behaves as before.Stack
Base is the living sync loop PR; merge after it, rebase-only.
Queueing a build behind a running prototype or another document's build on the same connection is LIVE_BUILD-only. With the flag off, a busy workspace is refused with the previous 409 ("workspace is offline or busy").
Review fixes (restack, 2026-10-12)
🤖 Generated with Claude Code