Skip to content

fix(release): path-filter release-notes-generator + restore slicc-handoff CHANGELOG#144

Merged
trieloff merged 1 commit into
mainfrom
fix-release-process-issues
May 21, 2026
Merged

fix(release): path-filter release-notes-generator + restore slicc-handoff CHANGELOG#144
trieloff merged 1 commit into
mainfrom
fix-release-process-issues

Conversation

@trieloff

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #139 and #140. The most recent release (slicc-handoff-v1.0.0) showed the same problem we thought we fixed: its body and CHANGELOG listed every commit in the repo (stardust, migration, aem-workflow, etc.).

Root cause

PR #139 wrapped @semantic-release/commit-analyzer with scripts/path-filtered-analyzer.cjs so the version-bump decision is path-scoped. It also added gitRawCommitsOpts: { path: "." } to @semantic-release/release-notes-generator, but that option is a no-op: looking at the plugin source (release-notes-generator/index.js), generateNotes reads context.commits straight from semantic-release’s pipeline and never touches gitRawCommitsOpts. So analyzeCommits was correctly scoped, but generateNotes kept seeing the full repo history.

And PR #140’s regenerate-changelogs.cjs skipped slicc-handoff (if (!tags.length) continue;) because at that point it had no tag yet — the very next release then wrote the buggy unfiltered changelog to slicc-handoff/CHANGELOG.md.

Changes

scripts/path-filtered-notes-generator.cjs (new)

  • Thin CJS wrapper around @semantic-release/release-notes-generator, mirroring path-filtered-analyzer.cjs.
  • Runs git log <from>..HEAD --format=%H -- . from process.cwd() (the skill dir) to get relevant commit hashes, filters context.commits, then delegates to the real plugin.
  • For first releases (no lastRelease.gitHead), the range is omitted so the filter runs against full history.
  • Falls back to unfiltered behavior with a logger.warn if git fails (same pattern as the analyzer).

release.config.cjs

  • Replaces the @semantic-release/release-notes-generator plugin entry with the new wrapper (referenced by absolute path, same way the analyzer is wired).
  • Drops the dead gitRawCommitsOpts: { path: "." } config.

plugins/aem/edge-delivery-services/skills/slicc-handoff/CHANGELOG.md

  • Regenerated via the existing scripts/regenerate-changelogs.cjs now that the tag exists. The file is now a short Features section with the single add slicc-handoff skill commit.
  • The corresponding GitHub release body for slicc-handoff-v1.0.0 was also patched to match (release id 327188608, no re-publish, created_at/published_at preserved).

Test plan

  • node -e "require('./scripts/path-filtered-notes-generator.cjs')" loads cleanly.
  • node -e "const c = require('./release.config.cjs'); ..." shows the new wrapper in the plugin list and no bare @semantic-release/release-notes-generator entry.
  • plugins/aem/edge-delivery-services/skills/slicc-handoff/CHANGELOG.md references only the slicc-handoff commit.
  • The GitHub release body for slicc-handoff-v1.0.0 now matches the corrected CHANGELOG entry.
  • Dry-run from inside a skill dir confirms only that skill’s commits appear in the proposed release notes (to be exercised post-merge).

Why not roll forward instead

The broken release artifacts (slicc-handoff-v1.0.0 body + checked-in CHANGELOG) needed manual cleanup either way — semantic-release will not rewrite a published release, and the unfiltered CHANGELOG was already committed to main. This PR fixes the config so the next release is correct and cleans up the one bad artifact in place.


Pull Request opened by Augment Code with guidance from the PR author

…doff CHANGELOG

PR #139 wrapped commit-analyzer with path filtering but tried to fix
release-notes-generator with gitRawCommitsOpts: { path: '.' } -- a
no-op because the plugin reads context.commits from semantic-release,
never gitRawCommitsOpts. Result: every skill release body and CHANGELOG
included commits from the entire repo (see slicc-handoff-v1.0.0).

- Add scripts/path-filtered-notes-generator.cjs mirroring the analyzer
  wrapper -- filters context.commits via git log -- . before delegating
  to the real plugin.
- Wire it into release.config.cjs in place of the bare plugin entry;
  drop the dead gitRawCommitsOpts config.
