{"id":15512898,"url":"https://github.com/dvmonroe/release-notes","last_synced_at":"2025-10-12T09:31:54.219Z","repository":{"id":56891689,"uuid":"68613079","full_name":"dvmonroe/release-notes","owner":"dvmonroe","description":"Automated release notes based on your project's git log","archived":true,"fork":false,"pushed_at":"2020-03-27T15:46:01.000Z","size":186,"stargazers_count":3,"open_issues_count":6,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-30T10:57:18.463Z","etag":null,"topics":["changelog","git","release-notes"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dvmonroe.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-19T14:19:05.000Z","updated_at":"2023-09-05T13:30:35.000Z","dependencies_parsed_at":"2022-08-21T01:20:10.515Z","dependency_job_id":null,"html_url":"https://github.com/dvmonroe/release-notes","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/dvmonroe/release-notes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvmonroe%2Frelease-notes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvmonroe%2Frelease-notes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvmonroe%2Frelease-notes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvmonroe%2Frelease-notes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dvmonroe","download_url":"https://codeload.github.com/dvmonroe/release-notes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvmonroe%2Frelease-notes/sbom","scorecard":{"id":360915,"data":{"date":"2025-08-11","repo":{"name":"github.com/dvmonroe/release-notes","commit":"2a370c98322c1deccd5f313207a5f0c3a2f2f372"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":1,"reason":"Found 4/30 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 5 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T10:49:52.541Z","repository_id":56891689,"created_at":"2025-08-18T10:49:52.541Z","updated_at":"2025-08-18T10:49:52.541Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278888328,"owners_count":26063374,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["changelog","git","release-notes"],"created_at":"2024-10-02T09:53:55.540Z","updated_at":"2025-10-12T09:31:53.901Z","avatar_url":"https://github.com/dvmonroe.png","language":"Ruby","readme":"![Imgur](https://i.imgur.com/vTgHEyJ.png)\n\n# Release::Notes\n\n[![Gem Version](https://badge.fury.io/rb/release-notes.svg)](https://badge.fury.io/rb/release-notes)\n[![Documentation](http://img.shields.io/badge/rdoc-Release::Notes-blue.svg)](https://www.rubydoc.info/gems/release-notes)\n[![Inline docs](http://inch-ci.org/github/dvmonroe/release-notes.svg?branch=master)](http://inch-ci.org/github/dvmonroe/release-notes)\n\n[![Build Status](https://travis-ci.org/dvmonroe/release-notes.svg?branch=master)](https://travis-ci.org/dvmonroe/release-notes)\n[![Code Climate](https://codeclimate.com/github/dvmonroe/release-notes/badges/gpa.svg)](https://codeclimate.com/github/dvmonroe/release-notes)\n[![Test Coverage](https://codeclimate.com/github/dvmonroe/release-notes/badges/coverage.svg)](https://codeclimate.com/github/dvmonroe/release-notes/coverage)\n\n## Automated release notes based on your project's git log.\n\nRelease::Notes is a small wrapper around your project's git log. The gem is\nintended to help increase visability to all team members and/or stakeholders with\nautomated documentation of important changes made to your code base for a given production\ndeployment based on tags and labels in your commit messages.\n\nRelease::Notes is different than a changelog. Though it can log all commits, it's\nmeant for situations where other team members in your organization need to know about key changes\nto the production software. These key changes are determined by the labeling you set forth\nin the configuration for features, bugs and misc commits.\nIf you're looking for a comprehensive changelog that reflects resolved github issues and uses the\ngithub api, I'd suggest you look at something else like\n[github-changelog-generator](https://github.com/github-changelog-generator/github-changelog-generator).\n\nNot looking for a tested gem or prefer the rawness of a bash script? Checkout the similar\n[bash implementation](https://gist.github.com/dvmonroe/300226a1ed4435fb38d72e72e1bbc5a0)\n\n## Getting Started\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'release-notes'\n```\n\nAnd then execute:\n\n```sh\n$ bundle\n```\n\nOr install it yourself as:\n\n```sh\n$ gem install release-notes\n```\n\nAfter you install Release::Notes, generate the intializer file:\n\n```sh\n# rails\n$ rails generate release:notes:install\n\n# non-rails\n$ bundle exec rake release:notes:install\n```\n\n## Configure\n\nOverride any of these defaults in `config/initializers/release_notes.rb`:\n\n```ruby\n# frozen_string_literal: true\n\nRelease::Notes.configure do |config|\n  # The absolute path of your generated log.\n  # Defaults to `./RELEASE_NOTES.md`.\n  # @return [String]\n  config.output_file = \"./RELEASE_NOTES.md\"\n\n  # The absolute path of the temporary generated log.\n  # Defaults to `./release-notes.tmp.md`.\n  # @return [String]\n  config.temp_file = \"./release-notes.tmp.md\"\n\n  # Determines whether to print commits with more than one parent.\n  # Defaults to `false`. For more, see\n  # [Git Log Docs](https://git-scm.com/docs/git-log)\n  # @return [Boolean]\n  config.include_merges = false\n\n  # Match the regular expression limiting patterns without regard to letter case\n  # when printing your git log.\n  # Defaults to `true`. For more, see\n  # [Git Log Docs](https://git-scm.com/docs/git-log)\n  # @return [Boolean]\n  config.ignore_case = true\n\n  # Consider the limiting patterns to be extended regular expressions patterns\n  # when printing your git log.\n  # Defaults to `true`. For more, see\n  # [Git Log Docs](https://git-scm.com/docs/git-log)\n  # @return [Boolean]\n  config.extended_regex = true\n\n  # Controls the header used in your generated log for all tags.\n  # \"tag\" and \"date\" are the two valid options\n  # Defaults to `tag`.\n  # @return [String]\n  config.header_title = \"tag\"\n\n  # Allows you to specify what information you want to print from your git log\n  # Defaults to `%s` for subject. For more, see\n  # [Git Log Docs](https://git-scm.com/docs/git-log)\n  # @return [String]\n  config.bug_labels = %w(Fix Update)\n\n  # Controls the labels grepped for in your commit subjects that will\n  # be add under you feature title\n  # Defaults to `%w(Add Create)`.\n  # @return [Array]\n  config.feature_labels = %w(Add Create)\n\n  # Controls the labels grepped for in your commit subjects that will\n  # be add under you miscellaneous title\n  # Defaults to `%w(Refactor)`.\n  # @return [Array]\n  config.misc_labels = %w(Refactor)\n\n  # Controls the title used in your generated log for all bugs listed\n  # Defaults to `**Fixed bugs:**`.\n  # @return [String]\n  config.bug_title = \"**Fixed bugs:**\"\n\n  # Controls the title used in your generated log for all features listed\n  # Defaults to `**Implemented enhancements:**`.\n  # @return [String]\n  config.feature_title = \"**Implemented enhancements:**\"\n\n  # Controls the title used in your generated log for all misc commits listed\n  # Defaults to `**Miscellaneous:**`.\n  # @return [String]\n  config.misc_title = \"**Miscellaneous:**\"\n\n  # Controls the title used in your generated log for all commits listed\n  # Defaults to `**Other:**`.\n  # @return [String]\n  config.log_all_title = \"**Other:**\"\n\n  # Controls whether all logs that do not match the other labels are listed\n  # Defaults to `false`\n  # @return [Boolean]\n  config.log_all = false\n\n  # The labels grepped for in your commit subject that you want to linkify.\n  # The index within the array must match the index for the site\n  # in `:link_to_humanize` and `:link_to_sites`.\n  # Defaults to `[]`.\n  # @return [Array]\n  config.link_to_labels = %w()\n\n  # The humanized output that you'd like to represent the associated `:link_to_label`\n  # The index within the array must match the index for the site\n  # in `:link_to_label` and `:link_to_sites`.\n  # Defaults to `[]`.\n  # @return [Array]\n  config.link_to_humanize = %w()\n\n  # The url for the site that you'd like to represent the associated `:link_to_label`\n  # The index within the array must match the index for the site\n  # in `:link_to_label` and `:link_to_humanize`.\n  # Defaults to `[]`.\n  # @return [Array]\n  config.link_to_sites = %w()\n\n  # Sets the timezone that should be used for setting the date.\n  # Defaults to `America/New_York`. For more, see\n  # [ActiveSupport Time Zones](http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html)\n  # @return [String]\n  config.timezone = \"America/New_York\"\n\n  # Controls whether your commit subject labels should be removed from the final\n  # ouput of your message on the generated log.\n  # Defaults to `false`.\n  # @return [Boolean]\n  config.prettify_messages = false\n\n  # If a commit message contains words that match more than\n  # one group of labels as defined in your configuration, the output\n  # will only contain the commit once.\n  # Defaults to `true`.\n  # @return [Boolean]\n  config.single_label = true\n\n  # Controls what will be passed to the format flag in `git for-each-ref`\n  # Defaults to `tag`.\n  # @return [String]\n  config.for_each_ref_format = \"tag\"\n\n  # Determines whether to use the last two tags to\n  # find commits for the output or if this gem should just\n  # find all commits after previous tag\n  # Defaults to `true`.\n  # @return [Boolean]\n  config.update_release_notes_before_tag = true\nend\n```\n\n## Usage\n\nInstall the binstub\n\n```sh\n$ bundle binstubs release-notes\n```\n\nand run\n\n```\n$ exe/release-notes help generate\n\nUsage:\n  release-notes generate\n\nOptions:\n  -t, [--tag=TAG]                              # The latest tag to use on the file title if the tag is not yet pushed\n  -r, [--force-rewrite], [--no-force-rewrite]  # Force release-notes to look at all previous tags and rewrite the output file\n  -i, [--ignore-head], [--no-ignore-head]      # If updating your changelog and you don't want the latest commits from the last tag to HEAD in a single instance of running, set to true\n\nGenerate release notes\n\n```\n\nsome sample ideas:\n\n\n```sh\n# make sure to pass your tag if updating before you've pushed the latest tag\n$ bin/release-notes -t v0.2.0\n# OR if running for the first time on a project that might have commits after the latest tag\n$ bin/release-notes --ignore-head\n# OR if using an output file that already exists in a project but would like to rerun all git tags\n$ bin/release-notes --force-rewrite\n```\n\n\n## Important Notes\n\n- Your project must tag releases(release-notes uses the tag date to output the changes)\n  (PR's to make this more flexible are welcome)\n- Linking is opinionated and will link to a URI structure of `#{site-url}#{issue_number}`. It\n  will ouput something like: `[HONEYBADGER #33150353](https://app.honeybadger.io/projects/9999/faults/33150353)`.\n  This also means that your link_to_labels have to be something like `['HB #']` (PR's to make this more flexible are welcome)\n\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/dvmonroe/release-notes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributing Guide](https://github.com/dvmonroe/release-notes/blob/master/CONTRIBUTING.md).\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).\n","funding_links":[],"categories":["Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvmonroe%2Frelease-notes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdvmonroe%2Frelease-notes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvmonroe%2Frelease-notes/lists"}