Releases: ipfs/js-ipfs
v0.41.0-rc.1
v0.41.0-rc.0
Bug Fixes
- bad merge (714e540)
- correct redirect when it loads webui (#2697) (#2698) (3516bb8)
- ipfs-repo version (f08758e)
- limit SW registration to content root (#2682) (feba661), closes /github.com/ipfs/go-ipfs/issues/4025#issuecomment-342250616
- repo gc error key name (#2618) (5a1d266), closes /docs.ipfs.io/reference/api/http/#api-v0
- support legacy links in cbor data (#2631) (f98023b)
Code Refactoring
Features
- add --hidden flag to cli add command (#2649) (ed886f4)
- add alias for
ipfs repo stat --human
. (#2609) (f81086c) - add bitswap stat human option in CLI (#2619) (6a2ea52)
- add human flag to repo stat cli command (#2630) (39bc5b4)
- pass libp2pOptions to the bundle function (#2591) (e8e9b91)
- return CID of flushed path from ipfs.files.flush (#2715) (5db7c29)
- support -X special permissions arg to files.chmod (#2719) (d6ece05)
- support UnixFSv1.5 metadata (#2621) (acbda68), closes ipfs/js-datastore-pubsub#20
- web ui 2.7.1 (#2599) (06340ec)
- web ui 2.7.2 (#2651) (7a87d8f)
Performance Improvements
BREAKING CHANGES
- Where
PeerID
s were previously CIDs, now they are Strings
ipfs.bitswap.stat().peers[n]
is now a String (was a CID)ipfs.dht.findPeer().id
is now a String (was a CID)ipfs.dht.findProvs()[n].id
is now a String (was a CID)ipfs.dht.provide()[n].id
is now a String (was a CID)ipfs.dht.put()[n].id
is now a String (was a CID)ipfs.dht.query()[n].id
is now a String (was a CID)ipfs.id().id
is now a String (was a CID)ipfs.id().addresses[n]
are now Multiaddrs (were Strings)
- Removes all
codec
/format
options, everything isdag-pb
now.
v0.40.0
🔦 Highlights
Migrations are not just for ducks. We're paving the way for the dweb in the browser by laying foundations to switch to a hash format that can be used in URL origins 🛣
🦆 New repo migrations tool
Ever worked on an application where you've had to write a database migration? Yeah, us too. Up until now js-ipfs hasn't been able to migrate repo's to a new format. Well, that's not strictly true, you could have used the go-ipfs repo migration tool on a repo created when running js-ipfs in Node.js (yes, we have repo compatibility!), but in the browser you were stuck.
..and I mean really stuck, if we'd updated the format of a repo that ships with js-ipfs then your applications would just have to catch an error that the repo version was not compatible. You couldn't use it, and you couldn't upgrade. Bad news bears 🐻.
We had a cunning strategy to avoid this situation - do not change the repo 😂, but this is rapidly becoming unsustainable since we actually want to add a migration to achieve our dream of base32 encoded v1 (by default) CIDs.
Good news friends! The new version of js-ipfs now ships with a repo migration tool that'll automatically migrate repo's in the browser. So now all our ducks are in a line, stay tuned for a migration and a switch to v1 CIDs ✨!
🎻 base32 encoded CIDs in IPNS paths
My violin strings gently weep for being able to use Peer IDs in a domain, and let me tell you why.
Peer IDs currently cannot be used in a domain name because their string format is base58
- a case SENSITIVE encoding. In domain names the following are equivalent:
QmNib2c1qCVSbp9QPT81RmDSg3n8kFgPsMCdj4gpveJESE
qmnib2c1qcvsbp9qpt81rmdsg3n8kfgpsmcdj4gpvejese
QMNIB2C1QCVSBP9QPT81RMDSG3N8KFGPSMCDJ4GPVEJESE
So, bad times.
...but wait, Peer IDs ARE CIDs! I know, weird, but also rad because in theory we should be able to re-encode them as base32
. Right now though, everything expects a base58
encoded string (a v0 CID) because they're actually just a multihash.
In this js-ipfs release we've made a small change to allow you to take your Peer ID (a v0 CID), convert it to a base32 encoded v1 CID and use it in an IPNS path like /ipns/bafybeidta3hkxk3ihxfsk765oswgsjhmvcnkeestyuov6r2t5tyts4xuoe
. You can take advantage of cid.ipfs.io (base32 version is provided for your convenience at the very bottom of the page) or do the conversion with the command line tools:
jsipfs id | json id | jsipfs cid base32
bafybeidta3hkxk3ihxfsk765oswgsjhmvcnkeestyuov6r2t5tyts4xuoe
This is really, seriously cool, because now Peer IDs can be used in domain names and so an IPFS gateway operating at bafybeidta3hkxk3ihxfsk765oswgsjhmvcnkeestyuov6r2t5tyts4xuoe.ipns.dweb.link
for example, will have origin isolation (hooray for security 🔒) AND IPNS enabled mutable data 🚀⚡️
To ease the transition we support CID v0 converted to v1 (with dag-pb
multicodec). In the future, new Peer IDs will be v1 CIDs with self-describing libp2p-key
codec that is base32
encoded by default...but that's a change for another day.
🌲 Implemented dag put
and dag resolve
CLI commands
These have been available in core for a while now and we finally got round to surfacing them in the CLI. e.g.
$ jsipfs dag put '""IPLD RULEZ""'
bafyreia5coklfzblgd3reqwaieafmpasdceqmcnjrowre3623mtb4nxlhm
$ jsipfs dag put '{"to": {"/": "bafyreia5coklfzblgd3reqwaieafmpasdceqmcnjrowre3623mtb4nxlhm"}}'
bafyreiequnkfflujkwhxk6wud5w64hmijdqdmx7p55fgrbiizw32kdrb7e
$ jsipfs dag put '{"path": {"/": "bafyreiequnkfflujkwhxk6wud5w64hmijdqdmx7p55fgrbiizw32kdrb7e"}}'
bafyreidgfdsoupe747qnjzkjk2yirgv76wr4drev3i7kv6dht4dkypusze
$ jsipfs dag resolve bafyreidgfdsoupe747qnjzkjk2yirgv76wr4drev3i7kv6dht4dkypusze/path/to
bafyreia5coklfzblgd3reqwaieafmpasdceqmcnjrowre3623mtb4nxlhm
$ jsipfs dag get bafyreia5coklfzblgd3reqwaieafmpasdceqmcnjrowre3623mtb4nxlhm
IPLD RULEZ
🏗 API Changes
dag.put
got apin
option to save you from calling the pin API separately (and potentially losing your node if GC runs inbetween!)
❤️ Huge thank you to everyone that made this release possible
- @0x6431346e (1 commit, 2 PRs, 1 comment)
- @0xflotus (1 comment)
- @achingbrain (33 commits, 23 PRs, 1 issue, 56 comments)
- @alanshaw (59 commits, 49 PRs, 8 issues, 148 comments)
- @Alvan98 (1 issue, 1 comment)
- @andrew (1 comment)
- @anorth (1 comment)
- @aphelionz (1 comment)
- @AquiGorka (1 comment)
- @arithmetric (1 comment)
- @arminsal1 (1 issue)
- @atfornes (1 comment)
- @AuHau (17 commits, 2 PRs, 2 issues, 16 comments)
- @ay2306 (1 commit, 1 PR, 1 issue, 8 comments)
- @ayushee10 (1 issue, 1 comment)
- @bitspill (1 comment)
- @bonedaddy (1 issue, 4 comments)
- @BrunoZell (1 comment)
- @bvand (1 comment)
- @caelumdev (1 comment)
- @ceslabdocker (1 issue, 3 comments)
- @charleenfei (1 comment)
- @chirag-shinde (1 comment)
- @csuwildcat (1 comment)
- @dasilvacontin (1 comment)
- @datafatmunger (1 comment)
- @daviddias (2 commits, 2 PRs, 3 issues, 21 comments)
- @davidgilbertson (1 comment)
- @dbachko (1 comment)
- @demmojo (1 comment)
- @dirkmc (2 commits, 5 PRs, 1 issue, 2 comments)
- @djdv (1 comment)
- @dordille (1 comment)
- @elsehow (1 comment)
- @enricomarino (1 comment)
- @ethers (1 comment)
- @faheel (1 comment)
- @fbaiodias (1 comment)
- @felixonmars (1 comment)
- @Fil (1 comment)
- @filips123 (1 comment)
- @fsdiogo (2 comments)
- @Gozala (1 comment)
- @grantlouisherman (1 comment)
- @grassias (1 comment)
- @hacdias (2 commits, 2 PRs, 2 comments)
- @HamzaBinSarfraz (1 issue, 1 comment)
- @harshjv (1 comment)
- @holodisc (1 comment)
- @hsanjuan (1 comment)
- @hugomrdias (1 commit, 1 PR, 10 comments)
- @iRyanBell (1 PR)
- @ishanjoshi02 (1 comment)
- @jacobheun (30 commits, 12 PRs, 1 issue, 32 comments)
- @jaller94 (1 commit, 1 PR)
- @JChanceHud (1 comment)
- @jessicaschilling (1 commit, 1 PR, 3 comments)
- @JGAntunes (2 comments)
- @joaosantos15 (1 comment)
- @jonahweissman (1 comment)
- @Jonybang (1 comment)
- @Jorropo (1 commit, 1 PR)
- @kenshyx (1 comment)
- @kpp (2 issues, 1 comment)
- @KrishnaPG (1 issue, 1 comment)
- @lidel (5 commits, 6 PRs, 14 comments)
- @liofchina (1 issue)
- @machawk1 (1 comment)
- @magik6k (1 comment)
- @masylum (1 comment)
- @maxlath (1 comment)
- @mboperator (2 commits, 2 PRs, 2 comments)
- @mburns (1 PR)
- @mcclure (1 issue, 1 comment)
- @MichaelMure (1 comment)
- @michaelsbradleyjr (1 issue)
- @mikeal (3 comments)
- @mishmosh (1 comment)
- @mitar (1 comment)
- @mkg20001 (26 commits, 6 PRs, 4 issues, 52 comments)
- @mnts (1 issue, 2 comments)
- @momack2 (3 comments)
- @moshisushi (1 comment)
- @mpetrunic (1 commit, 1 PR, 2 comments)
- @Mr0grog (1 comment)
- @Nashatyrev (1 comment)
- @NatoBoram (1 comment)
- @negamaxi (1 comment)
- @nick (1 comment)
- [@niinpatel](https://github.com...
v0.39.1
v0.40.0-rc.1
v0.40.0-rc.0
Bug Fixes
- add profiles docs, support in validation and tests (#2545) (37073e6)
- choose import strategy in ipfs.add (#2541) (bba1537)
- dht.provide() should accept string keys (#2573) (#2589) (53c2144)
- fix ls crash (#2546) (09041c3), closes ipfs/js-ipfs-unixfs-exporter#24
- make init options look like go-ipfs (#2544) (13a8289)
- remove superfluous backtick (3bd47c3)
- revert evergreen webui (#2557) (16806d9)
- package: update @hapi/ammo to version 4.0.0 (#2538) (da78142)
Features
v0.39.0
Features
- Add config profile endpoint and CLI (#2165) (7314f0d)
- allow daemon to init and start in a single cmd (#2428) (16d5e7b)
- support block.rm over http api (#2514) (c9be79e)
- web ui 2.5.3 (4f398fc)
- web ui 2.5.4 (#2478) (bff402c)
Bug Fixes
- limit concurrent HTTP requests in browser (#2304) (cf38aea)
- only try to get ipfs if argv is present (#2504) (1281b9f)
- pull in preconfigured chai from interface tests (#2510) (8c01259)
- add profiles docs, support in validation and tests (#2545) (e081e16)
- choose import strategy in ipfs.add (#2541) (e2e6701)
- fix ls crash (#2546) (83eb99b), closes ipfs/js-ipfs-unixfs-exporter#24
- make init options look like go-ipfs (#2544) (d4d6dfe)
v0.38.1
v0.39.0-rc.2
v0.39.0-rc.1
chore: release version v0.39.0-rc.1