Skip to content

An installed app can draw a gate - #260

Merged
czpython merged 1 commit into
mainfrom
lend-run-controls
Aug 16, 2026
Merged

An installed app can draw a gate#260
czpython merged 1 commit into
mainfrom
lend-run-controls

Conversation

@czpython

Copy link
Copy Markdown
Owner

Gates are a pillar, and an app that shipped its own frontend could not render one.

installed.tsx is a hard either/or: a package containing dist/entry.js takes its
whole namespace and loses the generic subject page — the only place outside ship's
hand-built WorkItemPage where InAppReview renders. It was not among the ten lent
names either, so there was nothing to borrow. The app either went without a frontend
or went without the screen where its work gets approved.

CancelRun, RetryRun and InAppReview join @druks/ui, with the InputRequest
type the ask arrives as. All three rather than just the gate: they are the same
category — platform run actions keyed by a run id, sitting on the same page — and
lending one would have left the next hole. The pinned list goes from 10 to 13.

InAppReview drops react-query. It was one optional artifact read, and an app mounts
these outside the shell's tree where no QueryClientProvider exists. The fetch is
held with the id it belongs to, so a new ask stops showing the old plan on the render
that changes it rather than after the next fetch lands.

Its calls were never the blocker the ENG-850 notes claimed. GET /api/artifacts/{id}
and POST /api/runs/{id}/resume are platform paths, so same-origin app code reaches
them directly — that is why lending works, not why it was blocked.

Placement stays the app's. Rendering the gate as shell chrome above the mounted app
was considered and rejected: for a gate-heavy app the gate is the screen, and a
detached band above the app's own list is worse than the app placing it inline.

Verification

The existing InAppReview tests lose their QueryClientProvider. That removal is the
proof — if anything still needed react-query they would be red. Three tests added for
the borrowed case: all three controls rendering with no provider at all, the artifact
read landing without react-query, and a failed artifact read leaving the gate
answerable rather than taking the panel down.

Costs the shell nothing: main drops 8.6 kB into the shared druks-ui chunk
(6.86 → 15.58 kB). The chunk now also pulls markdown-vendor, which the shell's own
main already imports statically and index.html preloads, so an app pays nothing
extra for it.

Closes ENG-851.

🤖 Generated with Claude Code

Gates are a pillar, and an app that shipped its own frontend could not render
one. installed.tsx is a hard either/or: a package with dist/entry.js takes its
whole namespace and loses the generic subject page — the only place outside
ship's hand-built one where InAppReview renders. It was not among the ten lent
names, so there was nothing to borrow either. The app either went without a
frontend or went without the screen where its work gets approved.

CancelRun, RetryRun and InAppReview join @druks/ui, with the InputRequest type
the ask arrives as. All three, not just the gate: they are the same category —
platform run actions keyed by a run id, sitting on the same page — and lending
one would have left the next hole.

InAppReview drops react-query. It was one optional artifact read, and an app
mounts these outside the shell's tree where no QueryClientProvider exists. The
fetch is held with the id it belongs to, so a new ask stops showing the old plan
on the render that changes it rather than after the next fetch lands. Its calls
were never the blocker the ENG-850 notes claimed: /api/artifacts/{id} and
/api/runs/{id}/resume are platform paths, so same-origin app code reaches them.

The existing tests lose their QueryClientProvider. That removal is the proof —
if anything still needed react-query, they would be red.
@czpython
czpython enabled auto-merge (squash) August 16, 2026 14:14
@czpython
czpython merged commit 482af88 into main Aug 16, 2026
1 check passed
@czpython
czpython deleted the lend-run-controls branch August 16, 2026 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant