mirror of https://github.com/waku-org/js-waku.git
12 KiB
12 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Changed
- Upgrade libp2p libraries: @chainsafe/libp2p-noise@4.1.1, libp2p@0.32.4, libp2p-gossipsub@0.11.1.
- Connects to a limited number of bootstrap nodes, defaults to 1.
0.12.0 - 2021-09-2
Added
- Examples (eth-pm): Encrypt Public Key Messages using symmetric encryption.
- Guides: Encrypt messages using Waku Message Version 1.
- Allow passing decryption keys in hex string format.
- Allow passing decryption keys to
WakuStore
instance to avoid having to pass them at everyqueryHistory
call. - Allow passing decryption keys to
Waku
instance to avoid having to pass them to bothWakuRelay
andWakuStore
. Waku.waitForConnectedPeer
helper to ensure that we are connected to Waku peers when using the bootstrap option.
Changed
- Breaking: Moved
startTime
andendTime
for history queries to atimeFilter
property as both or neither must be passed; passing only one parameter is not supported. - Renamed and promote the usage of
generateSymmetricKey()
to generate random symmetric keys. - Improved errors thrown by
WakuStore.queryHistory
.
Fixed
- Buffer concat error when using symmetric encryption in the browser.
0.11.0 - 2021-08-20
Added
- Examples: New Ethereum Private Message Using Wallet Encryption Web App
example that demonstrates the usage of
eth_encrypt
API (available on Metamask) and EIP-712 for typed structured data signing. - New
bootstrap
option forWaku.create
to easily connect to Waku nodes upon start up. - Support for
startTime
andendTime
in Store queries to filter by time window as per 21/WAKU2-FTSTORE.
Changed
- Renamed
discover.getStatusFleetNodes
todiscovery.getBootstrapNodes
; Changed the API to allow retrieval of bootstrap nodes from other sources. - Examples: Renamed
eth-dm
toeth-pm
; "Direct Message" can lead to confusion with "Direct Connection" that refers to low latency network connections. - Examples (eth-pm): Use sign typed data EIP-712 instead of personal sign.
- Upgraded dependencies to remove warning at installation.
- Breaking: Moved
DefaultPubSubTopic
towaku.ts
and fixed the casing. - Breaking: Rename all
pubsubTopic
occurrences topubSubTopic
, across all interfaces.
Removed
- Examples (cli-chat): The focus of this library is Web environment; Several examples now cover usage of Waku Relay and Waku Store making cli-chat example obsolete; web-chat POC should be preferred to use the TOY-CHAT protocol.
ChatMessage
has been moved from js-waku to web-chat example; it is a type used for the TOY-CHAT protocol; js-waku users should not build on top if this toy protocol and instead design message data structures appropriate to their use case.- Unused dependencies & scripts.
0.10.0 - 2021-08-06
Added
- Relay and ReactJS guides and examples (#56).
Changed
- Breaking: The
WakuMessage
APIs have been changed to movecontentTopic
out of the optional parameters. - Breaking: Move
contentTopics
out theWakuStore.queryHistory
's optional parameters. - Breaking:
WakuStore.queryHistory
throws when encountering an error instead of returning anull
value.
Removed
- Examples (web-chat): Remove broken
/fleet
command. - Breaking: Removed
DefaultContentTopic
as developers must choose a content topic for their app; recommendations for content topic can be found at https://rfc.vac.dev/spec/23/.
Fixed
WakuMessage.payloadAsUtf8
returning garbage on utf-8 non-ascii characters.ChatMessage.payloadAsUtf8
returning garbage on utf-8 non-ascii characters.
0.9.0 - 2021-07-26
Changed
- Breaking: Store Response Protobuf changed to align with nim-waku v0.5 (nim-waku#676).
0.8.1 - 2021-07-16
Added
- Examples (web-chat): New
/fleet
command to switch connection between Status prod and test fleets. - Export
generatePrivateKey
andgetPublicKey
directly from the root. - Usage of the encryption and signature APIs to the readme.
- Support multiple protocol ids for Waku Relay, allowing interoperability with nim-waku v0.4 and latest master (#238).
Changed
- Breaking: Renamed
WakuRelay.(add|delete)PrivateDecryptionKey
toWakuRelay.(add|delete)DecryptionKey
to make it clearer that it accepts both symmetric keys and asymmetric private keys. - Upgrade libp2p to 0.32.0.
- Breaking: Rename
keepAlive
option topingKeepAlive
. - Introduced new
relayKeepAlive
option onWaku
with a default to 59s to send ping messages over relay to ensure the relay stream stays open. This is a workaround until js-libp2p#744 is done as there are issues when TCP(?) timeouts and the stream gets closed (#185, js-libp2p#939)
Fixed
- Align
WakuMessage
readme example with actual code behaviour. - Remove infinite loop when an error with Waku Store is encountered.
0.8.0 - 2021-07-15
Added
WakuRelay.deleteObserver
to allow removal of observers, useful when a React component add observers when mounting and needs to delete it when unmounting.- Keep alive feature that pings host regularly, reducing the chance of connections being dropped due to idle.
Can be disabled or default frequency (10s) can be changed when calling
Waku.create
. - New
lib/utils
module for easy, dependency-less hex/bytes conversions. - New
peers
andrandomPeer
methods onWakuStore
andWakuLightPush
to have a better idea of available peers; Note that it does not check whether Waku node is currently connected to said peers. - Enable passing decryption private keys to
WakuStore.queryHistory
. - Test: Introduce testing in browser environment (Chrome) using Karma.
- Add support for Waku Message version 1: Asymmetric encryption, symmetric encryption, and signature of the data.
Changed
- Breaking: Auto select peer if none provided for store and light push protocols.
- Upgrade to
libp2p@0.31.7
andlibp2p-gossipsub@0.10.0
to avoidTextEncoder
errors in ReactJS tests. - Disable keep alive by default as latest nim-waku release does not support ping protocol.
- Breaking: Optional parameters for
WakuMessage.fromBytes
andWakuMessage.fromUtf8String
are now passed in a singleOptions
object. - Breaking:
WakuMessage
static functions are now async to allow for encryption and decryption. - Breaking:
WakuMessage
constructor is now private,from*
anddecode*
function should be used. WakuMessage
version 1 is partially supported, enabling asymmetrical encryption and signature of messages; this can be done by passing keys toWakuMessage.from*
andWakuMessage.decode*
methods.- Examples (eth-dm): Use Waku Message version 1 encryption scheme instead of
eth-crypto
. - Examples (eth-dm): Use Protobuf for direct messages instead of JSON (#214).
Fixed
- Disable
keepAlive
if set to0
.
0.7.0 - 2021-06-15
Changed
- Test: Upgrade nim-waku node to v0.4.
- Waku Light Push upgraded to
2.0.0-beta1
. - Examples (web chat): Catch error if chat message decoding fails.
- Examples (web chat): Do not send message if shift/alt/ctrl is pressed, enabling multiline messages.
0.6.0 - 2021-06-09
Changed
- Breaking: Websocket protocol is not automatically added anymore if the user specifies a protocol in
libp2p.modules
when usingWaku.create
. - Breaking: Options passed to
Waku.create
used to be passed toLibp2p.create
; Now, only thelibp2p
property is passed toLibp2p.create
, allowing for a cleaner interface. - Examples (cli chat): Use tcp protocol instead of websocket.
Added
- Enable access to
WakuMessage.timestamp
. - Examples (web chat): Use
WakuMessage.timestamp
as unique key for list items. - Doc: Link to new topic guidelines in README.
- Doc: Link to Waku v2 Toy Chat specs in README.
- Examples (web chat): Persist nick.
- Support for custom PubSub Topics to
Waku
,WakuRelay
,WakuStore
andWakuLightPush
; Passing a PubSub Topic is optional and still defaults to/waku/2/default-waku/proto
; JS-Waku currently supports one, and only, PubSub topic per instance.
0.5.0 - 2021-05-21
Added
- Implement Waku v2 Light Push protocol.
- Expose
Direction
enum from js-waku root (it was only accessible via the proto module). - Examples (cli chat): Use light push to send messages if
--lightPush
is passed. - Examples (cli chat): Print usage if
--help
is passed.
0.4.0 - 2021-05-18
Added
callback
argument toWakuStore.queryHistory()
, called as messages are retrieved ; Messages are retrieved using pagination, and it may take some time to retrieve all messages, with thecallback
function, messages are processed as soon as they are received.
Changed
- Testing: Upgrade nim-waku node to v0.3.
- Breaking: Modify
WakuStore.queryHistory()
to accept oneObject
instead of multiple individual arguments. getStatusFleetNodes
return prod nodes by default, instead of test nodes.- Examples (web chat): Connect to prod fleet by default, test fleet for local development.
- Examples (cli chat): Connect to test fleet by default, use
--prod
to connect to prod fleet.
Fixed
- Expose
Enviroment
andProtocol
enums to pass togetStatusFleetNodes
.
0.3.0 - 2021-05-15
Added
getStatusFleetNodes
to connect to Status' nim-waku nodes.
Changed
- Clarify content topic format in README.md.
Removed
- Unused dependencies.
0.2.0 - 2021-05-14
Added
WakuRelay.getPeers
method.- Use
WakuRelay.getPeers
in web chat app example to disable send button.
Changed
- Enable passing
string
s toaddPeerToAddressBook
. - Use
addPeerToAddressBook
in examples and usage doc. - Settle on
js-waku
name across the board. - Breaking:
RelayDefaultTopic
renamed toDefaultPubsubTopic
.
0.1.0 - 2021-05-12
Added
- Add usage section to the README.
- Support of Waku v2 Relay.
- Support of Waku v2 Store.
- Node Chat App example.
- ReactJS Chat App example.
- Typedoc Documentation.