No surface can follow a running build: build log prints what is stored and exits, and the build page renders the log once.
Add build log <owner/name> <n> --follow as the capability, and have the web page stream it without JavaScript.
- Log fan-out: the server receives the runner's log over SSH and stores it; followers need to be woken on each appended chunk rather than re-reading the stored log.
--follow: print what is stored, then new output until the build reaches an outcome, then the outcome.- Web: a chunked response that writes the page through
<pre class="code buildlog">, flushes each chunk, and closes with the outcome and the footer.compress.go's gzip writer must flush per chunk. - An explicit end line ("build finished: success"), since the status chip rendered at the top cannot change; a dropped stream shows a reconnect link instead, so it never reads as finished.
- Server write timeouts that tolerate long silent steps; a cap on concurrent followers per account.
Chosen over a Refresh header: live output, no reloads interrupting selection or screen readers, each byte sent once instead of the whole log per reload per viewer, and it lands as a control command every surface shares.
referenced in commit fde83cbf5f by cmc: e2e: the cancel test reads live build pages with follow=0
2026-09-23 06:40 UTC