- Regenerate plugins/aem/edge-delivery-services/skills/slicc-handoff/
  CHANGELOG.md (skipped by PR #140 because the tag did not exist yet).
@github-actions

Copy link
Copy Markdown

Tessl Skill Lint

⚠️ edge-delivery-services — 2 warning(s)
⚠ .tileignore is deprecated. Rename it to .tesslignore; the legacy filename will be removed in a future release.
⚠ Skill 'code-review': SKILL.md is approximately 10315 tokens (recommended maximum: 5000). Consider moving detailed content to separate reference files.

Context Cost

Skills
  - analyze-and-plan: 120 front-loaded, 1.6k-4.4k on-demand tokens
  - create-site: 79 front-loaded, 2.7k on-demand tokens
  - authoring-analysis: 52 front-loaded, 3.2k on-demand tokens
  - block-collection-and-party: 71 front-loaded, 4.8k on-demand tokens
  - block-inventory: 60 front-loaded, 2.2k on-demand tokens
  - building-blocks: 75 front-loaded, 2.3k-6.7k on-demand tokens
  - code-review: 60 front-loaded, 10.3k-13.1k on-demand tokens
  - content-driven-development: 74 front-loaded, 3.7k-8.6k on-demand tokens
  - content-modeling: 61 front-loaded, 2.4k-9.1k on-demand tokens
  - da-auth: 94 front-loaded, 1.2k on-demand tokens
  - docs-search: 75 front-loaded, 1.8k on-demand tokens
  - find-test-content: 52 front-loaded, 1.7k on-demand tokens
  - generate-import-html: 49 front-loaded, 2.3k-11k on-demand tokens
  - identify-page-structure: 59 front-loaded, 1.6k on-demand tokens
  - page-decomposition: 58 front-loaded, 2.1k on-demand tokens
  - page-import: 75 front-loaded, 1.8k on-demand tokens
  - preview-import: 46 front-loaded, 1.2k-4.9k on-demand tokens
  - scrape-webpage: 54 front-loaded, 1.3k-3.9k on-demand tokens
  - slicc-handoff: 111 front-loaded, 1.2k on-demand tokens
  - testing-blocks: 86 front-loaded, 2.5k-8.2k on-demand tokens
  - ue-component-model: 186 front-loaded, 2.4k-11.1k on-demand tokens

Total: 1.6k front-loaded, 54.2k-105.3k on-demand tokens

✔ Tile adobe/aem-edge-delivery-services@0.1.0 is valid

✅ All 1 tile(s) lint passed with 2 warning(s) total.

Updated by tessl-lint for commit 6020c71.

@trieloff trieloff marked this pull request as ready for review May 21, 2026 22:21
Copilot AI review requested due to automatic review settings May 21, 2026 22:21
@trieloff trieloff requested a review from shsteimer as a code owner May 21, 2026 22:21
@trieloff trieloff merged commit baa8015 into main May 21, 2026
9 checks passed
@trieloff trieloff deleted the fix-release-process-issues branch May 21, 2026 22:21

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes per-skill release note generation so GitHub release bodies and skill CHANGELOG.md entries only include commits that touched the skill directory, addressing the remaining unscoped release-notes behavior from the earlier path-filtered analyzer change.

Changes:

  • Add a local wrapper for @semantic-release/release-notes-generator that filters context.commits by git log -- . from the skill directory before generating notes.
  • Wire the wrapper into release.config.cjs and remove the ineffective gitRawCommitsOpts configuration.
  • Regenerate slicc-handoff’s CHANGELOG.md to remove unrelated repo commits from the v1.0.0 entry.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
scripts/path-filtered-notes-generator.cjs New wrapper plugin that path-filters commits before delegating to release-notes-generator.
release.config.cjs Switch release-notes generation to the new wrapper and drop no-op config.
plugins/aem/edge-delivery-services/skills/slicc-handoff/CHANGELOG.md Replace unfiltered v1.0.0 notes with the correct skill-scoped entry.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

trieloff added a commit that referenced this pull request May 21, 2026
The semantic-release/github success step posts a 'released in version'
comment on the merged PR. With only contents+issues write, GitHub denied
that write (see run 26256538929: 'Not allowed to add a comment to the
issue/PR #144'). Per @semantic-release/github docs, pull-requests: write
is required for the success comment.
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.1.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.1.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.0.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants