Skip to content

Releases: grunnverk/github-tools

1.5.10

27 Mar 19:32
b62462a

Choose a tag to compare

Release 1.5.10

Summary

  • This release updates package metadata and publishes version 1.5.10.
  • The only changes between main and HEAD are to package.json (version bump and metadata/dev-dependency/script adjustments). There are no source-code or runtime behavior changes in this release.

What changed (high level)

  • package.json updated:
    • version set to 1.5.10
    • project metadata and tooling configuration reviewed/updated (scripts, dependencies, devDependencies).
    • npm scripts include build, test, lint, clean, precommit, prepublishOnly (unchanged in intent; package now reflects the reviewed configuration).
    • Node engine constraint set to ">=24.0.0".
    • Dependencies include @grunnverk/git-tools ^1.5.23 and @octokit/rest ^22.0.0.
    • winston is declared as an optional peer dependency (peerDependencies + peerDependenciesMeta).

Why this release matters

  • Keeps published package metadata and dependency constraints up to date so builds, tests and consumers use the intended toolchain and dependency versions.
  • Bumping the package version enables downstream projects and package registries to pick up the updated metadata.

Problems solved / capabilities added

  • This release does not introduce new runtime features nor fix functional bugs — its purpose is to publish the updated package metadata and version.
  • It ensures the package manifest reflects the current tooling and dependency expectations (useful for reproducible builds and CI).

Impact on users and developers

  • Users: No API or behavioral changes to the library. If you consume the package, updating to 1.5.10 will only change package metadata (no code-level changes).
  • Developers/maintainers:
    • Ensure your environment meets the engines field (Node >= 24.0.0) when building or testing locally.
    • If you depend on optional peer dependency winston, the package marks it optional; nothing breaks if winston is absent, but behavior may differ where logging is used.
    • No changes are required in source code; run npm install to pick up any updated dependencies/dev-dependencies if you publish or work on the repo.

Breaking changes

  • None detected. The release contains only package.json adjustments. Manual review did not find any API or runtime breaking changes.

Notes for release / CI

  • Build, lint and test scripts remain present and are invoked by prepublishOnly and precommit hooks as defined in package.json.
  • If your CI enforces Node version checks, verify it allows Node >=24.

Technical details (what I inspected)

  • Scope: 3 commits, 1 file changed (package.json), 2 insertions and 2 deletions overall.
  • Commit activity consists of chore commits that bump package versions (including intermediate dev bumps) and finalize to 1.5.10.
  • No production code files were modified in this release.

If you need a more detailed diff of package.json fields compared to v1.5.9, I can produce a line-by-line comparison on request.

Version 1.5.9

27 Mar 03:02
bfe70f5

Choose a tag to compare

This release, version 1.5.9, features updates primarily to the package.json file. The following outlines the key changes, the problems addressed, and their impact on users and developers.

Main Changes

  • Updated the version number in package.json to 1.5.9.
  • Modified dependencies, ensuring that package management and build processes remain efficient.
  • The project continues to use the latest versions of its dependencies, which includes @grunnverk/git-tools and @octokit/rest.

Problems Addressed

This release improves upon the dependency management system, ensuring compatibility with the latest versions while maintaining the operational capabilities of the package. By updating internal scripts and dependencies, it ensures smoother automation processes when interacting with GitHub's API.

Impact on Users and Developers

  • Users will benefit from the latest features and fixes included in the updated dependencies. This is particularly important for those utilizing GitHub automation tools, as it enhances performance and reliability.
  • Developers are encouraged to review changes and keep their environments updated to take advantage of improvements and new capabilities.

Breaking Changes

No breaking changes were detected in this release. However, it’s recommended that users test their implementations to ensure compatibility, especially after dependency updates.

Conclusion

Version 1.5.9 improves the management of various GitHub API utilities, helping users and developers work with increased efficiency and reliability. Users should monitor for changes in dependency behavior in future releases, given that the updated components may introduce new features or changes in functionality.

Release 1.5.8 — more robust GitHub integration, workflow detection, and PR/check handling

03 Mar 20:49
e42e717

Choose a tag to compare

