4260 Commits

Author SHA1 Message Date
Jamie Pine
ef6530d246 Add shared config package and update tsconfig
- Add the @sd/config package with base and app TS config and a
  package.json
- Include a base.tsconfig.json and an app.tsconfig.json for TS projects
- Update the root tsconfig to remove apps/landing and add
  packages/config
2025-12-10 20:16:35 -08:00
Jamie Pine
84d9e8c09b Set working directory for build step 2025-12-10 19:41:25 -08:00
Jamie Pine
1b36735935 Merge branch 'main' of https://github.com/spacedriveapp/spacedrive 2025-12-10 19:19:23 -08:00
Jamie Pine
25e86e754d remove external bin for now, tauri wont bundle with daemon in release
mode until this is solved, but you can use the CLI. this unblocks
compile.
2025-12-10 19:18:52 -08:00
Lynx
0386633ff4 lazily improve apple platforms icon 2025-12-10 18:02:48 -08:00
Jamie Pine
522b213f64 Update iOS Podfile.lock deps and guard daemon copy 2025-12-10 17:51:42 -08:00
Jamie Pine
b5ec591322 Always copy daemon to target path 2025-12-10 17:46:47 -08:00
Jamie Pine
cdfae75f8a fix tauri 2025-12-10 17:42:02 -08:00
Jamie Pine
b77c8e521d one fix for frozen lockfile issue is no frozen lockfile 2025-12-10 16:21:51 -08:00
Jamie Pine
8652787261 chore: regenerate bun lockfile 2025-12-10 16:08:09 -08:00
Jamie Pine
d03e277296 Update Bun version to 1.3.4 and standardize quotes in workflow files
- Changed Bun version from 'latest' to '1.3.4' in setup actions.
- Updated macOS host version from 'macos-13' to 'macos-15-intel' across multiple workflow files.
- Standardized quotes in YAML files for consistency.
2025-12-10 15:32:25 -08:00
Jamie Pine
00c98bde24 cargo fmt 2025-12-10 15:27:26 -08:00
Jamie Pine
5b1c7d5733 Update bun.lock 2025-12-10 15:26:56 -08:00
Jamie Pine
ccb5909ebd Update CI and release workflows, add TypeScript support, and refactor code for clarity
- Standardized quotes in CI and release workflow files for consistency.
- Introduced TypeScript job in CI workflow to check for file changes and run type checks.
- Refactored function signatures in the macOS Tauri library for improved readability.
- Updated Tauri configuration for release build commands and include external daemon binary.
- Enhanced artifact handling in release workflow for better organization and clarity.
2025-12-10 15:21:01 -08:00
Jamie Pine
651e9bae46 Refactor and improve code clarity across multiple files
- 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.
2025-12-10 15:08:46 -08:00
Jamie Pine
0717d8dd0a Refactor code for improved clarity and performance
- Updated argument passing in various commands to use a more concise syntax.
- Simplified iteration in the ConstantTimeEqNull implementation for better readability.
- Enhanced file path checks in EventFilters for temporary and system files.
- Added `#[must_use]` attribute to functions in FrameDecoder to indicate their importance.
- Replaced `or_insert_with` with `or_default` for cleaner code in phase summary generation.
2025-12-10 14:43:17 -08:00
Jamie Pine
c85798ddcf Fix image dimension scaling documentation 2025-12-10 14:41:20 -08:00
Jamie Pine
e5b1737caf clippy moment 2025-12-10 14:27:29 -08:00
Jamie Pine
a91c76c147 Rust fmt + fix CI xtask command 2025-12-10 14:09:46 -08:00
Jamie Pine
4525eda7de Update CI and release workflows to include native dependency setup and adjust CLI binary build features
- Added a step to set up native dependencies using `cargo xtask setup` in both CI and release workflows.
- Updated the build commands for CLI binaries to include `heif` and `ffmpeg` features, ensuring the binaries are built with the necessary capabilities.
- Modified `Cargo.toml` files for `sd-cli`, `sd-server`, and `tauri` to define `heif` and `ffmpeg` features separately, improving modularity and clarity in dependency management.
2025-12-10 14:05:24 -08:00
Jamie Pine
09d60fc7f8
Merge pull request #2904 from spacedriveapp/full-volume-ephemeral-indexing
Full volume ephemeral indexing
2025-12-10 09:46:11 -08:00
Jamie Pine
7f49e03d68 Update Spacedrive.xcscheme to use Debug build configuration for LaunchAction
- Changed the build configuration from "Release" to "Debug" in the LaunchAction section of the Spacedrive.xcscheme file, facilitating easier debugging during development.
2025-12-10 09:46:00 -08:00
Jamie Pine
def6060b5a Update file name display to include extensions in Explorer components
- Modified Title, ColumnItem, FileCard, TableRow, and MediaViewItem components to conditionally render file extensions alongside file names, enhancing clarity for users.
- Ensured consistent display of file information across different views in the Explorer interface.
2025-12-10 09:44:55 -08:00
Jamie Pine
7f3eee3848 Enhance FileOperationModal and introduce FileStack component
- Updated FileOperationModal to fetch and display file information for both source and destination, improving user experience.
- Added FileStack component to visually represent multiple files stacked with rotation, enhancing the file selection interface.
- Refactored source and destination file displays to conditionally render file thumbnails or icons based on availability.
- Improved layout and styling for better clarity and consistency in file operations.
2025-12-10 09:23:00 -08:00
Jamie Pine
6e2b45d10b Update symlink path for Spacedrive.framework in tauri configuration
- Changed the path for Spacedrive.framework to include the "Frameworks" directory, ensuring alignment with the expected structure for macOS native dependencies.
2025-12-10 09:07:01 -08:00
Jamie Pine
d8984a0688 Enhance FileOperationModal with keyboard shortcuts and improved UI
- Added keyboard shortcuts for file operations: Copy (⌘1), Move (⌘2), Skip (S), Keep both (K), and Overwrite (O).
- Improved the visual layout to clearly display source and destination files with an arrow indicator.
- Updated operation type selection buttons to include icons and shortcut hints for better user experience.
- Refactored conflict resolution options to display keyboard shortcuts alongside labels for clarity.
- Introduced a utility function to extract file names from paths for better display in the modal.
2025-12-10 09:06:49 -08:00
Jamie Pine
64a5894997 Refactor volume management and enhance asset handling
- 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.
2025-12-10 09:00:44 -08:00
Jamie Pine
3aa608fbfc Update symlink path for Spacedrive.framework on macOS
- Adjusted the symlink creation for Spacedrive.framework to include the "Frameworks" directory, aligning with the expected structure for native dependencies.
2025-12-10 08:42:47 -08:00
Jamie Pine
4d9dfbd922 Refactor VolumeBar component styles for improved clarity and consistency
- Updated CSS classes in the VolumeBar component to enhance visual consistency and clarity.
- Simplified hover effects and adjusted background styles for unique and duplicate byte displays.
- Improved comments for better understanding of the visual elements in the component.
2025-12-09 22:01:13 -08:00
Jamie Pine
124ee9bdb0
Merge pull request #2903 from spacedriveapp/better-fs-events
Refactor filesystem watcher into standalone crate
2025-12-09 21:42:31 -08:00
Jamie Pine
3f98961b44 Refactor file query handling to improve database lookup and fallback mechanisms
- 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.
2025-12-09 21:42:02 -08:00
Jamie Pine
0bae97746a Add EventBuffer for handling event subscriptions and race conditions
- 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.
2025-12-09 19:41:23 -08:00
Jamie Pine
9438965ffd Update subproject commits and Podfile.lock for dependency versioning
- Marked subprojects as dirty to indicate local changes.
- Updated Podfile.lock to reflect new versions for several dependencies, including EXConstants (18.0.11), EXManifests (1.0.10), Expo (54.0.27), and others, ensuring compatibility and access to the latest features and fixes.
- Adjusted paths in external sources to match updated dependency versions.
2025-12-09 19:24:04 -08:00
Jamie Pine
2770a7a8a9 fix volume display name and disable react-scan 2025-12-09 19:16:13 -08:00
Jamie Pine
c139aa938f Refactor ColumnView component to improve internal navigation handling
- Replaced internal navigation tracking with a ref for clearSelection to prevent unnecessary re-renders.
- Simplified the logic for initializing the column stack on external navigation changes.
- Updated file selection handling to manage column navigation without affecting currentPath, enhancing performance and usability.
2025-12-09 19:09:50 -08:00
Jamie Pine
05554b2919 Update App component and Explorer views for improved performance and usability
- Refactored the App component to enhance readability and maintainability, including adjustments to route handling and client initialization.
- Introduced QuickPreviewSyncer and QuickPreviewController components in the Explorer to optimize rendering and selection handling.
- Enhanced Column and ListView components with memoization to prevent unnecessary re-renders, improving performance during file selection and navigation.
- Updated event handling in the useNormalizedQuery hook to streamline query management and improve type safety.
- Adjusted various components to ensure consistent styling and behavior across the application.
2025-12-09 19:03:51 -08:00
Jamie Pine
34a00c152a Refactor file path handling and enhance query options in useNormalizedQuery
- 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.
2025-12-09 18:41:40 -08:00
Jamie Pine
4efcf7466b Refactor change detection and enhance event handling in persistent indexing
- 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.
2025-12-09 18:00:44 -08:00
Jamie Pine
cf998edb03 Enhance event handling for resource deletion in ephemeral writer
- 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.
2025-12-09 17:09:47 -08:00
Jamie Pine
b16a015746 Enhance EphemeralIndex entry removal and introduce event collectors
- 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.
2025-12-09 17:01:49 -08:00
Jamie Pine
1adabc7999 Add batch file and directory creation/deletion scenarios to ephemeral watcher tests
- 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.
2025-12-09 16:20:17 -08:00
Jamie Pine
deadc713be Refactor FsWatcherService and event handlers for async support
- Updated `connect` methods in `EphemeralEventHandler` and `PersistentEventHandler` to be asynchronous, allowing for non-blocking connections to the `FsWatcherService`.
- Modified `init_handlers` in `FsWatcherService` to support async initialization of event handlers.
- Adjusted service startup methods to await handler initialization, ensuring proper setup before starting the watcher.
- Enhanced test harness to utilize the new async capabilities, improving event collection and verification processes.
2025-12-09 15:59:58 -08:00
Jamie Pine
38136ab5a7 Enhance filesystem watching and integrate new sound effects
- Introduced a new filesystem watcher service, replacing the previous location watcher with a more robust and platform-agnostic implementation.
- Updated the core context to include the new filesystem watcher and refactored related services for better integration.
- Added support for ephemeral event handling, allowing real-time updates for non-persistent locations.
- Integrated new sound effects for pairing operations in the UI, enhancing user experience during device pairing.
- Updated the File Operation Modal to support both copy and move operations with improved conflict resolution options.
- Refactored related components to ensure consistency and improved performance across the application.
2025-12-09 15:19:27 -08:00
Jamie Pine
f9116ed598
Merge pull request #2902 from spacedriveapp/file-copy-ui
Adds a file copy/move modal with drag-and-drop and sidebar reordering, introduces ephemeral watcher/job handling and globally deterministic content UUIDs, and improves copy conflict handling and event filtering.

UI:
File operations: New modal for copy/move with conflict resolution (overwrite/rename/skip) and progress; drag-and-drop from explorer to locations/groups/folders; multi-file drag; sounds for actions.
Spaces sidebar: Reorder groups/items (sortable), insert at space/group, new Devices/Tags groups wiring.
Explorer: Grid virtualization, improved Column/List navigation/selection, folder drop targets, refined DnD previews.
File Copy Backend:
Adds Skip resolution and per-file rename/skip/overwrite handling; smarter destination path resolution; FastCopy delegates directories; options plumbed through actions/jobs.
Jobs:
Introduces DynJob::should_persist and ephemeral jobs that skip DB/event emission; manager logs/behavior updated accordingly.
Watcher/Events:
Context includes location_watcher; ephemeral indexing auto-registers shallow watches; metrics track ephemeral watches; skip locations with IndexMode::None.
Event filtering checks alternate_paths; platform handlers process ephemeral paths; tests cover ephemeral watcher flow.
Indexing/Content:
ContentIdentity UUIDs now globally deterministic from content_hash only; storage/linking updated; docs revised.
Libraries/Spaces:
Create default Devices and Tags space groups; adjust group order; API accepts optional group_id for item reordering.
SDK/Docs/Infra:
TS types for new enums/queries (core.ephemeral_status, FileConflictResolution::Skip); indexing docs expanded; Tailwind/font tweaks; minor package/config updates.
2025-12-09 06:25:51 -08:00
Jamie Pine
591c7461a4 Add misc UI and ephemeral watching (wip) 2025-12-09 06:05:51 -08:00
Jamie Pine
b029004a24 Comment out startup sound in App component and update sound files for copy operations 2025-12-09 00:05:35 -08:00
Jamie Pine
bf1962e5ad Enhance file selection and navigation in Explorer component
- Updated the Column component to support multiple file selection and improved type safety.
- Refactored file selection handling to utilize global selection context, allowing for better management of selected files.
- Added drag-and-drop functionality for file items using the DnD Kit.
- Improved keyboard navigation to ensure selected files remain visible during interactions.
- Updated documentation to reflect changes in type safety and file selection requirements.
2025-12-08 23:13:23 -08:00
Jamie Pine
5659e85c09 Update subproject commits and enhance content identity UUID generation
- Marked subproject commits as dirty for api, ios, macos, and workbench.
- Updated content identity UUID generation to be globally deterministic from content_hash only, enabling cross-device and cross-library deduplication.
- Refactored related documentation to reflect changes in UUID generation logic.
- Added new default group creation for Devices and Tags in LibraryManager.
- Improved keyboard navigation and selection handling in Explorer component.
2025-12-08 22:52:28 -08:00
Jamie Pine
337a284e96 Enhance file operation handling and add sound effects
- Introduced a new File Operation Modal for interactive file copy/move operations with conflict resolution options.
- Integrated sound effects for file operations, including copy and startup sounds.
- Updated the Explorer component to utilize the new modal for drag-and-drop file operations.
- Refactored job management hooks to unify job data handling and improve performance.
- Enhanced documentation for the File Operation Modal and sound effects integration.
2025-12-08 21:15:00 -08:00
Jamie Pine
9e25625285
Merge pull request #2898 from Yukeey07/patch-1
Update README with Windows dependency copy instructions
2025-12-08 18:30:27 -08:00