3191 Commits

Author SHA1 Message Date
Sasha
b1cd04bcb1
Merge 974fb21f0b7ea45d74c87644947e61ac20344372 into 0ca94f3c8beda0fba2962c3daae17b3ec689ae49 2026-02-14 00:41:19 +01:00
Igor Sirotin
0ca94f3c8b
chore: update license files to comply with Logos licensing requirements (#2780) 2026-02-05 13:21:38 +00:00
Sasha
c8667058a6
fix: test dependencies (#2779)
* fix: test dependencies

* up

* up lock
2026-02-04 09:49:09 +01:00
Sasha
d4c6c9970d
chore: release master (#2735) discovery-v0.0.14 relay-v0.0.24 run-v0.0.3 enr-v0.0.34 react-v0.0.9 sdk-v0.0.37 core-v0.0.41 interfaces-v0.0.35 sds-v0.0.9 message-encryption-v0.0.39 utils-v0.0.28 rln-v0.1.11 2026-01-19 09:16:02 +01:00
isit666
7816642fae
feat: add dialTimeout, change dialingQueue to Map (#2773) 2026-01-16 21:22:17 +01:00
Sasha
74ad13ba24
chore: rename repo to comply with logos (#2757)
* chore: rename repo to comply with logos

* up script

* up allure

* fix logos-messaging-allure-js name

* fix logos-messaging-allure-js name

* fix logos-messaging-allure-js name
2026-01-05 23:53:38 +01:00
Fabiana Cecin
9a1e9cecc5
fix: peer cache test failure (#2770)
* fix peer cache test

* simplify test fix

---------

Co-authored-by: Arseniy Klempner <arseniyk@status.im>
2025-12-23 16:51:15 -08:00
Danish Arora
ab237410f9
chore: enable relay when lightpush is used (#2762) 2025-12-23 16:24:36 -08:00
Arseniy Klempner
f2ad23ad43
feat(rln)!: generate contract types, migrate from ethers to viem (#2705)
* feat: use wagmi to generate contract types

* feat: migrate rln from ethers to viem

* fix: remove .gitmodules

* fix: update readme

* fix: refactor to use a single viem client object

* fix: update comments, tsconfig

* feat: remove membership event tracking

* fix: script name in package.json and readme

* fix: only allow linea sepolia

* fix: consolidate viem types, typed window

* fix: use viem to infer type of decoded event

* fix: use js for generate abi script

* feat: generate abi and build rln package as release condition

* fix: check that eth_requestAccounts returns an array

* fix: handle error messages

* fix: use https instead of git for cloning in script

* fix: add warning annotations for contract typings check

* fix: install deps for rln package before building

* fix: use pnpm when installing rln contracts

* fix: use workspace flag to run abi script

* fix: add ref to checkout action

* fix: include pnpm in ci
2025-12-01 17:32:35 -08:00
Hanno Cornelius
788f7e62c5
feat: incorporate sds-r into reliable channels (#2701)
* wip

* feat: integrate sds-r with message channels

* fix: fix implementation guide, remove unrelated claude file

* feat: integrate sds-r within reliable channels SDK

* fix: fix import, export

* fix: fix build errors, simplify parallel operation

* fix: sigh. this file has 9 lives

* fix: simplify more

* fix: disable repair if not part of retrieval strategy

* fix: remove dead code, simplify

* fix: improve repair loop

Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>

* chore: make retrievalStrategy mandatory argument

* chore: add repair multiplier, safer checks

---------

Co-authored-by: fryorcraken <commits@fryorcraken.xyz>
Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>
2025-11-21 15:03:48 +00:00
fryorcraken
e5f51d7df1
feat: Reliable Channel: Status Sync, overflow protection, stop TODOs (#2729)
* feat(sds): messages with lost deps are delivered

This is to re-enable participation in the SDS protocol. Meaning the
received message with missing dependencies becomes part of the causal
history, re-enabling acknowledgements.

* fix(sds): avoid overflow in message history storage

* feat(reliable-channel): Emit a "Synced" Status with message counts

Return a "synced" or "syncing" status on `ReliableChannel.status` that
let the developer know whether messages are missing, and if so, how many.

* fix: clean up subscriptions, intervals and timeouts when stopping

# Conflicts:
#	packages/sdk/src/reliable_channel/reliable_channel.ts

* chore: extract random timeout

* fix rebase

* revert listener changes

* typo

* Ensuring no inconsistency on missing message

* test: streamline, stop channels

* clear sync status sets when stopping channel

* prevent sync status event spam

* test: improve naming

* try/catch for callback

* encapsulate/simplify reliable channel API

* sanity checks

* test: ensure sync status cleanup
2025-11-16 08:57:12 +11:00
fryorcraken
84a6ea69cf
fix: cleanup routines on reliable channel and core protocols (#2733)
* fix: add stop methods to protocols to prevent event listener leaks

* fix: add abort signal support for graceful store query cancellation

* fix: call protocol stop methods in WakuNode.stop()

* fix: improve QueryOnConnect cleanup and abort signal handling

* fix: improve MissingMessageRetriever cleanup with abort signal

* fix: add stopAllRetries method to RetryManager for proper cleanup

* fix: implement comprehensive ReliableChannel stop() with proper cleanup

* fix: add active query tracking to QueryOnConnect and await its stop()

* fix: add stop() to IRelayAPI and IStore interfaces, implement in SDK wrappers

* align with usual naming (isStarted)

* remove unnecessary `await`

* test: `stop()` is now async

* chore: use more concise syntax

---------

Co-authored-by: Levente Kiss <levente.kiss@solarpunk.buzz>
2025-11-13 12:32:15 +11:00
049e564e89
ci: add missing jenkins lib 2025-11-06 18:02:33 +01:00
Sasha
101ffe8a04
chore: release master (#2663) message-encryption-v0.0.38 proto-v0.0.15 sds-v0.0.8 core-v0.0.40 react-v0.0.8 relay-v0.0.23 discovery-v0.0.13 rln-v0.1.10 sdk-v0.0.36 run-v0.0.2 2025-11-04 15:56:42 +01:00
Hanno Cornelius
5334a7fcc9
feat: add SDS-Repair (SDS-R) to the SDS implementation (#2698)
* wip

* feat: integrate sds-r with message channels

* feat: add SDS-R events

* fix: fixed buffer handling incoming and outgoing

* fix: more buffer fixes

* fix: remove some magic numbers

* fix: buffer optimisation, backwards compatible senderId

* fix: fix implementation guide, remove unrelated claude file

* fix: further buffer optimisations

* fix: linting errors

* fix: suggestions from code review

Co-authored-by: Sasha <118575614+weboko@users.noreply.github.com>
Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>

* fix: remove implementation guide

* fix: build errors, remove override, improve buffer

* fix: consistent use of MessageId and ParticipantId

* fix: switch to conditionally constructed from conditionally executed

---------

Co-authored-by: fryorcraken <commits@fryorcraken.xyz>
Co-authored-by: Sasha <118575614+weboko@users.noreply.github.com>
Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>
2025-10-28 10:27:06 +00:00
Arseniy Klempner
115cdd28fe
chore: update hardcoded version of nwaku to 0.36.0, remove unused ci job (#2710)
* fix: update hardcoded version of nwaku to 0.36.0

* fix: remove unused/outdated rln-sync-tree job
2025-10-27 17:02:48 -07:00
Arseniy Klempner
0daa81d3d7
fix: run npm audit fix (#2696)
* fix: run npm audit fix

* fix: bump playwright image in CI
2025-10-27 13:47:14 -07:00
e2c9364053
ci: move it to a container
Add nix flake and use it in the pipeline for reliability and reproducability.

Referenced issue:
* https://github.com/status-im/infra-ci/issues/188
2025-10-23 12:53:04 +02:00
Arseniy Klempner
0df18b2a75
feat: create @waku/run package for local dev env (#2678)
* feat: create @waku/run package for local dev env

* chore: add @waku/run to release please config

* feat: test @waku/run with playwright

* fix: don't run waku/run tests in CI

* fix: cache images so docker-compose can work offline

* feat: set nodekey and staticnode flags for each nwaku node

* fix: use constants for node ids

* chore: set directories for running via npx

* fix: remove .env, support env vars for nwaku ports

* fix: use separate db (same instance) for each node

* feat: add command to test dev env

* chore: use package version in container name

* fix: replace hardcoded WS/REST ports with constants/env vars

* chore: clean up README

* fix: refactor config printing into own function

* fix: add run package to release please manifest

* fix: defer to root folder gitignore/cspell

* fix: update node version and remove tsx

* fix: remove browser tests and express dep

* fix: replace magic values with constants

* fix: move to root .gitignore

* fix: move cspell to root
2025-10-22 21:38:28 -07:00
Sasha
ff9c43038e
chore: use npm token (#2693) 2025-10-22 14:26:13 +02:00
fryorcraken
b8a9d132c1
chore: npm publication (#2688)
* chore: npm publication

Fixing npm publication and warnings

* Upgrade workflow to use trusted publishing

https://docs.npmjs.com/trusted-publishers

* bump node js to 24

To avoid having to reinstall npm in pre-release for npmjs trusted publishers
2025-10-21 16:35:01 +11:00
Sasha
37c6c1e529
chore: expose sdk from waku/react (#2676) 2025-10-09 00:38:54 +02:00
Sasha
974fb21f0b
fix start 2025-10-08 23:41:53 +02:00
Sasha
e39c6c94bf
address review 2025-10-08 23:40:49 +02:00
Sasha
de70791e41
Merge branch 'master' of github.com:waku-org/js-waku into weboko/send-api 2025-10-08 23:20:10 +02:00
Sasha
ad0bed69ba
feat: add waku/react package and make it compatible with React frameworks (#2656)
* chore: add waku/react package

* fix check

* remove not needed logic from waku/react package

* make it compatible with expo/next

* add to release please

* remove tests
2025-10-08 15:37:49 +02:00
Sasha
969330d5cb
add unit tests 2025-10-08 00:29:59 +02:00
Sasha
82be279331
Merge branch 'master' of github.com:waku-org/js-waku into weboko/send-api 2025-10-07 22:08:11 +02:00
Arseniy Klempner
d803565b30
feat(browser-tests): simplify, refactor, update dockerized browser node (#2623)
* feat(browser-tests): simplify, refactor, update dockerized browser node

* Update packages/browser-tests/web/index.ts

* fix: remove comments and console.logs from tests

* fix: add temporary logging

* fix: debugging static sharding

* fix: replace console with logger

* fix: remove use of any

* fix: log dial error

* fix: replace any with libp2p options

* fix: remove unused logic around sourcing address.env

* fix: uncomment log

* fix: add more logging and fix tests

* feat: add types for test-config

* fix: add types to server.ts

* fix: remove more uses of any

* fix: remove use of any in endpoint handlers
2025-10-07 10:54:19 -07:00
Sasha
80cef4bc2a
remove Codec, update types 2025-10-07 00:16:38 +02:00
Sasha
62b43f061a
merge with master 2025-10-07 00:03:56 +02:00
Sasha
da11478193
implement working version of sendind 2025-10-07 00:00:27 +02:00
Sasha
7f98bb183d
move from encoder/decoder/codec to simple message parameter 2025-10-02 19:39:30 +02:00
Sasha
43851045cb
implement acks and message hash saving for sent messages 2025-10-02 18:53:21 +02:00
fryorcraken
e92f6a2409
feat!: do not send sync messages with empty history (#2658)
* feat!: do not send sync messages with empty history

A sync message without any history as no value. If there are no messages in the channel, then a sync messages does not help.

If there are messages in the channel, but this participant is not aware of them, then it can confuse other participants to assume that the channel is empty.

* fix test by adding a message to channel history

* make `pushOutgoingSyncMessage` return true even if no callback passed
2025-10-02 15:17:10 +10:00
fryorcraken
c0ecb6abba
fix!: SDS lamport timestamp overflow and keep it to current time (#2664)
* fix!: avoid SDS lamport timestamp overflow

The SDS timestamp is initialized to the current time in milliseconds, which is a 13 digits value (e.g. 1,759,223,090,052).

The maximum value for int32 is 2,147,483,647 (10 digits), which is clearly less than the timestamp.
Maximum value for uint32 is 4,294,967,295 (10 digits), which does not help with ms timestamp.

uint64 is BigInt in JavaScript, so best to be avoided unless strictly necessary as it creates complexity.
max uint64 is 18,446,744,073,709,551,615 (20 digits).

Using seconds instead of milliseconds would enable usage of uint32 valid until the year 2106.

The lamport timestamp is only initialized to current time for a new channel. The only scenario is when a user comes in a channel, and thinks it's new (did not get previous messages), and then starts sending messages. Meaning that there may be an initial timestamp conflict until the logs are consolidated, which is already handled by the protocol.

* change lamportTimestamp to uint64 in protobuf

* lamport timestamp remains close to current time
2025-10-02 09:07:10 +10:00
fryorcraken
593bc45225
feat: reliable channels search up to 30 days to find message (#2657)
* feat: query on connect stops on predicate

* test: query on connect stops at predicate

* feat: reliable channels search up to 30 days to find message

Queries stop once a valid sync or content message is found in the channel.

* fix: protect against decoding exceptions

* stop range queries on messages with a causal history
2025-10-01 21:35:52 +10:00
Arseniy Klempner
bbcfc94879
feat(rln)!: use zerokit for credential generation (#2632)
Co-authored-by: Danish Arora <danisharora099@gmail.com>
2025-09-30 16:49:18 -07:00
Sasha
7c67abec1e
implement and fix queuing mechanics of message store 2025-10-01 01:16:15 +02:00
Sasha
016a25d578
chore: stop updating TTL for peer store (#2653) 2025-10-01 00:33:26 +02:00
Sasha
ad675d8174
implement send on waku 2025-09-30 00:12:43 +02:00
Sasha
9e7719e519
add ICodec 2025-09-29 23:01:43 +02:00
Sasha
0c852e4201
add utils, fix typings 2025-09-29 22:40:53 +02:00
Sasha
998c2a1836
Merge branch 'master' of github.com:waku-org/js-waku into weboko/send-api 2025-09-29 22:36:11 +02:00
Sasha
37ee490114
implement background send, requestID 2025-09-26 01:34:37 +02:00
Sasha
4fe8bfdd88
implement main ack manager, improve message store, implement Sender entity 2025-09-25 01:32:12 +02:00
Sasha
3de906a78a
implement basic entites and structure, decouple into separate files 2025-09-25 00:53:29 +02:00
Sasha
79dd001b1f
chore: release master (#2576) sdk-v0.0.35 utils-v0.0.27 rln-v0.1.9 enr-v0.0.33 discovery-v0.0.12 relay-v0.0.22 interfaces-v0.0.34 sds-v0.0.7 core-v0.0.39 message-encryption-v0.0.37 proto-v0.0.14 2025-09-20 11:37:22 +02:00
Sasha
11d84ad342
feat: implement peer-store re-bootstrapping (#2641)
* implement peer-store re-bootstrapping

* add peer cache support

* implement TTL update for open connections, add re-bootstrapping in case reaches zero peers

* fix query tests, skip missing message retrival

* up tests

* up sds tests

* skip

* skip
2025-09-20 09:40:51 +02:00
fryorcraken
cb3af8cd4d
fix(sds): initialize lamport timestamp with current time (#2610) 2025-09-11 18:06:54 +10:00