Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

Releases: ipfs/js-ipfs

v0.37.1

23 Aug 15:55
Compare
Choose a tag to compare

Bug Fixes

Features

  • allow controlling preload from cli and http api (#2384) (5878a0a)
  • resolution of .eth names via .eth.link (#2373) (7e02140)

v0.37.0

06 Aug 15:45
Compare
Choose a tag to compare

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 the recursive option to false 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:

Read more

v0.37.0-rc.1

06 Aug 12:53
Compare
Choose a tag to compare
v0.37.0-rc.1 Pre-release
Pre-release

Bug Fixes

v0.36.4

18 Jun 06:40
Compare
Choose a tag to compare
chore: release version v0.36.4

v0.36.3

30 May 15:06
Compare
Choose a tag to compare

Bug Fixes

  • double callback in object.links for cbor data (#2111) (5d080c0)
  • fixes rabin chunker truncating files (#2114) (76689ff)
  • package: update bignumber.js to version 9.0.0 (#2123) (37903ad)

v0.36.2

24 May 12:49
Compare
Choose a tag to compare

Bug Fixes

v0.36.1

22 May 15:48
Compare
Choose a tag to compare

Bug Fixes

v0.36.0

22 May 10:30
Compare
Choose a tag to compare

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.

PR: libp2p/js-libp2p-mdns#80

🚤 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.

PR: libp2p/js-libp2p#362

🏗 API Changes

  1. BREAKING: The default string encoding for version 1 CIDs has changed to base32
  2. BREAKING: 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)
    • Additionally, the Links property of a DAGNode now returns plain JS objects with Hash, Name and Tsize properties, NOT DAGLink 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
  3. Commands refs and refs local have been added to core, the CLI and the HTTP API
  4. 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:

🙌🏽 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...
Read more

v0.36.0-rc.0

21 May 12:26
Compare
Choose a tag to compare
v0.36.0-rc.0 Pre-release
Pre-release

Code Refactoring

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]

v0.36.0-pre.0

17 May 14:06
Compare
Choose a tag to compare
v0.36.0-pre.0 Pre-release
Pre-release

Bug Fixes

  • package: update ipfs-http-client to version 31.0.0 (#2052) (906f8d0)
  • correctly validate ipld config (#2033) (eebc17a)
  • package: update hapi-pino to version 6.0.0 (#2043) (f4e3bd0)

Features

  • add support for File DOM API to files-regular (#2013) (0a08192)
  • implement ipfs refs and refs local (#2004) (6dc9075)
  • gateway: add streaming, conditional and range requests (#1989) (48a8e75)