Skip to content

chore: update deps, fix security vulns, upgrade deprecated CI actions#171

Merged
docdyhr merged 1 commit intomainfrom
chore/repo-maintenance
Mar 15, 2026
Merged

chore: update deps, fix security vulns, upgrade deprecated CI actions#171
docdyhr merged 1 commit intomainfrom
chore/repo-maintenance

Conversation

@docdyhr
Copy link
Owner

@docdyhr docdyhr commented Mar 15, 2026

Summary

  • Update 8 outdated dependencies (vitest 4.1.0, @typescript-eslint 8.57.0, lint-staged 16.4.0, markdownlint-cli 0.48.0, etc.)
  • Fix 3 high-severity npm audit vulnerabilities by overriding tar→7.5.11 and adding underscore→1.13.8 override
  • Clear audit-ci.json allowlist (no longer needed with fixed overrides)
  • Upgrade github/codeql-action from v3→v4 in codeql-analysis.yml and main-ci.yml
  • Upgrade docker/login-action from v3→v4 in release.yml and docker-modern.yml

Test plan

  • npm audit returns 0 vulnerabilities
  • npm run build succeeds
  • npm test passes (72/72)
  • Security validation tests pass (110/110)
  • CI/CD pipeline passes with updated actions

🤖 Generated with Claude Code

Summary by Sourcery

Update security-related tooling, dependencies, and CI workflows to address npm audit findings and use current GitHub Actions.

Bug Fixes:

  • Resolve high-severity npm vulnerabilities by updating tar and adding an underscore override, allowing the audit-ci allowlist to be cleared.

Enhancements:

  • Upgrade markdownlint-cli to the latest minor version for improved markdown linting.
  • Refresh npm lockfile to align with updated dependencies and overrides.

CI:

  • Upgrade github/codeql-action steps (init, autobuild, analyze, upload-sarif) from v3 to v4 across CodeQL and main CI workflows.
  • Upgrade docker/login-action from v3 to v4 in release and Docker build workflows.

Chores:

  • Remove the now-unnecessary audit-ci vulnerability allowlist configuration.

…d CI actions

- Update 8 outdated dependencies (vitest 4.1, eslint-plugin 8.57, etc.)
- Fix 3 high-severity npm audit vulns by overriding tar→7.5.11, underscore→1.13.8
- Clear audit-ci allowlist (no longer needed with fixed overrides)
- Upgrade github/codeql-action from v3→v4 (deprecated Dec 2026)
- Upgrade docker/login-action from v3→v4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings March 15, 2026 23:29
@sourcery-ai
Copy link

sourcery-ai bot commented Mar 15, 2026

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Updates security-related dependencies and CI workflows: bumps vulnerable tar and adds underscore overrides, updates markdownlint-cli and other dev deps, clears the npm audit allowlist, and upgrades GitHub CodeQL and Docker login actions to their latest major versions in CI pipelines.

Flow diagram for npm audit with updated overrides and cleared allowlist

flowchart TD
  A[Start] --> B[Install dependencies via npm ci]
  B --> C[npm audit runs in CI]

  C --> D[Apply overrides in package json]
  D --> D1[tar resolved to 7_5_11]
  D --> D2[underscore resolved to 1_13_8]

  D1 --> E[Recalculate dependency tree]
  D2 --> E

  E --> F[Known vulnerabilities rechecked]
  F --> G[audit_ci json allowlist cleared]
  G --> H[npm audit reports 0 vulnerabilities]
  H --> I[Security validation tests run]
  I --> J[End]
Loading

File-Level Changes

Change Details Files
Harden npm dependency security by updating overrides and removing obsolete audit allowlist entries.
  • Bump tar override from 7.5.8 to 7.5.11 to resolve high-severity vulnerabilities.
  • Add underscore override at 1.13.8 to address reported vulnerabilities.
  • Clear the audit-ci allowlist configuration so no vulnerabilities are ignored by default.
  • Regenerate package-lock.json to reflect updated overrides and resolved audit issues.