Summary (what's the main story)

This release (1.5.8) significantly improves the GitHub integration surface: better repository detection, more resilient PR creation and check-waiting logic, richer handling of workflows triggered by PRs/releases, improved release note handling, and milestone management utilities. The net effect is fewer false negatives when checking for CI/checks, clearer failure/recovery diagnostics when PRs or releases fail to create or have failing checks, and better non-interactive behavior for automations.


Highlights — what changed and why it matters

  • Repository detection via environment context

    • New behavior: getRepoDetails will use environment variables KODRDRIV_CONTEXT_REPOSITORY_OWNER and KODRDRIV_CONTEXT_REPOSITORY_NAME if present before falling back to parsing the git origin URL.
    • Why it matters: makes the library work reliably in parallel/agented execution environments where repo info is provided externally (avoids brittle git remote parsing failures).
  • Injectible prompt function for non-interactive environments

    • You can now call setPromptFunction(...) to provide a custom prompt handler; the module defaults to a non-interactive prompt that logs a warning and returns true.
    • Why it matters: automated callers (CI/agents) can inject their own confirmation logic or a stub to control flows that would otherwise prompt the user.
  • More resilient PR creation

    • createPullRequest truncates titles intelligently to conform to GitHub's 256-char limit.
    • Improved handling of 422 errors: on failure, the code will attempt to find an existing PR and return it (with useful logged recovery instructions) rather than immediately failing.
    • Why it matters: avoids duplicate PRs created in parallel runs and provides actionable errors/instructions when creation fails.
  • Improved check-run deduplication and completion detection

    • waitForPullRequestChecks now:
      • Deduplicates check runs by name, retaining the most recent run using timestamp/id heuristics (isNewerCheckRun/getCheckRunTimestamp).
      • Treats a check run with a non-empty conclusion as terminal via isTerminalCheckRun (so incorrectly reported "in_progress" status with a conclusion is still treated as done).
      • Tracks and logs cancelled checks separately (informational) and only treats genuine failure conclusions as failing.
    • Why it matters: reduces flakiness where stale or overlapping check runs could block merges indefinitely; more accurate detection of when checks have truly completed.
  • Better handling when no checks or workflows are present

    • If no check runs are found repeatedly, the code now:
      • Checks whether Actions workflows are configured (hasWorkflowsConfigured).
      • If workflows exist, checks whether any runs are associated with the PR (hasWorkflowRunsForPR) and explains the possible mismatch (e.g., workflows triggered on push but not pull_request).
      • Prompts (or uses injected prompt behavior) to allow proceeding in non-interactive scenarios.
    • Why it matters: avoids infinite waits and gives clearer guidance when a repository has no checks or misconfigured triggers.
  • Release-related improvements

    • createRelease unescapes common escaped characters (e.g., "
      ") in title/body so release notes render properly in GitHub when those strings were JSON-serialized earlier.
    • New helpers to find and wait for workflows triggered by a release (getWorkflowRunsTriggeredByRelease, waitForReleaseWorkflows, getWorkflowsTriggeredByRelease).
    • Why it matters: makes automated releases more robust and helps operators know whether release-triggered workflows actually ran and succeeded.
  • Milestone and issue utilities

    • New/expanded functions: findMilestoneByTitle, createMilestone, closeMilestone, getOpenIssuesForMilestone, moveIssueToMilestone, moveOpenIssuesToNewMilestone, ensureMilestoneForVersion, closeMilestoneForVersion, getClosedIssuesForMilestone, getIssueDetails, getMilestoneIssuesForRelease, getRecentClosedIssuesForCommit.
    • Notable behavior: getRecentClosedIssuesForCommit strips "-dev.*" suffixes from a provided currentVersion when attempting to locate the matching milestone (so "1.5.8-dev.0" will match milestone "release/1.5.8").
    • Why it matters: automates milestone creation/migration and helps generate release notes / commit context from issues reliably.
  • Logging and diagnostic improvements

    • Many functions now log more detailed debug/info messages (workflow names, match decisions, counts), and recovery instructions are printed line-by-line for readability.
    • Why it matters: makes troubleshooting easier when automations run in CI or in developer machines.

Files changed (scope)

  • src/github.ts — large feature and behavior additions and refactors (~65 lines of behavioral changes, many new helper functions).
  • tests/github.test.ts — updated/expanded tests to exercise the new behaviors.
  • package.json — small version/metadata update.

Total delta: 3 commits, 3 files, ~109 insertions and 7 deletions.


Impact on users and developers

  • For users / integrators:

    • Expect more reliable behavior when automating PR creation, waiting for checks, and performing releases.
    • If you rely on interactive prompts, behavior is unchanged, but you can now inject custom prompt behavior for non-interactive runs.
    • Release notes and titles will render correctly even if they came through JSON-escaped strings.
  • For developers / maintainers:

    • New helper functions and code paths (deduplication, timestamp-based selection) are added — review tests to see intended behaviors.
    • If you provide repo details via environment in orchestration layers, the module will now use KODRDRIV_CONTEXT_REPOSITORY_OWNER and KODRDRIV_CONTEXT_REPOSITORY_NAME if set.
    • The logging is more verbose at debug/info levels; this will help during troubleshooting but may increase log volume if debug is enabled.

Breaking changes and important considerations

  • Breaking changes: none that change the public function signatures in a way that requires callers to update parameter lists. The get_breaking_changes scan for this release surfaced internal refactors around how check runs are inspected and normalized:

    • Internally, check run logic moved from raw checkRuns => normalizedCheckRuns and introduced helper functions:
      • isTerminalCheckRun(checkRun)
      • getCheckRunTimestamp(checkRun)
      • isNewerCheckRun(candidate, current)
    • Implication: behavior for determining whether a check run is "complete" or which run is "newer" has been tightened. This can change the observable behavior of waitForPullRequestChecks (e.g., deduplicating runs by name and preferring the most recent by timestamp/id). This is intentional and should reduce cases where stale check runs block progress. No API change for callers.
  • Other noteworthy considerations:

    • The module now returns true by default for prompts in non-interactive mode (existing default behavior retained, but now injectable). If you depend on the old console-only warning behavior, you can inject a different prompt function.
    • getRepoDetails throwing behavior remains: if git origin parsing fails (and the context env vars are not present), the function will still throw. However, the new environment variable support gives an alternative for environments where git metadata is unavailable or unsuitable.
    • Because check deduplication is by name and timestamp, repositories or workflows that intentionally reuse names with out-of-order timestamps may have different effective resolution — this is a correctness improvement in most CI setups but worth validating in unusual setups.

Examples / practical notes

  • To avoid interactive prompts in automation, inject a prompt that returns false to block proceeding without checks, or true to allow automatic continuation:

    • setPromptFunction(async (msg) => true);
  • If you run into "no checks" situations, enable debug logging to see the new diagnostic messages explaining whether:

    • no workflows are configured,
    • workflows exist but don't trigger on pull_request,
    • workflows run on branch but not associated with PR checks.
  • When generating release notes programmatically, you can pass strings containing escaped newlines; createRelease will unescape them so GitHub renders line breaks.


Tests

Tests were updated/added (tests/github.test.ts) to cover new behavior around check deduplication, workflow detection, and PR/release flows. Review test changes if you need to modify or extend behavior.


If you maintain integrations or automation that rely on subtle details of check-run ordering or repository detection, please validate those flows after upgrading to 1.5.8.

1.5.7

12 Feb 04:41
e43dcbd

Choose a tag to compare

Summary

This release increments the package to version 1.5.7 and contains package metadata and build/dev tooling refreshes. No functional code or API surface changes were made — the update is limited to package.json adjustments (version, scripts, dependency metadata).

What changed

  • package.json
    • Version bumped to 1.5.7.
    • Package metadata and scripts were refreshed (build/test/lint/prepublish scripts present/validated).
    • Dependency section and devDependencies updated/confirmed (notable entries: @grunnverk/git-tools, @octokit/rest, TypeScript, Vite, Vitest, eslint toolchain, winston listed as a peer dependency).
    • Node engine declared as ">=24.0.0".
    • Files published include dist and guide.

There were 3 commits total in this release range; all are chore/package type changes focused on package.json.

Why this matters

  • Versioning: The package version was advanced to 1.5.7 so downstream consumers and package registries will pick up the latest package metadata.
  • Tooling consistency: The scripts and devDependencies in package.json ensure the repository’s build, lint, and test workflows are defined and up to date for developers.
  • Dependency clarity: Declared runtime and peer dependencies (including an optional winston peer) and the Node engine requirement make environment setup and compatibility easier to reason about.

Impact on users and developers

  • Consumers: No code-level or API changes — upgrading to 1.5.7 should not change runtime behavior. This release is safe to adopt for bugfix/metadata alignment purposes.
  • Developers/contributors: Build, lint, and test scripts are available and expected to run against the declared devDependencies (TypeScript, Vite, Vitest, ESLint, etc.). Node >= 24.0.0 is required for development and runtime.

Breaking changes

  • None detected. A scan for breaking changes found no obvious API or runtime breaking modifications. The only changes are package metadata and tooling-related. Manual review is always recommended if you have custom automation that depends on exact package.json fields, but no breaking API changes were made.

Upgrade notes

  • No code changes required. To update, bump your dependency to 1.5.7 as usual.
  • Ensure your environment meets the declared engine: Node >= 24.0.0.
  • winston is declared as an optional peer dependency — if you rely on logging integration with this package, ensure your project provides a compatible winston version (peer: ^3.17.0) or accept that it is optional.

Additional notes

  • Release follows existing versioning pattern (previous tag v1.5.6).
  • Commits in this release are categorized as chore/package and focus on package configuration and developer tooling.

1.5.6

02 Feb 16:38
ade773c

Choose a tag to compare

Summary — what this release does

This release updates package metadata, developer tooling, and dependency constraints. It is a small release (one file changed: package.json) that prepares the package for continued development and publishing under version 1.5.6.

Contributors: Tim O'Brien

Why this matters

  • Keeps dev tooling and build scripts up to date so contributors have a consistent, modern workflow.
  • Updates runtime and dependency constraints to reflect tested/expected environments.
  • No functional code changes were made to library source files, so runtime behavior is unchanged (see “Breaking changes” below).

Key changes

All changes are in package.json.

  • Version

    • Bumped package version to 1.5.6.
  • Node engine requirement

    • engines.node set to ">=24.0.0"
    • Impact: development, CI, and any environment that runs build/test must use Node 24 or newer.
  • Dependencies

    • @grunnverk/git-tools: ^1.5.15
    • @octokit/rest: ^22.0.0
    • These are runtime dependencies used by the package (no source/API changes in this release).
  • Peer dependencies

    • winston remains a peer dependency (optional). peerDependenciesMeta marks it optional.
  • DevDependencies and build/test tooling (selected updates)

    • Typescript ^5.9.2
    • Vite ^7.1.2
    • Vitest ^4.0.13
    • eslint and related ESLint tooling updated
    • esbuild, @swc/core and vite-plugin-* entries present/updated
    • These updates modernize the local development and CI toolchain.
  • Scripts

    • build: runs lint, TypeScript check (noEmit) and vite build
    • test: runs vitest with coverage
    • lint and lint:fix remain in place
    • precommit and prepublishOnly enforce clean, lint, build, and test steps
    • These scripts emphasize verifying lint/build/test before publishing.

What problems this release solves

  • Keeps the repository aligned with recent toolchain versions and dependency constraints to avoid long-lived drift and future upgrade pain.
  • Ensures the package is published with the correct metadata and validated by lint/build/test via the updated scripts.

Impact on users and developers

  • Developers:

    • Must run Node 24+ locally and in CI to build or test the project.
    • May need to update local tooling or global binaries (Node, any editor integrations) to match new devDependency versions for consistent dev experience.
    • Precommit and prepublishOnly scripts run lint/build/test; CI should satisfy these checks or adjust as needed.
  • Library consumers:

    • No changes to runtime API or code in this release — consumers should not see behavioral changes.
    • Peer dependency (winston) still optional; no change in expectations there.

Breaking changes

  • No functional or API breaking changes were detected in source code.
  • The only potential break is the raised Node engine requirement (>=24.0.0). That is an environment-level breaking change: systems using Node <24 will be unable to run build/test or may get an engine violation from package managers.

Upgrade notes / migration steps

  • Ensure Node 24+ is installed in developer machines and CI.
  • Run:
    • npm ci (or npm install) to pick up the updated dependency versions.
    • npm run lint, npm run build, npm run test locally to confirm environment is configured correctly.
  • If your CI pins older Node versions, update the CI configuration to Node 24 or later.

Files changed

  • package.json — version bump and metadata/dev tooling/dependency updates (only file changed).

If you need a more detailed list of updated devDependency versions or help updating CI/dev environments to Node 24, refer to package.json or contact the maintainer listed in package.json (Tim O'Brien).

v1.5.5

31 Jan 23:46
0d5d6aa

Choose a tag to compare

Summary

  • This release (1.5.5) focuses on expanding GitHub integration and automation helpers, improving reliability and diagnostics when creating or merging pull requests and when waiting for CI/workflow runs. It also tightens error handling and adds a few developer-facing extension points (e.g., injectable prompt function). Several CI/workflow and package metadata files were updated.

Why it matters

  • The library is now better at detecting repository context (including environments where repo info is provided externally), more robust when creating PRs (handles parallel races and GitHub 422 errors with helpful recovery instructions), and safer when waiting on checks or release-triggered workflows (more diagnostic logging and sensible fallback behavior).
  • Users automating releases or merges will see clearer error messages and fewer false negatives when workflows are missing or not configured for pull_request events.
  • Developers can inject a custom prompt function for interactive/non-interactive behavior in tests and automation.

Notable changes (user + developer visible)

  • New injectable prompt behavior
    • Added a default non-interactive prompt (defaulting to YES) and exported setPromptFunction(fn) to allow tests or callers to supply a custom PromptFunction.
    • Impact: automation that relies on interactive confirmation can now be controlled programmatically. Default behavior will automatically proceed when running non-interactively (this affects flows that time out waiting for checks or workflows).
  • Repository detection improvements
    • getRepoDetails now first reads repository owner/name from environment variables (KODRDRIV_CONTEXT_REPOSITORY_OWNER and KODRDRIV_CONTEXT_REPOSITORY_NAME) when present — useful for parallel/agentic execution contexts.
    • Fallback git remote URL parsing improved to handle SSH aliases and multiple host formats; clearer error messages when parsing fails.
  • Pull request creation robustness
    • PR title is now truncated to GitHub's 256-character limit; truncation preserves word boundaries where reasonable and logs the change.
    • createPullRequest includes a pre-flight reuse check and stronger recovery for 422 errors: if a PR was created concurrently after the initial check, the library now tries to detect and reuse it instead of failing.
    • Errors from failed PR creation produce enhanced error objects with detailed recovery instructions (via errors.PullRequestCreationError).
  • Waiting for checks / workflow runs
    • waitForPullRequestChecks improved to:
      • Retry and, after repeated "no checks" responses, inspect repository workflow configuration to determine if checks will ever appear.
      • Distinguish cancelled checks (informational) from actual failures.
      • When workflows exist but are not triggered for the PR, provide clear guidance and prompt the user (or proceed in non-interactive mode).
      • Gather additional details for failing checks (check run output, summary, links) and provide a PullRequestCheckError with recovery steps.
    • New functions for release-triggered workflows:
      • getWorkflowRunsTriggeredByRelease, waitForReleaseWorkflows and getWorkflowsTriggeredByRelease that locate and wait for workflows started by a given release tag. These functions include logic to filter runs by release creation time, commit, and event pattern, and to retry/timeout with prompts when nothing appears.
    • These additions improve reliability when automating release verification and when CI is expected to run on releases.
  • Workflow analysis helpers
    • Added isTriggeredByPullRequest and isTriggeredByRelease (regex-based YAML inspection) so the library can infer whether a workflow is likely to trigger on pull_request or release events without depending on a YAML parser.
    • These are used by workflow-checking functions to produce warnings and better user prompts.
  • Release creation and notes handling
    • createRelease unescapes escaped newline/tab sequences in title and body (handles cases where notes were JSON-serialized and contain literal
      sequences).
    • New functions that build release notes from closed issues and milestones:
      • ensureMilestoneForVersion, closeMilestoneForVersion, getMilestoneIssuesForRelease and helpers that fetch and assemble closed issue details for release notes (includes token-budgeted content collection to avoid huge payloads).
  • Issue & milestone helpers
    • New and enhanced functions to find/create/close milestones, move issues between milestones, and collect issue details (with simple token estimation). These are defensive and intentionally continue on failure (log warnings) rather than crashing the whole flow.
  • Error handling & logging
    • More diagnostic logging throughout GitHub flows — better debug messages for repo parsing, workflow analysis, and run filtering to help operators understand why checks or workflows are not appearing.
    • When GitHub API calls fail in expected ways (e.g., permission issues), the library tries to avoid spurious noisy logs and provides clearer hints in warnings/errors.

Other repository changes

  • Tests and test configuration updated (tests/github.test.ts, vitest.config.ts).
  • CI/workflow files updated (.github/workflows/**) — adjustments to test and publish workflows.
  • package.json metadata and release/publish workflow updates; dependabot config was changed/removed.

Files changed (high level)

  • src/github.ts — many functional additions and refactors described above (majority of changes).
  • tests/github.test.ts — updated tests to reflect new behaviors and injection points.
  • vitest.config.ts — test runner config updates.
  • .github/workflows/* — CI/test/publish workflow tweaks.
  • package.json — metadata/version-related adjustments.

Breaking changes and important considerations

  • No explicit breaking API changes were detected by automated scanning. Most changes are additive.
  • Be aware of the following behavioral changes that may affect automation:
    • Default prompt behavior: If your automation previously depended on an interactive prompt blocking until the user responded, the new default prompt function will "default to YES" in non-interactive contexts. If you need different behavior, inject a prompt function with setPromptFunction.
    • PR title truncation: Titles longer than 256 characters will be truncated (GitHub limit). The library now truncates and logs this; code that relied on full-length titles being accepted should be prepared for truncation.
    • getRepoDetails environment variables: If your runtime environment sets KODRDRIV_CONTEXT_REPOSITORY_OWNER / _NAME, those values will now be preferred over git remote detection. This is intended, but if you have workflows that set these values incorrectly it could change behavior.
    • createRelease unescapes escaped newlines/tabs in title/body: If you previously relied on literal backslash sequences in release bodies, they will now be unescaped.
  • GITHUB_TOKEN is still required for Octokit calls; functions will throw if token is not set. Improved error messages make the cause clearer.

Migration & usage notes

  • If you use the library in fully automated CI (non-interactive), no additional configuration is required — the library will proceed in non-interactive mode and will prompt-less choose to continue when appropriate. If you want to control prompts (accept/deny), call setPromptFunction at startup to provide deterministic behavior for your environment.
  • If you need strict blocking behavior on timeouts or when no workflows are present, pass skipUserConfirmation: false and provide a prompt function that throws or returns false to prevent automated proceeding.
  • The new milestone and release-note helpers are optional: they are used by higher-level release workflows but can be ignored if you prefer to manage milestones/releases separately.

Developer notes

  • The prompt injection (setPromptFunction) makes testing flows that require user confirmation simple and deterministic — tests can inject a fake prompt to exercise both proceed/abort flows.
  • Workflow parsing uses lightweight regex heuristics (no YAML dependency). This is intentionally tolerant; if you need exact YAML semantics consider supplying your own checks or pre-parsing workflow content before calling these helpers.
  • Error classes for PR creation and check failures were introduced/used; callers that previously caught generic Errors may find more structured information by catching PullRequestCreationError or PullRequestCheckError (see errors module for API).

Release metadata

  • Version: 1.5.5
  • Commits: 16
  • Files changed: 7 (notable: src/github.ts, tests/github.test.ts, CI workflows)
  • Insertions: ~73, Deletions: ~64

If you maintain downstream automation, review the prompt/default-behavior and PR title constraints and update any scripts that relied on previous (less-diagnostic) behaviors. Overall, this release improves robustness, observability, and gives maintainers better control over interactive confirmations and release workflow detection.

1.5.4 — Build config hardening + dependency/metadata updates

29 Jan 02:02
3e835ac

Choose a tag to compare

Summary

Version 1.5.4 is a small maintenance release focused on:

  • Updating package metadata and dependency versions
  • Hardening the Vite build configuration when Git metadata isn’t available

Changes

Build / tooling

  • Vite config is more resilient when Git info can’t be read
    • Git tag detection (git tag --points-at HEAD ...) is now guarded so builds don’t fail if tags can’t be resolved (e.g., shallow clones, CI environments, or repos without tags).
    • Existing behavior of “skip git info if not a git repo” remains.

Dependencies and package metadata

  • Dependency updates
    • @grunnverk/git-tools is set to ^1.5.4
    • @octokit/rest is set to ^22.0.0
  • Dev dependency refresh (eslint/typescript/vite/vitest and related tooling), and package metadata/script constraint adjustments.

Breaking changes / important notes

  • Node.js requirement: engines.node is >= 24.0.0.
    • If you run this package on Node 20/22 (or older), you’ll need to upgrade Node to use 1.5.4.

Impact

  • Users: No functional API changes expected; improved reliability of builds/releases in CI environments where Git tags may not be present.
  • Developers/maintainers: Dependency baseline moves forward (including Node 24+), and the build pipeline is less likely to fail due to missing Git tag metadata.

1.5.1: Fix GitHub release notes newline rendering + package metadata/dependency updates

28 Jan 02:06
a4ebd2c

Choose a tag to compare

Summary

Version 1.5.1 is a small patch release focused on improving the reliability of GitHub release creation (specifically how release notes render on GitHub), along with minor package metadata/dependency updates.

Fixed: Properly render release notes when content contains escaped newlines

When creating a GitHub release via createRelease(tagName, title, notes), release notes (and sometimes titles) can end up containing escaped newline sequences (literal , , ) if they were produced by AI tooling or passed through JSON serialization layers.

Change: createRelease now normalizes these sequences before sending them to the GitHub API:

  • Converts \ → actual newline
  • Converts \ → carriage return
  • Converts \ → tab

Why it matters: GitHub will now display release notes with proper line breaks instead of showing raw text, which makes generated release notes readable without manual cleanup.

Package updates

  • Set package version to 1.5.1.
  • Updated package metadata/dependency constraints (notably aligning the @grunnverk/git-tools dependency to ^1.5.1).

Breaking changes

No breaking changes were detected in this release.

1.5.0 – Workflow configuration checks + injectable prompt for non-interactive automation

22 Jan 17:31
74403dc

Choose a tag to compare

Main changes

Workflow configuration introspection (new)

This release adds checkWorkflowConfiguration(), which inspects a repository’s GitHub Actions workflows and reports whether they appear to trigger on pull requests to a given target branch.

Why this matters:

  • Helps automation detect “why am I not seeing PR checks?” situations earlier (e.g., workflows exist but don’t run on pull_request, or branch filters don’t match).
  • Provides structured output you can surface in CLI/CI logs (workflow count, which workflows would trigger, and an optional warning).

Injectable confirmation prompt (new)

Interactive decisions in GitHub operations can now be controlled via an injectable prompt function:

  • setPromptFunction(fn) allows consumers (CLIs, CI jobs, UIs) to control confirmation behavior.
  • A default prompt implementation is provided for non-interactive environments (defaults to YES).

Why this matters:

  • Enables fully non-interactive release/merge automation without brittle stdin hacks.
  • Lets tools provide consistent UX (e.g., your own CLI prompt library) while reusing @grunnverk/github-tools logic.

Other updates

Package/dependency and build metadata refresh

  • Package metadata and build configuration were updated as part of the release prep.
  • Dependency versions were refreshed (notably aligning with the @grunnverk/git-tools 1.5.x line).

Documentation updates

  • README and the agent guide were refreshed to reflect current capabilities and usage patterns.

Breaking changes

No breaking changes were detected in the mainHEAD range. If you rely on documentation snippets as copy/paste examples, review them against the exported API in src/index.ts to ensure you’re using the currently exported function names/signatures.

@eldrforge/github-tools 1.0.0 — Packaging metadata updates and dependency alignment

21 Jan 06:05
a538674

Choose a tag to compare

Main story

This release finalizes v1.0.0 packaging metadata and aligns dependencies. There are no functional code changes in this range (only package.json and README.md were modified).

What changed

Package metadata & dependency updates

  • Set the published package version to 1.0.0.
  • Updated dependency constraints:
    • @eldrforge/git-tools^1.0.0
    • @octokit/rest^22.0.0
  • Refreshed/standardized package configuration in package.json (metadata/scripts remain oriented around Vite/TS build + Vitest testing).

Impact

  • Consumers will resolve newer major versions of @octokit/rest and @eldrforge/git-tools when installing, which may change transitive dependency trees and runtime behavior depending on how those upstream packages behave.

Documentation

  • Minor README updates.
  • The README includes a trailing TEST line (likely unintentional) near the end of the file.

Breaking changes

No breaking changes were automatically detected in this diff. However, dependency major-version alignment (notably @octokit/rest@^22) can be breaking for downstream users if your project relies on older Octokit APIs or types. If you compile against Octokit types directly, verify compatibility after upgrading.

Scope / stats

  • 4 commits
  • 2 files changed (package.json, README.md)
  • 5 insertions, 3 deletions