Skip to content

Conversation

Copy link

Copilot AI commented Jan 15, 2026

Nightly release notes display URL-encoded text (%0A, %0D, %25) instead of formatted markdown. The changelog generator action outputs URL-encoded multiline content per GitHub Actions spec, but andelf/nightly-release doesn't decode it when passed via the body parameter.

Changes

  • Write changelog to file instead of using action output directly
  • Use body_path parameter to read unencoded file content
  - name: "✏️ Generate release changelog"
    uses: janheinrichmerker/action-github-changelog-generator@v2.4
    with:
      token: ${{ secrets.GITHUB_TOKEN }}
      sinceTag: v14.7.1
+     output: CHANGELOG_NIGHTLY.md
      excludeLabels: 'stale,wontfix,duplicate,invalid'

  - name: Update Nightly Release
    uses: andelf/nightly-release@main
    with:
      tag_name: nightly
      name: 'Nightly mdev Build $$'
      prerelease: true
-     body: ${{ steps.changelog.outputs.changelog }}
+     body_path: CHANGELOG_NIGHTLY.md
Original prompt

This section details on the original issue you should resolve

<issue_title>Garbage in nightly build release notes</issue_title>
<issue_description>### What happened?

After merging #317, there is some kind of URL garbage in the nightly build release notes

https://github.com/MoonModules/WLED-MM/releases/tag/nightly

Image

Changelog%0A%0A## [nightly](https://github.com/MoonModules/WLED-MM/tree/nightly) (2026-01-15)%0A%0A[Full Changelog](https://github.com/MoonModules/WLED-MM/compare/v14.7.1...nightly)%0A%0AImplemented enhancements:%0A%0A- upgrade buildenvs to V4 for "special boards and controlers" https://github.com/MoonModules/WLED-MM/issues/316%0A%0AMerged pull requests:%0A%0A- Automate nightly build VERSION from build date, update Changelog generator to v2.4 https://github.com/MoonModules/WLED-MM/pull/317 ([Copilot](https://github.com/apps/copilot-swe-agent))%0A%0A%0A%0A* This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)

@copilot please analyze how this can happen, and suggest improvements.

To Reproduce Bug

Run nightly release action

Expected Behavior

Readable change log

Install Method

Self-Compiled or other

What version/release of MM WLED?

14.7.2-mdev

Which microcontroller/board are you seeing the problem on?

Other

Relevant log/trace output

Anything else?

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct</issue_description>

<agent_instructions>Please analyze why the release notes are garbled, and create a PR to fix the problem.</agent_instructions>

Comments on the Issue (you are @copilot in this section)


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Summary by CodeRabbit

  • Chores
    • Improved the nightly release workflow process to streamline changelog generation and distribution.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 15, 2026

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

📝 Walkthrough

Walkthrough

Modified the nightly workflow to output changelog to a file named CHANGELOG_NIGHTLY.md and updated the release step to reference this file instead of embedding changelog content inline.

Changes

Cohort / File(s) Summary
Workflow changelog handling
\.github/workflows/nightly\.yml
Added output: CHANGELOG_NIGHTLY.md to changelog generation step and changed release body source from inline variable ${{ steps.changelog.outputs.changelog }} to file-based path CHANGELOG_NIGHTLY.md

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

Poem

🐰 A file for the changelog, so tidy and clean,
No more garbage URLs cluttering the scene!
From inline to disk, the notes take their place,
Release notes shine with newfound grace.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: fixing URL-encoded characters appearing in nightly release notes by switching to file-based changelog handling.
Linked Issues check ✅ Passed The pull request directly addresses issue #318 by implementing the fix to prevent URL-encoded characters in nightly release notes through the body_path parameter.
Out of Scope Changes check ✅ Passed All changes are limited to the nightly workflow file and directly address the URL-encoding issue described in #318; no unrelated modifications are present.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

… encoded output

