* Fix command stream result handling Do not close the stream prematurely in a deferred function. Also, avoid possible shadowing errors. Closes #9007 * test(cli): test/cli/cid_test.go includes regression tests for https://github.com/ipfs/kubo/issues/9007 and better coverage than the old test/sharness/t0290-cid.sh (identified bug in basemoji) * fix: base256emoji in cid bases --prefix changed the character display logic from ASCII range check to unicode.IsPrint() to properly handle Unicode characters including emojis. * docs: changelog --------- Co-authored-by: Marcin Rataj <lidel@lidel.org>
5.0 KiB
Kubo changelog v0.37
This release was brought to you by the Shipyard team.
v0.37.0
Overview
🔦 Highlights
Clear provide queue when reprovide strategy changes
Your content sharing strategy changes now take effect cleanly, without interference from previously queued items.
When you change Reprovider.Strategy and restart Kubo, the provide queue is automatically cleared. This ensures only content matching your new strategy will be announced to the network.
A new ipfs provide clear command also allows manual queue clearing for debugging purposes.
Note
Upgrading to Kubo 0.37 will automatically clear any preexisting provide queue. The next time
Reprovider.Intervalhits,Reprovider.Strategywill be executed on a clean slate, ensuring consistent behavior with your current configuration.
🧷 Named pins in ipfs add command
Added --pin-name flag to ipfs add for assigning names to pins.
$ ipfs add --pin-name=testname cat.jpg
added bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi cat.jpg
$ ipfs pin ls --names
bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi recursive testname
⚙️ Reprovider.Strategy is now consistently respected
Prior to this version, files added, blocks received etc. were "provided" to the network (announced on the DHT) regardless of the "reproviding strategy" setting. For example:
- Strategy set to "pinned" +
ipfs add --pin=false→ file was provided regardless - Strategy set to "roots" +
ipfs pin add→ all blocks (not only the root) were provided
Only the periodic "reproviding" action (runs every 22h by default) respected the strategy.
This was inefficient as content that should not be provided was getting provided once. Now all operations respect Reprovider.Strategy. If set to "roots", no blocks other than pin roots will be provided regardless of what is fetched, added etc.
Note
Behavior change: The
--offlineflag no longer affects providing behavior. Bothipfs addandipfs --offline addnow provide blocks according to the reproviding strategy when run against an online daemon (previously--offline adddid not provide). Sinceipfs addhas been nearly as fast as offline mode since v0.35,--offlineis rarely needed. To run truly offline operations, useipfs --offline daemon.
Removed unnecessary dependencies
Kubo has been cleaned up by removing unnecessary dependencies and packages:
- Removed
thirdparty/assert(replaced bygithub.com/stretchr/testify/require) - Removed
thirdparty/dir(replaced bymisc/fsutil) - Removed
thirdparty/notifier(unused) - Removed
goprocessdependency (replaced with native Gocontextpatterns)
These changes reduce the dependency footprint while improving code maintainability and following Go best practices.
Improved ipfs cid
Certain ipfs cid commands can now be run without a daemon or repository, and return correct exit code 1 on error, making it easier to perform CID conversion in scripts and CI/CD pipelines.
While at it, we also fixed unicode support in ipfs cid bases --prefix to correctly show base256emoji 🚀 :-)
Deprecated ipfs stats reprovide
The ipfs stats reprovide command has moved to ipfs provide stat. This was done to organize provider commands in one location.
Note
ipfs stats reprovidestill works, but is marked as deprecated and will be removed in a future release.
📦️ Important dependency updates
- update
go-libp2pto v0.43.0 (incl. v0.42.1) - update
p2p-forge/clientto v0.6.1 - update
boxoto v0.33.1 - update
ipfs-webuito v4.8.0