{"id":15286394,"url":"https://github.com/ahmed-khaled-dev/release-notes-manager","last_synced_at":"2025-04-13T03:09:21.332Z","repository":{"id":226100866,"uuid":"765430252","full_name":"Ahmed-Khaled-dev/release-notes-manager","owner":"Ahmed-Khaled-dev","description":"Generates accurate markdown/HTML release notes for GitHub releases and shows contributors how their pull requests will affect the notes.","archived":false,"fork":false,"pushed_at":"2024-12-07T19:42:26.000Z","size":1099,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T03:09:02.983Z","etag":null,"topics":["action","ci","release-automation","release-management","release-notes"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ahmed-Khaled-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-29T22:43:43.000Z","updated_at":"2024-12-07T19:42:30.000Z","dependencies_parsed_at":"2024-08-03T14:28:32.608Z","dependency_job_id":"0934e9b2-4f0e-4219-a4c3-f26f73403fea","html_url":"https://github.com/Ahmed-Khaled-dev/release-notes-manager","commit_stats":null,"previous_names":["ahmed-khaled-dev/automated-release-notes-generator","ahmed-khaled-dev/release-notes-manager"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmed-Khaled-dev%2Frelease-notes-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmed-Khaled-dev%2Frelease-notes-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmed-Khaled-dev%2Frelease-notes-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmed-Khaled-dev%2Frelease-notes-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ahmed-Khaled-dev","download_url":"https://codeload.github.com/Ahmed-Khaled-dev/release-notes-manager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248657918,"owners_count":21140846,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["action","ci","release-automation","release-management","release-notes"],"created_at":"2024-09-30T15:13:51.076Z","updated_at":"2025-04-13T03:09:21.303Z","avatar_url":"https://github.com/Ahmed-Khaled-dev.png","language":"C++","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n    \u003cimg src=\"docs/images/logo.png\" alt=\"Release Notes Manager Logo\" width=\"100\"\u003e\n  \u003cbr\u003e\n  Release Notes Manager\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e\nGenerates accurate markdown/HTML release notes for GitHub releases and shows contributors how their pull requests will affect the notes, encouraging better pull request descriptions.\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://ahmed-khaled-dev.github.io/release-notes-manager/doxygen/generated/index.html\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Code Docs-Webpage-blue?style=for-the-badge\u0026logo=none\" \u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#key-features\"\u003eKey Features\u003c/a\u003e •\n  \u003ca href=\"#how-to-use\"\u003eHow To Use\u003c/a\u003e •\n  \u003ca href=\"#how-to-build\"\u003eHow To Build\u003c/a\u003e\n\u003c/p\u003e\n\n## Key Features\n### 1. Generates markdown/HTML release notes for GitHub releases through a straightforward and customizable GitHub Actions user interface\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"docs/images/release-notes-workflow-inputs.png\" alt=\"Release Notes Generation GitHub Actions Workflow Inputs\"\u003e\u003cbr\u003e\u003cbr\u003e\n    Example Of Generating Release Notes in the \u003ca href=\"https://github.com/synfig/synfig\"\u003eSynfig Repo\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\n    \u003cstrong\u003eGenerated Markdown Release Notes Inside The Release Description\u003c/strong\u003e\u003cbr\u003e\u003cbr\u003e\n    \u003cimg src=\"docs/images/release-notes-from-full-prs.png\" alt=\"Markdown Release Notes From Pull Requests in Full Mode\" width=\"800\"\u003e\u003cbr\u003e\u003cbr\u003e\n    \u003cstrong\u003eGenerated HTML Release Notes Attached As An Asset To The Release\u003c/strong\u003e\u003cbr\u003e\u003cbr\u003e\n    \u003cimg src=\"docs/images/html-release-notes-from-full-prs.png\" alt=\"HTML Release Notes From Pull Requests in Full Mode\" width=\"800\"\u003e\n  \u003c/p\u003e\n\n### 2. Automatically shows contributors how their pull requests affect the release notes\n  \n  \u003cimg src=\"docs/images/demo-pull-request.png\" alt=\"Demo GitHub Pull Request\" width=\"700\"\u003e\n  \u003cimg src=\"docs/images/github-bot-comment-on-new-pr.png\" alt=\"GitHub Bot Comment Showing The Contributor How This Demo Pull Request Affects The Release Notes\" width=\"700\"\u003e\n  \u003cimg src=\"docs/images/demo-pull-request-edited.jpg\" alt=\"Demo GitHub Pull Request After Editing The Description\" width=\"700\"\u003e\n  \u003cimg src=\"docs/images/github-bot-comment-on-edited-pr.png\" alt=\"GitHub Bot Comment Showing The Contributor How His Edited Demo Pull Request Affects The Release Notes\" width=\"700\"\u003e\n\n## How To Use\n\n  \u003e [!IMPORTANT]\n  \u003e For the Release Notes Manager to work, you must grant read and write permissions to workflows, since it will either write release notes inside releases or comment in pull requests\n  \u003e\n  \u003e In your repository go to Settings -\u003e Actions -\u003e General -\u003e Scroll down and change it as below\n  \u003e \n  \u003e \u003cimg src=\"docs/images/workflow-read-write-perms.png\" alt=\"GitHub Bot Comment Showing The Contributor How His Edited Demo Pull Request Affects The Release Notes\" width=\"700\"\u003e\n\n  ### 1. Generating Release Notes\n\n  1. Go to your repository and create a folder called ``.github`` if it doesn't already exist\n  2. Inside ``.github`` create a folder called ``workflows``\n  3. Inside ``workflows`` create a file called e.g. ``generate-release-notes.yml``\n  4. Copy and paste the following inside ``generate-release-notes.yml``\n  \n      ```yaml\n      name: Generate Release Notes\n\n      on: \n        workflow_dispatch:\n          inputs:\n            new-release-tag:\n              description: 'Tag name of the new release'\n              required: true\n              type: string\n              default: 'e.g., v1.1 or v2.0'\n            previous-release-reference:\n              description: 'Tag name of the previous release or the commit SHA right before the first commit in the new release'\n              required: true\n              type: string\n              default: 'e.g., v1.0 or 2f4a6b2'\n            release-notes-source:\n              description: 'Release Notes Source'\n              required: true\n              type: choice\n              options:\n              - Commit Messages\n              - Pull Requests\n              default: 'Pull Requests'\n            pr-release-notes-mode:\n              description: 'Release Notes Mode (only affects release notes if you chose source as pull requests)'\n              required: false\n              type: choice\n              options:\n              - Short\n              - Full\n              default: 'Full'\n\n      jobs:\n        generate-release-notes:\n          name: Generate Release Notes\n          runs-on: ubuntu-latest\n          steps:\n            - name: Use The Release Notes Manager Action\n              uses: Ahmed-Khaled-dev/release-notes-manager@v1\n              env:\n                # secrets.GITHUB_TOKEN is automatically generated by GitHub for each workflow run\n                GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n              with:\n                action-type: release\n                new-release-tag: ${{ inputs.new-release-tag }}\n                previous-release-reference: ${{ inputs.previous-release-reference }}\n                release-notes-source: ${{ inputs.release-notes-source }}\n                pr-release-notes-mode: ${{ inputs.pr-release-notes-mode }}\n                github-repository: ${{ github.repository }}\n      ```\n  5. That's it! Now whenever you want to publish a new release, create a new GitHub draft release with a suitable tag (or don't if you want to generate release notes for an already created release)\n  6. Open the GitHub Actions tab\n  \n      \u003cimg src=\"docs/images/github-actions-tab.png\" alt=\"GitHub Actions Tab\"\u003e\n  7. Press on the \"Release Notes Generator\" workflow\n\n      \u003cimg src=\"docs/images/release-notes-generator-workflow.png\" alt=\"Release Notes Generator Workflow\"\u003e\n  8. Press on \"Run workflow\" and have fun generating release notes!\n      \n      \u003cimg src=\"docs/images/run-workflow-button.png\" alt=\"GitHub Actions Run Workflow Button\"\u003e\n\n      **Notes**\u003cbr\u003e\n      - In the \"Release Notes Source\" drop-down menu, you specify the source that the content of the release notes will be retrieved from, either from the commit messages of the commits that occurred between the two entered releases, or from the pull requests' titles and descriptions that were used to merge these commits\n      - The \"Release Notes Mode\" drop-down menu is used if you choose the source as pull requests, you can select \"Short\" mode and generate release notes only from the pull requests' titles without the descriptions, or select \"Full\" and generate release notes using the pull requests' titles and descriptions\n\n  ### 2. Showing contributors how their pull requests affect the release notes\n  \n  1. Inside the ``workflows`` folder, create a file called e.g. ``show-pr-change-note.yml``\n  2. Copy and paste the following inside it\n   \n      ```yaml\n      name: Show Pull Request Change Note\n\n      on: \n        pull_request_target:\n            types: [opened, edited]\n\n      jobs:\n        show-pull-request-change-note:\n          name: Show Pull Request Change Note\n          runs-on: ubuntu-latest\n          steps:\n            - name: Use The Release Notes Manager Action\n              uses: Ahmed-Khaled-dev/release-notes-manager@v1\n              env:\n                # secrets.GITHUB_TOKEN is automatically generated by GitHub for each workflow run\n                GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n              with:\n                action-type: pr\n                pull-request-number: ${{ github.event.pull_request.number }}\n                pull-request-trigger-event: ${{ github.event.action }}\n                github-repository: ${{ github.repository }}\n      ```\n  \n      That's it! Now automatically whenever a new pull request is created or edited, a GitHub bot will show the contributor how his pull request affects the release notes and will encourage him to improve his change description.\n\n## How To Build\n\n  \u003e [!TIP]\n  \u003e These steps are for developers who want to try the C++ script behind the above functionality or contribute to the project.\n\n  ### 1. Clone the repo\n  ```\n  $ git clone https://github.com/Ahmed-Khaled-dev/release-notes-manager.git\n  ```\n\n  ### 2. Install Dependencies\n  The program has only 2 dependencies\n\n  1. [libcurl](https://github.com/curl/curl)\n    \n      The easiest way to install libcurl is using any package manager ([chocolatey](https://github.com/chocolatey/choco) or [vcpkg](https://github.com/microsoft/vcpkg) for Windows and your distro's package manager in Linux)\n    \n  2. [nlohmann/json.hpp](https://github.com/nlohmann/json)\n      \n      Download the json.hpp file in the same directory that the script is in, on Windows open [json.hpp](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp) and then download raw file, \n      on Linux run:\n\n        ```\n        $ wget https://raw.githubusercontent.com/nlohmann/json/develop/single_include/nlohmann/json.hpp\n        ```\n  \n  ### 3. Run the following command\n  ```\n  $ g++ -o release_notes_manager Main.cpp Config.cpp Utils.cpp Format.cpp -lcurl -I.\n  ```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmed-khaled-dev%2Frelease-notes-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahmed-khaled-dev%2Frelease-notes-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmed-khaled-dev%2Frelease-notes-manager/lists"}