Commit Graph

480 Commits

Author SHA1 Message Date
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
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
591c7461a4 Add misc UI and ephemeral watching (wip) 2025-12-09 06:05:51 -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
3739b3f34f Enhance ephemeral indexing and add filesystem watching support
- Updated `EphemeralIndex` to preserve explicitly browsed subdirectories during re-indexing, preventing loss of user navigation context.
- Modified `clear_directory_children` to return the count of cleared entries and a list of deleted browsed directories.
- Introduced `EphemeralIndexCache` enhancements to support filesystem watching, allowing paths to be monitored for changes.
- Added methods for registering, unregistering, and checking watched paths, improving the responsiveness of the indexing system.
- Updated documentation and tests to reflect new functionality and ensure reliability.
2025-12-08 00:38:04 -08:00
Jamie Pine
ed0fa209b4 Improve comments 2025-12-07 22:23:57 -08:00
Jamie Pine
c3517a554e Preserve ephemeral UUIDs during indexing
- Remove TTL-based ephemeral cache and switch to a permanent in-memory
  cache.
- Reuse ephemeral UUIDs when creating persistent entries to preserve
  continuity of user data.
- Populate ephemeral UUIDs during the processing phase and expose
  get_ephemeral_uuid in the indexer state.
- Remove the location invalidation hook and related UI usage.
2025-12-07 21:03:51 -08:00
Jamie Pine
cf400865f4 Introduce ephemeral index cache and status API
- Add a complete ephemeral indexing subsystem
  - core/src/ops/core/ephemeral_status with input/output and query types
  - core/src/ops/indexing/ephemeral with arena, cache, registry,
    index_cache, types
  - expose EphemeralIndexCache and EphemeralIndex through core modules
  - EphemeralIndexCache supports
    get/insert/create_for_indexing/mark_indexing_complete eviction and
    stats
- Implement EphemeralIndex data structures for memory-efficient storage
  - NodeArena, NameCache, NameRegistry, and related types
- Add EphemeralIndex status API
  - EphemeralCacheStatusInput and EphemeralCacheStatusQuery
  - EphemeralCacheStatus with per-index details
- Wire ephemeral indexing into the indexing flow
  - Change default Ephemeral Indexer behavior to shallow mode
  - Align code to EphemeralIndex usage across the codebase
- Enhance content kind detection in UI
  - Add getContentKind(file) helper (prefers content_identity.kind, then
    content_kind)
  - Use getContentKind in Explorer utilities and UI components
- Invalidate directory listings when location index_mode changes
  - Add useLocationChangeInvalidation to trigger refetches for ephemeral
    vs persistent indexing transitions
- Misc refactors and formatting to accommodate the new modules and APIs
2025-12-07 19:55:34 -08:00
Jamie Pine
d1392607ad chore: add default locations with IndexMode::None 2025-12-06 20:50:07 -08:00
Jamie Pine
97e3bb590a fix: update QuickPreview and Explorer sync 2025-12-06 20:50:07 -08:00
Jamie Pine
0e932defdc feat: add icons and indexing indicator to PathBar 2025-12-06 20:50:06 -08:00
Jamie Pine
0c7c5e05f2 fix: fix logCallback and setCurrentLibrary 2025-12-06 16:46:02 -08:00
Jamie Pine
17abcc4221 feat: update ExplorerView and Info.plist 2025-12-06 16:46:02 -08:00
Jamie Pine
b4024c860e Mobile app in React Native
+ validation support for Actions
2025-12-05 15:16:41 -08:00
Jamie Pine
8ef08e584d Merge branch 'daemon-disconnected-screen' of https://github.com/spacedriveapp/spacedrive into daemon-disconnected-screen 2025-12-04 18:26:28 -08:00
Jamie Pine
73b057e506 Fix daemon connection and service installation error handling
- Clear subscriptions map when connection pool resets to prevent stale subscription IDs after daemon restart
- Revert checkbox state when install/uninstall operations fail to keep UI in sync with actual state
- Return errors when launchctl/systemctl commands fail during service installation instead of silently continuing
- Add proper error checking for all systemctl commands on Linux
2025-12-04 18:25:51 -08:00
Cursor Agent
d847415e84 Refactor: Consolidate daemon status listener cleanup
Co-authored-by: ijamespine <ijamespine@me.com>
2025-12-05 02:22:26 +00:00
Jamie Pine
59d6f0d47e Add daemon service management commands 2025-12-04 18:10:24 -08:00
Jamie Pine
a3fdbf7c1e Make daemon starting state fully reactive
Adds daemon-starting event emission from Rust when the daemon starts, eliminating timeout-based logic. The starting state now accurately tracks the actual daemon startup process through events.

- Rust emits daemon-starting event when start command is called
- Platform API listens to daemon-starting events
- Hook preserves isChecking state during polling until daemon connects
- No more timeouts, everything is event-driven
2025-12-04 17:02:55 -08:00
Jamie Pine
3b605ee78d Add daemon disconnected screen with auto-reconnect
Adds a full-screen overlay when the daemon disconnects with:
- Real-time connection status indicator in top-right
- Explanation of what the daemon is and why it's required
- Restart button with background mode checkbox
- CLI commands reference panel with copy buttons
- Automatic app reload when daemon reconnects

