* start to update ui
* remove websocket ui
* refactor code after ws removing
* update frontend
* Unable real consensus result
* update proposal ui
* add current pending proposal to ui section
* Refactor UI and backend for ban request feature
- Updated `build.rs` to ensure proper protobuf compilation.
- Removed `tracing-subscriber` dependency from `Cargo.toml` and `Cargo.lock`.
- Refactored `main.rs` in the desktop UI to improve state management and UI interactions for group chat.
- Enhanced `Gateway` and `User` structs to support sending ban requests and processing related events.
- Updated UI components to reflect changes in proposal handling and improve user experience during voting and group management.
- Added tests for new functionality and improved error handling across modules.
* Add mls_crypto integration and group member management features
- Introduced `mls_crypto` as a dependency for wallet address normalization.
- Enhanced the desktop UI to support group member management, including requesting user bans.
- Implemented new commands and events in the `Gateway` and `User` structs for retrieving group members and processing ban requests.
- Updated the `User` struct to include methods for fetching group members and validating wallet addresses.
- Refactored various components to improve state management and UI interactions related to group chat and member actions.
- Added error handling for invalid wallet addresses and improved overall user experience in group management features.
* Replace Apache License with a new version and add MIT License; update README to reflect new licensing information and enhance user module documentation. Refactor user module to improve group management, consensus handling, and messaging features, including ban request processing and proposal management.
* Update dependencies and refactor package names for consistency
* update ci
* update ci
* - Added `mls_crypto` as a dependency for wallet address normalization.
- Introduced a new CSS file for styling the desktop UI, improving overall aesthetics and user experience.
- Enhanced the `User` and `Gateway` structs to support group member management, including ban requests and proposal handling.
- Implemented new commands and events for retrieving group members and processing ban requests.
- Refactored various components to improve state management and UI interactions related to group chat and member actions.
- Updated the `Cargo.toml` and `Cargo.lock` files to reflect new dependencies and configurations.
- Added new profiles for development builds targeting WebAssembly, server, and Android environments.
* chore: implement consensus mechanism
- Updated `Cargo.lock`
- Refactored `Cargo.toml`
- Enhanced `action_handlers.rs` to introduce a ban request feature, allowing users to send ban requests through Waku.
- Implemented a new consensus module to manage proposal and voting processes, including state transitions for steward epochs.
- Updated error handling in `error.rs` to accommodate new consensus-related errors.
- Refactored `group.rs` and `user_actor.rs` to integrate the new consensus logic and improve state management.
- Added tests for the consensus mechanism to ensure reliability and correctness of the voting process.
* chore: update dependencies and refactor code for clarity
* refactor: update voting mechanism and clean up user actor logic
- Changed the return type of `complete_voting_for_steward` to return a vector of messages instead of a boolean.
- Removed unused request types and their implementations related to proposal handling.
- Updated the `handle_steward_flow_per_epoch` function to reflect changes in the voting process and improved logging.
- Refactored tests to align with the new voting mechanism and ensure proper message handling.
- Enhanced consensus logic to better handle vote counting and state transitions.
* feat: implement real voting for all users
- Improved logging messages for clarity during WebSocket message handling.
- Added new serverless functions and shims for better integration with the frontend.
- Introduced new manifest files for server configuration and routing.
- Implemented initial setup for handling user votes and proposals in the consensus mechanism.
- Updated error handling to accommodate new user vote actions and related messages.
* consensus: update test
* Enhance steward state management and consensus mechanism
- Added detailed documentation in README for steward state management, including state definitions, transitions, and flow scenarios.
- Updated `WakuNode` connection logic to include a timeout for peer connections.
- Refactored message handling in `action_handlers.rs` to utilize new `AppMessage` structures for improved clarity.
- Enhanced error handling in `error.rs` to cover new scenarios related to consensus and state transitions.
- Updated tests to reflect changes in the consensus mechanism and steward flow, ensuring robustness and reliability.
- Improved state machine logic to handle edge cases and guarantee proper state transitions during steward epochs.
* Refactor
- Updated `WakuMessageToSend` constructor to accept a slice for `app_id`, improving memory efficiency.
- Enhanced error handling in `Group` struct to provide more descriptive error messages for invalid states.
- Added detailed documentation for new methods in `Group` and `User` structs, clarifying their functionality and usage.
- Refactored state machine logic to ensure proper transitions during steward epochs and voting processes.
- Improved test coverage for group state management and message processing, ensuring robustness in various scenarios.
* Update README for improved clarity and formatting
* fix: fix lint issues and updates test flow
* test: update user test
* ci: optimize performance with better caching and parallel execution
* ci: hybrid pipeline with strategic build->test sequencing
* ci: try other way
* ci: seperate lint too, try ubuntu-latest-arm64 and some cargo optimize keys
* ci: remove ubuntu-latest-arm64
* ci: back to manual cache
* ci: add needs: [build-stable-release] for lint
* ci: fix CI lint and simplify command for lint and doc CI jobs
* chore: alot of clippy warning fix because of new Rust version
* ci: make all the task parallel
* chore: rerun CI workflow
* feat(build): Add build script and update dependencies for protobuf compilation
- Introduced a new `build.rs` file to compile protobuf definitions for application messages and welcome messages.
- Updated `Cargo.toml` to include `prost` and `prost-build` dependencies for handling protobuf serialization.
- Refactored message handling in the application to utilize the newly defined protobuf structures, enhancing clarity and maintainability.
- Updated tests to ensure compatibility with the new message structures and processing logic.
* chore(dependencies): Update OpenMLS and related crates to version 0.6.0
- Upgraded OpenMLS and its related crates (`openmls_basic_credential`, `openmls_rust_crypto`, `openmls_traits`) to version 0.6.0 in `Cargo.toml` files for improved functionality and compatibility.
- Refactored code to utilize new features and types introduced in the updated OpenMLS version, including changes in credential handling and key package management.
- Enhanced README with additional environment variable instructions for running the application.
- Updated benchmark tests to reflect changes in the user and group handling logic.
* refactor(crypto): Rename MlsCryptoProvider to MlsProvider and update references
- Renamed `MlsCryptoProvider` to `MlsProvider` across the codebase for consistency and clarity.
- Updated all references to the renamed provider in various modules, including user, group, and identity handling.
- Adjusted related function signatures and implementations to accommodate the new provider name.
- Enhanced code readability and maintainability by streamlining the usage of the provider in cryptographic operations.
* refactor(group): Replace GroupAdmin with Steward and update related functionality
* refactor(group): Enhance group proposal handling and member management
- Introduced new methods for managing group proposals, including `store_invite_proposal`, `drain_proposals`, and `apply_proposals`.
- Updated `Group` struct to handle member addition and removal more effectively, improving the overall user experience.
- Refactored user action processing to accommodate the new proposal handling logic, ensuring seamless integration with the Waku messaging system.
- Enhanced error handling and logging for better traceability during group operations.
* refactor(readme, error, group, message, steward, user): Clean up imports and enhance README instructions
- Removed redundant environment variable commands from README for clarity.
- Cleaned up unused imports across multiple source files to improve code readability.
- Enhanced error handling in the `GroupError` enum for better traceability.
- Streamlined message handling in `user.rs` and `steward.rs` to improve code organization.
- Updated `put_invite_proposal` method for better readability and maintainability.
* feat(consensus): Introduce consensus proposal handling and state machine for steward epochs
- Added new `consensus.proto` file defining message structures for proposals and votes.
- Implemented a state machine in `state_machine.rs` to manage steward epoch transitions and proposal processing.
- Enhanced `Group` struct to support batch proposal handling and state transitions during steward epochs.
- Updated user actions to integrate with the new consensus mechanism, allowing for proposal submissions and voting.
- Refactored message handling to accommodate new batch proposal messages in `application.proto`.
- Removed deprecated benchmark file and added tests for state machine functionality.
* docs: Update state machine documentation to clarify transitions for steward epochs
- Enhanced comments in `state_machine.rs` to specify the conditions under which the `start_steward_epoch()` transition leads to either the `Waiting` or `Working` state, improving clarity for future reference.
* chore: Update dependencies and refine CI workflow
- Removed `Cargo.lock` from `.gitignore` to allow tracking of dependency versions.
- Added `Cargo.lock` file to the repository for better dependency management.
- Updated CI workflow to include steps for formatting checks, clippy, and documentation generation.
- Cleaned up unused dependencies and improved the structure of the CI jobs for better clarity and efficiency.
- Refactored tests to enhance readability and maintainability, including default implementations and message handling adjustments.
* chore(ci): Remove ninja installation step from CI workflow
* chore(ci): Add unused dependencies job to CI workflow
* chore: Update package versions and modify .gitignore
* chore: Remove Cargo.lock file from the repository
* chore(ci): Update CI workflow to run on macOS instead of Ubuntu
* chore: Update CI workflow to include caching and manage Cargo.lock
- Added caching step using Swatinem/rust-cache@v2 to improve CI performance.
- Restored Cargo.lock file to the repository for better dependency management.
- Updated .gitignore to reflect the inclusion of Cargo.lock, ensuring it is tracked in version control.
* update ci
* update
* chore(msg): refactor Waku message handling and user action processing
- Updated `WakuMessageToSend` struct to streamline message creation and handling across the application.
- Refactored user action handling to utilize the new `WakuMessageToSend` type, enhancing clarity and consistency.
- Removed the `ds_waku` module and integrated its functionality directly into the main library structure.
- Improved error handling and logging in user actions and Waku message processing.
- Updated tests to reflect changes in message handling and user action processing, ensuring robustness and reliability.
* refactor(user): rename and restructure user action messages for clarity
user action flows.
- Added `run_waku_node` function to initialize and manage the Waku node, including peer connections and message handling.
- Introduced `Admin` struct for managing key pairs and message signing within the group context.
- Created `Group` struct to handle group creation, member management, and message processing.
- Enhanced user action handling with new messages for preparing and processing income key packages.
- Updated main application structure to integrate new group and admin functionalities, improving overall message flow and state management.
* Refactor code structure
* Refactor user invitation flow and key package handling
- Updated `Admin` struct to use `Arc<Mutex<Vec<KeyPackage>>` for income key packages, improving concurrency handling.
- Refactored `Group` and `User` structs to streamline the processing of income key packages and user invitations.
- Enhanced `invite_users` method to handle user invitations more effectively.
- Updated benchmark tests to reflect changes in user invitation flow and key package processing.
- Renamed message types for clarity, including changing `WelcomeShare` to `InvintationToJoin` and `KeyPackageShare` to `UserKeyPackage`.
- Improved test cases to validate the new user invitation flow and ensure correct group member management.
* Refactor group and user key package handling
* Refactor Waku client test to improve node setup and logging
* Refactor Waku integration to use new node setup and improve message handling
* Refactor Waku node setup and message handling with improved configuration
* Refactor main application structure and improve Waku node initialization
- Restructured main application to separate server and Waku node initialization
- Added more detailed logging for Waku node setup and connection process
- Updated Cargo.toml to use underscore naming convention and update Alloy dependency
- Modified Dockerfile to simplify build process
- Improved error handling and task management in main application flow
* Refactor project structure and improve dependency management
- Updated package name in Cargo.toml to use hyphen instead of underscore for consistency.
- Simplified dependency paths for Waku bindings in Cargo.toml files across the project.
- Modified Dockerfile to streamline the build process by removing unnecessary release flags.
- Enhanced README with updated environment variable instructions for better clarity.
- Improved frontend button structure for better user interaction.
- Cleaned up unused code in Waku actor and related tests, enhancing maintainability.
* Update Waku node initialization with auto-subscription notes
- Added comments to clarify that the Waku node is auto-subscribing to the pubsub topic and that explicit subscription is unnecessary due to this behavior.
- Documented the limitation regarding subscription checks in Waku, referencing the related issue for better context.
* Remove unused Go setup from CI workflow and clean up Cargo.toml by commenting out the library section. This streamlines the configuration and focuses on Rust dependencies.
* Add peer address configuration and benchmark setup
- Introduced a new benchmark configuration in Cargo.toml for `group_flow_benchmark`.
- Updated docker-compose.yml to include `PEER_ADDRESSES` environment variable.
- Enhanced README with instructions for setting `PEER_ADDRESSES` for node connections.
- Modified main.rs to parse and utilize peer addresses for Waku node connections, improving network configuration flexibility.
* Update Cargo.toml and Dockerfile for library configuration and build process
- Added a library section in Cargo.toml to specify bench settings.
- Modified Dockerfile to create necessary source files and streamline the build process by removing redundant commands.
- Updated main.rs to improve error handling for peer address configuration.
* Comment out library and benchmark sections in Cargo.toml, update Dockerfile to streamline build process, and disable CI benchmark jobs in workflow configuration.
* Update dependencies, add benchmarking, and enhance Waku integration
- Updated `tokio` version from `1.38.0` to `1.43.0` in `Cargo.toml` files for improved performance and compatibility.
- Introduced a new benchmarking file `benches/group_flow_benchmark.rs` to measure performance of group-related operations.
- Added a new CI job for running benchmarks in the GitHub Actions workflow.
- Enhanced Waku event handling in `ds_waku.rs` to utilize `BoundedVecDeque` for managing seen messages, improving memory efficiency.
- Refactored message handling in `main.rs` to streamline Waku event processing and user actions.
- Added `action_handlers.rs` to separate user action handling logic, improving code organization.
- Introduced `user_app_instance.rs` for creating user instances with group management capabilities.
- Made `invite_users` method public in `user.rs` to allow external access.
- Updated WebSocket connection message structure to include serialization support.
* Fix CI for running benchmark
* Update CI workflow to run benchmarks on pull requests and enhance caching
* Add required filed `branch name`
* Update CI workflow to include Go setup and increase timeout for benchmark jobs
* Update Cargo.toml to disable benchmarking for the de-mls binary
* Update Cargo.toml to add library section and disable benchmarking for the de-mls library
* Remove benchmarking configuration for the de-mls binary in Cargo.toml
* Update Cargo.toml to change criterion dependency version and enable HTML reports
* Disable benchmarking for the de-mls binary in Cargo.toml to streamline build configuration.
* start building waku for group_chat
* replace test
* replace test
* fix building issue on m2
* continue waku integration
* add admin trait
* update cfg
* update code
* replace cli to ws
* add docker for each instance
* fully working process for joining to the group
* update readme
* Add Waku and WebSocket actors for message processing and group management
- Introduced `WakuActor` for handling message sending and group subscriptions using Waku protocol.
- Implemented `Group` actor for managing group creation, member addition/removal, and message processing.
- Added `WsActor` for WebSocket communication, enabling user connections and message handling.
- Defined message structures for processing and sending messages within the Waku and WebSocket contexts.
- Enhanced error handling and logging for message operations.
* Refactor Waku and WebSocket integration for improved message handling
- Updated `WakuActor` to return a vector of `WakuContentTopic` upon subscription, enhancing group topic management.
- Introduced `AppState` struct to centralize application state, including Waku actor reference and content topics.
- Refactored main loop to utilize `AppState`, improving message flow between Waku and WebSocket actors.
- Enhanced message handling in `WsActor` to support `MessageToPrint`, allowing for structured message sending.
- Improved error handling and logging throughout the message processing pipeline.
* Refactor Waku message handling and clean up unused code
* Refactor and remove unused components from the project
- Deleted the `sc_key_store` module and its associated files, streamlining the codebase.
- Removed unused Docker and Git configuration files, enhancing project clarity.
- Cleaned up `.gitignore` and `.dockerignore` to reflect current project structure.
- Updated `Cargo.toml` files to remove references to deleted modules and dependencies.
- Refactored Waku and WebSocket actors to improve message handling and group management.
- Enhanced error handling and logging throughout the message processing pipeline.
- Adjusted frontend input styling for better user experience.
* Update CI workflow to use 'main' branch and add support for manual triggers
* Enhance Waku integration and documentation
- Added instructions for running a test Waku node in the README.
- Refactored Waku message handling in `ds_waku.rs` to improve content topic management and error handling.
- Updated `Cargo.toml` dependencies for better compatibility and removed unused entries.
- Improved error handling in `DeliveryServiceError` for Waku node operations.
- Cleaned up CI workflow by commenting out unused test jobs.
- Enhanced logging in tests for better traceability of message flows.
* Update CI workflow to include Go setup for testing
- Added steps to the CI configuration to set up Go version 1.20.x for user tests.
- Ensured consistent environment setup across different jobs in the CI pipeline.
* Update package versions to 1.0.0 in Cargo.toml files for the main project and 'ds' module
* Update README to include note on frontend implementation based on Chatr
* forge install: openzeppelin-contracts
v5.0.2
* chore(contracts): add ownable for access control on contract
* fix: add test
* fmt
* fix: add user address instead of defaulting to msg.sender