mirror of
https://github.com/logos-messaging/js-waku.git
synced 2026-01-03 22:33:07 +00:00
"Direct Message" can lead to confusion with "Direct Connection" that refers to low latency network connections.
10 KiB
10 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
Added
- New
bootstrapoption forWaku.createto easily connect to Waku nodes upon start up.
Changed
- Renamed
discover.getStatusFleetNodestodiscovery.getBootstrapNodes; Changed the API to allow retrieval of bootstrap nodes from other sources. - Examples: Renamed
eth-dmtoeth-pm: "Direct Message" can lead to confusion with "Direct Connection" that refers to low latency network connections.
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.
ChatMessagehas 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.
Added
- Examples: New Ethereum Private Message Using Wallet Encryption Web App
example that demonstrates the usage of
eth_encryptAPI (available on Metamask) and EIP-712 for typed structured data signing.
0.10.0 - 2021-08-06
Added
- Relay and ReactJS guides and examples (#56).
Changed
- Breaking: The
WakuMessageAPIs have been changed to movecontentTopicout of the optional parameters. - Breaking: Move
contentTopicsout theWakuStore.queryHistory's optional parameters. - Breaking:
WakuStore.queryHistorythrows when encountering an error instead of returning anullvalue.
Removed
- Examples (web-chat): Remove broken
/fleetcommand. - Breaking: Removed
DefaultContentTopicas 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.payloadAsUtf8returning garbage on utf-8 non-ascii characters.ChatMessage.payloadAsUtf8returning 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
/fleetcommand to switch connection between Status prod and test fleets. - Export
generatePrivateKeyandgetPublicKeydirectly 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)PrivateDecryptionKeytoWakuRelay.(add|delete)DecryptionKeyto make it clearer that it accepts both symmetric keys and asymmetric private keys. - Upgrade libp2p to 0.32.0.
- Breaking: Rename
keepAliveoption topingKeepAlive. - Introduced new
relayKeepAliveoption onWakuwith 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
WakuMessagereadme example with actual code behaviour. - Remove infinite loop when an error with Waku Store is encountered.
0.8.0 - 2021-07-15
Added
WakuRelay.deleteObserverto 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/utilsmodule for easy, dependency-less hex/bytes conversions. - New
peersandrandomPeermethods onWakuStoreandWakuLightPushto 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.7andlibp2p-gossipsub@0.10.0to avoidTextEncodererrors in ReactJS tests. - Disable keep alive by default as latest nim-waku release does not support ping protocol.
- Breaking: Optional parameters for
WakuMessage.fromBytesandWakuMessage.fromUtf8Stringare now passed in a singleOptionsobject. - Breaking:
WakuMessagestatic functions are now async to allow for encryption and decryption. - Breaking:
WakuMessageconstructor is now private,from*anddecode*function should be used. WakuMessageversion 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
keepAliveif 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.moduleswhen usingWaku.create. - Breaking: Options passed to
Waku.createused to be passed toLibp2p.create; Now, only thelibp2pproperty 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.timestampas 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,WakuStoreandWakuLightPush; 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
Directionenum from js-waku root (it was only accessible via the proto module). - Examples (cli chat): Use light push to send messages if
--lightPushis passed. - Examples (cli chat): Print usage if
--helpis passed.
0.4.0 - 2021-05-18
Added
callbackargument toWakuStore.queryHistory(), called as messages are retrieved ; Messages are retrieved using pagination, and it may take some time to retrieve all messages, with thecallbackfunction, messages are processed as soon as they are received.
Changed
- Testing: Upgrade nim-waku node to v0.3.
- Breaking: Modify
WakuStore.queryHistory()to accept oneObjectinstead of multiple individual arguments. getStatusFleetNodesreturn 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
--prodto connect to prod fleet.
Fixed
- Expose
EnviromentandProtocolenums to pass togetStatusFleetNodes.
0.3.0 - 2021-05-15
Added
getStatusFleetNodesto 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.getPeersmethod.- Use
WakuRelay.getPeersin web chat app example to disable send button.
Changed
- Enable passing
strings toaddPeerToAddressBook. - Use
addPeerToAddressBookin examples and usage doc. - Settle on
js-wakuname across the board. - Breaking:
RelayDefaultTopicrenamed 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.