Skip to content

Release 0.43 #11298

Closed
Closed

Description

@lidel

Note

Part of remaining Q3 maintenance commitment of key libraries and services the Shipyard team does for IPFS Foundation:

Important

This is the last Kubo release with new features from the Shipyard team. Our IPFS work ends on September 30, 2026. Until then we will ship security and bug fix releases if any are needed. After that date, no one at Shipyard maintains Kubo. If you depend on Kubo, read the announcement and send us your transition questions before the end of September.

Update: there is a community discussion here if you need support beyond Sep 30.

Meta

Items In Scope

Required for v0.43.1

Required for RC2

Required

Nice To Have (Optional)

Activity

  1. self-assigned this
    on Apr 24, 2026
  2. added
    kind/maintenanceWork required to avoid breaking changes or harm to project's status quo
    on Apr 24, 2026
  3. pinned this issue on Apr 24, 2026
  4. lidel commented on Jul 22, 2026

    @lidel
    ContributorAuthor

    ✅ Release Checklist (v0.43.0-rc1)

    Release types: RC (Release Candidate)

    1. Prepare Release Branch

    • Fetch latest changes: git fetch origin master release
    • Create branch release-vX.Y.Z (base from: master if Z=0 for new minor/major, release if Z>0 for patch)
    • RC1 only: Switch to master branch and prepare for next release cycle:
    • Switch to release-vX.Y.Z branch and update version.go to vX.Y.Z(-rcN) (⚠️ double-check Y matches release) (example)
    • Create draft PR: release-vX.Y.Z → release (example)
    • Cherry-pick commits from master into release-vX.Y.Z: git cherry-pick -x <commit> (example)
      • ⚠️ NOTE: -x flag records original commit SHA for traceability and cleaner merge history
    • Verify all CI checks on the PR are passing
    • FINAL only: Replace Changelog and Contributors sections in release-vX.Y.Z with ./bin/mkreleaselog stdout (do NOT copy stderr)
    • FINAL only: Merge PR (release-vX.Y.Z → release) using Create a merge commit
      • ⚠️ do NOT use Squash and merge nor Rebase and merge; we want the releaser's GPG signature on the merge commit
      • ⚠️ do NOT delete the release-vX.Y.Z branch (needed for future patch releases and git history)

    2. Tag & Publish

    Create Tag

    ⚠️ POINT OF NO RETURN: once pushed, tags trigger automatic Docker/NPM publishing that cannot be undone!
    If you're making a release for the first time, do pair programming and have the release reviewer verify all commands.

    • RC: From release-vX.Y.Z branch: git tag -s vX.Y.Z-rcN -m 'Prerelease X.Y.Z-rcN'
    • FINAL: After PR merge, from release branch: git tag -s vX.Y.Z -m 'Release X.Y.Z'
    • ⚠️ Verify tag is signed and correct: git show vX.Y.Z(-rcN)
    • Push tag: git push origin vX.Y.Z(-rcN)
      • ⚠️ do NOT use git push --tags (pushes every local tag, cluttering the repo)
    • STOP: Wait for Docker build to complete before proceeding

    Publish Artifacts

    Parallelism: Docker and dist.ipfs.tech only depend on the pushed tag and can be started in parallel.
    NPM and GitHub Release both depend on dist.ipfs.tech completing first.

    • Docker: Verify docker-image CI passed and image is available on Docker Hub → tags
    • dist.ipfs.tech: Publish to dist.ipfs.tech
      • Check out ipfs/distributions
      • Create branch: git checkout -b release-kubo-X.Y.Z(-rcN)
      • Verify .tool-versions golang matches Kubo's CI go-version: (update if needed)
      • Run: ./dist.sh add-version kubo vX.Y.Z(-rcN) (usage)
      • Create and merge PR (updates dists/kubo/versions, FINAL also updates dists/kubo/current - example)
      • Wait for CI workflow triggered by merge
      • Verify release on dist.ipfs.tech
    • NPM: Publish to NPM
      • Manually dispatch Release to npm workflow if not auto-triggered
      • Verify release on NPM
    • GitHub Release: Publish to GitHub
      • Create release (RC example, FINAL example)
      • Use tag vX.Y.Z(-rcN)
      • Link to release issue
      • RC: Link to changelog, check This is a pre-release
      • FINAL: Copy changelog content (without header), do NOT check pre-release
      • Run sync-release-assets workflow (requires dist.ipfs.tech)
      • Verify assets are attached to the GitHub release

    3. Post-Release

    Technical Tasks

    • FINAL only: Merge release → master
      • Create branch merge-release-vX.Y.Z from release
      • Merge master to merge-release-vX.Y.Z first, and resolve conflict in version.go
        • ⚠️ NOTE: keep the -dev version from master in version.go, discard version from release
      • Create and merge PR from merge-release-vX.Y.Z to master using Create a merge commit
        • ⚠️ do NOT use Squash and merge nor Rebase and merge; only Create a merge commit preserves commit history and the audit trail of what was merged where
    • Update ipshipyard/waterworks-infra
      • Update Kubo staging environment (Running Kubo tests on staging)
        • RC: Test last release against current RC
        • FINAL: Latest release on both boxes
      • FINAL: Update collab cluster boxes to the tagged release
      • FINAL: Update libp2p bootstrappers to the tagged release
    • Update ipfs-desktop
      • Create PR updating kubo version in package.json and package-lock.json
      • Smoke test with IPFS Companion Browser Extension against the PR build
      • FINAL: Merge PR and ship new ipfs-desktop release
    • FINAL only: Update docs.ipfs.tech: run update-on-new-ipfs-tag.yml workflow and merge the PR

    Promotion

    Final Steps

    • FINAL non-PATCH: Create dependency update PR
      • Review direct dependencies from root go.mod (⚠️ do NOT run go get -u as it will upgrade indirect dependencies which may cause problems)
      • Run make mod_tidy
      • Create PR with go.mod and go.sum updates
      • Add PR to next release milestone
    • FINAL non-PATCH: Create next release issue (example)
    • FINAL only: Close release issue
  5. lidel commented on Jul 23, 2026

    @lidel
    ContributorAuthor

    Early testers ping for v0.43.0-rc1 👋

    v0.43.0-rc1 is out: https://github.com/ipfs/kubo/releases/tag/v0.43.0-rc1 (announcement: https://discuss.ipfs.tech/t/kubo-v0-43-0-rc1-is-out/20288). Please give it a spin and report anything you hit.

    You're getting this message because you're listed here. Please update that list if you no longer want to be included.

  6. lidel commented on Jul 29, 2026

    @lidel
    ContributorAuthor

    ✅ Release Checklist (v0.43.0-rc2)

    Release types: RC (Release Candidate)

    1. Prepare Release Branch

    • Fetch latest changes: git fetch origin master release
    • Create branch release-vX.Y.Z (base from: master if Z=0 for new minor/major, release if Z>0 for patch)
    • RC1 only: Switch to master branch and prepare for next release cycle:
    • Switch to release-vX.Y.Z branch and update version.go to vX.Y.Z(-rcN) (⚠️ double-check Y matches release) (example)
    • Create draft PR: release-vX.Y.Z → release (example)
    • Cherry-pick commits from master into release-vX.Y.Z: git cherry-pick -x <commit> (example)
      • ⚠️ NOTE: -x flag records original commit SHA for traceability and cleaner merge history
    • Verify all CI checks on the PR are passing
    • FINAL only: Replace Changelog and Contributors sections in release-vX.Y.Z with ./bin/mkreleaselog stdout (do NOT copy stderr)
    • FINAL only: Merge PR (release-vX.Y.Z → release) using Create a merge commit
      • ⚠️ do NOT use Squash and merge nor Rebase and merge; we want the releaser's GPG signature on the merge commit
      • ⚠️ do NOT delete the release-vX.Y.Z branch (needed for future patch releases and git history)

    2. Tag & Publish

    Create Tag

    ⚠️ POINT OF NO RETURN: once pushed, tags trigger automatic Docker/NPM publishing that cannot be undone!
    If you're making a release for the first time, do pair programming and have the release reviewer verify all commands.

    • RC: From release-vX.Y.Z branch: git tag -s vX.Y.Z-rcN -m 'Prerelease X.Y.Z-rcN'
    • FINAL: After PR merge, from release branch: git tag -s vX.Y.Z -m 'Release X.Y.Z'
    • ⚠️ Verify tag is signed and correct: git show vX.Y.Z(-rcN)
    • Push tag: git push origin vX.Y.Z(-rcN)
      • ⚠️ do NOT use git push --tags (pushes every local tag, cluttering the repo)
    • STOP: Wait for Docker build to complete before proceeding

    Publish Artifacts

    Parallelism: Docker and dist.ipfs.tech only depend on the pushed tag and can be started in parallel.
    NPM and GitHub Release both depend on dist.ipfs.tech completing first.

    • Docker: Verify docker-image CI passed and image is available on Docker Hub → tags
    • dist.ipfs.tech: Publish to dist.ipfs.tech
      • Check out ipfs/distributions
      • Create branch: git checkout -b release-kubo-X.Y.Z(-rcN)
      • Verify .tool-versions golang matches Kubo's CI go-version: (update if needed)
      • Run: ./dist.sh add-version kubo vX.Y.Z(-rcN) (usage)
      • Create and merge PR (updates dists/kubo/versions, FINAL also updates dists/kubo/current - example)
      • Wait for CI workflow triggered by merge
      • Verify release on dist.ipfs.tech
    • NPM: Publish to NPM
      • Manually dispatch Release to npm workflow if not auto-triggered
      • Verify release on NPM
    • GitHub Release: Publish to GitHub
      • Create release (RC example, FINAL example)
      • Use tag vX.Y.Z(-rcN)
      • Link to release issue
      • RC: Link to changelog, check This is a pre-release
      • FINAL: Copy changelog content (without header), do NOT check pre-release
      • Run sync-release-assets workflow (requires dist.ipfs.tech)
      • Verify assets are attached to the GitHub release

    3. Post-Release

    Technical Tasks

    • FINAL only: Merge release → master
      • Create branch merge-release-vX.Y.Z from release
      • Merge master to merge-release-vX.Y.Z first, and resolve conflict in version.go
        • ⚠️ NOTE: keep the -dev version from master in version.go, discard version from release
      • Create and merge PR from merge-release-vX.Y.Z to master using Create a merge commit
        • ⚠️ do NOT use Squash and merge nor Rebase and merge; only Create a merge commit preserves commit history and the audit trail of what was merged where
    • Update ipshipyard/waterworks-infra
      • Update Kubo staging environment (Running Kubo tests on staging)
        • RC: Test last release against current RC
        • FINAL: Latest release on both boxes
      • FINAL: Update collab cluster boxes to the tagged release
      • FINAL: Update libp2p bootstrappers to the tagged release
    • Update ipfs-desktop
      • Create PR updating kubo version in package.json and package-lock.json
      • Smoke test with IPFS Companion Browser Extension against the PR build
      • FINAL: Merge PR and ship new ipfs-desktop release
    • FINAL only: Update docs.ipfs.tech: run update-on-new-ipfs-tag.yml workflow and merge the PR

    Promotion

    Final Steps

    • FINAL non-PATCH: Create dependency update PR
      • Review direct dependencies from root go.mod (⚠️ do NOT run go get -u as it will upgrade indirect dependencies which may cause problems)
      • Run make mod_tidy
      • Create PR with go.mod and go.sum updates
      • Add PR to next release milestone
    • FINAL non-PATCH: Create next release issue (example)
    • FINAL only: Close release issue
  7. lidel commented on Jul 29, 2026

    @lidel
    ContributorAuthor

    Early testers ping for v0.43.0-rc2 👋

    v0.43.0-rc2 is out: https://github.com/ipfs/kubo/releases/tag/v0.43.0-rc2 (announcement: https://discuss.ipfs.tech/t/kubo-v0-43-0-rc2-is-out/20288). Please give it a spin and report anything you hit.

    You're getting this message because you're listed here. Please update that list if you no longer want to be included.

  8. sanderpick commented on Jul 29, 2026

    @sanderpick
  9. added a commit that references this issue on Jul 30, 2026
  10. lidel commented on Aug 3, 2026

    @lidel
    ContributorAuthor

    ✅ Release Checklist (v0.43.0)

    Release typs: FINAL

    1. Prepare Release Branch

    • Fetch latest changes: git fetch origin master release
    • Create branch release-vX.Y.Z (base from: master if Z=0 for new minor/major, release if Z>0 for patch)
    • RC1 only: Switch to master branch and prepare for next release cycle:
    • Switch to release-vX.Y.Z branch and update version.go to vX.Y.Z(-rcN) (⚠️ double-check Y matches release) (example)
    • Create draft PR: release-vX.Y.Z → release (example)
    • Cherry-pick commits from master into release-vX.Y.Z: git cherry-pick -x <commit> (example)
      • ⚠️ NOTE: -x flag records original commit SHA for traceability and cleaner merge history
    • Verify all CI checks on the PR are passing
    • FINAL only: Replace Changelog and Contributors sections in release-vX.Y.Z with ./bin/mkreleaselog stdout (do NOT copy stderr)
    • FINAL only: Merge PR (release-vX.Y.Z → release) using Create a merge commit
      • ⚠️ do NOT use Squash and merge nor Rebase and merge; we want the releaser's GPG signature on the merge commit
      • ⚠️ do NOT delete the release-vX.Y.Z branch (needed for future patch releases and git history)

    2. Tag & Publish

    Create Tag

    ⚠️ POINT OF NO RETURN: once pushed, tags trigger automatic Docker/NPM publishing that cannot be undone!
    If you're making a release for the first time, do pair programming and have the release reviewer verify all commands.

    • RC: From release-vX.Y.Z branch: git tag -s vX.Y.Z-rcN -m 'Prerelease X.Y.Z-rcN'
    • FINAL: After PR merge, from release branch: git tag -s vX.Y.Z -m 'Release X.Y.Z'
    • ⚠️ Verify tag is signed and correct: git show vX.Y.Z(-rcN)
    • Push tag: git push origin vX.Y.Z(-rcN)
      • ⚠️ do NOT use git push --tags (pushes every local tag, cluttering the repo)
    • STOP: Wait for Docker build to complete before proceeding

    Publish Artifacts

    Parallelism: Docker and dist.ipfs.tech only depend on the pushed tag and can be started in parallel.
    NPM and GitHub Release both depend on dist.ipfs.tech completing first.

    • Docker: Verify docker-image CI passed and image is available on Docker Hub → tags
    • dist.ipfs.tech: Publish to dist.ipfs.tech
      • Check out ipfs/distributions
      • Create branch: git checkout -b release-kubo-X.Y.Z(-rcN)
      • Verify .tool-versions golang matches Kubo's CI go-version: (update if needed)
      • Run: ./dist.sh add-version kubo vX.Y.Z(-rcN) (usage)
      • Create and merge PR (updates dists/kubo/versions, FINAL also updates dists/kubo/current - example)
      • Wait for CI workflow triggered by merge
      • Verify release on dist.ipfs.tech
    • NPM: Publish to NPM
      • Manually dispatch Release to npm workflow if not auto-triggered
      • Verify release on NPM
    • GitHub Release: Publish to GitHub
      • Create release (RC example, FINAL example)
      • Use tag vX.Y.Z(-rcN)
      • Link to release issue
      • RC: Link to changelog, check This is a pre-release
      • FINAL: Copy changelog content (without header), do NOT check pre-release
      • Run sync-release-assets workflow (requires dist.ipfs.tech)
      • Verify assets are attached to the GitHub release

    3. Post-Release

    Technical Tasks

    • FINAL only: Merge release → master
      • Create branch merge-release-vX.Y.Z from release
      • Merge master to merge-release-vX.Y.Z first, and resolve conflict in version.go
        • ⚠️ NOTE: keep the -dev version from master in version.go, discard version from release
      • Create and merge PR from merge-release-vX.Y.Z to master using Create a merge commit
        • ⚠️ do NOT use Squash and merge nor Rebase and merge; only Create a merge commit preserves commit history and the audit trail of what was merged where
    • Update ipshipyard/waterworks-infra
      • Update Kubo staging environment (Running Kubo tests on staging)
        • RC: Test last release against current RC
        • FINAL: Latest release on both boxes
      • FINAL: Update collab cluster boxes to the tagged release
      • FINAL: Update libp2p bootstrappers to the tagged release
    • Update ipfs-desktop
      • Create PR updating kubo version in package.json and package-lock.json
      • Smoke test with IPFS Companion Browser Extension against the PR build
      • FINAL: Merge PR and ship new ipfs-desktop release
    • FINAL only: Update docs.ipfs.tech: run update-on-new-ipfs-tag.yml workflow and merge the PR

    Promotion

    Final Steps

    • FINAL non-PATCH: Create dependency update PR
      • Review direct dependencies from root go.mod (⚠️ do NOT run go get -u as it will upgrade indirect dependencies which may cause problems)
      • Run make mod_tidy
      • Create PR with go.mod and go.sum updates
      • Add PR to next release milestone
    • FINAL non-PATCH: Create next release issue (example)
    • FINAL only: Close release issue
  11. lidel commented on Aug 3, 2026

    @lidel
    ContributorAuthor
  12. lidel commented on Aug 3, 2026

    @lidel
    ContributorAuthor
  13. lidel commented on Aug 21, 2026

    @lidel
    ContributorAuthor

    Reopening to track v0.43.1

  14. reopened this on Aug 21, 2026
  15. lidel commented on Sep 10, 2026

    @lidel
    ContributorAuthor

    Status: Kubo v0.43.1 has been waiting on a go-libp2p release for about three weeks.
    To not hold the fixes back further, we ship on Monday, Sep 14, with or without it.

  16. lidel commented on Sep 14, 2026

    @lidel
    ContributorAuthor

    ✅ Release Checklist (v0.43.1)

    Release types: PATCH

    1. Prepare Release Branch

    • Fetch latest changes: git fetch origin master release
    • Create branch release-vX.Y.Z (base from: master if Z=0 for new minor/major, release if Z>0 for patch)
    • RC1 only: Switch to master branch and prepare for next release cycle:
    • Switch to release-vX.Y.Z branch and update version.go to vX.Y.Z(-rcN) (⚠️ double-check Y matches release) (example)
    • Create draft PR: release-vX.Y.Z → release (example)
    • Cherry-pick commits from master into release-vX.Y.Z: git cherry-pick -x <commit> (example)
      • ⚠️ NOTE: -x flag records original commit SHA for traceability and cleaner merge history
    • Verify all CI checks on the PR are passing
    • FINAL only: Replace Changelog and Contributors sections in release-vX.Y.Z with ./bin/mkreleaselog stdout (do NOT copy stderr)
    • FINAL only: Merge PR (release-vX.Y.Z → release) using Create a merge commit
      • ⚠️ do NOT use Squash and merge nor Rebase and merge; we want the releaser's GPG signature on the merge commit
      • ⚠️ do NOT delete the release-vX.Y.Z branch (needed for future patch releases and git history)

    2. Tag & Publish

    Create Tag

    ⚠️ POINT OF NO RETURN: once pushed, tags trigger automatic Docker/NPM publishing that cannot be undone!
    If you're making a release for the first time, do pair programming and have the release reviewer verify all commands.

    • RC: From release-vX.Y.Z branch: git tag -s vX.Y.Z-rcN -m 'Prerelease X.Y.Z-rcN'
    • FINAL: After PR merge, from release branch: git tag -s vX.Y.Z -m 'Release X.Y.Z'
    • ⚠️ Verify tag is signed and correct: git show vX.Y.Z(-rcN)
    • Push tag: git push origin vX.Y.Z(-rcN)
      • ⚠️ do NOT use git push --tags (pushes every local tag, cluttering the repo)
    • STOP: Wait for Docker build to complete before proceeding

    Publish Artifacts

    Parallelism: Docker and dist.ipfs.tech only depend on the pushed tag and can be started in parallel.
    NPM and GitHub Release both depend on dist.ipfs.tech completing first.

    • Docker: Verify docker-image CI passed and image is available on Docker Hub → tags
    • dist.ipfs.tech: Publish to dist.ipfs.tech
      • Check out ipfs/distributions
      • Create branch: git checkout -b release-kubo-X.Y.Z(-rcN)
      • Verify .tool-versions golang matches Kubo's CI go-version: (update if needed)
      • Run: ./dist.sh add-version kubo vX.Y.Z(-rcN) (usage)
      • Create and merge PR (updates dists/kubo/versions, FINAL also updates dists/kubo/current - example)
      • Wait for CI workflow triggered by merge
      • Verify release on dist.ipfs.tech
    • NPM: Publish to NPM
      • Manually dispatch Release to npm workflow if not auto-triggered
      • Verify release on NPM
    • GitHub Release: Publish to GitHub
      • Create release (RC example, FINAL example)
      • Use tag vX.Y.Z(-rcN)
      • Link to release issue
      • RC: Link to changelog, check This is a pre-release
      • FINAL: Copy changelog content (without header), do NOT check pre-release
      • Run sync-release-assets workflow (requires dist.ipfs.tech)
      • Verify assets are attached to the GitHub release

    3. Post-Release

    Technical Tasks

    • FINAL only: Merge release → master
      • Create branch merge-release-vX.Y.Z from release
      • Merge master to merge-release-vX.Y.Z first, and resolve conflict in version.go
        • ⚠️ NOTE: keep the -dev version from master in version.go, discard version from release
      • Create and merge PR from merge-release-vX.Y.Z to master using Create a merge commit
        • ⚠️ do NOT use Squash and merge nor Rebase and merge; only Create a merge commit preserves commit history and the audit trail of what was merged where
    • Update ipshipyard/waterworks-infra
      • Update Kubo staging environment (Running Kubo tests on staging)
        • RC: Test last release against current RC
        • FINAL: Latest release on both boxes
      • FINAL: Update collab cluster boxes to the tagged release
      • FINAL: Update libp2p bootstrappers to the tagged release
    • Update ipfs-desktop
      • Create PR updating kubo version in package.json and package-lock.json
      • Smoke test with IPFS Companion Browser Extension against the PR build
      • FINAL: Merge PR and ship new ipfs-desktop release
    • FINAL only: Update docs.ipfs.tech: run update-on-new-ipfs-tag.yml workflow and merge the PR

    Promotion

    Final Steps

    • FINAL non-PATCH: Create dependency update PR
      • Review direct dependencies from root go.mod (⚠️ do NOT run go get -u as it will upgrade indirect dependencies which may cause problems)
      • Run make mod_tidy
      • Create PR with go.mod and go.sum updates
      • Add PR to next release milestone
    • FINAL non-PATCH: Create next release issue (example)
    • FINAL only: Close release issue
  17. lidel commented on Sep 15, 2026

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

Metadata

Metadata

Assignees

Labels

iteration/2026-q2On maintainer radar for Q2 2026kind/maintenanceWork required to avoid breaking changes or harm to project's status quoneed/maintainers-inputNeeds input from the current maintainer(s)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    ⌂ 换网址