Commit Graph

4450 Commits

Author SHA1 Message Date
Jamie Pine
996df041a4 Enhance file querying and alternate instances handling
- Updated `FileByIdQuery` and `FileByPathQuery` to populate alternate paths for files with the same content ID, improving data retrieval for file instances.
- Introduced `get_alternate_paths` method in both queries to fetch alternate file paths from the database.
- Modified the `InstancesTab` component to utilize a new query for alternate instances, enhancing the user interface with detailed instance information.
- Updated TypeScript types to support the new alternate instances query structure, ensuring type safety across the application.
- Adjusted various components to improve the display of alternate file instances, including device and path information.
2025-12-26 11:20:01 -08:00
Jamie Pine
8d0ae5065f Enhance FileSearchOutput structure and update search query logic
- Added a new `files` field to `FileSearchOutput` to provide a flat array of files, improving integration with the explorer.
- Updated the `FileSearchQuery` to join directory paths directly on `parent_id`, simplifying the SQL query.
- Enhanced the query to batch fetch sidecars for content UUIDs, improving performance and data retrieval.
- Adjusted the handling of content identity fields to ensure proper association with files in search results.
- Updated the `SearchView` component to utilize the new `files` array instead of the previous `results` structure.
2025-12-26 10:55:51 -08:00
Jamie Pine
d9239923b9 Update release workflow to remove CLI build dependency
- Modified the release workflow to eliminate the dependency on the CLI build job, streamlining the release process.
- Maintained the existing structure for the desktop build job to ensure continued functionality.
2025-12-26 10:08:38 -08:00
Jamie Pine
b45d492264 Refactor release workflow to comment out CLI build jobs
- Commented out the CLI build jobs in the release workflow to streamline the configuration.
- Maintained structure for potential future reactivation of CLI builds across macOS, Linux, and Windows platforms.
- Ensured that the desktop build jobs remain intact for continued functionality.
2025-12-26 10:04:43 -08:00
Jamie Pine
c586544b0c Add device_id to entries for efficient querying
- Introduced a new column `device_id` in the entries table to denormalize device relationships, improving query performance.
- Updated related models and queries to accommodate the new device_id field.
- Enhanced foreign key mappings and migration scripts to support the addition of device_id.
- Adjusted various components to handle device_id, ensuring compatibility across the application.
- Improved release workflow to include specific file types for distribution.
2025-12-26 10:03:51 -08:00
Jamie Pine
51f14bcc43 Refactor MultiFileInspector layout and improve section organization
- Updated the layout of the MultiFileInspector component to enhance visual clarity and usability.
- Removed unnecessary dividers between sections for a cleaner presentation.
- Streamlined the rendering of file types and tags sections, improving code readability and maintainability.
2025-12-26 08:51:46 -08:00
Jamie Pine
cd7569ab7b fix: add tag push trigger to release workflow 2025-12-26 08:22:57 -08:00
Jamie Pine
7e0cba0f6b Refactor SearchView component for improved readability
- Reformatted import statements for better organization.
- Enhanced code readability by adjusting indentation and line breaks in the SearchGridView and SearchListView functions.
- Ensured consistent formatting across file handling and event functions for clarity.
2025-12-26 06:07:47 -08:00
Jamie Pine
f1547de0af Refactor file transfer protocol to skip encryption and decryption
- Updated `stream_file_data` to bypass encryption, as Iroh provides end-to-end encryption for connections.
- Adjusted `FileTransferProtocolHandler` to skip decryption, directly using the received encrypted data.
- Enhanced logging to reflect changes in data handling during file transfers.
- Added tests to ensure session keys are distinct and validate key swapping functionality.
- Improved error handling in `DevicePersistence` for corrupted session keys during device loading.
2025-12-25 22:33:21 -08:00
Jamie Pine
a313f2b9c8 Enhance file copy strategies and improve logging
- Updated documentation for copy strategies to clarify their use cases and selection logic.
- Improved logging in `DevicePersistence` to track loading of paired devices and handle expired session keys.
- Added detailed logging for session key retrieval in `FileTransferProtocolHandler`.
- Introduced a new test for file transfer with daemon restart to ensure session key persistence across restarts.
2025-12-25 15:46:36 -08:00
Jamie Pine
fd6a9122d6 Update submodule reference and enhance file copy job logging
- Updated macOS subproject reference to indicate a dirty state.
- Refactored `FileCopyJob` to improve logging for final destination calculations.
- Enhanced `stream_file_data` logging to include destination path in transfer requests.
- Added `find_containing` method to `EphemeralIndex` for substring search functionality.
- Improved logging in `ephemeral_search` to track search results and filtering.
- Replaced print statements with tracing logs in `FileTransferProtocolHandler` for better debugging.
2025-12-25 14:31:42 -08:00
Jamie Pine
1db5a0c491 Refactor filter application logic in ephemeral search function
- Adjusted indentation for clarity in the `search_ephemeral_index` function.
- Ensured consistent formatting for the filter application section to enhance code readability.
2025-12-25 13:14:10 -08:00
Jamie Pine
f7d38828b7 Merge branch 'main' into cursor/search-ui-integration-ephemeral-1978 2025-12-25 13:13:49 -08:00
Jamie Pine
3e64221f2c Implement clipboard functionality and enhance keybind handling
- 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.
2025-12-25 13:07:52 -08:00
Jamie Pine
7e23371c5d Refactor event handling in PersistentEventHandler to include periodic eviction ticks
- Replaced the previous event processing loop with a select-based approach to handle both incoming events and periodic eviction ticks.
- Ensured that expired pending removes are processed even when no new events arrive.
- Improved efficiency by reducing busy waiting during event collection.
2025-12-25 11:00:38 -08:00
Jamie Pine
bcaa1ff85c Implement directory preview and enhance file deletion testing
- Added `DirectoryPreview` component for rendering a grid view of subdirectories in the Quick Preview.
- Updated `ContentRenderer` to utilize `DirectoryPreview` for directory types.
- Introduced TypeScript integration test for verifying cache updates upon file deletions, ensuring accurate directory listing after deletions.
- Enhanced keyboard handling in Explorer to prevent shortcuts when input fields are focused.
2025-12-25 10:50:20 -08:00
Jamie Pine
4d10dd5e14 Enhance Explorer functionality with context menus and keyboard shortcuts
- Added context menu options for creating new folders and pasting files in empty space within the Explorer.
- Implemented keyboard shortcuts for entering tag assignment mode and toggling tags 1-10.
- Refactored keyboard event handling to streamline tag mode activation and file renaming.
- Updated GridView and ListView components to support context menu interactions.
2025-12-25 09:17:29 -08:00
Cursor Agent
98a342e974 feat: Implement search functionality and UI improvements
Co-authored-by: ijamespine <ijamespine@me.com>
2025-12-25 17:11:24 +00:00
Jamie Pine
b452871a67 feat: Integrate search UI with ephemeral and persistent indexes
Implements comprehensive search functionality that intelligently routes between
ephemeral (in-memory) and persistent (FTS5 database) indexes, following the
directory listing pattern for consistency.

