Repository navigation
--email sends a Run notification whenever a Run ends - #121
Merged
Merged
Conversation
`email` / `--email`, optionally followed by an address, makes a Run send one email through Resend however it ends: ready for review, merged, failed or interrupted. The address and RESEND_API_KEY are checked before any work, with the same checks as email-test; a failed send is only a warning. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s notification The interrupt handler goes in before the notification is checked, the FailedRun records whether the Run was interrupted when it failed, and the issue title is read at the start of the Run. Writes to a closed terminal no longer panic before the notification is sent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Sep 29, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
email/--email [<address>]makes a Run send one Run notification through Resend when it ends, whatever the outcome.Help and README document
--email, with a new "Run notifications" section.Evidence
thirdshift <Issue URL> --email me@example.com→ exit 2,unexpected argument after the Issue URL: --emailAfter:
tests/run_notification.rs(11 tests, all passing) covers:--emailfalling back toemail.towarning:linetests/command_surface.rs: a repeated--email/emailexits 2; help lists--email.cargo test: all suites pass.cargo clippy --all-targets: clean.Merge Danger
Door: two-way
Without
--email, a Run behaves as before. Three changes affect every Run:progress::stepignores write errors instead of panicking.Goal::outcome(), which now returns the bare phrase. The text is unchanged.Blast Radius: small
With
--email, a Run makes one extra read-onlygh issue view --json titlecall at the start.Unaddressed findings
Standards
pr_url+loginReached,FailedRun,Body):Bodyhas to hold them for rendering anyway, and it went away as a symptom once the outcome became a singleinterruptedfield. MergingReachedandFailedRuninto one type would reshape the Failed run path well beyond this issue.Endedenum fromrun::run: I only partly fixed this.FailedRunnow recordsinterruptedwhen the Run fails, so the outcome is decided once. A new enum would add churn for no behaviour change.email: Option<Option<String>>): email.always and --no-email #115 addsno-email, which makes this three-state. The right type is clearer to choose there."unknown"in the failure commit,"unknown host"in email): they read differently in context: "host unknown" in a sentence, a labelled field in email, and the email wording comes from the spec.ready for reviewword for word.Spec
ghcall that hangs. If it can't be read, it is left out, as the spec allows.Closes #114
🤖 Generated with Claude Code