The overlay uses reactive status polling and event-based detection to ensure accurate connection state tracking. When the daemon comes back online, the app automatically reloads to sync state.
2025-12-04 16:47:27 -08:00
Jamie Pine
40d05fcec8 feat: add cloud credential entity and migration 2025-12-03 18:00:43 -08:00
Jamie Pine
e5cb6baaba feat: update cloud credential management 2025-12-03 15:55:04 -08:00
Cursor Agent
58f2819553 Refactor: Invalidate libraries list with correct query key
Co-authored-by: ijamespine <ijamespine@me.com>
2025-12-02 23:14:50 +00:00
Cursor Agent
40459427f3 feat: Handle LibraryCreated event for modal closing
Co-authored-by: ijamespine <ijamespine@me.com>
2025-12-02 22:53:07 +00:00
Cursor Agent
5661b79a9a feat: Add Create Library modal and functionality
Co-authored-by: ijamespine <ijamespine@me.com>
2025-12-02 22:47:16 +00:00
Jamie Pine
4785592002 Merge pull request #2893 from gedeondoescode/linux-build
Fix build issues on Linux
2025-12-02 14:39:08 -08:00
Jamie Pine
cdc770c802 Revert "Fix tailwind config and add sass dependency"
This reverts commit 792d112d1c.
2025-12-02 14:29:16 -08:00
Jamie Pine
792d112d1c Fix tailwind config and add sass dependency 2025-12-02 14:26:26 -08:00
Jamie Pine
8097f5ef8a Use jobs.list and derive counts from statuses 2025-12-02 13:20:25 -08:00
Gedeon Sainrival
f01a2994f1 Fix build issues on Linux
Managed to successfully build on Linux, updated xtask to resolve errors,
and fixed interface not loading properly when using Tauri GUI.
2025-12-02 13:17:28 -05:00
Jamie Pine
518d2f4a0b Fix hook deps and memoize ListView core row model 2025-12-01 18:15:32 -08:00
Jamie Pine
9becfa1e7d Switch IPC to TCP sockets across daemon and client 2025-12-01 17:49:36 -08:00
Jamie Pine
9c8fe660d3 Remove all emojis from codebase 2025-12-01 13:33:00 -08:00
Jamie Pine
ec91994408 Refactor ListView to use table-based row rendering with useTable hook 2025-12-01 11:48:07 -08:00
Jamie Pine
142008dead Add Active Jobs API and Path Checks Plus UI Prefs 2025-12-01 10:07:31 -08:00
Jamie Pine
9acf86a9ea Add location export/import and schema changes 2025-11-30 17:27:31 -08:00
Jamie Pine
0e5e9827d1 Add native drag and drop and update submodules 2025-11-28 06:57:00 -08:00
Jamie Pine
83138f798e Emit direct virtual resources and apply tags 2025-11-27 10:05:11 -08:00
Jamie Pine
41fa50433c Add fullscreen quick preview via portal layer 2025-11-27 10:05:11 -08:00
Jamie Pine
db1dbf6655 Add Node ID field for cross-network pairing 2025-11-26 08:43:49 -08:00
Jamie Pine
e42e43e4e8 Refactor PeerList UI and imports
- Standardize imports and formatting in PeerList - Move online status
into header and show last seen - Use inline layout for received/changes
stats - Preserve existing behavior when there are no peers
2025-11-25 10:03:47 -08:00
Jamie Pine
2cb1611cb1 Switch to shared sync for spaces and related entities
- Add apply_shared_change handlers for Space, SpaceGroup, and SpaceItem
to upsert by UUID and delete by UUID

- Update registry to use shared_with_query and call apply_shared_change;
remove deletion hooks

- Enhance SyncMonitorPopover to display a colored state badge in a
header bar
2025-11-25 10:03:17 -08:00
Jamie Pine
b4ee11e631 Add timeAgo utility to format relative times 2025-11-25 09:11:40 -08:00
Jamie Pine
48e5c6665a Improve sync activity UI and registry sync order 2025-11-25 09:09:15 -08:00
Jamie Pine
7a71718eda Introduce sync activity API and UI monitor
- Add SyncActivityType enum and GetSyncActivity input/output - Implement
SyncActivityAggregator to emit state, activity, and errors - Wire
aggregator into SyncService startup to run in background - Build
frontend SyncMonitor UI: popover, peer list, activity feed, hooks -
Extend TS client types with sync.activity endpoints
2025-11-25 07:00:26 -08:00
Jamie Pine
742e9f32bf Add Empty type and centralized icon utilities 2025-11-24 07:05:47 -08:00
Jamie Pine
8808e85f4e Add paired devices support across CLI, core, and UI
- Add show_paired flag to device listing (CLI arg and input) - Extend
LibraryDeviceInfo with is_paired and is_connected; include Paired
devices in library listing when requested - Add Devices group to UI
(DevicesGroup) and hook into SpaceGroup - Extend device queries/types to
support show_paired and paired devices - Refactor Dockerfile to
multi-stage Bun + Rust builds; reuse web assets - Remove obsolete
core/ops/entries/mod.rs
2025-11-24 05:22:54 -08:00
Jamie Pine
bcab31462e Add Spacedrive server with embedded daemon
- Introduce an Axum-based HTTP server with an embedded daemon and a
JSON-RPC proxy to the daemon via a Unix socket - Bundle web UI assets
into the server with an assets feature and a build.rs that builds the
frontend using pnpm - Add multi-stage Dockerfile, docker-compose.yml,
and a Distroless runtime image - Provide TrueNAS deployment support with
a build script and setup guide - Add a new web UI (apps/web) with a
Vite-based dev/build flow and a web platform shim for the frontend -
Implement server logic (apps/server/src/main.rs): health, auth, /rpc
proxy and data-dir/socket-path wiring - Include server-specific
Cargo.toml and a comprehensive server README - Add architecture and
memory-focused docs to guide usage and design - Minor core tweak:
simplify location/resource event emission in
core/src/location/manager.rs to align with new flow - Tauri app: adjust
menus to add an Edit submenu and remove unused items
2025-11-23 11:01:01 -08:00