Tags: xmtp/libxmtp
Tags
Fix Wasm CI (#2072) ### Fix WebAssembly compilation by removing Send trait bounds from async_trait implementations and worker system components for wasm32 targets Modifies async trait implementations across the worker system to conditionally apply `Send` trait bounds based on target architecture. For `wasm32` targets, uses `async_trait(?Send)` while maintaining standard `async_trait` for other architectures. The changes affect: • [xmtp_mls/src/worker.rs](https://github.com/xmtp/libxmtp/pull/2072/files#diff-ea560e63ca633c03d1189957b9efca26de6aa33294f42c116a574e5bf259ce23) - Creates dual implementations of `WorkerManager` trait, `WorkerRunner` struct, and `Worker` trait with conditional `Send + Sync` bounds • [xmtp_mls/src/groups/device_sync/worker.rs](https://github.com/xmtp/libxmtp/pull/2072/files#diff-0cb027fe20ae820904d14b0c7f33a82233e4b67af67d1cea0335eb0dab01acb0) - Updates `SyncWorker` implementation with conditional async_trait attributes • [xmtp_mls/src/groups/disappearing_messages.rs](https://github.com/xmtp/libxmtp/pull/2072/files#diff-7b806989936f6c78c9b31cbb6418a6c406e935dfad8c62f95749b348252c1172) - Updates `DisappearingMessagesWorker` implementation with conditional async_trait attributes • [xmtp_mls/src/groups/key_package_cleaner_worker.rs](https://github.com/xmtp/libxmtp/pull/2072/files#diff-3c57e0e1268b8794e0e76d48600809acb09cc825be59b6aa212a4e738c3e495f) - Updates `KeyPackagesCleanerWorker` implementation and adds explicit `Send + Sync` bounds to generic type parameters #### 📍Where to Start Start with the `Worker` trait definition in [xmtp_mls/src/worker.rs](https://github.com/xmtp/libxmtp/pull/2072/files#diff-ea560e63ca633c03d1189957b9efca26de6aa33294f42c116a574e5bf259ce23) to understand the conditional compilation approach used throughout the worker system. ---- _[Macroscope](https://app.macroscope.com) summarized 53cf06c._
create big group and send messages xdbg (#2040) ### Create test script that generates 25 identities in a group and sends messages for xdbg testing - Adds new shell script [dev/test/big_group.sh](https://github.com/xmtp/libxmtp/pull/2040/files#diff-0dfe54b6823f1188001eaf16c4c0cc0684ae9ff6ee8c5d7b787d8e1106d134ea) that creates a test environment with 25 identities in a single group and generates 2 test messages in a loop - Modifies `AddExternal` action in [xmtp_debug/src/app/modify.rs](https://github.com/xmtp/libxmtp/pull/2040/files#diff-d814abec27c6856f1129a9a3e4fd9345b9a40b8fe969634290dbd2defa059c7d) to automatically grant Super Admin privileges to externally added members using `update_admin_list` - Changes `fs::File::create_new` to `fs::File::create` in [xmtp_debug/src/app/export.rs](https://github.com/xmtp/libxmtp/pull/2040/files#diff-d1e45300da6f20cb43e390f13f29c7d8a427409cfee19923b5dda03e0183d6b5) to allow overwriting existing export files - Adds `jq` dependency to [nix/libxmtp.nix](https://github.com/xmtp/libxmtp/pull/2040/files#diff-ca0cf30c4358726f1987cd30fd18084603f6d71c6a708e855d8e05f164d68c64) buildInputs for JSON processing support #### 📍Where to Start Start with the main script logic in [dev/test/big_group.sh](https://github.com/xmtp/libxmtp/pull/2040/files#diff-0dfe54b6823f1188001eaf16c4c0cc0684ae9ff6ee8c5d7b787d8e1106d134ea) to understand the test environment creation flow. ---- _[Macroscope](https://app.macroscope.com) summarized cc82e9e._
Simplify workers (#2066) ### Refactor worker system to use closure-based registration and remove generic parameters from Worker trait The worker system has been redesigned to replace the generic type-based approach with a more flexible closure-based registration mechanism. Key changes include: • Worker registration in [builder.rs](https://github.com/xmtp/libxmtp/pull/2066/files#diff-2df8df9acb5405ca5c2dde2487e92ffc9a7daf6be38dd075a2a2d4878cc35ce6) now uses `WorkerRunner::register_new_worker(&client.context, closure)` instead of `WorkerRunner::<WorkerType, MetricType>::register_new_worker(&client)` • The `Worker` trait in [worker.rs](https://github.com/xmtp/libxmtp/pull/2066/files#diff-ea560e63ca633c03d1189957b9efca26de6aa33294f42c116a574e5bf259ce23) removes generic parameters and changes `kind()` from a static method to an instance method • Worker metrics now use `Option<Arc<dyn Any + Send + Sync>>` instead of generic type parameters for dynamic typing • `SyncWorker::new()` in [device_sync/worker.rs](https://github.com/xmtp/libxmtp/pull/2066/files#diff-0cb027fe20ae820904d14b0c7f33a82233e4b67af67d1cea0335eb0dab01acb0) now takes `XmtpMlsLocalContext` reference directly instead of extracting from Client • All worker implementations (`DisappearingMessagesWorker`, `KeyPackagesCleanerWorker`) remove the `init()` method requirement #### 📍Where to Start Start with the `register_new_worker` method in [worker.rs](https://github.com/xmtp/libxmtp/pull/2066/files#diff-ea560e63ca633c03d1189957b9efca26de6aa33294f42c116a574e5bf259ce23) to understand the new closure-based registration mechanism, then examine how it's used in [builder.rs](https://github.com/xmtp/libxmtp/pull/2066/files#diff-2df8df9acb5405ca5c2dde2487e92ffc9a7daf6be38dd075a2a2d4878cc35ce6). ---- _[Macroscope](https://app.macroscope.com) summarized 6e34069._
Device Sync Tweaks (#2053) ### Filter device sync group additions to only include groups active within 90 days and with allowed or unknown consent states in `add_new_installation_to_groups` method The `add_new_installation_to_groups` method in [device_sync.rs](https://github.com/xmtp/libxmtp/pull/2053/files#diff-fe691b22a6268a0ff6ae46b00e693850b30ea7ced6afe483ee9c97602aaddde2) now filters groups based on activity within the last 90 days and consent states of `Allowed` or `Unknown`. The method signature for `create_group_with_inbox_ids` in [client.rs](https://github.com/xmtp/libxmtp/pull/2053/files#diff-3c0189371525b6aae3be7e5a7b5b5682204ef341fb2744fc876148c5ecab8642) changes to accept any type implementing `AsIdRef` trait instead of specifically requiring `InboxId` objects. New test coverage verifies the filtering behavior in [tests.rs](https://github.com/xmtp/libxmtp/pull/2053/files#diff-d875949860660d989ef34c14d3c75b1cc8670b5b98aa12b3c20d1bded65a6f96). #### 📍Where to Start Start with the `add_new_installation_to_groups` method in [device_sync.rs](https://github.com/xmtp/libxmtp/pull/2053/files#diff-fe691b22a6268a0ff6ae46b00e693850b30ea7ced6afe483ee9c97602aaddde2) to understand the new filtering logic for group selection. ---- _[Macroscope](https://app.macroscope.com) summarized 263b18f._
Wasm alloy fix (#2064) ### Replace direct LocalWallet constructor usage with generate_local_wallet helper function in WASM bindings test module The change replaces the direct usage of `LocalWallet::new(&mut rng())` with a `generate_local_wallet()` helper function in the WASM bindings test module. The import statement is updated from `use xmtp_cryptography::utils::{rng, LocalWallet};` to `use xmtp_cryptography::utils::generate_local_wallet;` in [bindings_wasm/src/tests/mod.rs](https://github.com/xmtp/libxmtp/pull/2064/files#diff-b835d89530fceeffa7f5fb97597f27b54bd86cbdc576f88dfeea0e4a07f5c349). #### 📍Where to Start Start with the wallet creation code in the test module at [bindings_wasm/src/tests/mod.rs](https://github.com/xmtp/libxmtp/pull/2064/files#diff-b835d89530fceeffa7f5fb97597f27b54bd86cbdc576f88dfeea0e4a07f5c349). ---- _[Macroscope](https://app.macroscope.com) summarized beafce5._
Fix PRAGMA key or salt has incorrect value when generating groups (#2047 ) ### Fix PRAGMA key or salt has incorrect value when generating groups by adding database lock error handling and centralizing identity locking mechanism The changes address database locking issues during group generation by introducing proper error handling and synchronization mechanisms: • Add `DatabaseLocked` error variant to `PlatformStorageError` enum in [xmtp_db/src/encrypted_store/database/native.rs](https://github.com/xmtp/libxmtp/pull/2047/files#diff-9c5fcd135cb75c60427dc72ce9b51c5b99360469cd932477dfb52e7c3a1e61a1) and mark it as retryable • Modify `EncryptedConnection::validate` method in [xmtp_db/src/encrypted_store/database/native/sqlcipher_connection.rs](https://github.com/xmtp/libxmtp/pull/2047/files#diff-5aafb5776b64881635a9ea8902e418042e23678555b9428c087949cc670810c6) to detect "database is locked" errors and return `DatabaseLocked` instead of `SqlCipherKeyIncorrect` • Create centralized identity locking module in [xmtp_debug/src/app/identity_lock.rs](https://github.com/xmtp/libxmtp/pull/2047/files#diff-1961ca982454d4504d4865361cb8a1146d2bb4cff5048cb38ccdf3b6c51d0189) with `get_identity_lock` function and global `IDENTITY_LOCKS` map • Update group generation in [xmtp_debug/src/app/generate/groups.rs](https://github.com/xmtp/libxmtp/pull/2047/files#diff-1c8a93d4e8378594c3b7f915c003997cdb53d02264698262eb58907e5e7d7261) to acquire identity locks before creating groups • Remove local identity locking implementation from [xmtp_debug/src/app/generate/messages.rs](https://github.com/xmtp/libxmtp/pull/2047/files#diff-eeaf742c78c261e05257950d12daa2ec07c1dfe459a732f2ee1484f184da9371) in favor of centralized module • Modify logger initialization in [xmtp_debug/src/logger.rs](https://github.com/xmtp/libxmtp/pull/2047/files#diff-2f28ac77c46314285c19f032f6f5ff9f5f7a66c1a94c02d3cfcc94d83f341bbd) to prioritize environment variables over verbosity-based configuration
PreviousNext