package.json
.audit-ci.json
package-lock.json
Refresh development tooling dependencies to current compatible versions.
  • Update markdownlint-cli from ^0.47.0 to ^0.48.0.
  • Update additional dev dependencies such as vitest, @typescript-eslint, lint-staged, and others as described in the PR summary, with lockfile changes captured in package-lock.json.
package.json
package-lock.json
Upgrade CodeQL GitHub Actions to v4 across CI workflows.
  • Update github/codeql-action/init from v3 to v4 in the CodeQL analysis workflow.
  • Update github/codeql-action/autobuild from v3 to v4 in the CodeQL analysis workflow.
  • Update github/codeql-action/analyze from v3 to v4 in the CodeQL analysis workflow.
  • Update github/codeql-action/upload-sarif from v3 to v4 in the main CI workflow.
.github/workflows/codeql-analysis.yml
.github/workflows/main-ci.yml
Upgrade Docker login GitHub Action to v4 in release and Docker build workflows.
  • Update docker/login-action from v3 to v4 in the release workflow.
  • Update docker/login-action from v3 to v4 in the modern Docker workflow.
.github/workflows/release.yml
.github/workflows/docker-modern.yml

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey - I've found 2 issues, and left some high level feedback:

  • For the new tar and underscore overrides in package.json, consider adding a brief inline comment or grouping them under a clearly labeled section to document that they are security-driven pins and make future cleanup or updates easier.
  • After bumping github/codeql-action and docker/login-action to v4, it may be worth quickly comparing the workflow inputs/outputs against the v4 migration notes to confirm there are no subtle behavior changes (e.g., default flags or auth handling) that should be reflected in the workflow steps.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- For the new `tar` and `underscore` overrides in `package.json`, consider adding a brief inline comment or grouping them under a clearly labeled section to document that they are security-driven pins and make future cleanup or updates easier.
- After bumping `github/codeql-action` and `docker/login-action` to v4, it may be worth quickly comparing the workflow inputs/outputs against the v4 migration notes to confirm there are no subtle behavior changes (e.g., default flags or auth handling) that should be reflected in the workflow steps.

## Individual Comments

### Comment 1
<location path=".github/workflows/codeql-analysis.yml" line_range="57-60" />
<code_context>
       # Initializes the CodeQL tools for scanning.
       - name: 🔧 Initialize CodeQL
-        uses: github/codeql-action/init@v3
+        uses: github/codeql-action/init@v4
         with:
           languages: ${{ matrix.language }}
</code_context>
<issue_to_address>
**🚨 suggestion (security):** Consider pinning GitHub Actions to a specific commit SHA instead of a major tag for better supply-chain security.

Since you’re already updating CodeQL, it’s a good time to pin these to immutable SHAs (e.g. `github/codeql-action/*` here and `upload-sarif` in `main-ci.yml`). This improves build reproducibility and reduces the impact of any compromised or breaking upstream release; you can add a comment with the corresponding release tag for traceability.

Suggested implementation:

```
      # Initializes the CodeQL tools for scanning.
      - name: 🔧 Initialize CodeQL
        # Pinned to a specific CodeQL Action commit for supply-chain security.
        # Replace <CODEQL_ACTION_COMMIT_SHA> with the immutable SHA corresponding to the desired v4 release
        # (e.g. from https://github.com/github/codeql-action/releases).
        # Example comment once pinned: github/codeql-action/init@v4.0.0
        uses: github/codeql-action/init@<CODEQL_ACTION_COMMIT_SHA>
        with:
          languages: ${{ matrix.language }}
          # Use comprehensive security queries

```

```
      # Autobuild attempts to build any compiled languages
      - name: 🤖 Autobuild
        # Pinned to the same CodeQL Action commit SHA as init/analyze for reproducibility.
        # Example comment once pinned: github/codeql-action/autobuild@v4.0.0
        uses: github/codeql-action/autobuild@<CODEQL_ACTION_COMMIT_SHA>

```

