- chore: upgrade [email protected]
- fix: logout, clean up prior login state
- chore: deprecate isLoggedIn, simply call auth, will return existing user if available
- fix: another datastore path, resolves "key not found error"
- feat: shared ipfs and orbitdb iframe cache for faster auth/openbox and syncs
- fix: ledger support
This release upgrades ipfs to 0.46.0, adds a fix that may allow some older accounts to be loaded/synced again, and downgrades libp2p-pubsub as temporary fix for connect/gossipsub errors.
- fix: timeout adress links which dont resolve ipfs.dag.get
- chore: up ipfs 0.46.0
- fix: downgrade libp2p-pubsub, 0.4.7 throwing error
Fixes getting verified accounts (getVerifiedAccounts)
- fix: pass correct ipfs mock to resolve did
- fix: bump libp2p-pubsub
This release brings new IPFS features/performance in 0.44.0, and decreases bundled size by 1mb. Based on feedback from our first 3ID-Connect release, this brings a new more lightweight version and refactor. With these changes you need to pass a provider (as before) when creating or authenticating. The function get3idConnectProvider() is no longer available, when passing a provider we create a 3ID-Connect provider in the background. The recommended way to initialize a session is now as follows.
// On page load create
const box = await Box.create()
// Later authenticate user
const spaces = ['myDapp']
await box.auth(spaces, { address: '0x12345abcde', provider: ethProvider })
- feat: default to 3ID-Connect, pass an eth provider and 3id-connect will be created in background
- feat: supported function for browser feature support detection
- ref: pass a provider at box.auth instead of Box.create, so create can be called on page load.
- chore: upgrade to ipfs 0.44.0, libp2p-webrtc
- feat: ghostpinbot pass address
- ref: link address on auth
- chore: upgrade did-jwt and did resolver libraries
- fix: address recover signature check
- feat: opt in support for 3ID Connect Provider
- fix: confidential threads support with IdentityWallet
Get a 3ID Connect Provider by calling Box.get3idConnectProvider()
- fix: Use authereum signing key (#733)
- feat: confidential threads 🔒📫
Confidential threads are encrypted member only threads, used for private dms, group messages, etc
- fix: getIPFS called same time or from different closures in browser
- fix: ghost chat member list, with no auth opens
- chore: update ipfs & orbitdb
- fix: Verify legacy muport DID properly
- fix: Special signature request for authereum
- ref: Send DID in all pin requests where possible
fix: set fixed cache paths, so cache read/writes from same path and local data loaded
This release brings a few performance updates as well as minor features in preparation for the upcoming Confidential Threads feature.
- feat: support for asymmetric encryption in spaces
- feat: fully migrate to 3ID, no more references to legacy "muport" DID
- chore: update OrbitDB for improved performance
- fix: IdentityWallet now works in a browser context
- fix: issue with using ghost threads while not authenticated resolved
- fix: linkAddress now works as expected with externally provided proof
This release features a new interface for how to create and authenticate to a 3Box, it also adds the ability to open a thread before being authenticated to a space.
- feat: new initialization interface
- fix: add postId to ghost chat messages
- fix: don't allow space names with dots
-
feat: Support IdentityWallet v1.0.0 🎉
-
chore: use ethers v5
-
fix: add 'latest' parameter to
get_code
call (note: this was moved to the 3id-blockchain-utils package)
- fix: check for 3id provider support in a better way
- feat: return all messages seen in a ghost thread on getPost
- feat: add filters to ghost threads
- fix: issue with window being referenced in node.js
- fix: disconnect from pinning-room when finished
IdentityWallet v0.2.0 has support for a JSON-RPC provider interface. This release makes use of this interface, which allows wallets to connect to 3box in more ways.
- feat: added support for 3ID JSON-RPC Provider
This release contains a feature called Ghost Threads. These threads are not persisted by in any way except in memory between users. Ghost Threads uses ipfs pubsub to send messages between peers, so in addition we have added a websocket signaling server to make peers discover each other easier. Ghost Threads includes a backlog for users that just joined, this is sent by already connected users that have a copy of recent messages.
- feat: added Ghost Threads
- feat: enabled websocket signaling server
- fix: small docs and dependency improvements
-
feat: 3box instance can now be created with an instance of the IdentityWallet
-
feat: smarter data syncing logic
-
feat: support erc1271 address links (your contract wallet can now have a 3Box!)
-
feat: verify link proofs added by the
linkAddress
method -
fix: sync rootstore before resolving promise from openBox
To wait for the data to be fully synced from the network you can now simply await these publicly exposed promises:
await box.syncDone
- for the main data storageawait space.syncDone
- for data in the given space
- feat: add method to get ipfs instance without openBox
- fix: allow multiple tab connections (support)
- fix: ensureConnected consume db adddress, reconnect
- fix: listAddressLinks now returns all links correctly
- fix: linkAddress now sends link to address-server
- fix: Correctly encode DIDs on api calls
- fix: made onSyncDone logic more robust
- fix: solved issue with joining multiple threads
- fix: resolves issue with portis and fortmatic web3 providers
- feat: allow
consentSignature
to be passed as an option toopenBox
- fix: support usage of multiple tabs without data loss
- feat: added ability to link multiple ethereum addresses to a 3Box
- feat: added ability to add a link proof manually
- feat: address links are now stored in the rootstore instead of the public profile
- feat: added getter for DID
- fix: support web3 1.0 providers
- feat: allow joinThread, addModerator, addMember to take both ethereum addresses or DIDs as function argument
- ref: await linkProfile, throw error if not completed
- ref: linkAccount -> linkAdress and isAccountLinked -> isAddressLinked (orignal functions deprecated)
- feat: add support for moderated and members threads
- feat: update to latest orbitdb and ipfs
- feat: add 3ID
Along with support for moderated and members threads, this replaces experimental threads seen in prior releases. Look for API changes to use new version of threads.
Also with the upgrade of OrbitDB, an upgrade of this library is required for everything to continue working as expected. More details here - https://medium.com/3box/3box-js-1-9-soft-fork-upgrade-bcd79bb5f29c
- Fix: Return promise in public set/remove methods of spaces
- Fix: Actually link profile when opening space and haven't used public store (fix bug from v1.8.2)
- Fix: functions in the api module now work without an opts object being passed
- Fix: Link profile when opening space and haven't used public store
- Feat: Add the ability to manually check and add account linking
- Fix: Resolved issue with
getVerifiedAccounts
returning an empty objec
- Feature: Add
setMultiple
method, enables multiple fields to be set at once.
Special thanks to @Schwartz10 for contributing this feature!
- Fix: Don't allow setting values wihtout a 'key'
- Fix: Ensure that linkProfile only happens once
- Fix: Import keys in correct format
- Fix: Throw error on openSpace if user denies consent
- Fix: Return correct timestamp format in metadata
- Docs: Updated documentation for idUtils, and added better general api description
- Feature: Add ability to get metadata for entries
- Feature: Add idUtils helper functions
- Feature: Send along DID when opening db with pinning node
- Fix: Use correct key when subscribing to thread in a space.
- Fix: Add elliptic library to dependencies
- Feature: Experimental support for threads
- Feature: Add support for DIDs in getProfile and getSpace
- Fix: Handle errors in getProfile correctly
- Fix: Better logic for linking profile to ethereum address
- Fix for profiles/stores in Trustwallet, now expected stores will be created and loaded
- Add support for getting public space data
- Add support for listing spaces of a user
- Properly format ETH-RPC calls
- New functions for adding a verified email credential
- Spaces feature, allows dapps to request access to compartments of the users 3Box which only dapps which the user has given explicit permission to can read/write
- 3Box is now able to run completely offline
- Added a more lightweight module for accessing getProfile and related api methods
- Updates to network logic for stability
- Fixes a bug where more entries locally compared to the pinning node would result in onSyncDone not getting called.
- Fixes bug in getVerifiedAccounts to work with earlier accounts #258
- Fix to allow openBox to be called with no options
- Replace bip39 dependency with more lightweight ethers.js dependency
- Removes stale lib files during build
- Modify example to work in additional environments including github pages
- Implemented new "verified" api that checks and verifies various claims
- Reconnects to pinning node if connection is lost
- Disabled local cache iframe because it caused inconsistent behaviour
- Simplified syncing logic
- Fixed bug in getProfile #248
- Local cache using an iframe IPFS and OrbitDB data is now shared between dapps. The data is now stored in an iframe instead of being replicated between each dapp.
- Network cache When syncing public profiles of users a centralized caching service is now used by default. This speeds up the process of getting multiple public profiles at once. This feature can be disabled in favor for the decentralized approach.
- GraphQL queries It's now possible to encode GraphQL queries for public profiles. This allows for queries of only the relevant information of profiles.
- Ethereum address proof The proof that links users ethereum address to their 3Box profile is now stored in their 3Box.
Improve error handling Publish DID in public profile Doc fixes and cleanup
Bug fixes:
- running getProfile in node
- libp2p bootstrap config errors
Added example for getProfile Some bug fixes:
- getProfile can now handle mixed case addresses
- getProfile now connects to the pinning node directly
Fixed dependency bug build
Fixed bug in getProfile
Fixed bug where private data was disappearing after being added.
Change dist name output ThreeBox -> Box to match export name
The first official release of 3box!