- Removed the DaemonOverlays component and integrated its functionality into a new ExplorerWithDaemonCheck component.
- The new component conditionally renders the Explorer UI based on the daemon connection status, preventing unnecessary queries during startup.
- Updated DaemonDisconnectedOverlay to accept daemonStatus as a prop for improved state management.
- Refactored useDaemonStatus hook to streamline polling logic and enhance connection handling.
- Reformatted code for better readability and consistency, including indentation and line breaks.
- Enhanced the clarity of function definitions and context values within the SelectionProvider.
- Maintained existing functionality while improving code maintainability and visual structure.
- Added multi-select capability for the Inspector in the TODO list.
- Updated drag selection logic to prevent conflicts with file dragging when clicking on selected items.
- Adjusted drag selection settings across GridView, ListView, and ColumnView to improve user experience and ensure compatibility with drag-and-drop interactions.
- Refactored related components to streamline event handling and enhance performance.
- Eliminated the focus ring styling for the FileCard component to streamline its appearance during drag-and-drop interactions.
- Adjusted class names to enhance visual consistency and user experience in the GridView layout.
- Updated `TabNavigationGuard` to track tab switch timing and prevent stale data rendering during brief navigation delays.
- Introduced logic to only block rendering when a tab switch occurs within 50ms, ensuring smoother transitions and improved user experience.
- Clarified documentation regarding the guard's behavior during in-tab navigation.
- Introduced `TabNavigationGuard` component to manage rendering during tab navigation, ensuring that stale data is not displayed while switching tabs.
- Updated `ExplorerView` to wrap view components with `TabNavigationGuard`, enhancing user experience by blocking rendering until navigation completes.
- Removed unused tab management logic from `ColumnView` to streamline component functionality.
- Removed unused TabViewSync and associated hooks to simplify tab state handling.
- Integrated columnStack and scrollPosition management directly within ExplorerProvider, enhancing per-tab state synchronization.
- Updated Explorer and ColumnView components to utilize new context values for improved state consistency.
- Refactored view settings handling in ExplorerProvider to align with the new TabManager context structure, ensuring a cohesive user experience across tabs.
- Introduced `TabViewSync` component to preserve view settings (viewMode, sortBy, gridSize) per tab, improving user experience when switching between tabs.
- Added `useTabColumnSync` hook to maintain column drill-down state across tabs in the ColumnView, ensuring a seamless navigation experience.
- Updated `TabManagerContext` to include new view state management functions, enhancing the overall tab management capabilities.
- Refactored `Explorer` and `ColumnView` components to integrate the new synchronization features, ensuring consistent state handling across the application.
- Added `useTabScrollSync` hook to preserve scroll position for each tab in GridView, ListView, and MediaView components.
- Updated respective views to utilize the new hook, enhancing user experience by maintaining scroll state when switching tabs.
- Exported `useTabScrollSync` from TabManager for accessibility across components.
- Added a placeholder comment in TabView for future per-tab router isolation.
- Updated ExplorerProvider to include a new prop for controlling tab context processing.
- Changed TabManagerProvider's routes prop type to RouteObject for better type safety.
- Cleaned up TabView component by removing unused tab prop and simplifying children handling.
- Adjusted layout and styling of the TabBar for better visual consistency and user experience.
- Enhanced tab button styles to support flexible sizing and improved alignment.
- Updated close button positioning and hover effects for better accessibility.
- Refined transition effects for active tab indication, improving responsiveness.
- Improved tab management by adding TabDefaultsSync for default tab path handling.
- Refactored ExplorerLayoutContent to better structure the layout, including repositioning the TabBar and adjusting content areas.
- Updated TabBar component to conditionally render based on the number of tabs.
- Enhanced tab title derivation logic in TabNavigationSync to reflect current route accurately.
- Cleaned up styles and structure in various components for improved readability and maintainability.
- Added a new DragSelect component to facilitate multi-file selection using mouse drag.
- Integrated DragSelect into GridView, ListView, and ColumnView for consistent user experience.
- Enhanced file selection logic to support both single and multi-file selections, including modifier key handling.
- Updated FileCard and TableRow components to include selectable data attributes for drag selection.
- Improved performance with scroll handling during drag operations and optimized event management.
- Introduced context for managing drag selection state and behavior across different views.
Adds browser-like tabs to the Explorer, allowing users to browse multiple locations simultaneously. Includes tab creation, closing, switching, and navigation persistence.
Co-authored-by: ijamespine <ijamespine@me.com>
- Introduced new features for file renaming, new folder creation, and creating folders with items.
- Implemented inline editing for file names, integrating with existing keybinds and context menus.
- Enhanced backend with new actions for renaming and folder creation, including validation and job management.
- Developed frontend components for inline editing and integrated them into GridView and ListView.
- Added context menu options for renaming and creating folders, improving user experience.
- Updated styles for job progress indicators to include a barber-pole animation for pending jobs.
- 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.
- Refactored the `IndexPersistence` implementation to improve error handling and logging when querying directory paths.
- Updated the change detection logic to always load existing entries during reindexing, ensuring accurate detection of moves, modifications, and deletions.
- Introduced a new test suite for folder rename operations, covering both persistent and ephemeral indexing scenarios, validating UUID/inode preservation and parent-child relationship integrity.
- Enhanced the `IndexingHarnessBuilder` to allow disabling the filesystem watcher for specific tests, improving test flexibility.
- Added closure table integrity verification to ensure proper connections between renamed folders and their children, preventing data inconsistencies.
- Introduced a new `IndexMode::Stale` variant to enhance the indexing process by leveraging modified time (mtime) pruning.
- Updated `IndexerJobConfig` to utilize the new mode, allowing for more efficient directory exploration based on filesystem changes.
- Implemented logic in the discovery phase to skip directories with matching mtime, improving performance and reducing unnecessary indexing.
- Enhanced `IndexMode` with helper methods to check for mtime pruning and retrieve the inner indexing mode.
- Updated relevant functions and tests to support the new stale detection capabilities, ensuring robust handling of file indexing and statistics tracking.
- Refactored existing code to accommodate the new indexing strategy while maintaining backward compatibility with previous modes.
- 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.
- Introduced editing mode in the PathBar component, allowing users to modify paths directly.
- Added state management for editing, including handling input changes and keyboard events for submission and cancellation.
- Updated the rendering logic to accommodate editing input, improving user interaction.
- Refactored device icon retrieval to streamline the process and ensure correct icon display based on device state.
- Adjusted width calculations for different states, enhancing the visual responsiveness of the PathBar.
- Replaced `eprintln!` with `tracing::warn!` for logging job cancellation, pause, and resume errors, improving logging consistency and integration with the tracing framework.
- Updated the `useJobs` hook to handle job pause, resume, and cancel actions with improved error handling, ensuring better user feedback on job status.
- Enhanced the UI components to reflect changes in job management, including better error reporting for failed actions.
- 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.
- Simplified import statements in Explorer component for better readability.
- Updated QuickPreviewSyncer to use openQuickPreview instead of setQuickPreviewFileId for improved clarity.
- Enhanced keyboard navigation handling in MediaView to support arrow key navigation, allowing users to select files more intuitively.
- Adjusted useExplorerKeyboard to skip media view in keyboard navigation, ensuring a smoother user experience.
- 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.
- Added cancel job functionality to the job management system, allowing users to cancel running or paused jobs.
- Updated job-related components (`JobRow`, `JobCard`, `JobList`) to include cancel action buttons, improving user interaction.
- Integrated sound notifications for job completion, enhancing user feedback upon job status changes.
- Refactored `useJobs` hook to manage job cancellation and sound playback, ensuring a cohesive experience across job management features.
- Improved sidebar navigation by implementing `setSpaceItemIdFromSidebar` for better context handling during navigation events.
- 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 `LocationsScroller` component to improve the display and selection of device locations, allowing for horizontal scrolling.
- Updated the `DeviceCard` to utilize the `LocationsScroller`, enhancing user interaction with location buttons.
- Added scroll state management to enable smooth scrolling behavior and visual feedback for available scroll directions.
- Integrated new icons for navigation buttons, improving the overall aesthetic and usability of the location selection interface.
- Updated the `useSpaceItemActive` hook to ensure that regular items are not marked as active when a virtual view is active, improving the accuracy of active state determination.
- Refined path-based navigation checks to only apply when on the explorer route, enhancing the reliability of navigation logic.
- Updated the SpaceItem component to improve the handling of custom onClick and context menu behaviors, allowing for more flexible interactions.
- Introduced new hooks for managing drop zones, enabling better support for file insertion and move-into operations.
- Simplified the logic for determining active states and resolved metadata for space items, enhancing overall performance and maintainability.
- Added utility functions for item metadata resolution and drop target identification, streamlining the component's functionality.
- Improved styling and structure for insertion indicators and drop highlights, ensuring a more intuitive user experience.
- Added support for emitting `JobStarted` events for persistent and resumed jobs in the `JobManager`, improving event tracking.
- Updated `IndexerJobConfig` to filter hidden files by default for ephemeral browsing, aligning with typical file browser behavior.
- Refined button styles in `JobManagerPopover` and `SyncMonitorPopover` to remove hover effects for a more consistent user experience.
- Improved context menu handling in `SpaceItem` to support custom behavior, enhancing flexibility for virtual items.
- Adjusted styling in `SpacesSidebar` to ensure consistent cursor behavior across buttons.
- Introduced a new function to determine the appropriate icon for sidecar files based on their format and kind, enhancing visual representation.
- Updated the FileInspector component to utilize the new icon logic, replacing static image components with dynamic icon rendering.
- Cleaned up unused code related to icon display, improving overall component readability and maintainability.
- Added event emission for resource deletion in `DeviceRevokeAction` to improve resource management.
- Refactored `MediaView` to calculate item size dynamically based on available space, enhancing layout responsiveness.
- Updated context menu handling in `DevicesGroup` to support device unpairing, improving user interaction.
- Introduced optional `onContextMenu` prop in `SpaceItem` for customizable context menu behavior.
- Modified `isVirtualFile` and `getVirtualMetadata` functions to improve type safety and null checks for virtual files.
- Enhanced `useFileContextMenu` and `useDraggableFile` hooks to prevent operations on virtual files, ensuring better user experience.
- Updated `ColumnView` and `GridView` components to support virtual file navigation and display, including new logic for handling selected directories.
- Introduced `TextViewer` and `WithPrismTheme` components for improved text file previews in the QuickPreview section.
- Added new dependencies in `package.json` for syntax highlighting support in text previews.
- Updated `mapLocationToFile`, `mapVolumeToFile`, and `mapDeviceToFile` functions to streamline the creation of file-like objects, improving consistency in virtual file handling.
- Introduced new properties such as `created_at`, `modified_at`, and `content_kind` to enhance metadata management for virtual files.
- Enhanced `ColumnItemWrapper` to support double-click navigation for directories, improving user experience in the Explorer interface.
- Refactored path comparison logic to ensure accurate navigation state representation across columns.
- Added tests to verify UUID preservation during reindexing and file modifications in `indexing_test.rs`.
- Updated `Inspector` and `ExplorerProvider` to handle virtual files and views, ensuring consistent navigation and state management.
- Introduced `VirtualPathBar` and `VolumeSizeBar` components for improved UI representation of virtual views and volume sizes.
- Refactored `PathBar` and `FileCard` components to integrate new virtual file handling logic, enhancing user experience in the Explorer interface.
- Introduced `useVirtualListing` hook to manage virtual views for devices, locations, and volumes.
- Enhanced `ExplorerView`, `ColumnView`, `GridView`, and `ListView` to handle virtual files seamlessly.
- Updated `Thumb` and `Icon` components to support custom icon overrides for virtual files.
- Refactored file handling logic to accommodate virtual files in various views, ensuring consistent navigation and display.
- Added utility functions for mapping virtual entities to the File interface, improving integration with existing Explorer functionality.
- Updated `createExplorerRouter` to improve routing structure and ensure proper path handling.
- Refactored `ExplorerProvider` to enhance state management and synchronization with URL parameters.
- Modified `HeroStats` component to use `motion.div` for improved animations and user experience.
- Adjusted spacing in the `Overview` component for better layout consistency.
- Added `refetchOnReconnect` option in `useClient` to enhance data fetching reliability.
- Improved button component structure for better readability and maintainability.
- Renamed `ExplorerLayout` to `ExplorerLayoutContent` for clarity and encapsulated layout logic within a new `ExplorerLayout` component.
- Updated `createExplorerRouter` to specify return type for better type safety.
- Enhanced `ExplorerProvider` to synchronize the current path with the URL, improving navigation consistency.
- Simplified path handling in `SpaceItem` to utilize the new explorer route structure.
- Refactored `ExplorerView` to sync the current path from URL parameters, ensuring accurate state representation.
- Improved overall code organization and readability across the Explorer components.
- 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.