**Backend Changes:**
- Add IndexType enum (Persistent/Ephemeral/Hybrid) to communicate which index was used
- Add FilterKind enum to indicate available filters for each search type
- Implement ephemeral_search module with content type filtering via FileTypeRegistry
- Update FileSearchOutput with index_type and available_filters fields
- Add routing logic in FileSearchQuery to determine and use appropriate index
- Support file type, size, date, and content type filters in ephemeral search

**Frontend Changes:**
- Add search mode to Explorer context (browse vs search with query/scope)
- Create SearchView component with placeholder for search results
- Wire up SearchBar with debounced search (300ms, min 2 chars)
- Integrate search mode switching in ExplorerView router

**Key Features:**
- Fast, synchronous search (no events, no jobs)
- Defaults to current folder scope (not global like Finder)
- Backend as source of truth for all search operations
- Content type filtering using FileTypeRegistry.identify_by_extension()
- Ephemeral search supports: file types, size, dates, content types
- Persistent search supports: all ephemeral filters + tags + locations

**Architecture:**
Follows the directory listing pattern: checks location index mode, queries
database, falls back to ephemeral cache. Search results indicate which index
was used and which filters are available for dynamic UI updates.
2025-12-25 08:59:51 -08:00
Jamie Pine
4f57c23ba2 Merge pull request #2928 from spacedriveapp/feature/file-004-rename-and-folders
feat: Implement file rename and folder creation (FILE-004)
2025-12-25 08:52:17 -08:00
Jamie Pine
752dd72d7a Add new types for thumbnail and audio transcription operations
- Introduced `GenerateThumbstripInput` and `GenerateThumbstripOutput` types for generating thumbstrips from video files.
- Added `RegenerateThumbnailInput` and `RegenerateThumbnailOutput` types for thumbnail regeneration functionality.
- Created `TranscribeAudioInput` and `TranscribeAudioOutput` types for audio transcription jobs.
- Updated `CoreAction` and `LibraryAction` types to include new actions related to thumbnail and audio processing.
2025-12-25 08:51:02 -08:00
Jamie Pine
fdfa664cd9 Merge branch 'main' into feature/file-004-rename-and-folders 2025-12-25 08:30:50 -08:00
Jamie Pine
42b8e2c6f1 Update TODO list and enhance ThumbnailPolicy configuration
- Marked several tasks as completed in the TODO list, including opening files with the default app, drag selection area functionality, and initializing the startup screen for Core/daemon.
- Added `run_in_background` field to ThumbnailPolicy to control background execution behavior.
2025-12-25 08:20:36 -08:00
Jamie Pine
8d157325e1 Merge branch 'main' into feature/file-004-rename-and-folders 2025-12-25 08:13:40 -08:00
Cursor Agent
d4215df67a Apply cargo fmt to fix formatting 2025-12-25 16:05:27 +00:00
Jamie Pine
3797f8ed94 Merge pull request #2936 from spacedriveapp/typescript-client-integration-testing
Add TypeScript integration testing infrastructure
2025-12-25 08:05:26 -08:00
Jamie Pine
e5dd16e51b Remove debug flag from GridView component for cleaner production code 2025-12-25 08:05:07 -08:00
Cursor Agent
3f78b97495 Merge main into feature/file-004-rename-and-folders
Resolved conflicts in:
- SelectionContext.tsx: Merged rename state with isActiveTab prop
- useFileContextMenu.ts: Combined rename/folder actions with Open With submenu
- FileCard.tsx: Integrated InlineNameEdit with useOpenWith hook
- TableRow.tsx: Integrated InlineNameEdit with useOpenWith hook
2025-12-25 16:04:48 +00:00
Jamie Pine
5b02f5569f Enhance ThumbnailJobConfig to support background execution
- Updated ThumbnailJobConfig to include `run_in_background` field, allowing jobs to run without persisting to the database or updating the UI.
- Modified IndexerJob to inherit the background flag from its configuration.
- Implemented `should_persist` method in ThumbnailJob to determine persistence based on the background execution flag.
2025-12-25 08:00:32 -08:00
Cursor Agent
c998aae88a Add documentation for TypeScript integration testing
Co-authored-by: ijamespine <ijamespine@me.com>
2025-12-25 15:52:42 +00:00
Jamie Pine
6bb6cb6c9a Enhance IndexerJobConfig to support background execution
- Added `run_in_background` field to `IndexerJobConfig` to allow jobs to run without persisting to the database or updating the UI.
- Updated `should_persist` method in `IndexerJob` to account for background jobs.
- Modified `handle_new_directory` in `DatabaseAdapter` to create background indexer jobs.
- Ensured default value for `run_in_background` is set to false in various configurations.
- Introduced a new integration test for bulk file moves to validate cache updates and file handling.
2025-12-25 07:30:07 -08:00
Jamie Pine
caf5a242fd Implement TypeScript integration tests with Rust bridge
- Added a new test suite in `core/tests/typescript_bridge_test.rs` to facilitate end-to-end testing between Rust and TypeScript.
- Introduced `IndexingHarnessBuilder` enhancements to support a daemon RPC server for TypeScript tests.
- Created TypeScript test files for `useNormalizedQuery` to validate file move and folder rename operations.
- Configured Bun test environment with `bunfig.toml` and setup scripts for improved testing efficiency.
- Updated `TcpSocketTransport` to handle TCP connections for the TypeScript client, ensuring robust communication with the Rust backend.
- Enhanced logging and error handling for better visibility during test execution.
2025-12-25 06:45:17 -08:00
Jamie Pine
d3747ccd53 Merge pull request #2935 from spacedriveapp/fix-cache
Fix cache and connection management
2025-12-25 05:51:55 -08:00
Jamie Pine
30096b77dd feat: Implement cleanup of TCP connections and manage subscriptions
- 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.
2025-12-25 05:45:01 -08:00
Jamie Pine
1998975818 feat: Implement library validation and reset mechanism
- 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.
2025-12-25 05:39:36 -08:00
Jamie Pine
050207c3e4 style: Update ThumbstripScrubber to allow pointer events
- Modified the class name in ThumbstripScrubber to enable pointer events, enhancing user interaction capabilities.
2025-12-25 03:08:50 -08:00
Jamie Pine
683714cb4a refactor: Update volume indexing process to use background task for job completion
- Replaced synchronous job completion handling with an asynchronous background task to improve responsiveness.
- Extracted job output handling and stats saving into the background task, allowing for better event-driven processing.
- Updated the `save_volume_stats` method to be static and adjusted the output structure to reflect the new indexing approach.
2025-12-25 02:43:32 -08:00
Jamie Pine
d24525d470 Merge pull request #2929 from spacedriveapp/cursor/demon-startup-overlay-a536
Demon startup overlay
2025-12-24 17:16:24 -08:00
Jamie Pine
327a255e3e style: Update OverviewTopBar button styling for improved UI
- Modified button styles in OverviewTopBar to enhance visual appeal and user experience.
- Adjusted layout properties, including height, padding, and border styles, for a more modern look.
- Simplified button content structure by removing unnecessary span elements.
2025-12-24 17:15:58 -08:00
Jamie Pine
8488700a07 feat: Add app version retrieval and enhance DaemonStartupOverlay
- 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.
2025-12-24 17:08:57 -08:00
Jamie Pine
8d9fe080ca refactor: Enhance TabBar component with layout grouping and memoization
- Integrated LayoutGroup from framer-motion to improve tab animations and transitions.
- Added useMemo to ensure safeActiveTabId is derived efficiently, preventing unnecessary re-renders.
- Refactored tab rendering logic for better clarity and performance, maintaining existing functionality.
2025-12-24 16:47:28 -08:00
Jamie Pine
938f8326fa refactor: Simplify daemon overlay management in Explorer component
- 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.
2025-12-24 16:37:44 -08:00
Jamie Pine
60b23a39f8 Merge branch 'main' into cursor/demon-startup-overlay-a536 2025-12-24 16:21:22 -08:00
Jamie Pine
d4b1a630ad Merge pull request #2932 from spacedriveapp/cursor/file-opening-system-implementation-e4cb
File opening system implementation
2025-12-24 16:15:58 -08:00
Jamie Pine
bd38204855 feat: Integrate SwiftRs for macOS file opening functionality
- 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.
2025-12-24 16:15:33 -08:00
Jamie Pine
3c685cc405 Merge branch 'main' into cursor/file-opening-system-implementation-e4cb 2025-12-24 16:00:56 -08:00
Jamie Pine
cd30082107 Merge pull request #2933 from spacedriveapp/drag-select
Add drag box selection and fix multi-select in Explorer
2025-12-24 15:53:30 -08:00
Jamie Pine
8f1d66a10e refactor: Improve formatting and structure in SelectionContext component
- 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.
2025-12-24 15:52:16 -08:00
Jamie Pine
214dfa8180 feat: Enhance drag selection functionality in Explorer views
- 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.
2025-12-24 15:36:31 -08:00
Jamie Pine
ca8eae04f8 refactor: Remove focus ring from FileCard component
- 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.
2025-12-24 15:18:11 -08:00