```
      - name: 🔍 Perform CodeQL Analysis
        # Pinned to the same CodeQL Action commit SHA as init/autobuild for reproducibility.
        # Example comment once pinned: github/codeql-action/analyze@v4.0.0
        uses: github/codeql-action/analyze@<CODEQL_ACTION_COMMIT_SHA>

```

1. Look up the exact commit SHA for the desired `github/codeql-action` v4 release (e.g. v4.0.0) and replace `<CODEQL_ACTION_COMMIT_SHA>` with that immutable SHA in all three steps to keep them in sync.
2. In `.github/workflows/main-ci.yml`, locate any `upload-sarif` usage (e.g. `github/codeql-action/upload-sarif@v4` or similar) and:
   - Pin it to a specific commit SHA in the same way.
   - Add a comment indicating the corresponding release tag (e.g. `github/codeql-action/upload-sarif@v4.0.0`) for traceability.
</issue_to_address>

### Comment 2
<location path=".github/workflows/docker-modern.yml" line_range="137" />
<code_context>
       - name: 🔐 Log in to Docker Hub
         if: github.event_name == 'release' || inputs.push
-        uses: docker/login-action@v3
+        uses: docker/login-action@v4
         with:
           registry: ${{ env.REGISTRY }}
</code_context>
<issue_to_address>
**🚨 suggestion (security):** Apply the same version-pinning strategy to `docker/login-action` to avoid unexpected behavior changes.

As with the CodeQL steps, `docker/login-action@v4` will follow the latest `v4` release. Please pin this to a specific commit SHA for the chosen `v4` release so the workflow behavior remains deterministic and less exposed to supply‑chain or unexpected runtime changes over time.

Suggested implementation:

```
      - name: 🔐 Log in to Docker Hub
        if: github.event_name == 'release' || inputs.push
        # Pinned to a specific v4 commit to keep workflow behavior deterministic
        uses: docker/login-action@<PINNED_V4_COMMIT_SHA>
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ secrets.DOCKER_USERNAME }}

```

1. Replace `<PINNED_V4_COMMIT_SHA>` with the actual commit SHA for the desired `v4` release of `docker/login-action` (e.g., from the release/tag you are standardizing on).
2. Optionally, extend the comment to include the corresponding tag (e.g., `# v4.0.0`) once you have chosen the exact release, to make future maintenance easier.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines +57 to 60
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
# Use comprehensive security queries
Copy link

Choose a reason for hiding this comment

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

🚨 suggestion (security): Consider pinning GitHub Actions to a specific commit SHA instead of a major tag for better supply-chain security.

