From bfc9ee7e0bdedd56062ad4894966a1b2de161c8a Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Wed, 28 Jan 2026 18:04:36 -0800 Subject: [PATCH 01/16] chore: bump to 1.5.5-dev.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d09098b..a369c83 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@grunnverk/github-tools", - "version": "1.5.4", + "version": "1.5.5-dev.0", "description": "GitHub API utilities for automation - PR management, issue tracking, workflow monitoring", "main": "dist/index.js", "type": "module", From e46471ca3edd70375e8c7e03ae91863f61a0c502 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Wed, 28 Jan 2026 21:16:49 -0800 Subject: [PATCH 02/16] chore: bump to ..1-dev.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a369c83..0444f18 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@grunnverk/github-tools", - "version": "1.5.5-dev.0", + "version": "..1-dev.0", "description": "GitHub API utilities for automation - PR management, issue tracking, workflow monitoring", "main": "dist/index.js", "type": "module", From df8f7baf536d3b98559aabecc9c3a0cffc167ef0 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Wed, 28 Jan 2026 21:19:55 -0800 Subject: [PATCH 03/16] chore(package): fix package.json version to 1.5.5-dev.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0444f18..a369c83 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@grunnverk/github-tools", - "version": "..1-dev.0", + "version": "1.5.5-dev.0", "description": "GitHub API utilities for automation - PR management, issue tracking, workflow monitoring", "main": "dist/index.js", "type": "module", From c02c76ad174e8a4b3c321272fa257e747a5a0ad8 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 11:38:24 -0800 Subject: [PATCH 04/16] Streamline npm publish workflow to trigger on working branch Updated npm-publish.yml to match standardized workflow format that triggers on both release creation and pushes to working branch. Removed redundant build job and simplified to single publish job with smart version tagging (dev for pre-releases, latest for stable versions). --- .github/workflows/npm-publish.yml | 52 +++++++++---------------------- 1 file changed, 15 insertions(+), 37 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 409a1ef..f951467 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -1,11 +1,11 @@ -# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created -# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages - name: Node.js Package (npm) on: release: types: [created] + push: + branches: + - working permissions: contents: write @@ -13,29 +13,7 @@ permissions: id-token: write jobs: - build: - runs-on: ubuntu-latest - timeout-minutes: 15 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 24 - - name: Install dependencies - run: | - # Use public npm registry (package-lock.json is gitignored) - npm config set registry https://registry.npmjs.org/ - # Clean install to ensure platform-specific optional deps (rollup native bindings) are resolved correctly - # See: https://github.com/npm/cli/issues/4828 - rm -rf node_modules package-lock.json - npm install --force - timeout-minutes: 10 - - run: npm run lint - - run: npm run build - - run: npm run test - publish-npm: - needs: build runs-on: ubuntu-latest timeout-minutes: 15 steps: @@ -44,16 +22,16 @@ jobs: with: node-version: 24 registry-url: https://registry.npmjs.org/ - - name: Update npm - run: npm install -g npm@latest - - name: Install dependencies - run: | - # Use public npm registry (package-lock.json is gitignored) - npm config set registry https://registry.npmjs.org/ - # Clean install to ensure platform-specific optional deps (rollup native bindings) are resolved correctly - # See: https://github.com/npm/cli/issues/4828 - rm -rf node_modules package-lock.json - npm install --force + - run: npm install -g npm@latest + - run: npm install --verbose --foreground-scripts timeout-minutes: 10 - - run: npm publish --access public - + - name: Determine npm tag + id: npm-tag + run: | + VERSION=$(node -p "require('./package.json').version") + if [[ "$VERSION" == *"-"* ]]; then + echo "tag=dev" >> $GITHUB_OUTPUT + else + echo "tag=latest" >> $GITHUB_OUTPUT + fi + - run: npm publish --access public --tag ${{ steps.npm-tag.outputs.tag }} From 6faff1fdfa4addb5e7a5d4269883d4899a30e406 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 11:55:23 -0800 Subject: [PATCH 05/16] Fix Vitest 4 deprecation and prevent accidental production publishes 1. Vitest config: Moved maxForks/minForks from deprecated poolOptions to top-level 2. Workflow: Skip npm publish for production versions on non-release pushes --- .github/workflows/npm-publish.yml | 16 ++++++++++++++-- vitest.config.ts | 8 ++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index f951467..408c47a 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -25,13 +25,25 @@ jobs: - run: npm install -g npm@latest - run: npm install --verbose --foreground-scripts timeout-minutes: 10 - - name: Determine npm tag + - name: Determine npm tag and publish strategy id: npm-tag run: | VERSION=$(node -p "require('./package.json').version") + IS_RELEASE="${{ github.event_name == 'release' }}" + if [[ "$VERSION" == *"-"* ]]; then echo "tag=dev" >> $GITHUB_OUTPUT + echo "should_publish=true" >> $GITHUB_OUTPUT else echo "tag=latest" >> $GITHUB_OUTPUT + # Only publish production versions on release events + if [[ "$IS_RELEASE" == "true" ]]; then + echo "should_publish=true" >> $GITHUB_OUTPUT + else + echo "should_publish=false" >> $GITHUB_OUTPUT + echo "⚠️ Skipping publish: Production version detected on non-release push" + fi fi - - run: npm publish --access public --tag ${{ steps.npm-tag.outputs.tag }} + - name: Publish to npm + if: steps.npm-tag.outputs.should_publish == 'true' + run: npm publish --access public --tag ${{ steps.npm-tag.outputs.tag }} diff --git a/vitest.config.ts b/vitest.config.ts index fbfbbd3..6dd1571 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -10,12 +10,8 @@ export default defineConfig({ }, // Add pool configuration to prevent memory issues pool: 'forks', - poolOptions: { - forks: { - maxForks: 2, - minForks: 1 - } - }, + maxForks: 2, + minForks: 1, // Add test timeout and memory limits testTimeout: 30000, hookTimeout: 10000, From e020b1ef3f2ed91a37dab737f542f1a61bb14762 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 12:03:49 -0800 Subject: [PATCH 06/16] Use ubuntu-latest-8-cores for faster GitHub Actions workflows Upgraded all workflows from standard 2-core runners to 8-core runners for improved performance. --- .github/workflows/npm-publish.yml | 2 +- .github/workflows/test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 408c47a..0788f0b 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -14,7 +14,7 @@ permissions: jobs: publish-npm: - runs-on: ubuntu-latest + runs-on: ubuntu-latest-8-cores timeout-minutes: 15 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 78f68ae..f1c974d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ permissions: jobs: test: - runs-on: ubuntu-latest + runs-on: ubuntu-latest-8-cores timeout-minutes: 15 steps: - uses: actions/checkout@v4 From df0a3c923db60ab581d33961a79b42c83c747c9d Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 12:57:34 -0800 Subject: [PATCH 07/16] chore(ci): add git SHA to pre-release npm versions Pre-release versions (e.g., 1.5.8-dev.0) now include the short git SHA in the published version string (e.g., 1.5.8-dev.0+a1b2c3d). This makes it easier to trace published dev packages back to their source commit. Production versions remain unchanged and only publish on release events. --- .github/workflows/npm-publish.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 0788f0b..19841cc 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -30,20 +30,30 @@ jobs: run: | VERSION=$(node -p "require('./package.json').version") IS_RELEASE="${{ github.event_name == 'release' }}" - + SHORT_SHA=$(git rev-parse --short=7 HEAD) + if [[ "$VERSION" == *"-"* ]]; then echo "tag=dev" >> $GITHUB_OUTPUT echo "should_publish=true" >> $GITHUB_OUTPUT + # Add git SHA to pre-release version + NEW_VERSION="${VERSION}+${SHORT_SHA}" + echo "version=${NEW_VERSION}" >> $GITHUB_OUTPUT + echo "📦 Publishing pre-release version: ${NEW_VERSION}" else echo "tag=latest" >> $GITHUB_OUTPUT + echo "version=${VERSION}" >> $GITHUB_OUTPUT # Only publish production versions on release events if [[ "$IS_RELEASE" == "true" ]]; then echo "should_publish=true" >> $GITHUB_OUTPUT + echo "📦 Publishing production version: ${VERSION}" else echo "should_publish=false" >> $GITHUB_OUTPUT echo "⚠️ Skipping publish: Production version detected on non-release push" fi fi + - name: Update package.json version for pre-release + if: steps.npm-tag.outputs.should_publish == 'true' && steps.npm-tag.outputs.tag == 'dev' + run: npm version ${{ steps.npm-tag.outputs.version }} --no-git-tag-version - name: Publish to npm if: steps.npm-tag.outputs.should_publish == 'true' run: npm publish --access public --tag ${{ steps.npm-tag.outputs.tag }} From ab169e2a85a289ce9cd1e7866fff07021ad3dd93 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 13:05:41 -0800 Subject: [PATCH 08/16] fix(ci): use direct JSON modification instead of npm version The npm version command was failing because it validates semver strictly and doesn't like the +sha format. Now we directly modify package.json using Node.js to bypass npm's validation while still updating the version. --- .github/workflows/npm-publish.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 19841cc..766982a 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -53,7 +53,9 @@ jobs: fi - name: Update package.json version for pre-release if: steps.npm-tag.outputs.should_publish == 'true' && steps.npm-tag.outputs.tag == 'dev' - run: npm version ${{ steps.npm-tag.outputs.version }} --no-git-tag-version + run: | + node -e "const pkg = require('./package.json'); pkg.version = '${{ steps.npm-tag.outputs.version }}'; require('fs').writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');" + echo "Updated package.json to version ${{ steps.npm-tag.outputs.version }}" - name: Publish to npm if: steps.npm-tag.outputs.should_publish == 'true' run: npm publish --access public --tag ${{ steps.npm-tag.outputs.tag }} From 8a6e1c5b1e02cecded9a69d222847c1abb8cc2dc Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 13:08:37 -0800 Subject: [PATCH 09/16] fix(ci): use timestamp+sha format instead of +sha metadata npm strips the +sha build metadata when publishing, causing version conflicts. Now using format like 1.5.5-dev.20260131210612.ab169e2 which is valid semver and ensures unique versions for each build. --- .github/workflows/npm-publish.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 766982a..b20767f 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -31,12 +31,14 @@ jobs: VERSION=$(node -p "require('./package.json').version") IS_RELEASE="${{ github.event_name == 'release' }}" SHORT_SHA=$(git rev-parse --short=7 HEAD) + TIMESTAMP=$(date +%Y%m%d%H%M%S) if [[ "$VERSION" == *"-"* ]]; then echo "tag=dev" >> $GITHUB_OUTPUT echo "should_publish=true" >> $GITHUB_OUTPUT - # Add git SHA to pre-release version - NEW_VERSION="${VERSION}+${SHORT_SHA}" + # Add timestamp and SHA to pre-release version (e.g., 1.5.5-dev.0 -> 1.5.5-dev.20260131210612.ab169e2) + BASE_VERSION="${VERSION%%-*}" + NEW_VERSION="${BASE_VERSION}-dev.${TIMESTAMP}.${SHORT_SHA}" echo "version=${NEW_VERSION}" >> $GITHUB_OUTPUT echo "📦 Publishing pre-release version: ${NEW_VERSION}" else From a45c958d79f79b24dc744d25c92bc224b3255e29 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 13:13:05 -0800 Subject: [PATCH 10/16] Getting rid of CI Slowdown --- .github/dependabot.yml | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 5990d9c..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,11 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file - -version: 2 -updates: - - package-ecosystem: "" # See documentation for possible values - directory: "/" # Location of package manifests - schedule: - interval: "weekly" From 4a805dc09dc70d6e1005065df796f08999635398 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 14:35:50 -0800 Subject: [PATCH 11/16] chore: add concurrency control to test workflow to prevent duplicate runs --- .github/workflows/test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f1c974d..78652cd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,6 +12,10 @@ on: branches: - main +concurrency: + group: test-${{ github.head_ref || github.ref_name }} + cancel-in-progress: true + permissions: contents: write From 7e95f2f4350df9106ea645f4363dbd20073089d4 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 15:13:00 -0800 Subject: [PATCH 12/16] feat(github): enhance GitHub utilities and add comprehensive tests - Make prompt confirmation injectable to support non-interactive and test environments - Improve repo detection (supports SSH aliases, custom hosts, URLs without .git, and Enterprise/port forms) - Add robust PR creation handling: title truncation to 256 chars with word-boundary logic, reuse-exists check, and improved 422 recovery - Implement richer workflow/release checks: - Inspect repository workflows and determine if they trigger on pull_request or release events - Detect and filter workflow runs triggered by a release (time and SHA-aware) - Wait/monitor logic for PR checks and release workflows with retry, timeout and user prompts - Enhance release creation (unescape serialized newlines) and add helpers for issues/milestones: - create/get releases, list/open/closed issues, milestone find/create/close, move issues between milestones - Helpers to collect issue details and generate release notes respecting token limits - Improve error handling and logging throughout functions Tests: - Add/expand tests in tests/github.test.ts to cover new behavior and edge cases for all updated utilities: - getOctokit, branch/repo detection, create/find PRs, title truncation, waiting for checks, merging PRs, releases, workflows, issues, milestones, and many edge/error cases - Use mocked Octokit and git tools; inject prompt function in tests Files: - src/github.ts - tests/github.test.ts --- src/github.ts | 17 ++++++++++++++++- tests/github.test.ts | 15 +++++++-------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/github.ts b/src/github.ts index 748f931..d6f0baf 100644 --- a/src/github.ts +++ b/src/github.ts @@ -642,9 +642,24 @@ export const waitForPullRequestChecks = async (prNumber: number, options: { time consecutiveNoChecksCount = 0; // ... rest of the while loop logic ... + // Filter for actual failures, excluding cancelled checks + // Cancelled checks are typically from workflows that cancel themselves (e.g., concurrency groups) + // and should not be treated as failures const failingChecks = checkRuns.filter( - (cr) => cr.conclusion && ['failure', 'timed_out', 'cancelled'].includes(cr.conclusion) + (cr) => cr.conclusion && ['failure', 'timed_out'].includes(cr.conclusion) ); + + // Track cancelled checks separately for informational purposes + const cancelledChecks = checkRuns.filter( + (cr) => cr.conclusion === 'cancelled' + ); + + if (cancelledChecks.length > 0) { + logger.info(`PR #${prNumber}: ${cancelledChecks.length} check${cancelledChecks.length > 1 ? 's' : ''} cancelled (not treated as failure):`); + for (const check of cancelledChecks) { + logger.info(` 🚫 ${check.name}: cancelled`); + } + } if (failingChecks.length > 0) { const { owner, repo } = await getRepoDetails(options.cwd); diff --git a/tests/github.test.ts b/tests/github.test.ts index ded640b..e12769d 100644 --- a/tests/github.test.ts +++ b/tests/github.test.ts @@ -604,16 +604,13 @@ describe('GitHub Utilities', () => { }, }); - // Mock check details for each failed check + // Mock check details for each failed check (only failure and timed_out, not cancelled) mockOctokit.checks.get .mockResolvedValueOnce({ data: { output: { title: 'Linting errors found', summary: 'Code style violations detected' } } }) .mockResolvedValueOnce({ data: { output: { title: 'Build timeout', summary: 'Build took too long to complete' } } - }) - .mockResolvedValueOnce({ - data: { output: { title: 'Tests cancelled', summary: 'Test run was cancelled' } } }); try { @@ -623,8 +620,9 @@ describe('GitHub Utilities', () => { const { PullRequestCheckError } = await import('../src/errors'); expect(error).toBeInstanceOf(PullRequestCheckError); expect(error.prNumber).toBe(123); - expect(error.failedChecks).toHaveLength(3); - expect(error.message).toContain('3 checks failed'); + // Only failure and timed_out are treated as failures, cancelled is not + expect(error.failedChecks).toHaveLength(2); + expect(error.message).toContain('2 checks failed'); const instructions = error.getRecoveryInstructions(); expect(instructions).toBeTruthy(); @@ -3958,7 +3956,8 @@ jobs: for (const conclusionType of testConclusionTypes) { mockOctokit.pulls.get.mockResolvedValue({ data: { head: { sha: 'test-sha' } } }); - if (['failure', 'cancelled', 'timed_out'].includes(conclusionType)) { + // Only failure and timed_out should cause failures, cancelled is not treated as failure + if (['failure', 'timed_out'].includes(conclusionType)) { // These should cause failures vi.spyOn(GitHub, 'getRepoDetails').mockResolvedValue({ owner: 'test-owner', repo: 'test-repo' }); mockRun.mockImplementation(async (command: string) => { @@ -3995,7 +3994,7 @@ jobs: expect(error.failedChecks[0].conclusion).toBe(conclusionType); } } else { - // These should pass + // These should pass (including 'cancelled') mockOctokit.checks.listForRef.mockResolvedValue({ data: { check_runs: [{ From 94240a473896cd39d1b0ab67d38004819f05e789 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 15:35:18 -0800 Subject: [PATCH 13/16] Optimize npm-publish workflow to check publish decision before npm install Move the version check and publish decision logic before npm install steps. This saves significant time when the workflow decides not to publish (e.g., production versions pushed to working branch), as it skips the expensive npm install operations entirely. Time savings: ~2-5 minutes per skipped publish workflow run. --- .github/workflows/npm-publish.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index b20767f..cbd33a2 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -22,9 +22,6 @@ jobs: with: node-version: 24 registry-url: https://registry.npmjs.org/ - - run: npm install -g npm@latest - - run: npm install --verbose --foreground-scripts - timeout-minutes: 10 - name: Determine npm tag and publish strategy id: npm-tag run: | @@ -53,6 +50,11 @@ jobs: echo "⚠️ Skipping publish: Production version detected on non-release push" fi fi + - run: npm install -g npm@latest + if: steps.npm-tag.outputs.should_publish == 'true' + - run: npm install --verbose --foreground-scripts + if: steps.npm-tag.outputs.should_publish == 'true' + timeout-minutes: 10 - name: Update package.json version for pre-release if: steps.npm-tag.outputs.should_publish == 'true' && steps.npm-tag.outputs.tag == 'dev' run: | From 15f94f9e0a22bbbce4bbda830255b45081d15e31 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 15:38:44 -0800 Subject: [PATCH 14/16] Switch workflows from ubuntu-latest-8-cores to ubuntu-latest Reduce CI costs by using standard ubuntu-latest runners instead of 8-core runners. The extra cores are not necessary for our build and test workloads. --- .github/workflows/npm-publish.yml | 2 +- .github/workflows/test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index cbd33a2..293cd2f 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -14,7 +14,7 @@ permissions: jobs: publish-npm: - runs-on: ubuntu-latest-8-cores + runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 78652cd..0211ea8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,7 +21,7 @@ permissions: jobs: test: - runs-on: ubuntu-latest-8-cores + runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@v4 From 5907838b628acee8fdd789caf5bb29f3ebd08761 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 15:44:02 -0800 Subject: [PATCH 15/16] chore(package): update package.json metadata, tooling, and version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a369c83..937014a 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "node": ">=24.0.0" }, "dependencies": { - "@grunnverk/git-tools": "^1.5.4", + "@grunnverk/git-tools": "^1.5.14", "@octokit/rest": "^22.0.0" }, "peerDependencies": { From bede581b0604d1436abd814c13f5789162f663a2 Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 31 Jan 2026 15:44:28 -0800 Subject: [PATCH 16/16] chore(package): update package.json metadata, scripts, and dependencies --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 937014a..1436d55 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@grunnverk/github-tools", - "version": "1.5.5-dev.0", + "version": "1.5.5", "description": "GitHub API utilities for automation - PR management, issue tracking, workflow monitoring", "main": "dist/index.js", "type": "module",