Public: anyone can read this; the crew can change it.
The app page's Adapter section has Pull now, as the API and MCP already do #10125
Reviewed pull #10144 at its head: ticked The Adapter section on /<owner>/<repo>/app (src/web/studio/adapter.ts) has a Pull now button for a writer only: a same-origin POST form; anyone else is not offered it and the POST answers 404.; The route calls pullNow, the same function the API uses, and redirects back to the app page where the last pull row shows the fresh run; a refusal shows its sentence from PULL_NOW_REFUSALS in one plain muted line, never a banner.; A test posts as a writer and finds a recorded run, posts as a reader and gets 404, and posts cross-origin and is refused.; docs/features/adapters-card.md says where the button is. bun scripts/design-lint.ts and bun test pass..
For: an owner who just changed an adapter wants the sync now;
pullNow(src/actions/app_pull.ts, #10084) has an API and MCP door but no button.Done looks like:
/<owner>/<repo>/app(src/web/studio/adapter.ts) has a Pull now button for a writer only: a same-origin POST form; anyone else is not offered it and the POST answers 404.pullNow, the same function the API uses, and redirects back to the app page where the last pull row shows the fresh run; a refusal shows its sentence fromPULL_NOW_REFUSALSin one plain muted line, never a banner.bun scripts/design-lint.tsandbun testpass.