Co-authored-by: softhack007 <91616163+softhack007@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix garbage in nightly build release notes Fix URL-encoded changelog in nightly release notes Jan 15, 2026
Copilot AI requested a review from softhack007 January 15, 2026 20:20
@softhack007
Copy link
Collaborator

@copilot Why did it work before merging #317?

Copy link
Author

Copilot AI commented Jan 15, 2026

@copilot Why did it work before merging #317?

The nightly workflow (.github/workflows/nightly.yml) didn't exist before PR #317 - it was newly created in that PR. The file was introduced with the bug already present (using body: ${{ steps.changelog.outputs.changelog }} which outputs URL-encoded content). There was no previous working version to compare against.

@softhack007
Copy link
Collaborator

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Jan 15, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@softhack007 softhack007 marked this pull request as ready for review January 15, 2026 20:28
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/nightly.yml (1)

35-46: Action reference appears invalid—andelf/nightly-release does not exist on GitHub.

The workflow logic is otherwise sound: CHANGELOG_NIGHTLY.md is correctly generated in step 1 and used in step 2. However, the action andelf/nightly-release@main cannot be verified to exist in any public GitHub repository. This would cause the workflow to fail when attempting to run.

Verify the correct action name or consider using an alternative release action like softprops/action-gh-release or actions/create-release, both of which support body_path parameter and are well-documented.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between caa8cba and cdcea31.

📒 Files selected for processing (1)
  • .github/workflows/nightly.yml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
  • GitHub Check: wled_build / Builds (esp32_4MB_V4_S_eth)
  • GitHub Check: wled_build / Builds (esp32c3dev_2MB_M)
  • GitHub Check: wled_build / Builds (esp32S3_8MB_PSRAM_M)
  • GitHub Check: wled_build / Builds (esp8266_4MB_S)
  • GitHub Check: wled_build / Builds (esp8266_4MB_M)
  • GitHub Check: wled_build / Builds (esp32S3_8MB_S)
  • GitHub Check: wled_build / Builds (esp32s2_PSRAM_M)
  • GitHub Check: wled_build / Builds (esp32S3_4MB_PSRAM_S)
  • GitHub Check: wled_build / Builds (athom_music_esp32_4MB_V4_M)
  • GitHub Check: wled_build / Builds (esp8266_2MB_S)
  • GitHub Check: wled_build / Builds (esp32S3_4MB_PSRAM_M)
  • GitHub Check: wled_build / Builds (esp32_16MB_V4_S)
  • GitHub Check: wled_build / Builds (esp32S3_4MB_S)
  • GitHub Check: wled_build / Builds (esp32S3_WROOM-2_M)
  • GitHub Check: wled_build / Builds (esp32_4MB_PSRAM_S)
  • GitHub Check: wled_build / Builds (esp32_16MB_V4_M_debug)
  • GitHub Check: wled_build / Builds (esp32_4MB_M_eth)
  • GitHub Check: wled_build / Builds (esp32S3_16MB_PSRAM_M_HUB75)
  • GitHub Check: wled_build / Builds (esp32_4MB_V4_S_HUB75)
  • GitHub Check: wled_build / Builds (esp32_pico_4MB_V4_S)
🔇 Additional comments (1)
.github/workflows/nightly.yml (1)

26-34: The output parameter is not supported by this action.

The janheinrichmerker/action-github-changelog-generator@v2.4 action does not have an output parameter. Supported inputs are: repo, user, project, token, securityLabel, securityLabels, issuesLabel, prLabel, onlyLastTag, stripHeaders, and stripGeneratorNotice. The action only provides a single output: changelog (the changelog content as a string).

The code shown uses both unsupported parameters: output: CHANGELOG_NIGHTLY.md and sinceTag: v14.7.1. These will either be silently ignored or cause the action to fail. To achieve the goal of writing the changelog to a file, you would need to use a separate step that writes the ${{ steps.changelog.outputs.changelog }} output to a file, rather than relying on a non-existent output parameter.

Likely an incorrect or invalid review comment.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

