Repository navigation
Closed
Labels
iteration/2026-q1On maintainer radar for Q1 2026On maintainer radar for Q1 2026need/maintainers-inputNeeds input from the current maintainer(s)Needs input from the current maintainer(s)need/triageNeeds initial labeling and prioritizationNeeds initial labeling and prioritization
Description
Note
Part of ongoing maintenance of key libraries and services ipshipyard/roadmaps#1 and ipshipyard/roadmaps#6 and ipshipyard/roadmaps#50
Meta
- Release owner: @lidel
- Release reviewer/backup: @gammazero
- Expected RC1 date: April 13th
- 🚢 Expected final release date: April 20th
- Release PR: Release v0.41.0 #11279
- Accompanying PR for improving the release process: n/a
- Internal Staging tests by Shipyard: https://github.com/ipshipyard/waterworks-infra/pull/960
- Changelog: https://github.com/ipfs/kubo/blob/master/docs/changelogs/v0.41.md
Items In Scope
Required
- TBD
- webui with geoip with feat: add IPv6, reduce size, update to GeoLite2-City-CSV_20260220 ipfs-shipyard/ipfs-geoip#120 and feat(peers): updated ipfs-geoip and Peers screen optimizations ipfs-webui#2480 and feat: update webui to v4.12.0 #11221
- fix(provider): purge keystore datastore after reset #11198
- fix(cmd): use restrictive file permissions for exported keys #11246
- fix(rpc): CARv2 import over HTTP API #11253
- refactor: remove deprecated otelhttp.WithMetricAttributesFn #11257
- fix(filestore): respect Provide.Strategy #11243
- ci: update gateway-conformance to v0.13 #11262
- fix(mfs): respect Import config #11273
- fix(fuse): switch to hanwen/go-fuse #11272
- feat: go 1.26.2 #11275
- fix(fuse): accurate
st_blocksandst_blksize#11280
Found during RC1
- fix(defaultServerFilters): strip loopback and non-public #11286
- chore: bump p2p-forge to v0.8.0 #11285
- docs(examples): flaky test fix, avoid bitswap race, use ed25519 #11282
- fix: data race on AddrInfo.Addrs in queryPeer libp2p/go-libp2p-kad-dht#1244 (or fix(routing): prevent QueryEvent publish races libp2p/go-libp2p#3490, whichever ships a patch release first)
Found during RC2
- fix(pins): snapshot index before emitting pins #11290
- fix(dspinner): snapshot index before emitting pins boxo#1140
- fix(bitswap/bsnet): close streams in background boxo#1144
- fix(bitswap): prevent low-pending peer starvation boxo#1143
Nice To Have (Optional)
- feat: add built-in
ipfs updatecommand #11203 - feat(cmd): add 'ipfs cid inspect' command #11241
- fix(bitswap): ignore identity CIDs instead of killing connection boxo#1117
- HTTP Routing V1 provider records contain raw
0.0.0.0listen addresses instead of resolved interface addresses #11213 - TBD
- Unified Provide Interface for Content Routers #10097 ?
- denylist:
?format=cardoes not skip directly blocked CIDs #10361 - MFS bug:
ipfs files rmhanging #10842 - fix(cli): deduplicate dag stat blocks by multihash #11098
- Support consuming https://badbits.dwebops.pub/badbits.deny rainbow#126 (same applies to Kubo)
- fix(gateway): prevent blocked CIDs in CAR responses #10948
- ipfs blockservice is incompatible with sessions ipfs-shipyard/nopfs#34 (re-triage once kubo#10948 is done)
- HTTPSubscriber: check with If-None-Match or If-Modified-Since ipfs-shipyard/nopfs#38
- HTTPSubscriber: detect when list is not append-only ipfs-shipyard/nopfs#39
- fix(gateway): prevent blocked CIDs in CAR responses #10948
- Improved Reprovider.Strategy for entity DAGs (HAMT/UnixFS dirs, big files) #8676
- Move
ipfs routing provideandreprovideintoipfs providenamespace #10865 - feat(client/rpc): add
provide statanddag importsupport #11069 / feat(client/rpc): auto-generate RPC GO client #11210 - [ ]
Metadata
Metadata
Assignees
Labels
iteration/2026-q1On maintainer radar for Q1 2026On maintainer radar for Q1 2026need/maintainers-inputNeeds input from the current maintainer(s)Needs input from the current maintainer(s)need/triageNeeds initial labeling and prioritizationNeeds initial labeling and prioritization
Activity
lidel commentedon Apr 12, 2026
✅ Release Checklist (v0.41.0-rc1)
Release types: RC (Release Candidate)
1. Prepare Release Branch
git fetch origin master releaserelease-vX.Y.Z(base from:masterif Z=0 for new minor/major,releaseif Z>0 for patch)masterbranch and prepare for next release cycle:vX.Y+1.0-dev(./docs/changelogs/vX.Y+1.mdand add link in CHANGELOG.mdrelease-vX.Y.Zbranch and update version.go tovX.Y.Z(-rcN)(release-vX.Y.Z→release(example)masterintorelease-vX.Y.Z:git cherry-pick -x <commit>(example)-xflag records original commit SHA for traceability and cleaner merge historyChangelogandContributorssections inrelease-vX.Y.Zwith./bin/mkreleaselogstdout (do NOT copy stderr)release-vX.Y.Z→release) usingCreate a merge commitSquash and mergenorRebase and merge-- we want the releaser's GPG signature on the merge commitrelease-vX.Y.Zbranch (needed for future patch releases and git history)2. Tag & Publish
Create Tag
If you're making a release for the first time, do pair programming and have the release reviewer verify all commands.
release-vX.Y.Zbranch:git tag -s vX.Y.Z-rcN -m 'Prerelease X.Y.Z-rcN'releasebranch:git tag -s vX.Y.Z -m 'Release X.Y.Z'git show vX.Y.Z(-rcN)git push origin vX.Y.Z(-rcN)git push --tags(pushes all local tags, polluting the repo with noise)Publish Artifacts
git checkout -b release-kubo-X.Y.Z(-rcN).tool-versionsgolang matches Kubo's CIgo-version:(update if needed)./dist.sh add-version kubo vX.Y.Z(-rcN)(usage)dists/kubo/versions, FINAL also updatesdists/kubo/current- example)vX.Y.Z(-rcN)This is a pre-release3. Post-Release
Technical Tasks
release→mastermerge-release-vX.Y.Zfromreleasemastertomerge-release-vX.Y.Zfirst, and resolve conflict inversion.go-devversion frommasterin version.go, discard version fromreleasemerge-release-vX.Y.ZtomasterusingCreate a merge commitSquash and mergenorRebase and merge-- onlyCreate a merge commitpreserves commit history and audit trail of what was merged wherepackage.jsonandpackage-lock.jsonPromotion
Kubo vX.Y.Z(-rcN) is out!, tag:kubo##) in descriptionFinal Steps
go.mod(go get -uas it will upgrade indirect dependencies which may cause problems)make mod_tidygo.modandgo.sumupdateslidel commentedon Apr 14, 2026
Kubo v0.41.0-rc1 is out, pinging early testers:
You're getting this message because you're listed here. Please update this list if you no longer want to be included.
lidel commentedon Apr 20, 2026
✅ Release Checklist (v0.41.0-rc2)
Release types: RC (Release Candidate)
1. Prepare Release Branch
git fetch origin master releaserelease-vX.Y.Z(base from:masterif Z=0 for new minor/major,releaseif Z>0 for patch)masterbranch and prepare for next release cycle:vX.Y+1.0-dev(./docs/changelogs/vX.Y+1.mdand add link in CHANGELOG.mdrelease-vX.Y.Zbranch and update version.go tovX.Y.Z(-rcN)(release-vX.Y.Z→release(example)masterintorelease-vX.Y.Z:git cherry-pick -x <commit>(example)-xflag records original commit SHA for traceability and cleaner merge historyChangelogandContributorssections inrelease-vX.Y.Zwith./bin/mkreleaselogstdout (do NOT copy stderr)release-vX.Y.Z→release) usingCreate a merge commitSquash and mergenorRebase and merge-- we want the releaser's GPG signature on the merge commitrelease-vX.Y.Zbranch (needed for future patch releases and git history)2. Tag & Publish
Create Tag
If you're making a release for the first time, do pair programming and have the release reviewer verify all commands.
release-vX.Y.Zbranch:git tag -s vX.Y.Z-rcN -m 'Prerelease X.Y.Z-rcN'releasebranch:git tag -s vX.Y.Z -m 'Release X.Y.Z'git show vX.Y.Z(-rcN)git push origin vX.Y.Z(-rcN)git push --tags(pushes all local tags, polluting the repo with noise)Publish Artifacts
git checkout -b release-kubo-X.Y.Z(-rcN).tool-versionsgolang matches Kubo's CIgo-version:(update if needed)./dist.sh add-version kubo vX.Y.Z(-rcN)(usage)dists/kubo/versions, FINAL also updatesdists/kubo/current- example)vX.Y.Z(-rcN)This is a pre-release3. Post-Release
Technical Tasks
release→mastermerge-release-vX.Y.Zfromreleasemastertomerge-release-vX.Y.Zfirst, and resolve conflict inversion.go-devversion frommasterin version.go, discard version fromreleasemerge-release-vX.Y.ZtomasterusingCreate a merge commitSquash and mergenorRebase and merge-- onlyCreate a merge commitpreserves commit history and audit trail of what was merged wherepackage.jsonandpackage-lock.jsonPromotion
Kubo vX.Y.Z(-rcN) is out!, tag:kubo##) in descriptionFinal Steps
go.mod(go get -uas it will upgrade indirect dependencies which may cause problems)make mod_tidygo.modandgo.sumupdateslidel commentedon Apr 22, 2026
Kubo v0.41.0-rc2 is out, pinging early testers:
You're getting this message because you're listed here. Please update this list if you no longer want to be included.
lidel commentedon Apr 23, 2026
✅ Release Checklist (v0.41.0)
Release types: FINAL
1. Prepare Release Branch
git fetch origin master releaserelease-vX.Y.Z(base from:masterif Z=0 for new minor/major,releaseif Z>0 for patch)masterbranch and prepare for next release cycle:vX.Y+1.0-dev(./docs/changelogs/vX.Y+1.mdand add link in CHANGELOG.mdrelease-vX.Y.Zbranch and update version.go tovX.Y.Z(-rcN)(release-vX.Y.Z→release(example)masterintorelease-vX.Y.Z:git cherry-pick -x <commit>(example)-xflag records original commit SHA for traceability and cleaner merge historyChangelogandContributorssections inrelease-vX.Y.Zwith./bin/mkreleaselogstdout (do NOT copy stderr)release-vX.Y.Z→release) usingCreate a merge commitSquash and mergenorRebase and merge-- we want the releaser's GPG signature on the merge commitrelease-vX.Y.Zbranch (needed for future patch releases and git history)2. Tag & Publish
Create Tag
If you're making a release for the first time, do pair programming and have the release reviewer verify all commands.
release-vX.Y.Zbranch:git tag -s vX.Y.Z-rcN -m 'Prerelease X.Y.Z-rcN'releasebranch:git tag -s vX.Y.Z -m 'Release X.Y.Z'git show vX.Y.Z(-rcN)git push origin vX.Y.Z(-rcN)git push --tags(pushes all local tags, polluting the repo with noise)Publish Artifacts
git checkout -b release-kubo-X.Y.Z(-rcN).tool-versionsgolang matches Kubo's CIgo-version:(update if needed)./dist.sh add-version kubo vX.Y.Z(-rcN)(usage)dists/kubo/versions, FINAL also updatesdists/kubo/current- example)vX.Y.Z(-rcN)This is a pre-release3. Post-Release
Technical Tasks
release→mastermerge-release-vX.Y.Zfromreleasemastertomerge-release-vX.Y.Zfirst, and resolve conflict inversion.go-devversion frommasterin version.go, discard version fromreleasemerge-release-vX.Y.ZtomasterusingCreate a merge commitSquash and mergenorRebase and merge-- onlyCreate a merge commitpreserves commit history and audit trail of what was merged wherepackage.jsonandpackage-lock.jsonPromotion
Kubo vX.Y.Z(-rcN) is out!, tag:kubo##) in descriptionFinal Steps
go.mod(go get -uas it will upgrade indirect dependencies which may cause problems)make mod_tidygo.modandgo.sumupdateslidel commentedon Apr 24, 2026
🎉 Kubo v0.41.0 is out!
lidel commentedon May 5, 2026
Kubo 0.41 shipped in IPFS Desktop v0.49