Since you’re already updating CodeQL, it’s a good time to pin these to immutable SHAs (e.g. github/codeql-action/* here and upload-sarif in main-ci.yml). This improves build reproducibility and reduces the impact of any compromised or breaking upstream release; you can add a comment with the corresponding release tag for traceability.

Suggested implementation:

      # Initializes the CodeQL tools for scanning.
      - name: 🔧 Initialize CodeQL
        # Pinned to a specific CodeQL Action commit for supply-chain security.
        # Replace <CODEQL_ACTION_COMMIT_SHA> with the immutable SHA corresponding to the desired v4 release
        # (e.g. from https://github.com/github/codeql-action/releases).
        # Example comment once pinned: github/codeql-action/init@v4.0.0
        uses: github/codeql-action/init@<CODEQL_ACTION_COMMIT_SHA>
        with:
          languages: ${{ matrix.language }}
          # Use comprehensive security queries

      # Autobuild attempts to build any compiled languages
      - name: 🤖 Autobuild
        # Pinned to the same CodeQL Action commit SHA as init/analyze for reproducibility.
        # Example comment once pinned: github/codeql-action/autobuild@v4.0.0
        uses: github/codeql-action/autobuild@<CODEQL_ACTION_COMMIT_SHA>

      - name: 🔍 Perform CodeQL Analysis
        # Pinned to the same CodeQL Action commit SHA as init/autobuild for reproducibility.
        # Example comment once pinned: github/codeql-action/analyze@v4.0.0
        uses: github/codeql-action/analyze@<CODEQL_ACTION_COMMIT_SHA>

  1. Look up the exact commit SHA for the desired github/codeql-action v4 release (e.g. v4.0.0) and replace <CODEQL_ACTION_COMMIT_SHA> with that immutable SHA in all three steps to keep them in sync.
  2. In .github/workflows/main-ci.yml, locate any upload-sarif usage (e.g. github/codeql-action/upload-sarif@v4 or similar) and:
    • Pin it to a specific commit SHA in the same way.
    • Add a comment indicating the corresponding release tag (e.g. github/codeql-action/upload-sarif@v4.0.0) for traceability.

- name: 🔐 Log in to Docker Hub
if: github.event_name == 'release' || inputs.push
uses: docker/login-action@v3
uses: docker/login-action@v4
Copy link

Choose a reason for hiding this comment

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

🚨 suggestion (security): Apply the same version-pinning strategy to docker/login-action to avoid unexpected behavior changes.

As with the CodeQL steps, docker/login-action@v4 will follow the latest v4 release. Please pin this to a specific commit SHA for the chosen v4 release so the workflow behavior remains deterministic and less exposed to supply‑chain or unexpected runtime changes over time.

Suggested implementation:

      - name: 🔐 Log in to Docker Hub
        if: github.event_name == 'release' || inputs.push
        # Pinned to a specific v4 commit to keep workflow behavior deterministic
        uses: docker/login-action@<PINNED_V4_COMMIT_SHA>
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ secrets.DOCKER_USERNAME }}

  1. Replace <PINNED_V4_COMMIT_SHA> with the actual commit SHA for the desired v4 release of docker/login-action (e.g., from the release/tag you are standardizing on).
  2. Optionally, extend the comment to include the corresponding tag (e.g., # v4.0.0) once you have chosen the exact release, to make future maintenance easier.

@docdyhr docdyhr merged commit 31e3311 into main Mar 15, 2026
32 checks passed
@docdyhr docdyhr deleted the chore/repo-maintenance branch March 15, 2026 23:32
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates project dependencies and GitHub Actions to address npm audit vulnerabilities and move off deprecated/older CI actions, aligning the repo’s supply-chain and CI tooling with current versions.

Changes:

  • Add npm overrides for vulnerable transitive dependencies (tar, underscore) and update markdownlint-cli.
  • Refresh package-lock.json to newer resolved versions (e.g., vitest/typescript-eslint toolchain, lint-staged).
  • Upgrade GitHub Actions usage for CodeQL and Docker login (v3 → v4) across relevant workflows; clear the audit-ci allowlist.

Reviewed changes

Copilot reviewed 6 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
package.json Adds/updates overrides for vulnerability remediation; bumps markdownlint-cli.
package-lock.json Locks updated dependency tree reflecting new resolutions (security/tooling updates).
.github/workflows/release.yml Upgrades docker/login-action to v4 for publishing.
.github/workflows/main-ci.yml Upgrades github/codeql-action/upload-sarif to v4 for Trivy SARIF upload.
.github/workflows/docker-modern.yml Upgrades docker/login-action to v4 for Docker workflow.
.github/workflows/codeql-analysis.yml Upgrades CodeQL init/autobuild/analyze actions to v4.
.audit-ci.json Clears allowlist entries now that overrides resolve the flagged vulns.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

@@ -128,7 +128,8 @@
}
},
"minimatch": "10.2.3",
@docdyhr
Copy link
Owner Author

docdyhr commented Mar 16, 2026

🎉 This PR is included in version 3.1.13 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants