1283 Commits

Author SHA1 Message Date
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
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
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
221affd23a Add cross-device event export and fix dropdown 2025-12-04 15:45:40 -08:00
Jamie Pine
40d05fcec8 feat: add cloud credential entity and migration 2025-12-03 18:00:43 -08:00
Jamie Pine
082119e6e8 fix: update package version 2025-12-03 15:55:04 -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 792d112d1c8b2cf4e6d87f3a8098f09488947d8e.
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
ace39839a2 Improve subscription handling and RPC reliability
- Flush RPC writer after sending responses to ensure delivery - Add
cancellation guard in useNormalizedQuery to avoid leaks - Make
SubscriptionManager concurrency-safe: deduplicate in-flight subscribes -
Track pending subscriptions to avoid races and add centralized cleanup
logic - Introduce createSubscription helper and centralized cleanup
logic - Update docs with Sync State Machine, HLC update algorithm, retry
queue, metrics, and protocol messages - Reflect new config defaults for
timeouts and intervals
2025-11-27 12:48:50 -08:00
Jamie Pine
97cc3853b5 Batch load tags for entries and refine path filter 2025-11-27 10:05:11 -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