- Introduce deterministic UUID generation for library defaults (spaces,
groups, and items) - Add post-backfill rebuild support in the sync
registry (with_rebuild) - Export BatchFkMapResult type via the sync API
- Track per-peer RTT latency via SyncMetricsCollector integration - Use
deterministic IDs when creating default space and related items in
LibraryManager
- Added a new "Open Library" menu item to the application, allowing users to select a library folder.
- Implemented the backend logic to handle library opening, including JSON-RPC requests to the daemon.
- Introduced a filesystem watcher in the LibraryManager to monitor library directory changes, enabling automatic opening and closing of libraries based on filesystem events.
- Enhanced error handling for library operations and added relevant logging for better traceability.
- Updated the LibraryError enum to include filesystem watcher errors, improving error reporting.
- Implemented a migration step in the LibraryManager to ensure the database schema is up to date before proceeding with operations.
- This change enhances the reliability of the application by preventing potential schema-related issues during runtime.
- Introduced new modules and actions for generating media proxies and thumbstrips, improving media handling capabilities.
- Added configuration, error handling, and processing logic for both proxy and thumbstrip generation.
- Updated existing media operations to integrate new functionalities, ensuring seamless media processing and user experience.
- Enhanced tests to cover new features and ensure reliability in media operations.
- Updated the submodule reference in the landing app.
- Added a statistics recalculation listener in the LibraryManager to monitor resource changes.
- Included clipboard permissions in the capabilities configuration for enhanced functionality.
- Improved the LibraryInfoOutput struct to implement the Identifiable trait for better resource management.
- Introduced a dedicated sync event bus to improve coordination for sync events, preventing starvation from high-volume events.
- Updated TransactionManager to utilize both sync and general event buses for better event handling.
- Refactored PeerSync to listen for sync events, ensuring proper handling of state change and shared change events.
- Adjusted LibraryManager and related components to support the new sync event bus.
This change enhances the responsiveness and reliability of the synchronization process across the system.
Fixes FK violations during library sync setup when devices have identical slugs. Implements deterministic collision resolution where the newer/joining device always renames itself with a -2 suffix, stored in device.json overrides.
- Add device info to CreateSharedLibraryRequest for pre-registration
- Add device_slug to CreateSharedLibraryResponse for resolved slug communication
- Add create_library_with_id_and_initial_device() to pre-register requesting device
- Update ensure_device_registered() to use per-library slug system
- Add collision detection to RegisterDeviceRequest message handler
- Add collision detection to Device::apply_state_change() for sync backfill
- Preserve existing slugs on device updates to avoid breaking references
- Implement execute_share_local() and execute_join_remote() with proper registration
Flow: requesting device is pre-registered before library creation, so the joining device detects the collision and stores an override in its device.json. Both libraries end up with consistent slug assignments and bidirectional sync works.
- Revised documentation in the NetworkTransport trait to clarify the source of target device UUIDs and connected partners, switching references from the obsolete sync_partners table to the devices table.
- Introduced `create_library_no_sync` method in LibraryManager to allow library creation without automatic sync initialization, facilitating testing with mock transports.
- Enhanced logging in PeerSync to include network transport details for better debugging.
- Updated MockNetworkTransport to support transport name retrieval for improved test clarity.
- Added `sync_enabled` and `last_sync_at` fields to the device model to support synchronization capabilities.
- Created a migration script to update the devices table, consolidating sync-related data.
- Updated various components to ensure sync is enabled by default for new devices.
- Removed the obsolete sync partners table, streamlining the sync architecture.
- Introduced comprehensive sync integration tests to validate the new functionality and ensure robust performance.
- Added `README_EXTENSIONS.md` to document the WASM extension system, outlining its features, quick start guide, and future plans.
- Implemented `WasmJob` for executing WASM extension jobs, including methods for job dispatching and state management.
- Enhanced `CoreContext` to include a `plugin_manager`, facilitating the management of extensions.
- Created integration tests for WASM job execution, ensuring the functionality of the new system.
- Removed the obsolete `sync_leadership` column from the database schema, streamlining the data model.
- Updated various modules to support the new extension architecture and improve overall system integration.
- Introduced the `NetworkTransport` trait to decouple the sync layer from the networking implementation, enabling better testability and modularity.
- Added `NoOpNetworkTransport` for fallback scenarios when networking is unavailable, ensuring graceful degradation.
- Integrated `NetworkingService` as the concrete implementation of the `NetworkTransport` trait, allowing for sending sync messages and retrieving connected partners.
- Updated `PeerSync` to utilize the new network transport for broadcasting state and shared changes, enhancing the synchronization capabilities across devices.
- Refactored the `LibraryManager` and `SyncService` to support network transport initialization, ensuring seamless integration during library setup.
- Enhanced documentation to clarify the new architecture and usage of the network transport layer.
- Removed leadership-related components from the sync infrastructure, including `LeadershipManager` and `sync_leadership` fields across various models.
- Implemented a new peer-to-peer sync model utilizing Hybrid Logical Clocks (HLC) for shared resources and state-based sync for device-owned data.
- Updated the `Syncable` trait and related modules to reflect the new architecture, ensuring seamless integration of state and log-based synchronization.
- Introduced `PeerLog` for managing device-specific changes and `PeerSync` for handling synchronization in the leaderless environment.
- Revised documentation to outline the new sync architecture and its implications for device synchronization, emphasizing the benefits of a leaderless approach.
- Added `apply_sync_entry` method to the `Syncable` trait, allowing models to handle synchronization of insert, update, and delete operations.
- Enhanced the `location` model to support synchronization by checking for existing entries, updating fields, and deleting records based on sync log entries.
- Registered the `location` model for automatic sync handling, ensuring seamless integration with the sync infrastructure.
- Updated the `sync` module to include the new `apply_sync_entry` functionality, improving the overall sync capabilities of the application.
- Introduced a comprehensive sync infrastructure, including a `Syncable` trait for models, enabling automatic logging of changes in a dedicated sync log database.
- Added `LeadershipManager` for managing leader election and lease tracking, ensuring reliable synchronization across devices.
- Implemented `TransactionManager` to handle atomic writes and sync logging, enhancing data integrity during state changes.
- Created a new `sync` module with necessary components such as `SyncLogDb`, `SyncLogEntry`, and sync protocol handlers for efficient communication between leader and follower devices.
- Developed integration tests to validate the sync functionality and ensure robust performance across various scenarios.
- Introduced `DevicesCmd` for managing device operations within the CLI, allowing users to list devices from the library database.
- Implemented `DevicesListArgs` to support detailed device information retrieval, including offline status and capabilities.
- Updated the command handling logic to integrate device operations seamlessly with existing commands.
- Refactored device-related queries and outputs to improve data handling and presentation in the CLI.
- Enhanced the overall structure of device management code for better maintainability and clarity.
- Introduced a new `LibraryCard` and `EmptyLibraryCard` components for improved library selection UI in the macOS app.
- Updated `LibrarySelector` to display current library information and allow users to switch libraries through a new button.
- Enhanced `MenuBarManager` to dynamically update the libraries menu based on available libraries and current selection.
- Refactored `DaemonConnector` to handle library-related events and refresh library statistics accordingly.
- Improved `LibraryInfo` structure to include optional statistics, enhancing data representation for libraries.
- Updated various UI components to utilize new library statistics, providing users with better insights into their libraries.
- Introduced a new `core/benchmarks` module to facilitate performance testing and benchmarking.
- Updated `Cargo.toml` to include the new benchmarks module in the workspace.
- Refactored job handling in the `JobManager` and `JobExecutor` to support job resumption, enhancing the ability to recover from interruptions.
- Improved logging throughout the job lifecycle to provide better visibility into job states and transitions.
- Added integration tests for job pause/resume functionality, ensuring robustness in job management.
- Updated `Cargo.toml` for the CLI to include `comfy-table` for improved output formatting.
- Enhanced the daemon's shutdown process to provide clearer logging during shutdown initiation and completion.
- Refactored the logo display function to use a colored ASCII representation, improving visual appeal.
- Removed unnecessary CLI dependency on `clap` in the core, simplifying the dependency structure.
- Updated `bincode` dependency to version 1.3.3 for improved performance and security.
- Refactored error handling in `error.rs` to use `bincode::Error` instead of `bincode::ErrorKind`, ensuring better error management.
- Enhanced macro definitions in `macros.rs` to utilize the updated error handling structure.
- Improved error reporting in `manager.rs` when creating directories, providing clearer context for IO errors.
- Added a new design document for Sync Conduits, detailing the architecture and implementation plan for file synchronization in Spacedrive.
- Updated the CoreContext struct to rename the session_state field to session for clarity.
- Refactored all instances in the codebase where session_state was used, ensuring consistency across ActionManager, JobManager, LibraryManager, and various query implementations.
- Enhanced session management by retrieving the current library ID directly from the session, improving code readability and maintainability.
- Added a new documentation file outlining the finalization plan for the Spacedrive refactor, detailing remaining tasks and objectives for migrating to a CQRS architecture.
- Implemented session state management to track the current library context across operations, improving the overall architecture's modularity and maintainability.
- Refactored CLI commands and core components to utilize the new session state service, ensuring a more consistent and error-free user experience.
- Enhanced error handling and logging in various modules to facilitate debugging and improve reliability.
- Removed unnecessary whitespace in `cqrs.rs` to enhance code cleanliness.
- Reorganized imports in `addressing.rs` for better clarity and consistency.
- Introduced new input types for actions, including `Input` associated types in `CoreAction` and `LibraryAction`, promoting a more modular design.
- Updated action implementations to utilize the new input structures, improving maintainability and reducing redundancy.
- Enhanced event handling in `event.rs` to ensure proper library ID filtering.
These changes improve the overall structure and maintainability of the action and query systems while ensuring a consistent API surface.
* `Library` -> `LoadedLibrary`
* Move `ThumbnailRemoverActor` onto `NodeServices`
It should either be on `Library` or `NodeServices` none of this in-between stuff.
* small > big files
* prune imports
* isolate cringe
* it helps to test the code
* `Vec` -> `HashMap` - faster lookups
* mpscrr
* minor fixes
* fix language
* `!Sync` :(
* lets goooooo
* removed a comma
* fixes
* fix desktop
* lol, no one uses it
* Clippy