v0.14.0
Note
This bugfix release was brought to you by the Shipyard team.
Important
This is the last 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 only if any are needed. After that date, no one at Shipyard maintains this repository. If you depend on these tests, read the announcement and send us your transition questions before the end of September
Added
- New
TestGatewayIpfsUri*tests for theIpfs-Uriresponse header introduced by IPIP-548, one request per failure class: canonical percent-encoded path segments (delimiters, platform-encoder gaps like!'()*~, 4-byte UTF-8), request-spelling independence over the existingdir-with-percent-encoded-filename.car(raw sub-delims, lowercase hex escapes), decode-once normalization (%2F,%2E, dot segments), nested-directory trailing slashes, query exclusion on alternate formats, redirects, and CIDv0 / legacy base58 peer ID authority normalization. Backed by the newdir-with-tricky-filenames.caranddir-with-tricky-nested-filenames.carfixtures, plus a hand-builtdir-with-slash-in-filename.carproving that a dag-pb link with/in its name is not addressable by any content path (%2Falways decodes to a separator); the full byte-level vectors live in the IPIP-0548 test fixtures table.TestDNSLinkGatewayUnixFSDirectoryListingalso asserts theipns://value for DNSLink hosts, andTestDNSLinkGatewayIpfsUriAuthoritychecks that only dotted DNSLink names appear asipns://authorities.
Changed
- Updated
github.com/ipfs/boxoto v0.42.2 andgithub.com/libp2p/go-libp2pto v0.49.0. - BREAKING: IPIP-548 deprecates
X-Ipfs-Pathin favor ofIpfs-Uri. ExistingX-Ipfs-Pathexpectations on deserialized responses (TestGatewayCache,TestGatewayCacheWithIPNS,TestNativeDag,TestGatewayJSONCborAndIPNS) now assertIpfs-Uriinstead, andTestCorsexpectsIpfs-UriinAccess-Control-Expose-Headers. On raw block responses (TestTrustlessRaw,TestGatewayBlock) theX-Ipfs-Pathexpectation was dropped without a replacement, because gateways MAY omit both headers with trustless response types (application/vnd.ipld.rawandapplication/vnd.ipld.car). TheTestGatewayIpfsUri*tests also fail gateways that returnX-Ipfs-Pathfor content paths containing bytes invalid in HTTP field values (outside HTAB, SP, and visible ASCII per RFC 9110 section 5.5): such gateways must omit the header, since the raw legacy value would be corrupted in transit. When the header is returned for an ASCII-safe path, its value must be the decoded legacy content path, unchanged.
Fixed
Header().Has()checked only its last argument, so all but one value in each list were silently ignored. It now checks every value, which tightensTestCors: the fullAccess-Control-Allow-Methods,Access-Control-Allow-Headers, andAccess-Control-Expose-Headerslists are enforced. The kubo-specificX-Chunked-OutputandX-Stream-Outputentries, which no spec mandates, were removed from theAccess-Control-Expose-Headersexpectation instead of becoming newly enforced.
