Releases: ipfs/kubo
v0.23.0
- 💬 Discuss
- 🔦 Highlights
- Mplex deprecation
- Gateway: meaningful CAR responses on Not Found errors
- Gateway: added
Gateway.DisableHTMLErrors
configuration option - Binary characters in file names: no longer works with old clients and new Kubo servers
- Self-hosting
/routing/v1
endpoint for delegated routing needs - Trustless Gateway Over Libp2p Experiment
- Removal of
/quic
(Draft 29) support - Better Caching of multiaddresses for providers in DHT servers
- Fixed FUSE multiblock structures
- 📝 Changelog
- 👨👩👧👦 Contributors
Overview
🔦 Highlights
Mplex deprecation
Mplex is being deprecated, this is because it is unreliable and
randomly drop streams when sending data too fast.
New pieces of code rely on backpressure, that means the stream will dynamicaly
slow down the sending rate if data is getting backed up.
Backpressure is provided by Yamux and QUIC.
In case you need compatibility with older implementations that do not ship with
Yamux (like default's JS-IPFS) you can turned it back ON in the config with:
$ ipfs config --json Swarm.Transports.Multiplexers.Mplex 200
We will completely remove Mplex in v0.24 as it makes protocols very bad to implement,
if you are in this situation you need to add yamux support to your other implementation.
Gateway: meaningful CAR responses on Not Found errors
When requesting a CAR from the gateway, the root of the CAR might no longer be
meaningful. By default, the CAR root will be the last resolvable segment of the
path. However, in situations where the path cannot be resolved, such as when
the path does not exist, a CAR will be sent with a root of bafkqaaa
(empty CID).
This CAR will contain all blocks necessary to validate that the path does not
exist without having to trust the gateway.
Gateway: added Gateway.DisableHTMLErrors
configuration option
The Gateway.DisableHTMLErrors
configuration option forces errors to be
displayed in browsers as plain text (text/plain
) rather than HTML error
pages. It's especially beneficial for whitelabel or middleware deployments that
wish to avoid IPFS branding and links on error pages in browsers.
Binary characters in file names: no longer works with old clients and new Kubo servers
In this version, we updated Kubo to support Go 1.20+. In Go 1.20, a regression
regarding multipart headers was introduced.
This only affects ipfs add
when a file name has binary characters in its name.
As a consequence, we had to update the encoding of the file name headers. This is
the compatibility table:
New Client | Old Client | |
---|---|---|
New Server | ✅ | 🟡* |
Old Server | ✅ | ✅ |
*Old clients can only send Unicode file paths to the server.
Self-hosting /routing/v1
endpoint for delegated routing needs
The Routing
system configured in Kubo can be now exposed on the gateway port as a standard
HTTP Routing V1 API endpoint. This allows
self-hosting and experimentation with custom delegated routers. This is disabled by default,
but can be enabled by setting Gateway.ExposeRoutingAPI
to true
.
Trustless Gateway Over Libp2p Experiment
In this update, we've introduced an experimental opt-in feature allowing users to
serve a subset of Trustless Gateway responses,
such as blocks and CARs, over libp2p. This enhancement leverages the ongoing
/http/1.1
specification work in libp2p
to make it easier to support HTTP semantics over libp2p streams.
This development means that if users wish to utilize the Trustless Gateway API
for data transport, they can now do so even in scenarios where standard HTTP
might be problematic, such as when the endpoint is behind a firewall or when
attempting to serve data to a browser without a CA certificate.
See HTTP Gateway over Libp2p for details about this experiment.
Removal of /quic
(Draft 29) support
Kubo no longer supports QUIC Draft 29. This means that older nodes aren't able to connect
to newer nodes using QUIC Draft 29. However, they are still able to connect through any other
transport that both nodes talk (such as QUIC RFC 9000, or TCP). QUIC Draft 29 was a preliminary implementation of QUIC before
the official RFC 9000 was published, and it has now been dropped by go-libp2p
and therefore Kubo.
In Kubo 0.18, we shipped a migration
to have listeners for both /quic
(Draft 29) and /quic-v1
(RFC 9000). Similarly, in this
version we are shipping a migration to remove the current /quic
addresses, maintaining
the /quic-v1
addresses only. For more background information, check issue #9496.
Better Caching of multiaddresses for providers in DHT servers
Thanks to probelab.io's RFM17.1 DHT servers will now cache the addresses of content hosts for the lifetime of the provider record.
This means clients who resolve content from theses servers get a responses which include both peer id and multiaddresses.
In most cases this enables skipping a second query which resolves the peer id to multiaddresses for stable enough peers.
This will improve content fetching lantency in the network overtime as servers updates.
Fixed FUSE multiblock structures
ls
ing directories and reading dag-pb files on a fuse volume have been fixed. #9044
Thx a lot @bmwiedemann for debugging this issue.
📝 Changelog
Full Changelog
- github.com/ipfs/kubo:
- fix: align systemd unit file with default IPFS installation path (#10163) (ipfs/kubo#10163)
- docs: capitalize headers for consistency
- Merge commit '695bf66674931a138862b6fa2cb0b16dc2f6ddd8' into release-v0.23.0
- chore: update version
- changelog: generalize fuse 9044's entry
- changelog: update fuse 9044's entry
- Update go-unixfsnode to 1.8.0 to fix FUSE
- docs(readme): header improvements (#10144) (ipfs/kubo#10144)
- fix(docker): allow nofuse builds for MacOS (#10135) (ipfs/kubo#10135)
- docs: fix typos
- docs: s/ipfs dht/amino dht/
- changelog: mention probelab RFM17.1 dht improvement
- tests: remove sharness ping tests
- perf: make bootstrap saves O(N)
- chore: update go-libp2p-kad-dht
- chore: webui v4.1.1 (#10120) (ipfs/kubo#10120)
- core/bootstrap: fix panic without backup bootstrap peer functions (#10029) (ipfs/kubo#10029)
- feat: add Gateway.DisableHTMLErrors option (#10137) (ipfs/kubo#10137)
- fix(migrations): use dweb.link (#10133) (ipfs/kubo#10133)
- docs: add changelog info for QUIC Draft 29 (#10132) (ipfs/kubo#10132)
- feat: add gateway to http over libp2p (ipfs/kubo#10108)
- migration: update 14-to-15 to v1.0.1
- chore: update to build with Go 1.21
- refactor: stop using go-libp2p deprecated peer.ID.Pretty
- docs(readonly): fix typo
- docs(changelog): link to relevant IPIP
- fix: hamt traversal in ipld-explorer ([email protected]) (#10025) (ipfs/kubo#10025)
- refactor: if statement (#10105) (ipfs/kubo#10105)
- chore: bump repo version to 15
- docs: remove link to deleted #accelerated-dht-client
- feat(gateway): expose /routing/v1 server (opt-in) (#9877) (ipfs/kubo#9877)
- improve error in fuse node failures
- chore: update boxo, go-libp2p, and internalize mplex (#10095) (ipfs/kubo#10095)
- dockerfile: reorder copy order for better layer caching
- refactor: using error is instead of == (#10093) (ipfs/kubo#10093)
- fix: use %-encoded headers in most compatible way
- fix: open /dev/null with read write permissions
- chore: bump to go 1.20
- docs(readme): new logo and header
- docker: change to releases that follow debian's updates
- docker: bump debian version to bookworm
- chore: restore exec perms for t0116-gateway-cache.sh and fixtures (#10085) (ipfs/kubo#10085)
- fix(gw): useful IPIP-402 CAR...
v0.23.0-rc1
Changelog: docs/changelogs/v0.23.md
v0.22.0
Release issue #9911
v0.22.0
Overview
🔦 Highlights
Gateway: support for order=
and dups=
parameters (IPIP-412)
The updated boxo/gateway
library introduces support for ordered CAR responses through the inclusion of optional CAR content type parameters: order=dfs
and dups=y|n
from IPIP-412.
Previously, Kubo already provided CARs in DFS order without duplicate blocks. With the implementation of IPIP-412, this behavior is now explicitly defined rather than implied.
In the absence of dups
or order
in Accept
request reader, the default CAR response will have the Content-Type: application/vnd.ipld.car; version=1; order=dfs; dups=n
and the same blocks as Kubo 0.21.
Kubo 0.22 still only supports DFS block ordering (order=dfs
). However, it is now possible to request a DFS CAR stream with duplicate blocks by opting in via Accept: application/vnd.ipld.car; order=dfs; dups=y
. This opt-in feature can be beneficial for memory-constrained clients and IoT devices, as it allows for streaming large DAGs without the need to store all previously encountered blocks in memory.
ipfs name publish
now supports V2 only IPNS records
When publishing an IPNS record, you are now able to create v2 only records by passing --v1compat=false
. By default, we still create V1+V2 records, such that there is the highest chance of backwards compatibility. The goal is to move to V2 only in the future.
For more details, see IPIP-428 and the updated IPNS Record Verification logic.
IPNS name resolution has been fixed
IPNS name resolution had a regression where if IPNS over PubSub was enabled, but the name was not also available via IPNS over PubSub it would take 1 minute to for the lookup to complete (if the record was not yet cached).
This has been fixed and as before will give the best record from either the DHT subsystem or IPNS over PubSub, whichever comes back first.
For details see #9927 and #10020.
go-libp2p v0.29.0 update with smart dialing
We updated from go-libp2p v0.27.7 to v0.29.0. This release includes smart dialing, which is a prioritization algorithm that will try to rank addresses and protocols rather than attempting all options in parallel. Anecdotally, we have observed Kubo nodes make 30% less dials with no to low latency impact.
This includes a breaking change to ipfs id
and some of the ipfs swarm
commands. We no longer report ProtocolVersion
. This used to be hardcoded as ipfs/0.1.0
and sent to other peers but was not providing any distinguishing value. See libp2p/go-libp2p#2294 for more information.
📝 Changelog
Full Changelog
- github.com/ipfs/kubo:
- chore: update version
- fix(relay): apply user provider options
- libp2p: stop reporting ProtocolVersion
- chore: update go-libp2p to v0.29.0
- chore: update go-libp2p to v0.28.1
- fix: mark all routers DoNotWaitForSearchValue (#10020) (ipfs/kubo#10020)
- feat(gateway): support for ipip-412 parameters
- docs(commands): explain that swarm connect can reuse existing connections or known addresses (#10015) (ipfs/kubo#10015)
- docs: add Brave to RELEASE_ISSUE_TEMPLATE.md (#10012) (ipfs/kubo#10012)
- feat: [email protected]
- (ipfs/kubo#10008)
- docs: skip check before prepare branch in RELEASE_ISSUE_TEMPLATE.md
- docs: update RELEASE_ISSUE_TEMPLATE.md with a warning about npm publish
- docs: update refs to kuboreleaser in RELEASE_ISSUE_TEMPLATE.md
- docs: Gateway.HTTPHeaders
- refactor: replace boxo/ipld/car by ipld/go-car
- chore: bump to boxo master
- fix: correctly handle migration of configs
- fix(gateway): include CORS on subdomain redirects (#9994) (ipfs/kubo#9994)
- fix: docker repository initialization race condition
- feat(ipns): records with V2-only signatures (#9932) (ipfs/kubo#9932)
- cmds/dag/import: pin roots by default (#9966) (ipfs/kubo#9966)
- docs: fix 0.21 changelog
- feat!: dag import - don't pin roots by default (#9926) (ipfs/kubo#9926)
- fix(cmd): useful errors in dag import (#9945) (ipfs/kubo#9945)
- feat: [email protected] (#9940) (ipfs/kubo#9940)
- chore(docs): typo http→https
- fix: more stable prometheus test (#9944) (ipfs/kubo#9944)
- (ipfs/kubo#9937)
- github.com/ipfs/boxo (v0.10.2-0.20230629143123-2d3edc552442 -> v0.11.0):
- Release v0.11.0 (ipfs/boxo#417)
- (ipfs/boxo#401)
- github.com/ipfs/go-merkledag (v0.10.0 -> v0.11.0):
- chore: update v0.11.0 (#106) (ipfs/go-merkledag#106)
- update merkeldag to use the explicit decoder registry (#104) (ipfs/go-merkledag#104)
- Update status in README.md and added CODEOWNERS (#101) (ipfs/go-merkledag#101)
- github.com/ipld/go-car/v2 (v2.9.1-0.20230325062757-fff0e4397a3d -> v2.10.2-0.20230622090957-499d0c909d33):
- feat: add inverse and version to filter cmd (ipld/go-car#457)
- v0.6.1 bump
- chore: update usage of merkledag by go-car (#437) (ipld/go-car#437)
- feat(cmd/car): add '--no-wrap' option to 'create' command (ipld/go-car#432)
- fix: remove github.com/ipfs/go-ipfs-blockstore dependency
- feat: expose index for StorageCar
- perf: reduce NewCarReader allocations
- fix(deps): update deps for cmd (use master go-car and go-car/v2 for now)
- fix: new error strings from go-cid
- fix: tests should match stderr for verbose output
- fix: reading from stdin should broadcast EOF to block loaders
- refactor insertion index to be publicly accessible (ipld/go-car#408)
- github.com/libp2p/go-libp2p (v0.27.7 -> v0.29.0):
- Release version v0.29.0 (#2431) (libp2p/go-libp2p#2431)
- webtransport: reject listening on a multiaddr with a certhash (#2426) (libp2p/go-libp2p#2426)
- swarm: deprecate libp2p.DialRanker option (#2430) (libp2p/go-libp2p#2430)
- quic: Update to quic-go v0.36.2 (#2424) (libp2p/go-libp2p#2424)
- autonat: fix typo in WithSchedule option comment (#2425) (libp2p/go-libp2p#2425)
- identify: filter nat64 well-known prefix ipv6 addresses (#2392) (libp2p/go-libp2p#2392)
- update go-multiaddr to v0.10.1, use Unique function from there (#2407) (libp2p/go-libp2p#2407)
- swarm: enable smart dialing by default (#2420) (libp2p/go-libp2p#2420)
- transport integration tests: make TestMoreStreamsThanOurLimits less flaky (#2410) (libp2p/go-libp2p#2410)
- holepunch: skip racy TestDirectDialWorks (#2419) (libp2p/go-libp2p#2419)
- swarm: change relay dial delay to 500ms (#2421) (libp2p/go-libp2p#2421)
- identify: disable racy TestLargeIdentifyMessage with race detector (#2401) (libp2p/go-libp2p#2401)
- swarm: make black hole detection configurable (#2403) (libp2p/go-libp2p#2403)
- net/mock: support ConnectionGater in MockNet (#2297) (libp2p/go-libp2p#2297)
- docs: Add a Github workflow for checking dead links (#2406) (libp2p/go-libp2p#2406)
- rcmgr: enable metrics by default (#2389) (#2409) (libp2p/go-libp2p#2409)
- chore: remove outdated info in README and link to libp2p-implementers slack (#2405) (libp2p/go-libp2p#2405)
- metrics: deduplicate code in examples (#2404) ([libp2p/g...
v0.21.1
v0.22.0-rc1
See the related issue: #9911
Changelog: docs/changelogs/v0.22.md
v0.21.0
- 💬 Discuss
- 🔦 Highlights
- Saving previously seen nodes for later bootstrapping
- Gateway:
DeserializedResponses
config flag client/rpc
migration ofgo-ipfs-http-client
- Gateway: DAG-CBOR/-JSON previews and improved error pages
- Gateway: subdomain redirects are now
text/html
- Gateway: support for partial CAR export parameters (IPIP-402)
ipfs dag stat
deduping statistics- Accelerated DHT Client is no longer experimental
- 📝 Changelog
- 👨👩👧👦 Contributors
Overview
🔦 Highlights
Saving previously seen nodes for later bootstrapping
Kubo now stores a subset of connected peers as backup bootstrap nodes (kubo#8856).
These nodes are used in addition to the explicitly defined bootstrappers in the
Bootstrap
configuration.
This enhancement improves the resiliency of the system, as it eliminates the
necessity of relying solely on the default bootstrappers operated by Protocol
Labs for joining the public IPFS swarm. Previously, this level of robustness
was only available in LAN contexts with mDNS peer discovery
enabled.
With this update, the same level of robustness is applied to peers that lack
mDNS peers and solely rely on the public DHT.
Gateway: DeserializedResponses
config flag
This release introduces the
Gateway.DeserializedResponses
configuration flag.
With this flag, one can explicitly configure whether the gateway responds to
deserialized requests or not. By default, this flag is enabled.
Disabling deserialized responses allows the
gateway to operate
as a Trustless Gateway
limited to three verifiable
response types:
application/vnd.ipld.raw,
application/vnd.ipld.car,
and application/vnd.ipfs.ipns-record.
With deserialized responses disabled, the Kubo gateway can serve as a block
backend for other software (like
bifrost-gateway,
IPFS in Chromium
etc) without the usual risks associated with hosting deserialized data behind
third-party CIDs.
client/rpc
migration of go-ipfs-http-client
The go-ipfs-http-client
RPC has
been migrated into kubo/client/rpc
.
With this change the two will be kept in sync, in some previous releases we
updated the CoreAPI with new Kubo features but forgot to port thoses to the
http-client, making it impossible to use them together with the same coreapi
version.
For smooth transition v0.7.0
of go-ipfs-http-client
provides updated stubs
for Kubo v0.21
.
Gateway: DAG-CBOR/-JSON previews and improved error pages
In this release, we improved the HTML templates of our HTTP gateway:
- You can now preview the contents of a DAG-CBOR and DAG-JSON document from your browser, as well as follow any IPLD Links (CBOR Tag 42) contained within them.
- The HTML directory listings now contain updated, higher-definition icons.
- On gateway error, instead of a plain text error message, web browsers will now get a friendly HTML response with more details regarding the problem.
HTML responses are returned when request's Accept
header includes text/html
.
DAG-CBOR Preview | Error Page |
---|---|
Gateway: subdomain redirects are now text/html
HTTP 301 redirects from path to subdomain
no longer include the target data in the body.
The data is returned only once, with the final HTTP 200 returned from the
target subdomain.
The HTTP 301 body now includes human-readable text/html
message
for clients that do not follow redirects by default:
$ curl "https://subdomain-gw.example.net/ipfs/${cid}/"
<a href="https://${cid}.ipfs.subdomain-gw.example.net/">Moved Permanently</a>.
Rationale can be found in kubo#9913.
Gateway: support for partial CAR export parameters (IPIP-402)
The gateway now supports optional CAR export parameters
dag-scope=block|entity|all
and entity-bytes=from:to
as specified in
IPIP-402.
Batch block retrieval minimizes round trips, catering to the requirements of
light HTTP clients for directory enumeration, range requests, and content path
resolution.
ipfs dag stat
deduping statistics
ipfs dat stat
now accept multiple CIDs and will dump advanced statistics
on the number of shared blocks and size of each CID.
$ ipfs dag stat --progress=false QmfXuRxzyVy5H2LssLgtXrKCrNvDY8UBvMp2aoW8LS8AYA QmfZDyu2UFfUhL4VdHaw7Hofivmn5D4DdQj38Lwo86RsnB
CID Blocks Size
QmfXuRxzyVy5H2LssLgtXrKCrNvDY8UBvMp2aoW8LS8AYA 3 2151
QmfZDyu2UFfUhL4VdHaw7Hofivmn5D4DdQj38Lwo86RsnB 4 3223
Summary
Total Size: 3326
Unique Blocks: 5
Shared Size: 2048
Ratio: 1.615755
ipfs --enc=json dag stat
's keys are a non breaking change, new keys have been added but old keys with previous sementics are still here.
Accelerated DHT Client is no longer experimental
The accelerated DHT client is now
the main recommended solution for users who are hosting lots of data.
By trading some upfront DHT caching and increased memory usage,
one gets provider throughput improvements up to 6 millions times bigger dataset.
See the docs for more info.
The Experimental.AcceleratedDHTClient
flag moved to [Routing.AcceleratedDHTClient](docs/config.md#routingaccelerateddhtclient)
.
A config migration has been added to handle this automatically.
A new tracker estimates the providing speed and warns users if they
should be using AcceleratedDHTClient because they are falling behind.
📝 Changelog
Full Changelog
- github.com/ipfs/kubo:
- fix: correctly handle migration of configs
- fix(gateway): include CORS on subdomain redirects (#9994) (ipfs/kubo#9994)
- fix: docker repository initialization race condition
- chore: update version
- (ipfs/kubo#9981)
- (ipfs/kubo#9960)
- (ipfs/kubo#9936)
- github.com/ipfs/boxo (v0.8.1 -> v0.10.2-0.20230629143123-2d3edc552442):
- chore: version 0.10.2
- fix(gateway): include CORS on subdomain redirects (#395) (ipfs/boxo#395)
- fix(gateway): ensure 'X-Ipfs-Root' header is valid (#337) (ipfs/boxo#337)
- docs: prepare changelog for next release [ci skip]
- chore: version 0.10.1 (#359) (ipfs/boxo#359)
- fix(gateway): allow CAR trustless requests with path
- blockstore: replace go.uber.org/atomic with sync/atomic
- fix(gateway): remove handleUnsupportedHeaders after go-ipfs 0.13 (#350) (ipfs/boxo#350)
- docs: update RELEASE.md based on 0.9 release (#343) (ipfs/boxo#343)
- chore: v0.10.0 (#345) (ipfs/boxo#345)
- docs(changelog): car params from ipip-402
- docs(changelog): add gateway deserialized responses (#341) (ipfs/boxo#341)
- feat(gateway): implement IPIP-402 extensions for gateway CAR requests (#303) (ipfs/boxo#303)
- chore: release v0.9.0
- changelog: update for 0.8.1 and 0.9.0
- provider: second round of reprovider refactor
- feat(unixfs): change protobuf package name to unixfs.v1.pb to prevent collisions with go-unixfs. Also regenerate protobufs with latest gogo
- feat(ipld/merkledag): remove use of go-ipld-format global registry
- feat(ipld/merkledag): updated to use its own global go-ipld-legacy registry instead of a shared global registry
- chore: do not rely on deprecated logger
- changelog: add changelog for async pin listing (#336) (ipfs/boxo#336)
- pinner: change the interface to have async pin listing
- provider: revert through...
v0.21.0-rc3
Changelog: docs/changelogs/v0.21.md
v0.21.0-rc2
Changelog: docs/changelogs/v0.21.md
v0.21.0-rc1
Changelog: docs/changelogs/v0.21.md
v0.20.0
Overview
🔦 Highlights
Boxo under the covers
We have consolidated many IPFS repos into Boxo, and this release switches Kubo over to use Boxo instead of those repos, resulting in the removal of 27 dependencies from Kubo:
- github.com/ipfs/go-bitswap
- github.com/ipfs/go-ipfs-files
- github.com/ipfs/tar-utils
- gihtub.com/ipfs/go-block-format
- github.com/ipfs/interface-go-ipfs-core
- github.com/ipfs/go-unixfs
- github.com/ipfs/go-pinning-service-http-client
- github.com/ipfs/go-path
- github.com/ipfs/go-namesys
- github.com/ipfs/go-mfs
- github.com/ipfs/go-ipfs-provider
- github.com/ipfs/go-ipfs-pinner
- github.com/ipfs/go-ipfs-keystore
- github.com/ipfs/go-filestore
- github.com/ipfs/go-ipns
- github.com/ipfs/go-blockservice
- github.com/ipfs/go-ipfs-chunker
- github.com/ipfs/go-fetcher
- github.com/ipfs/go-ipfs-blockstore
- github.com/ipfs/go-ipfs-posinfo
- github.com/ipfs/go-ipfs-util
- github.com/ipfs/go-ipfs-ds-help
- github.com/ipfs/go-verifcid
- github.com/ipfs/go-ipfs-exchange-offline
- github.com/ipfs/go-ipfs-routing
- github.com/ipfs/go-ipfs-exchange-interface
- github.com/ipfs/go-libipfs
Note: if you consume these in your own code, we recommend migrating to Boxo. To ease this process, there's a tool which will help migrate your code to Boxo.
You can learn more about the Boxo 0.8 release that Kubo now depends and the general effort to get Boxo to be a stable foundation here.
HTTP Gateway
Switch to boxo/gateway
library
Gateway code was extracted and refactored into a standalone library that now
lives in boxo/gateway. This
enabled us to clean up some legacy code and remove dependency on Kubo
internals.
The GO API is still being refined, but now operates on higher level abstraction
defined by gateway.IPFSBackend
interface. It is now possible to embed
gateway functionality without the rest of Kubo.
See the car
and proxy
examples, or more advanced
bifrost-gateway.
Improved testing
We are also in the progress of moving away from gateway testing being based on
Kubo sharness tests, and are working on
ipfs/gateway-conformance test
suite that is vendor agnostic and can be run against arbitrary HTTP endpoint to
test specific subset of HTTP Gateways specifications.
Trace Context support
We've introduced initial support for traceparent
header from W3C's Trace
Context spec.
If traceparent
header is
present in the gateway request, one can use its trace-id
part to inspect
trace spans via selected exporter such as Jaeger UI
(docs,
demo).
To learn more, see tracing docs.
Removed legacy features
- Some Kubo-specific prometheus metrics are no longer available.
- An up-to-date list of gateway metrics can be found in boxo/gateway/metrics.go.
- The legacy opt-in
Gateway.Writable
is no longer available as of Kubo 0.20.- We are working on developing a modern replacement.
To support our efforts, please leave a comment describing your use case in
ipfs/specs#375.
- We are working on developing a modern replacement.
--empty-repo
is now the default
When creating a repository with ipfs init
, --empty-repo=true
is now the default. This means
that your repository will be empty by default instead of containing the introduction files.
You can read more about the rationale behind this decision on the tracking issue.
Reminder: ipfs pubsub
commands and matching HTTP endpoints are deprecated and will be removed
ipfs pubsub
commands and all /api/v0/pubsub/
RPC endpoints and will be removed in the next release. For more information and rational see #9717.
📝 Changelog
Full Changelog
- github.com/ipfs/kubo:
- fix: deadlock on retrieving WebTransport addresses (#9857) (ipfs/kubo#9857)
- docs(config): remove mentions of relay v1 (#9860) (ipfs/kubo#9860)
- Merge branch 'master' into merge-release-v0.19.2
- docs: add changelog for v0.19.2
- feat: [email protected] (#9835) (ipfs/kubo#9835)
- fix: use default HTTP routers when FullRT DHT client is used (#9841) (ipfs/kubo#9841)
- chore: update version
- docs: add
ipfs pubsub
deprecation reminder to changelog (#9827) (ipfs/kubo#9827) - docs: preparing 0.20 changelog for release (#9799) (ipfs/kubo#9799)
- feat: boxo tracing and traceparent support (#9811) (ipfs/kubo#9811)
- chore: update version
- chore: update version
- update go-libp2p to v0.27.0
- docs: add optimistic provide feature description
- feat: add experimental optimistic provide
- fix(ci): speed up docker build (#9800) (ipfs/kubo#9800)
- feat(tracing): use OTEL_PROPAGATORS as per OTel spec (#9801) (ipfs/kubo#9801)
- docs: fix jaeger command (#9797) (ipfs/kubo#9797)
- Merge Release: v0.19.1 (#9794) (ipfs/kubo#9794)
- chore: upgrade OpenTelemetry dependencies (#9736) (ipfs/kubo#9736)
- test: fix flaky content routing over HTTP test (#9772) (ipfs/kubo#9772)
- feat: allow injecting custom path resolvers (#9750) (ipfs/kubo#9750)
- feat: add changelog entry for router timeouts for v0.19.1 (#9784) (ipfs/kubo#9784)
- feat(gw): new metrics and HTTP range support (#9786) (ipfs/kubo#9786)
- feat!: make --empty-repo default (#9758) (ipfs/kubo#9758)
- fix: remove timeout on default DHT operations (#9783) (ipfs/kubo#9783)
- refactor: switch gateway code to new API from go-libipfs (#9681) (ipfs/kubo#9681)
- test: port remote pinning tests to Go (#9720) (ipfs/kubo#9720)
- feat: add identify option to swarm peers command
- test: port routing DHT tests to Go (#9709) (ipfs/kubo#9709)
- test: fix autoclient flakiness (#9769) (ipfs/kubo#9769)
- test: skip flaky pubsub test (#9770) (ipfs/kubo#9770)
- chore: migrate go-libipfs to boxo
- feat: add tracing to the commands client
- feat: add client-side metrics for routing-v1 client
- test: increase max wait time for peering assertion
- feat: remove writable gateway (#9743) (ipfs/kubo#9743)
- Process Improvement: v0.18.0 (ipfs/kubo#9484)
- fix: deadlock while racing
ipfs dag import
andipfs repo gc
- feat: improve dag/import (#9721) (ipfs/kubo#9721)
- ci: remove circleci config (ipfs/kubo#9687)
- docs: use fx.Decorate instead of fx.Replace in examples (#9725) (ipfs/kubo#9725)
- Create Changelog: v0.20 (ipfs/kubo#9742)
- Merge Release: v0.19.0 (ipfs/kubo#9741)
- feat(gateway): invalid CID returns 400 Bad Request (#9726) (ipfs/kubo#9726)
- fix: remove outdated changelog part (ipfs/kubo#9739)
- docs: 0.19 changelog (ipfs/kubo#9707)
- fix: canonicalize user defined headers
- fix: apply API.HTTPHeaders to /webui redirect
- feat: add heap allocs to 'ipfs diag profile'
- fix: future proof with > rcmgr.DefaultLimit for new enum rcmgr values
- test: add test for presarvation of unlimited configs for inbound systems
- fix: pre...