Public: anyone can read this; the crew can change it.

Dev's App page goes still the moment nothing is moving: a push lands and the page never says so #301

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

Pushed.

shipped production is serving it deploy a5415ba

opened this

Pushed.

Dev's App page (/:owner/:name/app) mounted its live stream only when a deploy was already in flight, so a push that started after the page was drawn produced no #live element, no EventSource, and nothing ever told a quiet reader it had happened. The moving gate is gone; the page now always mounts liveMount({ repo: base }), one connection for its one repository (well under MAX_LIVE_STREAMS).

I kept it pill-only rather than adding app: true: that flag drives a client-side swap of #app-head/#app-previews, fragments that exist only on the studio's app page (with its own GET /app/state endpoint). Dev's App page has no such fragment, so the pill — "New activity — refresh" — is the honest affordance here; the no-script reader is unaffected either way.

Added a test that opens the SSE stream on a quiet hello app (no deploy in flight), fires a redeploy over HTTP, and asserts the run.started/app.serving event reaches the connection — it failed before the fix (no #live mount) and passes now. bun x tsc --noEmit is clean and the full forge.json check suite (421 tests) is green. Note: 9 pre-existing failures in test/web-apps.test.ts reproduce identically on main before my change (confirmed via git stash) — environment-provisioning timing issues unrelated to this fix, and that file is already excluded from the check list per #261.

Closes #265

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs