Commit Graph

1540 Commits

Author SHA1 Message Date
Jamie Pine
13a2b2e857 fix: address PR review feedback for PULL transfers
- Sanitize remote filename to prevent path traversal attacks
- Distinguish EOF vs actual errors when reading from stream
- Fail transfer on byte count mismatch instead of just logging
- Validate transfer_completed after loop to catch interrupted transfers
- Warn when checksum verification enabled but no checksum provided
- Remove redundant contains('..') check after canonicalize()
- Update comments for clarity
2025-12-26 12:47:43 -08:00
Jamie Pine
5c1c8dea88 feat(core): implement bidirectional remote file copy (PULL support)
Extends the FileCopyJob to support PULL operations, enabling files to be
copied FROM remote devices TO the local device. Previously, only PUSH
operations worked (local -> remote).

Changes:
- Add PullRequest/PullResponse messages to FileTransferMessage enum
- Add TransferDirection enum to detect PUSH vs PULL operations
- Refactor RemoteTransferStrategy to detect direction automatically
- Implement execute_pull() for remote source -> local destination
- Add handle_pull_request() handler on the protocol side
- Add path validation for security (prevent directory traversal)
- Add integration test for PULL operations

The strategy automatically detects direction based on SdPath:
- Source is local + Destination is remote = PUSH (existing behavior)
- Source is remote + Destination is local = PULL (new behavior)

This enables users to drag files from remote device explorers to local
folders, which previously failed with 'Source must be local path' error.

Closes FILE-005
2025-12-26 12:38:49 -08:00
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
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
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
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
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
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
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
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
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
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
7f4b757290 Add comprehensive integration tests for the tag system
- Introduced a new test suite for validating the tag workflow, including tag creation, application, and database persistence.
- Implemented event collection to verify resource events during tag operations.
- Added assertions to ensure correct tag associations with files and proper database entries.
- Enhanced logging for better traceability of test execution and outcomes.
2025-12-24 10:00:58 -08:00
Cursor Agent
ca9b8f3f73 Fix: Improve rename functionality and error handling
Co-authored-by: ijamespine <ijamespine@me.com>
2025-12-24 17:26:27 +00:00
Jamie Pine
06f0406b82 feat: Implement file rename and folder creation operations (FILE-004)
Backend:
- Add create_directory() method to VolumeBackend trait
- Implement LocalBackend and CloudBackend create_directory
- Create FileRenameAction with filename validation
- Create CreateFolderAction with optional items parameter

Frontend:
- Add rename state to SelectionContext (renamingFileId, startRename, cancelRename, saveRename)
- Create InlineNameEdit component for inline file name editing
- Integrate inline editing in GridView FileCard and ListView TableRow
- Wire up explorer.renameFile keybind (Enter key)
- Add context menu items: Rename, New Folder, New Folder with Items
2025-12-24 08:59:54 -08:00
Jamie Pine
b555156fa7 Update TODO list and enhance job logging configuration
- 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.
2025-12-24 08:04:57 -08:00
Jamie Pine
9f5c7c5880 Enhance indexing and change detection mechanisms
- 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.
2025-12-24 08:04:33 -08:00
Jamie Pine
3555a11795 Add IndexMode::Stale variant for improved stale file detection
- 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.
2025-12-24 00:49:20 -08:00
Jamie Pine
96c08fa3a1 Enhance file operations and introduce statistics listener service
- 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.
2025-12-23 08:36:42 -08:00
Jamie Pine
317b79920d Implement clipboard functionality and enhance 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.
2025-12-23 08:36:26 -08:00
Jamie Pine
ce1f52bde9 Refactor job cancellation and pause/resume error handling
- 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.
2025-12-22 07:50:35 -08:00
Jamie Pine
9925d926e2 Enhance device revocation process with library removal option
- 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.
2025-12-22 07:04:04 -08:00
Jamie Pine
d52e89768d Refactor Explorer context and navigation handling
- 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.
2025-12-22 05:37:08 -08:00
Jamie Pine
1832d929ea Implement device unpairing and cache management
- Added `remove_paired_device_from_cache` method to `DeviceManager` for removing unpaired devices from the cache.
- Enhanced `DeviceRevokeAction` to handle device revocation, including detailed logging for each step of the removal process from network registry, persistence, and DeviceManager cache.
- Updated `DevicePersistence` to ensure proper deletion of device keys from KeyManager and improved logging for device removal.
- Refactored `DeviceRegistry` to clean up node-to-device and session mappings upon device removal.
- Introduced integration tests to verify the complete lifecycle of device operations, ensuring unpaired devices are correctly removed from all caches and persistent storage.
2025-12-22 04:19:07 -08:00
Jamie Pine
4764077f56 Enhance job management functionality and UI
- 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.
2025-12-22 02:48:16 -08:00
Jamie Pine
ede5b255e3 Enhance job management UI and data structures
- 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.
2025-12-21 08:50:33 -08:00
Jamie Pine
ca5107e437 Refactor SpaceItem component and enhance drop zone management
- 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.
2025-12-21 08:00:58 -08:00
Jamie Pine
bb472a779b Add ephemeral cache reset functionality
- 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.
2025-12-21 07:12:40 -08:00
Jamie Pine
c46031a129 Enhance job management and UI components
- 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.
2025-12-21 06:11:57 -08:00
Jamie Pine
87875277b9 Implement library load failure event and enhance library directory scanning
- 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.
2025-12-21 04:42:34 -08:00
Jamie Pine
9d72285b0e Add sidecar icon handling and improve FileInspector component
- 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.
2025-12-20 11:34:09 -08:00
Jamie Pine
fc09e7bbea Enhance device revocation and media view responsiveness
- 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.
2025-12-20 10:52:52 -08:00
Cursor Agent
ab906ed980 Refactor: Optimize content kind count update
Co-authored-by: ijamespine <ijamespine@me.com>
2025-12-20 18:16:00 +00:00
Jamie Pine
a3095e4fe1 Enhance UUID preservation in indexing tests and Explorer components
- 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.
2025-12-20 09:12:50 -08:00
Jamie Pine
19fed1376a Enhance resource management and UI 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.
2025-12-20 07:48:20 -08:00
Jamie Pine
1c5a9d3558 Enhance content kind statistics and database structure
- 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.
2025-12-20 05:30:01 -08:00
Jamie Pine
1780dc8856 Enhance Gaussian Splat functionality and UI controls
- 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.
2025-12-19 00:26:07 -08:00
Jamie Pine
8abc966b84 Add Gaussian Splat generation functionality
- 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.
2025-12-18 12:20:54 -08:00