Automations and webhooks for the AT Protocol airglow.run

Dry run is not understood #27

Closed tyb.there-hugo.dev
Closed opened by tyb.there-hugo.dev

Problem #

The user didn't know what dry run meant, went live by accident, then toggled dry run on and off trying to work out its effect.

Seen in the session #

In https://www.youtube.com/watch?v=5MnT-ZgbBIc:

  • 0:44: "I don't know what creating a dry run is."
  • 0:50.

Fix direction #

Explain dry run inline next to the toggle or create button ("runs the steps and logs the result, without writing anything").

Details: docs/brainstorms/2026-10-17-graze-conference-automation-feedback.md (U11).

Queued: the loop will work on this version of the issue.

loop:queued cid=bafyreibhndcxfu2p2druetnbrwqj6rdjfxgeclpi4raoiqqukviyghyrre

Working on this, attempt 1.

loop:claim run=contribute-20261024-151747-3my32g6kxlx22 branch=loop/3my32g6kxlx22 attempt=1 issue=27

feat(automations): explain dry run inline next to the create buttons and the toggle

Users didn't know what dry run meant: one went live by accident, then flipped the toggle on and off to work out what it did (#27). The create form now has a short line above its two buttons that says what dry run does, that "Create automation" goes live straight away, and that dry run can be switched later. The automation page's toolbar now shows the same explanation as visible text under the "Enable/Disable Dry Run" toggle. Before, it was only a title tooltip.

What changed #

  • app/islands/AutomationForm.tsx (create mode only): a hint paragraph above "Create in dry run" / "Create automation". Both buttons point to it with aria-describedby. Edit mode is unchanged.
  • app/islands/AutomationToolbar.tsx: a hint line on its own row under the toolbar, tied to the toggle with aria-describedby. I removed the old title tooltip because the visible text replaces it.
  • Styles: createSubmitBlock / createSubmitHint in AutomationForm.css.ts and hint in AutomationToolbar.css.ts (muted, small text).

Verification #

  • pnpm run check: passes (format, lint, types).
  • pnpm run test: 161 files, 2540 tests pass.
  • New tests: AutomationForm.test.tsx checks the hint renders in create mode and both create buttons are described by it. AutomationToolbar.test.tsx checks the hint renders and the toggle is described by it.
  • I did not check the layout in a browser. No dev server or PDS was available in this environment.

Acceptance criteria #

Decisions the owner can reverse #

  • Wording: "Dry run runs the steps and logs what each action would do, without writing, posting or sending anything." I chose "what each action would do" over the issue's "the result" because in dry run actions only describe themselves (dryRunDescribe), they don't run. "Posting or sending" also covers posts, webhooks and notifications.
  • The toolbar hint is always visible, in both dry-run states, rather than only when dry run is off.
  • I dropped the toggle's title tooltip.

Review: https://tangled.org/exosphere.site/airglow/compare/main...loop/3my32g6kxlx22

loop:pushed run=contribute-20261024-151747-3my32g6kxlx22 sha=48c9b95a9ce09eb0c4d0c1840d32fa147a40d62b

Verdict: merge. The branch does what issue #27 asks. It explains dry run in visible text next to both create buttons (create mode only) and under the "Enable/Disable Dry Run" toggle on the automation page. The wording follows the issue's fix direction ("runs the steps and logs what each action would do, without writing, posting or sending anything"). pnpm run check and pnpm run test both pass.

What I checked and how:

  • I read every changed line in AutomationForm.tsx, AutomationToolbar.tsx, their .css.ts files and both tests.
    • Edit mode keeps its sticky "Update automation" button unchanged.
    • Create mode wraps the two buttons with a hint paragraph and links each button to it with aria-describedby.
    • The toolbar's flex-wrap container gets a flexBasis: 100% paragraph, so the hint sits on its own row.
    • The toolbar renders only for the owner, once per page, so the ids are unique.
  • I checked the copy against the code:
    • "Create automation goes live straight away" is accurate: the run submitter sends dryRun: false.
    • "Logs what each action would do" matches how dry run works: each action only describes itself through dryRunDescribe.
  • The new tests cover the hint text and the aria-describedby links in both places. Check passed (format, lint, types). Tests passed: 161 files, 2540 tests.
  • Not a blocker: the hint doesn't say that dry runs expire after 7 days (DRY_RUN_MAX_DAYS). The issue doesn't ask for that, so the owner can add it later if they want. The layout was not checked in a browser; the contributor says so too.

loop:verdict run=review-20261024-152914-3my32g6kxlx22 sha=48c9b95a9ce09eb0c4d0c1840d32fa147a40d62b verdict=merge

Merged main into the branch: d1e64f24202d5a98856f1eaa14762512d7fc06ff.

loop:carry from=48c9b95a9ce09eb0c4d0c1840d32fa147a40d62b sha=d1e64f24202d5a98856f1eaa14762512d7fc06ff

Merged main into the branch: ca9cfd9b68c9b8b6b24337b7d809464c4065ea7b.

loop:carry from=d1e64f24202d5a98856f1eaa14762512d7fc06ff sha=ca9cfd9b68c9b8b6b24337b7d809464c4065ea7b

Merged onto main as 2805c862d5e61df610a750606b632619a2c11e06.

loop:merged sha=2805c862d5e61df610a750606b632619a2c11e06 head=ca9cfd9b68c9b8b6b24337b7d809464c4065ea7b

Sign up or Sign in to add to the discussion.