• v0.7.0 6fab30337a

    eric released this 2026-11-02 14:00:17 +00:00 | 0 commits to main since this release

    ReleaseKit v0.7.0

    Summary

    ReleaseKit improves source-publication integrity, cancellation, credential-safe
    diagnostics, partial-result reporting, and temporary-file cleanup. It also bounds
    retained Go failure diagnostics and remote attachment comparison work while
    preserving the existing public facades and configuration formats.

    Publication and Git operations

    • Exact tag pushes disable submodule recursion, correcting inherited
      push.recurseSubmodules=only settings that could report success without
      publishing the release tag.
    • ReleaseKit-owned Git inspection and preparation use original objects when
      replacement refs exist. Committed module identity, release notes, validation
      inputs, and build source eligibility use that consistent view. Ordinary dirty
      builds remain supported, with their source eligibility reported separately.
    • A verified local tag object remains available in PublicationResult.TagObject
      when later inspection fails. Errors identify a possibly retained local ref
      when its object ID could not be established. Failed verification stops before
      a push.
    • HTTP(S) userinfo is masked in owned Git diagnostics and CLI output, including
      literal apostrophes in credentials and failed CI checkout preparation. Native
      Git authentication, exact endpoint comparisons, and the raw captured
      PublicationResult.Endpoint value retain their existing behavior.
    • Child environment overlays preserve the working-directory-derived PWD on
      POSIX systems. Native Git hooks now receive the expected directory environment
      when ReleaseKit is invoked from another checkout or module subdirectory.

    Cancellation and diagnostic retention

    • Buffered subprocess output has bounded I/O teardown after cancellation or
      child exit, including when descendants retain inherited output descriptors.
      Piped Git-reader cancellation closes owned pipes and joins child cleanup.
      Cancellation remains recognizable through errors.Is; ordinary execution
      failures preserve their underlying causes.
    • A queued blob read rechecks cancellation after acquiring the reader mutex,
      preserving a healthy batch session for later reads.
    • Status-only Go commands and dependency preparation retain a 1 MiB diagnostic
      tail. Failed commands identify omitted earlier output. Existing streaming
      output continues to be forwarded in full, and commands requiring returned
      output keep their complete capture.

    Builds and hosted delivery

    • Completed build artifacts are reported only after hashing succeeds. A hashing
      failure identifies the affected output and preserves earlier completed
      artifacts and their digests.
    • Temporary allocation and cleanup failures retain their paths and underlying
      causes, including candidate builds, native version checks, delivery builds,
      tag-message files, and build receipts.
    • A managed-build cleanup failure after confirmed hosted delivery returns an
      error alongside DeliveryComplete and the confirmed asset observations. The
      CLI reports completed remote work and the local cleanup failure, returning
      operational status 1.
    • Gitea attachment downloads follow at most ten redirects, retaining cycle
      detection and per-origin authorization handling. Limit exhaustion is
      unverifiable content.
    • Remote attachment comparison reads at most the locally verified expected size
      plus one byte. Shorter or longer content conflicts; equal-length content still
      requires the expected digest. Read, close, and cancellation errors remain
      inspection failures, with existing attempted-write reconciliation preserved.

    Shared Git observations, validation sequencing, artifact declaration matching,
    and CLI workflows were consolidated internally. Consumer-facing types continue
    to belong to the root releasekit and runtime buildinfo facades.

    Compatibility and upgrade guidance

    The module identifier remains go.maximumdirect.net/releasekit, and the Go
    consumer minimum remains 1.26.0. Existing v0.6.0 API calls, profile fields, and
    build receipt formats remain supported. This minor release changes operational
    behavior through the diagnostic and redirect budgets and cleanup-error reporting
    described above.

    When adopting v0.7.0:

    1. Update library and CLI dependencies to v0.7.0 using the existing import paths
      and profiles.
    2. Handle a delivery error together with DeliveryResult.State. For
      DeliveryComplete, address the reported local cleanup path; the confirmed
      hosted delivery is already complete. Continue to resolve partial, conflicting,
      and unknown outcomes through their existing recovery guidance.
    3. Retain candidate validation's streamed Output when complete test diagnostics
      are needed. Status-only failure text now contains the retained tail and an
      omission notice when applicable.
    4. When using Git replacement refs, expect release evidence to be evaluated
      against original committed objects. A build of dirty or replacement-derived
      working content can succeed while remaining ineligible for binary delivery.
    5. Inspect the reported local tag ref after a tag-creation or verification
      failure, including when TagObject is empty. Continue to treat the raw
      PublicationResult.Endpoint as sensitive when handling it in application
      output or logs.

    See the publication guide,
    build guide,
    delivery guide,
    CLI contract,
    and Gitea integration guide
    for current behavior. Source publication and hosted delivery retain their
    separate outcomes under the maintainer procedure.

    COPYRIGHT |
    LICENSE |
    ATTRIBUTION

    Downloads