- (Fix) Fixed invitation URL redemption in Firefox and Chrome (thank you for reporting and testing @tripledoublev!)
This is a feature release adding APIs to automatically discover and sync with peers on the local network.
- (Feature) Added
Peer.discover
, a new method for automatically discovering other peers. How it does that it left to theDiscoveryService
you provide it. - (Feature) Added
DiscoveryLAN
, a discovery service for finding and advertising yourself to other peers on the local network. Works for both Node and Deno, requires--unstable
on Deno.
- (Feature) Added
SharedSettings#redeemInvitationURL
, which adds the share, secret, and servers from an Earthstar invitation URL. - (Feature) Added
createInvitationURL
andparseInvitationURL
utilities for creating and parsing Earthstar invitation URLs. - (Fix)
parseShareAddress
now validates share addresses more strictly so as to ensure their suffix is a pubkey. - (Fix) Deprecate
generateShareAddress
- (Fix) Fixed some issues
ExtensionServerSettings
when ephemeral and non-ephemeral settings for a hosted share existed at the same time. - (Chore) Update
range_reconcile
to 1.0.2, which makes sync slightly more efficient.
- (Fix)
DocDriverSqliteFfi
has been updated to usehttps://deno.land/x/[email protected]
which has compatibility with Deno 1.30.0. This driver uses unstable APIs and will not work with previous versions of Deno. - (Chore) Upgraded range-reconcile to version 1.0.1.
This is a patch release focused on resolving errors encountered during syncing, and making other issues encountered during syncing easier to diagnose.
- (Fix) - Peers will now only initiate a single transfer for many documents with the same attachment, fixing a case which could cause syncing to hang indefinitely.
- (Fix) - Peers will now attempt to download attachments for documents which they already possess prior to syncing but are missing attachments for.
- (Improvement) - Syncer will cancel itself if it does not receive anything from the other peer within a ten second window.
- (Improvement) - Syncer will cancel an attachment transfer if it doesn't receive anything from the other side within a ten second window.
- (Improvement) - Warn in the console when a replica could not ingest an attachment during sync.
- (Improvement) - Better error messages for web syncing failures (e.g. 404, wrong endpoint).
This is a major release which introduces attachments, share keypairs, efficient sync, and much much more. It is our biggest release ever.
As such, this version breaks compatibility with previous versions of Earthstar.
Here are the headline features:
- Attachments. When a new document is written to a Replica you can attach arbitary binary data to it. This can be used for sharing large images, music, video, anything. There is no size limit.
- Shares with granular read / write access. Share addresses are now the public key of a share keypair. The public key grants discovery and read access, the secret key grants write access to the replica.
- Efficient sync. Syncing has been completely overhauled to use a new efficient reconclition mechanism powered by range-reconcile and push-pull-push-multicast trees.
The server APIs have also been moved into this repo.
In addition to new features, many APIs have been tweaked or changed entirely. Please see the API documentation and the README to see what these new API changes are like.
- Moved existing server APIs into the core module, available as
Server
.
- Added
Peer.onReplicasChange
- Added
Peer.onSyncersChange
- Significantly improved the performance of querying documents.
- Replicas now can create documents with attachments with
Replica.set
- Added
Replica.ingestAttachment
- Added
Replica.getAttachment
- Added
Replica.addAttachments
- Added
Replica.wipeDocAtPath
- Added
Replica.getEventStream
- Added
Replica.getQueryStream
- Added
Replica.onEvent
- Added
MultiformatReplica
, a Replica which is able to read, write, and sync documents of different formats. - Added
FormatEs5
, which supports share keypairs and attachments - Added
ReplicaDriverWeb
- Added
ReplicaDriverFs
- Added
RelpicaDriverMemory
- Added
DocDriverSqliteFFI
, which uses an FFI implemetation of Sqlite. Requires the--unstable
flag on Deno. - Updated
syncReplicaAndFsDir
to use attachments for large files. ReplicaCache
now has attachment methods
-
Added
PartnerLocal
, for syncing with local peers. -
Added
PartnerWebServer
, for syncing with servers. -
Added
PartnerWebClient
, for syncing with web clients. -
Removed earthstar_streaming_rpc as a dependency.
-
Removed the
contentLength
options onQueryFilter
. -
Removed
QueryFollower
. UseReplica.getQueryStream
instead. -
queryByTemplateAsync
andqueryByGlobAsync
have had the redundantasync
taken out of their name.
- Added
Crypto.generateShareKeypair
- Added
CryptoDriverSodium
which uses a WASM version of libsodium for very fast operations. This is now the default driver on Deno. - Updated
CryptoDriverNoble
to use a new, faster, audited version.
- Added a new
SharedSettings
class for easily saving and retrieving an author keypair, shares and secrets, and favourite servers. - Added parseAuthorOrShareAddress
- Added a new minified web bundle, available from https://cdn.earthstar-project.org/js/earthstar.web.v10.0.0.js
- Added ARCHITECTURE.md
- Added CONTRIBUTING.md
- Added CODE_OF_CONDUCT.md
- Fix: Removed the crayon dependency, fixing a broken dependency issue in 9.3.2
- Updated earthstar_streaming_rcp to v5.0.1
- Updated earthstar_streaming_rcp to v5.0.0
- Feature: Replica will now permanently delete all expired documents on instantiation, and delete expired docs every hour thereafter. Previously it would only stop returning expired docs in user queries.
- Feature: Added
Replica.queryAuthors
andReplica.queryPaths
, which returns an array of (unique) authors of paths from the docs resulting from that query.
- Feature: Added
generateShareAddress
utility to generate valid, safe share addresses. - Feature: Updated filesystem sync so that deleted (not just modified) files can
be overwritten using the
overwriteFilesAtOwnedPaths
option.
- Feature: Added 'overwriteFilesAtOwnedPaths' option to SyncFsOptions. This will forcibly overwrite any files at paths owned by other identities with ones from the replica.
- Added a
pulled
property to syncer statuses. - Fixed an issue where SyncCoordinators would pull twice as much as they needed to.
- Breaking: Syncing has been updated so that peers inform each other when they are caught up. v7 - v8 peers will not be able to sync with each other.
- Patch: Addressed an issue affecting synchronisation with HTTP peers.
- Feature: Peer.syncUntilCaughtUp. Syncs with targets until both sides of the synchronisation have nothing left to pull from each other.
- Patch: SyncCoordinator will now request 10 docs at a time instead of everything a peer has.
- Feature: Peer.syncStatuses. Subscribable map of Peer's sync operations' statuses.
- Feature: Syncer.syncStatuses. Subscribable map of syncer's connections' sync statuses.
- Feature: SyncCoordinator.syncStatuses. Subscribable map of coordinator's shares' sync statuses, with number of ingested docs and 'caught up' status of each syncing session.
- Patch: Common shares between peers are re-established whenever a Peer's set of replicas chages.
- Patch: Improved the heuristic
syncReplicaAndFsDir
uses to determine whether a file has changed or not, fixing issues where files at owned paths which had not been changed would cause the function to throw.
- Patch: Made
syncReplicaAndFsDir
ignore.DS_Store
files. - Patch: Improve how
syncReplicaAndFsDir
determines the latest version of a document, fixing an issue with 'zombie' files which would return after deletion.
- Feature: Added a new export,
syncReplicaAndFsDir
, which bidirectionally syncs the contents of a replica and filesystem directory. - Patch: Replica drivers will now validate share addresses which have been passed to them.
- Patch: ReplicaDriverSqlite (Deno and Node) now initialise their maxLocalIndex correctly, fixing issues where new documents could not be created.
- Patch: ReplicaDriverSqlite (Deno) now no longer fails when using the
create
mode. - Patch: SyncCoordinator now requests all document history from other peers.