{"id":26076819,"url":"https://github.com/purescript-contrib/chnglg","last_synced_at":"2025-12-05T05:07:03.207Z","repository":{"id":43706618,"uuid":"459338388","full_name":"purescript-contrib/chnglg","owner":"purescript-contrib","description":"A maintainer and contributor-friendly tool for generating a human-readable CHANGELOG.md","archived":false,"fork":false,"pushed_at":"2023-10-20T16:40:03.000Z","size":316,"stargazers_count":8,"open_issues_count":4,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-03T01:17:57.690Z","etag":null,"topics":["changelog","tools"],"latest_commit_sha":null,"homepage":"","language":"PureScript","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/purescript-contrib.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.d/README.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-02-14T21:57:07.000Z","updated_at":"2023-10-19T21:45:56.000Z","dependencies_parsed_at":"2023-09-18T22:51:09.357Z","dependency_job_id":"48fbdbdc-45bd-494d-8415-e23c580acaab","html_url":"https://github.com/purescript-contrib/chnglg","commit_stats":null,"previous_names":["purescript-contrib/uplog","purescript-contrib/purescript-up-changelog"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-contrib%2Fchnglg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-contrib%2Fchnglg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-contrib%2Fchnglg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-contrib%2Fchnglg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/purescript-contrib","download_url":"https://codeload.github.com/purescript-contrib/chnglg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242635337,"owners_count":20161437,"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":["changelog","tools"],"created_at":"2025-03-09T02:35:55.950Z","updated_at":"2025-12-05T05:06:58.156Z","avatar_url":"https://github.com/purescript-contrib.png","language":"PureScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# chnglg\n\nA port of the work done in [`purescript/purescript#4392`](https://github.com/purescript/purescript/pull/4132). Ports the `update-changelog.hs` script from Haskell to PureScript.\n\n![ci badge](https://github.com/purescript-contrib/uplog/actions/workflows/ci.yml/badge.svg)\n\n## Install\n\nThe first working release is `v0.5.1`.\n\n```sh\nnpm i chnglg\n```\n\n## Why\n\nTo make it easier to keep a good changelog that\n- follows the principles described in [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).\n- helps maintainers write an entry for a PR while they still remember what it does rather than weeks/months later when they've forgotten its context\n- avoids `CHANGELOG.md` merge conflicts when many PRs are being merged in a short time period\n- properly links to the PRs done in a new release\n- properly accredits the contributors behind those PRs\n- allows maintainers to edit the final changelog before it's finalized\n\n## How\n\n### Receiving PRs\n\nEach PR will add a single file to the `CHANGELOG.d/` directory. Each file will store content in one of two forms:\n\nOne where no description is provided, such as...\n```markdown\n* A single-line summary of the change made\n```\n\nOne where description is provided, such as...\n``````markdown\n* A single-line summary of the change made\n\n  Here's a more in-depth explanation of the changes made.\n\n  Notice how everything in this section is indented by two spaces.\n\n  All markdown is supported:\n  - a list item\n\n  ```javascript\n  console.log(\"code blocks are supported\");\n  ```\n``````\n\nSince there are a variety of changes (e.g. breaking changes, new features, bug fixes, etc), these changes\nare grouped together in the final section for a given release in the `CHANGELOG.md` file. To indicate which kind of change a PR is, each file begins with a special prefix (e.g. `breaking`, `feat`, `fix`, etc.) that indicates where its corresponding group.\n\n| Prefix     | Group Title        | Meaning                                            |\n| ---------- | ------------------ | -------------------------------------------------- |\n| `breaking` | Breaking changes   | self-explanatory                                   |\n| `feature`  | New features       | self-explanatory                                   |\n| `fix`      | Bugfixes           | self-explanatory                                   |\n| `misc`     | Other improvements | anything else that needs to be logged              |\n| `int`      | Internal           | work that doesn't directly affect users of project |\n\nThe rest of the file's name is irrelevant for the script, but is often used to summarize things at a glance. For example:\n- `breaking_add-new-function-arg.md`\n- `fix_fix-unclickable-login-button.md`\n- `int_update-ci-to-publish-releases.md`\n- `misc_update-react-dependency.md`\n\nIf a PR needs multiple changelog entries for it, it can add multiple files, one for each documented change.\n\n### Making a Release\n\nWhen the maintainer of the project wants to make a release, they update the `CHANGELOG.md` file by running this script (e.g. `purs-changelog update --repo owner/repo`). The script will automatically add the PR number and the GitHub username of the authors of the PR to each file's entry, merge all entries together, and then insert them below the preamble in the `CHANGELOG.md` file.\n\nFor example, given the following files\n```\nCHANGELOG.d/\n  feat_new feature.md\n  fix_bug-123.md\n  breaking_add-new-function-arg.md\nCHANGELOG.md\n```\nwhere the content of each file is\n```markdown\n-- CHANGELOG.d/fix_new feature.md\n* Added a new feature\n-- CHANGELOG.d/fix_bug-123.md\n* Fixed login issue due to unclickable button\n\n  Due to changes to CSS, the login button became\n  unclickable in a very rare situation.\n\n  If the user moved their mouse over the image nearby,\n  the image would resized improperly and cover\n  the login button, preventing the user from clicking it.\nCHANGELOG.d/breaking_add-new-function-arg.md\n* Added a priority `Int` arg to `getUserNickname`\n\n  The arg is used by the backend to determine which\n  `GET_NICKNAME` requests to prioritize above others.\nCHANGELOG.md\n# Changelog\n\nNotable changes to this project are documented in this file.\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## 1.0.0\n\nInitial release\n```\n\nthis script will modify `CHANGELOG.md` to the following\n\n```markdown\n# Changelog\n\nNotable changes to this project are documented in this file.\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## 2.0.0\n\nBreaking changes:\n* Added a priority `Int` arg to `getUserNickname` (#1 by @aRealGitHubUserName)\n\n  The arg is used by the backend to determine which\n  `GET_NICKNAME` requests to prioritize above others.\n\nNew features:\n* Added a new feature (#2 and #3 by @aRealGitHubUserName, @aRealGitHubUserName2, and @aRealGitHubUserName3)\n\nBugfixes:\n* Fixed login issue due to unclickable button (#4 by @aRealGitHubUserName)\n\n  Due to changes to CSS, the login button became\n  unclickable in a very rare situation.\n\n  If the user moved their mouse over the image nearby,\n  the image would resized improperly and cover\n  the login button, preventing the user from clicking it.\n\n## 1.0.0\n\nInitial release\n```\n\nIf prefixes aren't used (e.g. `int` for `Internal`), the group won't appear in the updated changelog.\n\nThe maintainer at this point can commit the updated `CHANGELOG.md` file or further edit it before making the new release.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurescript-contrib%2Fchnglg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpurescript-contrib%2Fchnglg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurescript-contrib%2Fchnglg/lists"}