@softhack007
Copy link
Collaborator

@copilot github checks performed on this PR now show a different name than before, like WLED CI /wled_build / <build name>. Is this expected behaviour?

Copy link
Author

Copilot AI commented Jan 15, 2026

@copilot github checks performed on this PR now show a different name than before, like WLED CI /wled_build / <build name>. Is this expected behaviour?

The GitHub check naming you're observing ("WLED CI /wled_build / ") is not related to my changes. I only modified nightly.yml to fix the changelog encoding issue. The check naming comes from the existing workflow structure where wled-ci.yml (named "WLED CI") calls build.yml as a reusable workflow via a job named wled_build. This is standard GitHub Actions behavior for reusable workflows - it shows as <workflow name> / <job name> / <nested job name>. If you're seeing different names now than before, it may be from changes introduced in PR #317 when these workflows were first created.

@softhack007
Copy link
Collaborator

35-46: Action reference appears invalid—andelf/nightly-release does not exist on GitHub.

The workflow logic is otherwise sound: CHANGELOG_NIGHTLY.md is correctly generated in step 1 and used in step 2. However, the action andelf/nightly-release@main cannot be verified to exist in any public GitHub repository. This would cause the workflow to fail when attempting to run.

Verify the correct action name or consider using an alternative release action like softprops/action-gh-release or actions/create-release, both of which support body_path parameter and are well-documented.

@coderabbitai please double-check this finding. The workflow seems to finish without error in the mdev branch.

@coderabbitai
Copy link

coderabbitai bot commented Jan 15, 2026

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, let's look at the workflow file to see the exact action reference
cat .github/workflows/nightly.yml

Length of output: 1600


🏁 Script executed:

#!/bin/bash
# Check if the andelf/nightly-release repository exists on GitHub
gh repo view andelf/nightly-release --json name,owner,isArchived,description 2>&1 || echo "Repository not found"

Length of output: 167


🏁 Script executed:

#!/bin/bash
# Check recent workflow runs for the nightly workflow on mdev branch to verify it's working
gh run list --workflow=nightly.yml --branch=mdev --limit=5 --json conclusion,status,name,createdAt,headBranch

Length of output: 2


🏁 Script executed:

#!/bin/bash
# Check for workflow runs on the PR branch (copilot/fix-nightly-build-release-notes)
gh run list --workflow=nightly.yml --limit=10 --json conclusion,status,name,createdAt,headBranch

Length of output: 1251


🏁 Script executed:

#!/bin/bash
# Let's also check the action's GitHub page to confirm it supports body_path
gh api repos/andelf/nightly-release/readme --jq '.content' | base64 -d | head -100

Length of output: 1085


🏁 Script executed:

#!/bin/bash
# Get the full README to check if body_path parameter is documented
gh api repos/andelf/nightly-release/readme --jq '.content' | base64 -d

Length of output: 1085


🏁 Script executed:

#!/bin/bash
# Also check the action.yml file to see what inputs are actually supported
gh api repos/andelf/nightly-release/contents/action.yml --jq '.content' | base64 -d

Length of output: 1110


@softhack007, you're absolutely right! I apologize for the incorrect finding. After verifying, I can confirm:

The andelf/nightly-release action DOES exist - The repository is live at andelf/nightly-release and is not archived.

The body_path parameter IS supported - Looking at the action's action.yml file, body_path is officially documented as an input:

body_path:
  description: "Path to load note-worthy description of changes in release from"
  required: false

The workflow is working correctly - Recent workflow runs show consistent success on the main branch, confirming the action functions as expected.

The workflow implementation in this PR is correct: generating CHANGELOG_NIGHTLY.md via the output parameter and consuming it through body_path is the proper approach to avoid URL-encoding issues. My initial review comment was mistaken, and I apologize for the confusion.

@softhack007 softhack007 merged commit 8f391de into mdev Jan 15, 2026
34 checks passed
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.

Garbage in nightly build release notes

2 participants