Skip to content

feat(release): dev-rel friendly github release notes with hero banner#597

Merged
arielshad merged 4 commits into
mainfrom
feat/devrel-release-notes
May 3, 2026
Merged

feat(release): dev-rel friendly github release notes with hero banner#597
arielshad merged 4 commits into
mainfrom
feat/devrel-release-notes

Conversation

@arielshad

Copy link
Copy Markdown
Contributor

Summary

Replaces the spartan angular-preset semantic-release output with a dev-rel optimized format that reads well in the GitHub releases feed.

The previous release notes were a flat list of commit subjects with no visual hook, no install instructions, and no community CTAs — invisible in the GitHub feed and unhelpful for new contributors. This change rewrites the release-notes template so each release reads like a small launch post.

What changed

  • Hero banner pulled from the README so each release card has a visual preview in the GitHub feed
  • Commit groups prefixed with emojis and ordered by reader interest: ✨ Features → 🐛 Bug Fixes → ⚡ Performance → ♻️ Refactoring → ⏪ Reverts
  • Breaking changes section flagged with a 🚨 prefix and surfaced at the top
  • Install / update commands keyed to the published version so readers can copy-paste
  • Community CTAs at the bottom (Discord, docs, stars, issues)
  • Autonomous-by-Shep credit line

Implementation

  • scripts/release-notes-template.mjs — new template module that wraps the angular preset writerOpts
  • release.config.mjs — wires the template into the semantic-release angular preset
  • tests/unit/scripts/release-notes-template.test.ts — unit coverage for the template renderer

Spec

specs/095-devrel-release-notes/

Verification

  • pnpm validate (lint + format + typecheck + tsp) — passing
  • pnpm build — passing
  • pnpm test:unit1 failing test: tests/unit/infrastructure/spec-yaml-backward-compatibility.test.ts fails to parse specs/095-devrel-release-notes/spec.yaml because the auto-generated oneLiner: / userQuery: / summary: / content: fields have malformed multiline indentation. The continuation lines in those fields are not indented under the block-scalar header, so the parser bails at line 16. This is a spec generation bug — the user query contained newlines and @/path attachment refs that were dumped into the YAML without proper escaping. Needs a separate fix to the spec generator that emits these fields. All other 6850 unit tests pass.

Test plan

  • Cut a dry-run release locally and inspect the generated notes markdown
  • Confirm hero banner image URL resolves on the published release page
  • Confirm install/update commands reference the correct version
  • Verify breaking-changes section renders when a BREAKING CHANGE: trailer is present

🐑 Built with Shep.bot

arielshad and others added 4 commits May 3, 2026 18:45
Replaces the spartan angular-preset semantic-release output with a
dev-rel optimized format that reads well in the GitHub releases feed:

- hero banner pulled from the README so each release card has a visual
  preview in the GitHub feed
- commit groups prefixed with emojis and ordered by reader interest
  (Features → Bug Fixes → Performance → Refactoring → Reverts)
- Breaking changes section flagged with a 🚨 prefix
- install / update commands keyed to the published version
- community CTAs (Discord, docs, stars, issues) at the bottom
- autonomous-by-Shep credit line

Implemented as scripts/release-notes-template.mjs and merged into the
angular preset writerOpts via release.config.mjs. Covered by
tests/unit/scripts/release-notes-template.test.ts.

Spec: specs/095-devrel-release-notes

Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Workers consuming the claude CLI subprocess for one-shot graph nodes
were paying the cost of --include-partial-messages: claude emitted
per-token stream_event deltas, the executor JSON-parsed each line,
yielded a progress event to an AsyncIterable, and discarded it because
the worker never drains progress events. For a 695-second run with 40k
output tokens that is ~40k extra parse-and-discard lines, plus the
matching stdout pipe pressure that made worker logs balloon and harder
to tail in real time.

Solution: gate --include-partial-messages on a new
AgentExecutionOptions.streamProgress flag. The flag defaults to false
so the worker path drops to assistant + result events only (no
behavior change to logStreamEvent, which already filtered to those
types). StreamingExecutorProxy auto-injects streamProgress: true so
the CLI streaming UX (shep run agent in stream mode) keeps its
per-token typing output untouched.

Web chat is unaffected — it goes through the SDK-based interactive
executor, which is a separate code path that does not use this flag.

Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
oneLiner had no folded-scalar marker but spanned multiple lines, and
userQuery / summary used >-folded scalars whose continuation lines
were not indented, so YAML parsed them as new top-level mapping keys.
spec-yaml-backward-compatibility.test.ts caught this on windows-latest
and ubuntu-latest, blocking pr 597 with mergeStateStatus BLOCKED.

Replaced oneLiner with a real one-line summary, switched userQuery /
summary / content to literal block scalars with proper 2-space
indentation. Verified with the offending unit test locally.

Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
@arielshad arielshad merged commit f20846c into main May 3, 2026
22 of 23 checks passed
@arielshad arielshad deleted the feat/devrel-release-notes branch May 3, 2026 17:59
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