SIGN IN SIGN UP

ci(release): auto-announce on Discord and use curated release notes

Two related fixes:

1. Inline Discord announcement after github-release succeeds, instead of
   a separate workflow listening for release:published. GitHub Actions
   suppresses workflow cascades from GITHUB_TOKEN-authored events, so the
   old discord-release.yml never auto-fired when softprops/action-gh-release
   published the release. It's now manual-only for re-announcements and
   external releases. Same pattern AFT settled on.

2. Use .alfonso/release-notes/<tag>.md as the canonical release body via
   softprops/action-gh-release body_path:, replacing generate_release_notes.
   No more manual gh release edit step after every tag push. The curated
   notes also feed the Discord post via release.yml's discord-announce job.

Both changes need .alfonso/release-notes/ to be tracked in git:
  - .gitignore now uses .alfonso/* + !.alfonso/release-notes/ so the
    rest of .alfonso/ (agent scratch state, plans, etc.) stays ignored.
  - Existing v0.21.0 and v0.21.1 release notes added to seed the tree.

Pipeline shape becomes:
  unit -> e2e-docker -> npm publish x3 -> github-release -> discord-announce

The github-release step fails fast if the curated notes file is missing
so we never ship the bare "**Full Changelog**: ..." auto-generated body.
I
ismeth committed
f8e4c9e23193f610a78b3093701348b0fdce3288
Parent: e0c747e