- Updated `ResourceManager` to improve handling of virtual resource dependencies, adding debug logging for better traceability.
- Introduced a new `FileKinds` item type in the `ItemType` enum to categorize file types (images, videos, audio, etc.).
- Enhanced the `LibraryManager` to create space-level items, including the new `FileKinds` category.
- Implemented virtual resource event emissions in `DeleteGroupAction` and `DeleteItemAction` to ensure proper resource management during deletions.
- Added a new `SpaceCustomizationPanel` for managing space groups and items, allowing users to customize their workspace effectively.
- Updated various UI components to support drag-and-drop functionality for palette items and improved context menu interactions for group management.
- Added a new `file_count` column to the `content_kinds` table to track the number of content identities for each kind, improving statistics calculation efficiency.
- Implemented a migration script to add the `file_count` column and ensure backward compatibility.
- Updated the `Library` struct to include a method for updating content kind counts based on existing content identities.
- Introduced a new query for retrieving content kind statistics, including file counts, to facilitate better data analysis and reporting.
- Refactored related components to support the new statistics functionality, enhancing overall data integrity and performance.
- Added logging for Gaussian splat job creation in `GenerateSplatAction`.
- Updated `ContentRenderer` to include new state management for MeshViewer controls, improving user interaction with Gaussian splats.
- Introduced `MeshViewerUI` component for enhanced control over Gaussian splat visualization, including auto-rotate and sway settings.
- Improved `GaussianSplatViewer` to handle loading states and camera animations more effectively.
- Refactored `MeshViewer` to integrate new control props and manage state changes for Gaussian splat rendering.
- Introduced a new `GaussianSplat` variant in the `JobOutput` enum to handle output from Gaussian splat jobs.
- Implemented `GenerateSplatAction` for initiating Gaussian splat generation, including input and output structures.
- Created `GaussianSplatJob` and its associated processing logic for batch image processing and splat generation.
- Added `GaussianSplatProcessor` to manage the processing of images into 3D Gaussian splats.
- Updated the media module to include new splat-related functionalities and integrated them into the existing workflow.
- Enhanced the interface components to support visualization and interaction with Gaussian splats, including a toggle for displaying splat overlays.
- Updated TypeScript types to accommodate new splat generation inputs and outputs, ensuring type safety across the application.
- Introduced a new file type definition for PLY 3D models in `misc.toml`.
- Updated `package.json` to include dependencies for Gaussian splats and React Three Fiber.
- Implemented a `MeshViewer` component for rendering 3D models, supporting both standard mesh and Gaussian splat formats.
- Enhanced `ContentRenderer` to handle mesh file types with lazy loading for improved performance.
- Updated TypeScript configuration to include types for React Three Fiber.
- Updated the CI workflow to run all tests for the `sd-core` package, ensuring comprehensive coverage.
- Modified test execution commands to include specific tests for better granularity and clarity.
- Improved device management by regenerating slugs upon name changes and updating global device slugs.
- Enhanced session key generation for improved security during device pairing.
- Updated progress monitoring tests to ensure robust performance tracking for large file operations.
- Modified CI workflow to run all tests for the `sd-core` package, improving clarity in test execution.
- Updated test attributes to use multi-threading for better performance in `cloud_credentials` tests.
- Enhanced test setup in `key_manager` to avoid database conflicts by using unique directories for each test run.
- Improved assertions in `hlc` tests to ensure correct timestamp and counter behavior.
- Clarified comments in `registry` tests regarding the circular relationship between location and entry.
- Removed outdated blurhash tests to streamline the test suite.
- Updated the CI workflow to run tests specifically for the package for clarity.
- Deleted outdated example test files for event serialization, location watcher, and simple metrics to reduce clutter.
- Enhanced error handling in for better robustness.
- Improved device data handling in by adding additional fields for comprehensive device information.
- Adjusted test assertions in to align with updated change detection logic.
- Adjusted the CI workflow to run tests with updated command syntax for improved clarity.
- Marked subproject commits in ios, landing, macos, and workbench as dirty to reflect uncommitted changes.
- Modified conflict resolution options in copy action tests to use `None` for better handling of file operations.
- Enhanced metadata handling in various tests to improve context and accuracy during execution.
- Removed the setup step for native dependencies in the CI workflow to streamline the build process.
- Updated the `copy_action_test` to include conflict resolution options for better handling of file conflicts.
- Enhanced metadata handling in `entry_move_integrity_test` to include job policies.
- Added metadata to event handling in `file_structure_test` for improved context during file operations.
- Updated service configuration in `file_sync_simple_test` and `file_sync_test` to use `fs_watcher_enabled` and included default logging settings.
- Deleted the outdated README.md from the tests directory to reduce clutter and improve documentation focus.
- Changed the CI workflow to run tests on self-hosted runners for better performance and flexibility.
- Updated the test execution condition to trigger on push events and specific pull requests.
- Consolidated test execution to run all tests in the workspace instead of a single test.
- Modified the default features in Cargo.toml for the server and core applications to include "heif" and "ffmpeg" for enhanced media support.
- Added metrics collection capabilities to the SyncProtocolHandler for improved monitoring of sync operations.
- Refactored sync tests to streamline setup and improve clarity in test scenarios.
- Refactored the upsert logic for Space, SpaceItem, and SpaceGroup entities to utilize atomic operations, preventing race conditions during synchronization.
- Enhanced database interactions with `on_conflict` handling based on UUID for improved data integrity.
- Introduced a comprehensive sync setup test to validate the functionality and ensure no UNIQUE constraint errors occur during device pairing and library sharing.
- Replaced existing upsert implementation with atomic upsert for SpaceGroup, SpaceItem, and Space entities to prevent race conditions.
- Updated the database interaction to utilize `on_conflict` for handling conflicts based on UUID, improving data integrity and performance.
- Added JOB_ACTIVITY_ALPN to the networking event loop for routing job activity messages.
- Implemented a handler for job activity, improving the event processing capabilities of the network service.
- Marked subproject commits in ios, landing, macos, and workbench as dirty to reflect uncommitted changes.
- Added detailed logging in the volume listing and sync processes to improve traceability and debugging capabilities, including information on fetched volumes and device pairing statuses.
- Introduced a new test for bidirectional volume sync to ensure both devices correctly receive each other's volumes, enhancing test coverage for sync functionality.
- Introduced AppResetContext to manage app reset operations across components.
- Updated App and RootLayout to utilize the reset context, allowing for a clean reset of the app state.
- Enhanced SettingsScreen with a reset data option, prompting users for confirmation before clearing all data and refreshing the app.
- Added core reset action in the backend to handle data deletion and cleanup operations.
- Improved user feedback during reset operations with alerts and status messages.
- Updated event handling in job management to include device IDs for better tracking of job activities across devices.
- Introduced a new JobActivityClient for subscribing to job activity from remote devices.
- Added hardware specifications to device configuration and database schema, improving device information tracking.
- Refactored event structures to accommodate new fields related to job activities and device management.
- Updated the user interface to display job activity for devices, enhancing user experience in monitoring job statuses.
This commit introduces an auto-switch feature for libraries created via sync. Users can now configure whether to automatically switch to a newly synced library. This involves updates to the preferences store, event handling in mobile and tauri apps, and modifications to the core library event system to include a `LibraryCreationSource` enum.
Co-authored-by: ijamespine <ijamespine@me.com>
Connects the device registry to the event bus to emit ResourceChanged events, enabling UI reactivity for device status updates.
Co-authored-by: ijamespine <ijamespine@me.com>
This commit refactors the codebase to use the EventEmitter trait for emitting resource change events. This provides a more consistent and centralized way to handle UI updates and cache invalidation across the application.
Key changes include:
- **Introduction of `EventEmitter` trait:** A new trait `EventEmitter` is introduced to standardize the emission of `ResourceChanged` and `ResourceDeleted` events.
- **Domain resource implementations:** Domain resource structs (e.g., `Device`, `Location`, `Library`, `Space`, `SpaceGroup`, `SpaceItem`, `Volume`, `File`) now implement methods to emit these events directly.
- **Removal of manual event serialization:** Many parts of the codebase previously manually serialized resource data and emitted events. This is now replaced by calls to the `EventEmitter` methods.
- **Simplification of `ops` modules:** `ops` modules related to libraries, locations, spaces, and volumes have been updated to leverage the new `EventEmitter` pattern.
- **Update to `Specta` derive:** Added `specta::Type` derive to `Device` and `OperatingSystem` for improved type introspection.
- **`Identifiable` implementation for `Device` and `Tag`:** Added `from_ids` implementations for `Device` and `Tag` to support normalized cache loading.
- **`LibraryInfoOutput` re-export:** `LibraryInfoOutput` is now a re-export of the `domain::Library` type, simplifying the output structure.
- **`LocationInfo` removal:** The `LocationInfo` struct has been removed as `domain::Location` is now used directly for event payloads.
This refactoring aims to improve code maintainability, reduce boilerplate, and ensure a more robust event handling system.
Co-authored-by: ijamespine <ijamespine@me.com>
- Simplified the timeout handling in `is_daemon_running` for better readability.
- Updated type definitions in the macOS Tauri library for clarity.
- Reformatted JSON configuration for better structure and readability.
- Changed function signatures in `files.rs` and `server.rs` to use `Path` instead of `PathBuf` for consistency.
- Enhanced error handling and argument passing in various functions for improved clarity.
- Added `#[allow(dead_code)]` annotations to unused functions in several modules to suppress warnings.
- Improved the display string methods in `volume.rs` and `pairing/types.rs` for better performance and clarity.
- Updated volume-related structures and database entities to improve indexing and retrieval efficiency.
- Enhanced migration scripts to support new indexing statistics for volumes.
- Refactored asset imports and SVG handling across various components for better organization and performance.
- Improved file operation modals and explorer components for a more intuitive user experience.
- Streamlined QuickPreview and video player components to optimize rendering and interaction.
- Enhanced the `FileByIdQuery` and `FileByPathQuery` implementations to first check the database for file entries, ensuring accurate retrieval as the primary source of truth.
- Introduced a fallback mechanism to utilize an ephemeral index if the file is not found in the database, improving resilience and performance.
- Updated the logic for processing content identities, media data, and sidecars, ensuring efficient data loading and handling.
- Added context-aware comments to clarify the purpose of key code sections, enhancing maintainability and readability.
- Introduced a new EventBuffer struct to buffer recent events and manage time-based eviction.
- Implemented methods for adding events, retrieving matching events based on filters, and cleaning up expired events.
- Integrated EventBuffer into the RpcServer to handle subscription race conditions by replaying buffered events to new subscribers.
- Added periodic cleanup task for the event buffer to prevent unbounded memory growth.
- Included unit tests to verify buffer size limits, time-based cleanup, and event filtering functionality.
- Updated the logic in `File` to build `SdPath` using Physical paths for newly created files without a content_id, improving resource management.
- Refactored `useNormalizedQuery` hook to enhance type safety and maintainability, ensuring better handling of query options and event subscriptions.
- Improved event handling for resource changes, ensuring accurate updates to the query cache based on resource events.
- Improved the `emit_change_event` method in `DatabaseAdapter` to handle resource events more effectively, including detailed logging for event emissions.
- Updated the `PersistentEventHandler` to ensure paths are registered with the filesystem watcher upon startup, enhancing real-time monitoring capabilities.
- Introduced new event collectors for better diagnostics and logging of filesystem and core events during tests.
- Enhanced integration tests to cover various scenarios, including batch file operations and delete/restore patterns, ensuring accurate event handling and preventing duplicates.
- Updated the `delete` method in `MemoryAdapter` to emit a `ResourceDeleted` event, allowing the frontend to update its cache accordingly.
- Modified `CollectedCoreEvent` structure to include an `event_type` field for better event categorization.
- Enhanced event collection logic in `CoreEventCollector` to handle both `ResourceChanged` and `ResourceDeleted` events, improving event summary reporting.
- Updated `remove_entry` and `remove_directory_tree` methods in `EphemeralIndex` to ensure proper removal of entries from parent nodes' children lists.
- Introduced `FsEventCollector` and `CoreEventCollector` for improved event collection from the filesystem watcher and core event bus, respectively.
- Enhanced test harness to utilize the new collectors, ensuring accurate event logging and summary reporting.
- Added scenarios to test delete and restore patterns, verifying correct entry counts and preventing duplicate entries.
- Implemented methods for batch creation and deletion of files and directories in the test harness.
- Added scenarios to verify the creation and deletion of multiple files and directories, ensuring proper event handling.
- Enhanced logging for better visibility during test execution.
- Updated the macOS event handler to improve directory deduplication and manage recent directory creations effectively.