- Added logic to explicitly set an empty menu on Windows to ensure no menu bar is shown.
- Utilized Tauri's MenuBuilder to create and apply the empty menu during app initialization.
- Added clipboard event handling to support native clipboard operations (copy, cut, paste) based on input focus.
- Introduced functions to check if an input element is focused and to execute native clipboard commands.
- Updated keybind listener to trigger appropriate actions based on clipboard events, differentiating between text input and file operations.
- Enhanced menu setup to ensure clipboard actions are always enabled for better user experience.
- Added a `cleanup_all_connections` command to clean up active TCP connections, preventing leaks during development hot reloads.
- Introduced `cancel_all` and `get_active_count` methods in the SubscriptionManager to manage active subscriptions effectively.
- Updated TCP connection handling in `daemon_request` and `subscribe_to_events` to ensure proper closure of connections.
- Enhanced logging for better visibility of subscription management and connection cleanup processes.
- Added a new function `validate_and_reset_library_if_needed` to check if the current library exists and reset the state if it doesn't.
- Integrated this validation process into the daemon connection initialization, ensuring the app state is consistent with the available libraries.
- Enhanced error handling and logging for better debugging during library validation.
- Introduced a new test suite for file move operations, covering various scenarios to ensure robust handling of file movements and state integrity.
- Implemented `getAppVersion` method in the platform abstraction to fetch the application version.
- Updated `DaemonStartupOverlay` to display the app version during startup, improving user feedback.
- Introduced a new `Orb` component for enhanced visual effects in the overlay.
- Made minor layout adjustments in various components for better UI consistency.
- Added SwiftRs as a dependency in Package.swift to enhance file opening capabilities.
- Updated the get_apps_for_path function to return a JSON string of available applications instead of an array.
- Modified the Swift implementation to align with the new return type and improved data handling.
- Created a new Package.resolved file to manage package dependencies.
- Introduced a new backend task for cross-platform file opening functionality, detailing implementation notes and acceptance criteria.
- Added a UI integration task for the Explorer, enabling users to open files with default applications and enhancing context menu options.
- Created a new task for implementing browser-like tabs in the Explorer, allowing simultaneous browsing of multiple locations with independent state management.
- Updated the TODO list to reflect the completion of file renaming and folder creation tasks, improving overall file management capabilities.
- Added critical tasks for remote file access and updater functionality to the TODO list.
- Updated job logging configuration to include an option for logging ephemeral jobs, improving logging flexibility.
- Enhanced the job manager to conditionally log job events based on persistence settings, ensuring better tracking of job statuses.
- Refactored the inspector component to remove unnecessary console logs, streamlining the codebase.
- Improved the selection context to eliminate redundant logging during file synchronization, enhancing performance.
- Updated the TODO list to clarify the quick preview reporting issue.
- Enhanced the Tauri app's menu to include custom clipboard operations (cut, copy, paste) with appropriate state management.
- Introduced a new `statistics_listener` service to manage per-library statistics recalculation based on resource changes, improving performance and responsiveness.
- Added configuration options for enabling/disabling the statistics listener in the application settings.
- Refactored event handling in the job manager to improve logging and status monitoring.
- Updated tests to include the new statistics listener functionality and ensure proper event collection during file operations.
- Introduced a new `useClipboard` hook for managing clipboard operations, including copy and cut functionalities.
- Updated file context menu to utilize the clipboard for copy and cut actions, improving user experience.
- Enhanced file operation modal to handle paste operations using clipboard contents, streamlining file management.
- Refactored keyboard navigation in the Explorer component to support clipboard actions, ensuring intuitive user interactions.
- Improved job management by adding sound notifications specific to job types, enhancing feedback during file operations.
Resolved merge conflict in packages/interface/src/index.tsx by keeping both
the existing context menu exports from main and the new keybind-related
exports from this branch.
- Added `remove_from_library` field to `DeviceRevokeInput` and `DeviceRevokeAction` to control whether a device should be removed from library databases during revocation.
- Updated the `from_input` method in `DeviceRevokeAction` to handle the new field.
- Modified the revocation logic to conditionally remove devices from libraries based on the `remove_from_library` flag, improving flexibility in device management.
- Adjusted the CLI argument parsing to default `remove_from_library` to false, ensuring devices remain in libraries unless explicitly specified for removal.
- Replaced useState with useReducer in the Explorer context for improved state management.
- Updated navigation functions to use navigateToPath instead of setCurrentPath, enhancing clarity and consistency.
- Removed unused synchronization functions for URL parameters, streamlining the code.
- Introduced new utility functions for target management and improved type definitions for navigation targets.
- Enhanced the handling of view settings and preferences, ensuring better integration with the UI state.
- Deleted obsolete device operation test file to clean up the codebase.
- Introduced a new `JobsScreen` component to manage and display job statuses, allowing users to view running, paused, queued, completed, and failed jobs.
- Updated job data structures to include `created_at` and `started_at` timestamps, improving job tracking and reporting.
- Refactored job-related components to utilize the new data structure, ensuring consistency across the application.
- Enhanced the `JobRow` component to display job duration and status more effectively, improving user experience.
- Added filtering options for job visibility, allowing users to toggle between viewing all jobs or only active ones.
- Introduced a new command `ResetCache` in the `IndexCmd` enum to allow users to reset the ephemeral index cache.
- Implemented `EphemeralCacheResetAction` to handle the cache reset logic, including confirmation checks and logging.
- Added input and output structures for the cache reset action, providing clear feedback on the number of cleared paths.
- Enhanced the `EphemeralIndexCache` with a `clear_all` method to facilitate the clearing of all cached paths and entries.
- Added a new `LibraryLoadFailed` event to capture and report errors when loading libraries, including error type categorization for frontend notifications.
- Introduced a method to count `.sdlibrary` directories without loading them, improving the library initialization process.
- Updated the library manager to emit the new event upon load failures, enhancing error handling and user feedback.
- Enhanced logging to provide better insights during library loading and initialization.
- 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.
- 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 update modifies the unsubscription logic in both the useClient and App components to utilize promises for better handling of asynchronous cleanup. This change enhances the reliability of resource management during component unmounting.
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>
This commit introduces a comprehensive keybind system, enabling users to register, unregister, and trigger keyboard shortcuts. It includes:
- **Tauri Integration:** Native registration and handling of keybinds for menu accelerators.
- **Web Implementation:** A robust JavaScript-based listener for consistent behavior across platforms.
- **Hook System:** New hooks (`useKeybind`, `useKeybindScope`, `useKeybindMeta`) for easy integration into React components.
- **Context Menu Support:** Automatic display of keybinds in context menus.
- **Keybind Registry:** A centralized registry for defining and managing all keybinds.
- **Platform Abstraction:** Utilities for handling platform-specific key combinations and display strings.
Co-authored-by: ijamespine <ijamespine@me.com>