GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Create `changetool` script for validating change-notes by mario-campos · Pull Request #4113 · github/codeql-action

Conversation

@mario-campos

@mario-campos mario-campos commented Aug 26, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

This PR introduces a distinct NPM package/script under scripts/changetool for the purpose of validating change-notes (and eventually, in a subsequent PR, merging change-notes into CHANGELOG.md).

Presently, this script has only one command, validate (executed as npm --workspace changetool start validate), which accepts path(s) to change-note files to be validated. Any flaws in the change-notes are described in the output, and the command will exit with 1.

$ npm --workspace changetool start validate package.json 

> [email protected] start
> tsx index.ts validate package.json

package.json: invalid filename; must match pattern YYYY-MM-DD-id.md
package.json: invalid category; must be one of: breaking, feature, improvement, securityFix, fix, unship, deprecation, knownIssue, misc
package.json: invalid Markdown; content must be a single unordered list with hyphen bullets and no other Markdown elements

Risk assessment

For internal use only. Please select the risk level of this change:

  • Low risk: Changes are fully under feature flags, or have been fully tested and validated in pre-production environments and are highly observable, or are documentation or test only.

Which use cases does this change impact?

Workflow types:

  • N/A

Products:

  • N/A

Environments:

  • Testing/None - This change does not impact any CodeQL workflows in production.

How did/will you validate this change?

  • Unit tests - I am depending on unit test coverage (i.e. tests in .test.ts files).

If something goes wrong after this change is released, what are the mitigation and rollback strategies?

  • Development/testing only - This change cannot cause any failures in production.

How will you know if something goes wrong after this change is released?

  • N/A

Are there any special considerations for merging or releasing this change?

  • No special considerations - This change can be merged at any time.

Merge / deployment checklist

  • Confirm this change is backwards compatible with existing workflows.
  • Consider adding a changelog entry for this change.
  • Confirm the readme and docs have been updated if necessary.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Copilot AI balanced review requested due to automatic review settings August 26, 2026 22:13
@mario-campos
mario-campos requested a review from a team as a code owner August 26, 2026 22:13
@github-actions github-actions Bot added the size/XXL May be extremely hard to review label Aug 26, 2026
Copilot started reviewing on behalf of mario-campos August 26, 2026 22:13
View session
@mario-campos
Create changetool script for validating change-notes
426c104
@mario-campos
mario-campos force-pushed the mario-campos/add-changenote-script branch from eb65ce0 to 426c104 Compare August 26, 2026 22:13
Copilot AI reviewed Aug 26, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Pull request overview

Adds a standalone TypeScript CLI for validating change-note files.

Changes:

  • Validates filenames, categories, and Markdown structure.
  • Adds unit tests and package configuration.
  • Integrates changetool testing and linting into CI.
Show a summary per file
File Description
scripts/changetool/index.ts Implements CLI dispatch and exit codes.
scripts/changetool/cli/validate.ts Implements change-note validation.
scripts/changetool/cli/validate.test.ts Tests validation behavior.
scripts/changetool/package.json Defines scripts and dependencies.
scripts/changetool/package-lock.json Locks package dependencies.
scripts/changetool/tsconfig.json Configures TypeScript compilation.
eslint.config.mjs Adds changetool lint configuration.
.github/workflows/pr-checks.yml Adds a dedicated test job.

Review details

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Files not reviewed (1)
  • scripts/changetool/package-lock.json: Generated file
  • Files reviewed: 7/8 changed files
  • Comments generated: 7
  • Review effort level: Balanced

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread scripts/changetool/tsconfig.json Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread scripts/changetool/tsconfig.json Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread scripts/changetool/index.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread scripts/changetool/cli/validate.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread scripts/changetool/cli/validate.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread scripts/changetool/cli/validate.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread .github/workflows/pr-checks.yml Resolved

Uh oh!

There was an error while loading. Please reload this page.

mario-campos added 7 commits August 26, 2026 22:15
@mario-campos
Handle file errors as false
580da89
@mario-campos
Replace Array.prototype.every() with for loop
5aea817
`.every()` short-circuits on the first `false`
@mario-campos
Use Object.hasOwn instead of in operator
50ec5a5
Apparently, the `in` operator will check inherited properties too.
@mario-campos
Enhance changenote validation to support nested bullet lists
0447ab2
@mario-campos
Extend scripts/changetool as a NPM workspace
be555cf
@mario-campos
Refactor tsconfig.json to extend base configuration and simplify options
e2cd31e
@mario-campos
Delete unused script/changetool NPM scripts
cacb7b3
@github-actions github-actions Bot added size/L May be hard to review and removed size/XXL May be extremely hard to review labels Aug 27, 2026
henrymercer
henrymercer previously approved these changes Aug 27, 2026
View reviewed changes

@henrymercer henrymercer left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Nice, just a couple of minor package.json suggestions:

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread scripts/changetool/package.json Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread scripts/changetool/package.json Resolved

Uh oh!

There was an error while loading. Please reload this page.

@mario-campos @henrymercer
Delete unused Node.js flag --experimental-test-module-mocks
f049ecb
Co-authored-by: Henry Mercer <[email protected]>
@mario-campos
mario-campos dismissed henrymercer’s stale review via f049ecb August 27, 2026 16:22
henrymercer
henrymercer approved these changes Aug 27, 2026
View reviewed changes
@mario-campos
mario-campos added this pull request to the merge queue Aug 27, 2026
Merged via the queue into main with commit 6f53031 Aug 27, 2026
224 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@mario-campos
mario-campos deleted the mario-campos/add-changenote-script branch August 27, 2026 18:24
mbg
mbg reviewed Sep 1, 2026
View reviewed changes

@mbg mbg left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

@mario-campos @henrymercer Obviously a late comment, but I am wondering about the motivation for moving this to a separate project in scripts/changetool? I don't see the reasoning explained here, but wouldn't it have kept things simpler to have it in pr-checks along with the other changelog related code?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mbg mbg mentioned this pull request Sep 1, 2026
Validate change-notes as a PR check #4116
Merged
This was referenced Sep 9, 2026
Merge main into releases/v4 #4131
Merged
Merge releases/v4 into releases/v3 #4133
Merged
@mbg mbg mentioned this pull request Oct 8, 2026
Document change-notes process #4211
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@mbg mbg mbg left review comments
Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments
@henrymercer henrymercer henrymercer approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

size/L May be hard to review

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

4 participants

@mario-campos @mbg @henrymercer
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.