Releases: ipfs/boxo
Releases · ipfs/boxo
v0.13.1
Added
- An option
DisableHTMLErrors
has been added togateway.Config
. When this option
istrue
, pretty HTML error pages for web browsers are disabled. Instead, a
text/plain
page with the raw error message as the body is returned.
What's Changed
- fix(gateway): ipfs install link by @lidel in #468
- feat(gateway): add DisableHTMLErrors option by @hacdias in #463
Full Changelog: v0.13.0...v0.13.1
v0.13.0
Added
- ✨ The
routing/http
implements Delegated Peer Routing introduced in IPIP-417.
Changed
- 🛠 The
routing/http
package received the following modifications:- Client
GetIPNSRecord
andPutIPNSRecord
have been renamed toGetIPNS
and
PutIPNS
, respectively. Similarly, the required function names in the server
ContentRouter
have also been updated. ReadBitswapProviderRecord
has been renamed toBitswapRecord
and marked as deprecated.
From now on, please use the protocol-agnosticPeerRecord
for most use cases. The new
Peer Schema has been introduced in IPIP-417.
- Client
Removed
- 🛠 The
routing/http
package experienced following removals:- Server and client no longer support the experimental
Provide
method.
ProvideBitswap
is still usable, but marked as deprecated. A protocol-agnostic
provide mechanism is being worked on in IPIP-378. - Server no longer exports
FindProvidersPath
andProvidePath
.
- Server and client no longer support the experimental
Fixed
- The normalization of DNSLink identifiers in
gateway
has been corrected in the edge
case where the value passed to the path component of the URL is already normalized.
What's Changed
- ci: uci/copy-templates by @web3-bot in #431
- Merge release v0.12.0 by @hacdias in #448
- blockservice/test: passthrough blockservice options [skip changelog] by @Wondertan in #449
- bitswap: reenable tests by @Jorropo in #423
- bitswap: mark TestSessionGetBlocks flaky by @Jorropo in #456
- feat(routing/http)!: delegated peer routing server and client, IPIP 417 by @hacdias in #422
- ci: remove obsolete protocol/cache-go-action by @galargh in #460
- fix(gateway): normalization of DNSLink inlining by @lidel in #462
Full Changelog: v0.12.0...v0.13.0
v0.12.0
Added
- The
routing/http
client and server now support Delegated IPNS at/routing/v1
as per IPIP-379. - 🛠 The
verifycid
package has been updated with the new Allowlist interface as part of reducing globals efforts. - The
blockservice
andprovider
packages has been updated to accommodate for changes inverifycid
.
Changed
- 🛠
blockservice.New
now accepts a variadic of func options following the Functional Options pattern.
Removed
N/A
Fixed
- HTTP Gateway API: Not having a block will result in a 5xx error rather than 404
- HTTP Gateway API: CAR requests will return 200s and a CAR file proving a requested path does not exist rather than returning an error
- 🛠
MultiFileReader
has been updated with a new header with the encoded file name instead of the plain filename, due to a regression found innet/textproto
. This only affects files with binary characters in their name. By keeping the old header, we maximize backwards compatibility.New Client Old Client New Server ✅ 🟡* Old Server ✅ ✅ *Old clients can only send Unicode file paths to the server.
Security
N/A
What's Changed
- Merge release v0.11.0 by @Jorropo in #418
- chore: gateway conformance v0.3 by @laurentsenta in #421
- [skip changelog] docs(readme): fix typo by @joaosa in #424
- Release v0.10.3 by @Jorropo in #425
- ci: uci/delete-templates by @web3-bot in #428
- ci: uci/copy-templates by @web3-bot in #429
- verifcid: introduce and integrate Allowlist interface by @Wondertan in #407
- feat(connecteventmanager): block Connected() until accepted by @rvagg in #435
- changelog: put the 435 fix in the right version by @Jorropo in #437
- fix(connecteventmanager): clean up tests for new synchronous flow by @rvagg in #438
- fix(gw): IPIP-402 CARs return useful blocks on not found errors by @aschmahmann in #440
- add wasm build option for filewriter flags[skip changelog] by @mar1n3r0 in #411
- style: run gofumpt by @Jorropo in #441
- ci: upload conformance logs by @laurentsenta in #442
- Revert "feat(connecteventmanager): block Connected() until accepted (#435)" and tests by @Jorropo in #444
- fix!: add escaped abspath header by @hacdias in #434
- feat(routing/http): delegated IPNS server and client, IPIP 379 by @hacdias in #333
- ci: uci/copy-templates by @web3-bot in #431
New Contributors
- @joaosa made their first contribution in #424
- @Wondertan made their first contribution in #407
- @rvagg made their first contribution in #435
- @mar1n3r0 made their first contribution in #411
Full Changelog: v0.11.0...v0.12.0
v0.10.3
Added
Changed
Removed
Fixed
- Handle
_redirects
file whenIf-None-Match
header is present (#412)
Security
What's Changed
- fix: handle _redirects for If-None-Match headers by @aschmahmann in #412
Full Changelog: v0.10.2...v0.10.3
v0.11.0
Added
- ✨ The gateway now supports the optional
order
anddups
CAR parameters from IPIP-412.- The
BlocksBackend
only implementsorder=dfs
(Depth-First Search) ordering, which was already the default behavior. - If a request specifies no
dups
, response withdups=n
is returned, which was already the default behavior. - If a request explicitly specifies a CAR
order
other thandfs
, it will result in an error. - The only change to the default behavior on CAR responses is that we follow IPIP-412 and make
order=dfs;dups=n
explicit in the returnedContent-Type
HTTP header.
- The
- ✨ While the call signature remains the same, the blocks that Bitswap returns can now be cast to traceability.Block, which will additionally tell you where the Block came from and how long it took to fetch. This helps consumers of Bitswap collect better metrics on Bitswap behavior.
Changed
- 🛠 The
ipns
package has been refactored.- You should no longer use the direct Protobuf version of the IPNS Record. Instead, we have a shiny new
ipns.Record
type that wraps all the required functionality to work the best as possible with IPNS v2 Records. Please check the documentation for more information, and follow ipfs/specs#376 for related IPIP. - There is no change to IPNS Records produced by
boxo/ipns
, it still produces both V1 and V2 signatures by default, it is still backward-compatible.
- You should no longer use the direct Protobuf version of the IPNS Record. Instead, we have a shiny new
Removed
- 🛠
ipld/car
has been removed. Please use ipld/go-car instead. More information regarding this decision can be found in issue 218.
Fixed
- Removed mentions of unused ARC algorithm (#336)
- Handle
_redirects
file whenIf-None-Match
header is present (#412)
Security
v0.10.2
Fixed
- Gateway: include CORS on subdomain redirects.
- Gateway: ensure 'X-Ipfs-Root' header is valid.
What's Changed
- Update RELEASE.md based on 0.9 release by @BigLep in #343
- fix(gateway): remove warning about X-Ipfs-Gateway-Prefix by @hacdias in #350
- blockstore: replace go.uber.org/atomic with sync/atomic by @Jorropo in #357
- fix(gateway): allow CAR trustless requests with path by @hacdias in #358
- chore: version 0.10.1 by @hacdias in #359
Full Changelog: v0.10.0...v0.10.2
v0.10.1
Fixed
- Allow CAR requests with a path when
DeserializedResponses
isfalse
.
What's Changed
- Update RELEASE.md based on 0.9 release by @BigLep in #343
- fix(gateway): remove warning about X-Ipfs-Gateway-Prefix by @hacdias in #350
- blockstore: replace go.uber.org/atomic with sync/atomic by @Jorropo in #357
- fix(gateway): allow CAR trustless requests with path by @hacdias in #358
Full Changelog: v0.10.0...v0.10.1
v0.10.0
Added
- ✨ The gateway now supports partial CAR exports via query parameters from IPIP-402.
Changed
- 🛠 A few trivial breaking changes have been done to the gateway:
- The signature of
IPFSBackend.GetCAR
has been adapted to support IPIP-402 CAR Parameters. - A few variables have been renamed for consistency:
WithHostname
->NewHostnameHandler
Specification
->PublicGateway
NewErrorResponse
->NewErrorStatusCode
NewErrorResponseForCode
->NewErrorStatusCodeFromStatus
BlocksGateway
->BlocksBackend
BlocksGatewayOption
->BlocksBackendOption
NewBlocksGateway
->NewBlocksBackend
- Some functions that are not supposed to be outside of the package were removed:
ServeContent
.
- The signature of
Removed
None.
Fixed
None.
Security
None.
What's Changed
- feat(gateway): implement IPIP-402 extensions for gateway CAR requests by @aschmahmann in #303
- docs(changelog): add gateway deserialized responses by @hacdias in #341
- feat: update gateway-conformance to v0.1 by @laurentsenta in #342
Full Changelog: v0.9.0...v0.10.0
v0.9.0
Added
- ✨
gateway
The gateway were updated to provide better features for users and gateway implementers:- New human-friendly error messages.
- Updated, higher-definition icons in directory listings.
- Customizable menu items next to "About IPFS" and "Install IPFS".
- Valid DAG-CBOR and DAG-JSON blocks now provide a preview, where links can be followed.
ipns
addValidateWithPeerID
andUnmarshalIpnsEntry
helpers. (https://github.com/ipfs/boxo/pulls/292)- 🛠
coreiface/tests
add*testing.T
argument to the swarm provider. (https://github.com/ipfs/boxo/pulls/321)
Changed
- 🛠
boxo/pinner
some listing methods have been changed to now return a<-chan StreamedCid
. This allows the consumption of pins while the pinner is listing them, which for large pinset can take a long time. (https://github.com/ipfs/boxo/pulls/336)
The concerned methods are:DirectKeys
RecursiveKeys
InternalKeys
- 🛠
provider/batched.New
has been moved toprovider.New
and arguments has been changed. (https://github.com/ipfs/boxo/pulls/273)- a routing system is now passed with the
provider.Online
option, by default the system run in offline mode (push stuff onto the queue); and - you do not have to pass a queue anymore, you pass a
datastore.Datastore
exclusively.
- a routing system is now passed with the
- 🛠
provider.NewOfflineProvider
has been renamed toprovider.NewNoopProvider
to show more clearly that is does nothing. (https://github.com/ipfs/boxo/pulls/273) - 🛠
provider.Provider
andprovider.Reprovider
has been merged under oneprovider.System
. (https://github.com/ipfs/boxo/pulls/273) - 🛠
routing/http
responses now return a streamingiter.ResultIter
generic interface. (https://github.com/ipfs/boxo/pulls/18) - 🛠
coreiface
add options andAllowOffline
option toRoutingAPI.Put
. (https://github.com/ipfs/boxo/pulls/278) - 🛠
gateway
now has deserialized responses turned off by default. This can be configured viaDeserializedResponses
. (#252)
Removed
- 🛠
provider/queue
has been moved toprovider/internal/queue
. (https://github.com/ipfs/boxo/pulls/273) - 🛠
provider/simple
has been removed, now instead you can useprovider.New
because it accept non batched routing systems and use type assertion for theProvideMany
call, giving a single implementation. (https://github.com/ipfs/boxo/pulls/273) - 🛠
provider.NewSystem
has been removed,provider.New
now returns aprovider.System
directly. (https://github.com/ipfs/boxo/pulls/273)
Fixed
gateway
fix panics by returning in all error cases. (https://github.com/ipfs/boxo/pulls/314)gateway
avoid duplicate payload during subdomain redirects. (https://github.com/ipfs/boxo/pulls/326)gateway
correctly handle question marks in URL when redirecting. (https://github.com/ipfs/boxo/pulls/#313)
Security
None
What's Changed
- refactor(gateway): switch to xxhash/v2 by @hsanjuan in #285
- feat(routing): allow-offline with routing put by @laurentsenta in #278
- routing/http: feat: add streaming support by @guseggert in #18
- refactor: remove badger, leveldb dependencies by @hsanjuan in #286
- feat: reusable ipns verify by @laurentsenta in #292
- Revert "feat: reusable ipns verify" by @hacdias in #293
- feat(ipns): helper ValidateWithPeerID and UnmarshalIpnsEntry by @hacdias in #294
- add test cases for tar module by @fulldecent in #301
- refactor: replace assert.Nil for assert.NoError by @hacdias in #302
- feat(gateway): redirect ipns b58mh to cid by @hacdias in #236
- fix(routing/v1): add newline in NDJSON responses by @hacdias in #300
- feat: add deprecator by @guseggert in #297
- ci: update Unified CI configuration by @galargh in #305
- refactor(example): simplify ipns validation by @hacdias in #306
- feat(gw): add ipfs_http_gw_request_types metric by @lidel in #311
- feat(gw): add ipfs_http_gw_car_stream_fail_duration_seconds by @lidel in #312
- bitswap/client: fix PeerResponseTrackerProbabilityOneKnownOneUnknownPeer by @Jorropo in #310
- feat: pass records limit on routing.FindProviders by @hacdias in #299
- feat: create pull_request_template by @galargh in #314
- fix(gw): missing return in error case by @willscott in #319
- feat(gateway)!: deserialised responses turned off by default by @hacdias in #252
- feat(gateway): improved templates, user friendly errors by @hacdias in #298
- coreiface: add a testing.T argument to the provider by @Jorropo in #321
- feat(gateway): visualize dag-cbor and dag-json by @hacdias in #315
- provider: refactor to only maintain one batched implementation and add throughput callback by @Jorropo in #273
- provider: add breaking changes to the changelog by @Jorropo in #330
- fix(gateway)!: no duplicate payload during subdomain redirects by @hacdias in #326
- fix(gateway): question marks in url.Path when redirecting by @hacdias in #313
- provider: revert throughput callback and related refactor by @Jorropo in #332
- Streamed pins by @MichaelMure in #290
- changelog: add changelog for async pin listing by @Jorropo in #336
- chore: do not rely on deprecated logger by @hacdias in #338
- feat: remove ipld legacy and format globals in ipld/merkledag by @aschmahmann in #322
- rename unixfs protobuf package to unixfs.v1 by @aschmahmann in #318
- rename dagpb protobuf to merkledag.v1 by @aschmahmann in #323
- provider: second round of reprovider refactor by @Jorropo in #331
New Contributors
- @hsanjuan made their first contribution in #285
- @laurentsenta made their first contribution in #278
- @fulldecent made their first contribution in #301
- @willscott made their first contribution in #319
- @MichaelMure made their first contribution in #290
Full Changelog: v0.8.1...v0.9.0
v0.8.1
What's Changed
- Release v0.8.0 by @guseggert in #264
- fix(gw): widen duration histograms and cleanup by @lidel in #265
- Web3 bot/sync by @web3-bot in #271
- fix(gateway): panic on path without enough components by @hacdias in #272
- feat(gateway): trace context header support by @hacdias in #256
- refactor(gateway): consistent tracing names by @hacdias in #261
- docs: add RELEASE.md by @guseggert in #266
- Added FAQ and README updates by @BigLep in #260
Full Changelog: v0.8.0...v0.8.1