Releases: ipfs/js-ipfs
v0.37.1
Bug Fixes
- create HTTP servers in series (#2388) (970a269)
- enable preload on MFS commands that accept IPFS paths (#2355) (0e0d1dd)
- package: update yargs to version 14.0.0 (#2371) (5aadb2d)
- do not load all of a DAG into memory when pinning (#2372) (f357c28), closes #2310
- preload addreses with trailing slash (#2377) (c607971), closes #2333
Features
v0.37.0
New constructor, better DNSLink support and delegated routing!
🔦 Highlights
👷♂️ Brand new constructor
We're in the middle of converting IPFS, libp2p and IPLD modules to using async/await and async iterators instead of callbacks. This will eventually bubble up to the JS IPFS programmatic API where there will likely be some changes that will effect your application. To ease the transition when that happens we're encouraging new and existing developers away from using our callback based APIs, towards Promise based APIs. You'll see the change reflected in our API docs soon. For now, there's no breaking changes, all existing APIs continue to work as usual with callbacks.
In this release there's a new way to construct an IPFS node using promises:
const IPFS = require('ipfs')
const node = await IPFS.create()
// Done, ready to use!
All the usual options you'd normally pass to the constructor can be passed to create
. Did we mention that it's completely backwards compatible? Well yeah, it is. No breaking changes here 😜 - you can still use new IPFS()
and wait for the ready
event as you used to. Or, alternatively, you can still use the constructor and await
on the new "ready" promise like so:
const IPFS = require('ipfs')
const node = new IPFS()
await node.ready
// Done, ready to use!
More details in the IPFS constructor docs.
🌎 Support for DNSLink IPNS name resolution
JS IPFS can finally resolve a DNSLink IPNS path. It means that jsipfs name resolve /ipns/ipfs.io
will now query DNS for a dnslink
TXT record and return /ipfs/QmRq5rhjnfFHYFYbYXoqPpcJQHKu3SUuHADzSzX9ECN5eM
(for example).
It also works recursively, so your DNSLink TXT record could return another IPNS path to resolve and it would keep going. Turtles all the way down 🐢. Cowabunga!
Bonus 🎁 this also works on the gateway so http://127.0.0.1:8080/ipns/ipfs.io
will resolve and display the ipfs.io website. Hooray 😁!
🧭 Delegated peer and content routing
JS IPFS now supports delegating peer and content routing to another node on the network.
What does that mean though? Well, when you delegate, you get someone else to do something. In delegated peer and content routing we get a different IPFS node to find a piece of content or another peer on the network.
Delegation allows JS IPFS to make use of the routing abilities of other nodes. Typically we delegate to IPFS nodes that have unrestricted access to a DHT. This is useful for IPFS nodes running in the browser, or even for nodes running in resource constrained environments.
IPFS nodes running in Node.js that are behind NATs or that are not running a DHT will also benefit from leveraging delegate routers. If you are running a DHT, the delegate will be used as a fallback router.
We've setup 2 delegate nodes you can use for development and testing, check the docs for configuring delegate routers in JS IPFS and the libp2p delegated routing example for even more info!
✨ Web UI with revamped Files & Peers
The Web UI got a whole new lease of life in version 2.5!
We've introduced a help system designed for new users, with explanations for each section.
The Peers page now allows you to connect to a specific peer via 'Add Connection'. We also have a revamped peers table with sorting, identicons for each peer, a simplified location, a new protocol & transport column and latency!
On the Files side, you can now look at any files in the wild. But what does that mean? You can now see your pins, remove pins, add new pins, navigate to any /ipfs/QmHash
or /ipns/domain.com
path and explore the IPFS world like you never did before.
🏗 API Changes
- New constructor. The recommended way of creating an IPFS node programmatically is now
await IPFS.create()
. This change is backwards compatible 😅 - (BREAKING) Gateway now implicitly responds with the contents of
/index.html
when accessing a directory/
instead of redirecting to/index.html
- Support added for
/ipns/
paths on HTTP Gateway - Support added for
ipfs name resolve /ipns/<fqdn>
- (BREAKING)
ipfs name resolve
is now recursive by default, set therecursive
option tofalse
to disable
❤️ Huge thank you to everyone that made this release possible
In alphabetical order, here are the 126 humans that made 2091 contributions to this release:
- Abraham Elmahrek (1 PR, 1 issue, 2 comments)
- Adam Uhlíř (4 PRs, 1 issue, 5 reviews, 5 comments)
- AkshitV (1 issue, 1 comment)
- Alan Shaw (77 PRs, 18 issues, 125 reviews, 219 comments)
- Alessandro Ricottone (2 PRs, 1 issue, 2 comments)
- Alex Potsides (18 PRs, 6 issues, 59 reviews, 43 comments)
- Anarkrypto (3 issues)
- André Cruz (1 PR, 3 issues, 10 comments)
- AndrewH (1 issue, 1 comment)
- Andy Hin (1 issue, 1 comment)
- antemortem (1 issue)
- area (1 comment)
- arminsal1 (4 comments)
- Arve Knudsen (5 PRs, 1 issue, 3 reviews, 17 comments)
- Asutosh (1 comment)
- b-rohit (2 comments)
- Barnyard (2 issues, 1 comment)
- Bora M. Alper (1 PR)
- Carson Farmer (1 issue, 3 comments)
- Carsten Munk (1 comment)
- Chirag Shinde (2 PRs, 5 comments)
- Christopher Joel (1 PR, 1 comment)
- Clemens Brunner (1 PR, 3 comments)
- Codecov (1 comment)
- Cody Eilar (2 issues, 4 comments)
- Dan Shields (2 PRs)
- Daniel Constantin (1 comment)
- David Dias (1 PR, 12 issues, 14 reviews, 42 comments)
- dependabot-preview (59 PRs, 38 comments)
- Dietrich Ayala (1 issue, 3 comments)
- Diogo Silva (1 PR, 2 reviews)
- dirkmc (16 PRs, 7 issues, 117 reviews, 73 comments)
- Dominic Della Valle (1 PR)
- Dzmitry Afanasenka (1 issue)
- Dzmitry Bachko (1 PR)
- Filip Š (2 PRs, 1 issue, 4 comments)
- Florian (1 issue)
- Frederik Batuna (1 issue)
- Friedel Ziegelmayer (1 PR, 2 comments)
- ghbjklhv (1 issue)
- Glenn Vandeuren (1 issue)
- Gopalakrishna Palem (2 issues, 7 comments)
- Gorka Ludlow (1 comment)
- Gregg Altschul (1 comment)
- Guilherme Cunha (1 issue)
- hapsody (1 PR, 2 issues, 5 comments)
- Harris Levine (4 comments)
- Henrique Dias (3 PRs, 1 issue, 1 comment)
- hhfeng (2 issues, 3 comments)
- Hugo Dias (17 PRs, 3 issues, 47 reviews, 45 comments)
- Irakli Gozalishvili (10 comments)
- Isaac Jacobs (1 issue, 3 comments)
- Jacob Heun (23 PRs, 6 issues, 59 reviews, 141 comments)
- Jakub (1 PR)
- Jesho Carmel (1 comment)
- Jim Pick (1 comment)
- João Antunes (1 comment)
- John Hiesey (4 comments)
- John Wehr (1 issue, 8 comments)
- John_Suu (5 comments)
- Jonybang (1 PR, 1 issue, 4 comments)
- Jordan Last (2 comments)
- Jorropo (3 PRs, 3 comments)
- Joseph Krug (1 comment)
- Juan Benet (1 comment)
- Justin Maier (1 PR, 1 issue, 8 comments)
- Kia (1 issue, 3 comments)
- ksvirsky (1 issue, 1 comment)
- KuhnChris (1 PR, 2 issues, 4 comments)
- kumavis (3 PRs, 11 reviews, 16 comments)
- Lennart Grahl (2 comments)
- Leo (1 issue, 1 comment)
- LeonFangCN (1 issue, 1 comment)
- lin onetwo (2 comments)
- Lukasz Juraszek (1 comment)
- [Maciej Krüger](https://github.com/mk...
v0.37.0-rc.1
Bug Fixes
- add CORS headers to gateway responses (#2254) (5156a47)
- disable socket timeout for pubsub subscriptions (#2303) (3583cc2)
- move mfs cmds and safer exit (#1981) (fee0141)
- swarm.peers latency value when unknown (#2336) (6248ec1)
- use ephemeral ports in API/Gateway bind test (#2305) (24679af)
- package: update ipfs-mfs to version 0.12.0 (#2275) (c15f146)
v0.36.4
v0.36.3
v0.36.2
v0.36.1
v0.36.0
URL safe CIDs, refs commands, DOM File support and more!
🔦 Highlights
🧬 Base32 encoding for v1 CIDs
As a stepping stone towards switching to CIDv1 by default for all CIDs, we're shipping a small change to v1 CIDs that means their string form is base32
encoded instead of base58btc
. So, instead of:
$ jsipfs add --cid-version 1 guardian.jpg
added zb2rhk6GMPQF3hfzwXTaNYFLKomMeC6UXdUt6jZKPpeVirLtV guardian.jpg
You'll now get back a base32
encoded CID:
$ jsipfs add --cid-version 1 guardian.jpg
added bafkreibu6pkzh33dfwfa3bg3twih7uiohu6d6cr34txljekdn3cvwoujiu guardian.jpg
You can read more about this change here.
PR: #2050
👉 Added refs and refs local commands
We've added the refs
and refs local
commands to the core, CLI and HTTP API. These commands allow you to list out all the CIDs referenced by a given DAG node or all the CIDs in your local repo. You can even choose the display format.
PR: #2004
🗄 Support for adding DOM File objects
Finally! You can just add a File
to IPFS without having to jump through hoops converting it to a Buffer
first. Sensational!
A File
, by the way, is what you'll get back from a <input type="file">
or the drag and drop API, so being able to easily take that file and add it to IPFS makes onboarding new frontend devs way easier (as well as way more convenient for all you old frontend devs 😜).
PR: #2013
🔬 MDNS discovery compatibility
The libp2p discovery module for finding IPFS nodes over MDNS has been updated so that your JS IPFS node is now able to find Go IPFS nodes on the local network too. It's a backwards compatible change so older nodes will still be able to find your node and you'll still be able to find them.
🚤 28% faster stream multiplexing
We switched the multiplexing implementation to one that's simpler, smaller and faster. We're estimating it to be around 28% faster than the old implementation.
PR: #1884
⛩ Gateway improvements
The IPFS HTTP gateway that JS IPFS exposes when run as a daemon in Node.js has been upgraded to support a number of HTTP features like conditional requests, byte range requests as well as getting some bug fixes, mini features and other improvements. There's too much to list here but check out the PR for and in depth description of what's changed.
PR: #1989
🔏 Pubsub message signing
Messages sent over Pubsub will now be automatically signed by the initial publisher, and included as a signature property on each Pubsub message. IPFS and Libp2p will be verifying the signatures of Pubsub messages by default in future releases, which will enable us to verify the authenticity of all messages sent over the network before they are processed. Verification is not yet required by default, but it will be in future releases, and all unsigned messages will not be processed or forwarded.
🏗 API Changes
- BREAKING: The default string encoding for version 1 CIDs has changed to
base32
- BREAKING: IPLD formats have been updated to the latest versions. IPLD nodes returned by
ipfs.dag
andipfs.object
commands have significant breaking changes. If you are using these commands in your application you are likely to encounter the following changes todag-pb
nodes (the default node type that IPFS creates):DAGNode
properties have been renamed as follows:data
=>Data
links
=>Links
size
=>size
(Note: no change)
- Additionally, the
Links
property of aDAGNode
now returns plain JS objects withHash
,Name
andTsize
properties, NOTDAGLink
instances DAGLink
properties have been renamed as follows:cid
=>Hash
name
=>Name
size
=>Tsize
- See CHANGELOGs for each IPLD format for it's respective changes, you can read more about the
dag-pb
changes in the CHANGELOG
- Commands
refs
andrefs local
have been added to core, the CLI and the HTTP API - Support for DOM File objects has been added to
ipfs.add
❤️ Huge thank you to everyone that made this release possible
In alphabetical order, here are all the humans that contributed to the release:
- Adam Uhlíř (1 PR, 3 issues, 1 review, 1 comment)
- Agent of User (5 comments)
- Alan Shaw (21 PRs, 5 issues, 59 reviews, 126 comments)
- Alex Potsides (16 PRs, 7 issues, 14 reviews, 14 comments)
- André Cruz (1 comment)
- André Medeiros (1 comment)
- Arie Trouw (1 issue)
- Beeno Tung (2 comments)
- bleonard252 (1 comment)
- bruinxs (1 issue, 1 comment)
- David Dias (5 comments)
- Davit Barbakadze (5 comments)
- Despoinis (2 issues, 3 comments)
- Dietrich Ayala (1 PR, 2 issues, 2 comments)
- Diogo Silva (1 PR)
- dirkmc (5 PRs, 3 issues, 46 reviews, 60 comments)
- edoo (1 comment)
- Francis Gulotta (1 comment)
- Friedel Ziegelmayer (1 review)
- Gopalakrishna Palem (3 PRs, 1 issue, 3 reviews, 5 comments)
- Guilherme Gervasio (1 comment)
- Guo Liu (1 issue, 1 comment)
- Guy Sviry (2 PRs, 2 issues, 15 comments)
- Henrique Dias (1 PR)
- Hugo Dias (5 PRs, 4 issues, 6 reviews, 17 comments)
- Irakli Gozalishvili (1 PR, 3 reviews, 3 comments)
- Ishan Joshi (1 issue)
- Jacob Heun (12 PRs, 3 issues, 55 reviews, 66 comments)
- Jake Hemmerle (3 comments)
- Jared Wright (1 issue)
- Jonybang (1 PR, 3 issues, 8 comments)
- jzstern (1 comment)
- Kavanaugh Latiolais (3 comments)
- Keith Smith (2 issues)
- kumavis (9 PRs, 16 issues, 8 reviews, 53 comments)
- Lorenzo Setale (2 comments)
- Łukasz Magiera (1 review, 1 comment)
- Maciej Krüger (1 review, 11 comments)
- Marcin Rataj (2 PRs, 4 issues, 11 reviews, 13 comments)
- Mark Robert Henderson (2 issues)
- Mars Robertson (1 issue)
- Matt Ober (1 issue, 2 comments)
- Michael Bradley (1 PR, 1 issue, 5 comments)
- Michael Muré (2 comments)
- Mikeal Rogers (1 issue, 8 reviews, 1 comment)
- Mikerah (1 comment)
- Mitra Ardron (2 issues, 2 comments)
- MonarthS (1 issue)
- Nate Foss (1 issue, 1 comment)
- nijynot (1 PR)
- Nikhil-Bathula (1 issue, 3 comments)
- Oli Evans (1 review, 15 comments)
- Pedro Teixeira (2 reviews)
- pinanklakhani (1 issue)
- pldespaigne (1 issue, 1 comment)
- Portia Burton (1 review)
- pruflyos (1 issue)
- reasv (2 issues, 2 comments)
- Rod Vagg (76 reviews, 8 comments)
- sachaaaaa (1 PR)
- ShareTheWorld (1 issue, 2 comments)
- Shivam Rawat (1 PR)
- Steven Allen (1 PR, 1 review, 4 comments)
- Vasco Santos (16 PRs, 5 issues, 24 reviews, 26 comments)
- Volker Mische (17 PRs, 3 issues, 23 reviews, 49 comments)
- William LeGate (3 comments)
- X5 Engine (2 comments)
- 李小明 (1 issue, 4 comments)
🙌🏽 Want to contribute?
Would you like to contribute to the IPFS project and don't know how? Well, there are a few places you can get started:
- Check the issues with the
help wanted
label in the [js-i...
v0.36.0-rc.0
Code Refactoring
- update ipld formats, async/await mfs/unixfs & base32 cids (#2068) (813048f), closes ipld/js-ipld-dag-pb#137 ipfs/interface-js-ipfs-core#473 ipfs/js-ipfs-http-client#1010 ipfs/js-ipfs-http-response#25 #1995
BREAKING CHANGES
- The default string encoding for version 1 CIDs has changed to
base32
.
IPLD formats have been updated to the latest versions. IPLD nodes returned by ipfs.dag
and ipfs.object
commands have significant breaking changes. If you are using these commands in your application you are likely to encounter the following changes to dag-pb
nodes (the default node type that IPFS creates):
DAGNode
properties have been renamed as follows:data
=>Data
links
=>Links
size
=>size
(Note: no change)
DAGLink
properties have been renamed as follows:cid
=>Hash
name
=>Name
size
=>Tsize
See CHANGELOGs for each IPLD format for it's respective changes, you can read more about the dag-pb
changes in the CHANGELOG
License: MIT
Signed-off-by: Alan Shaw [email protected]