Commit Graph

4187 Commits

Author SHA1 Message Date
Jamie Pine
aff2398563 Implement shared path tracking in parallel discovery to prevent duplicate processing
- Introduced a shared `seen_paths` structure using `RwLock` to manage paths across all workers, addressing symlink loops and duplicate directory processing.
- Updated the `discovery_worker_rayon` function to utilize the shared `seen_paths`, enhancing efficiency and correctness in the discovery phase.
2025-12-07 21:37:28 -08:00
Jamie Pine
456da8a924 Enhance ephemeral indexing by clearing stale entries before re-indexing
- Implemented a mechanism to clear stale entries for a directory's children during re-indexing to prevent ghost files.
- Updated the `create_for_indexing` method to remove previously indexed paths and ensure a clean slate for new indexing operations.
- Added logging for the number of cleared entries to aid in debugging and monitoring.
2025-12-07 21:35:19 -08:00
Jamie Pine
191c7f7ef0 Refactor to a single unified ephemeral index cache 2025-12-07 21:31:15 -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
8fc01634f6 parallel indexing rayon without rayon due to async requirement 2025-12-07 15:45:26 -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
5183d37394 some more code 2025-12-05 15:17:00 -08:00
Jamie Pine
b4024c860e Mobile app in React Native
+ validation support for Actions
2025-12-05 15:16:41 -08:00
Jamie Pine
8987249de6 Merge pull request #2897 from spacedriveapp/daemon-disconnected-screen
Add daemon disconnected screen with auto-reconnect
2025-12-04 18:39:30 -08:00
Jamie Pine
76fa4203d1 Add Windows support for daemon service management
Implements scheduled task-based daemon persistence on Windows using Task Scheduler. This provides the same auto-start functionality available on macOS (LaunchAgent) and Linux (systemd).

Windows implementation:
- Uses schtasks to create/delete/query scheduled tasks
- Task runs at user logon with no elevation required
- Properly handles task creation, starting, and cleanup
- XML-based task configuration with proper settings
2025-12-04 18:34:30 -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
ff5a359980 Merge pull request #2896 from spacedriveapp/sync-event-log
Sync event log
2025-12-04 15:38:03 -08:00
Jamie Pine
b9420e806f Merge pull request #2895 from Yukeey07/main
fix(windows): Resolve build errors and runtime scripts for Windows development
2025-12-04 15:33:37 -08:00
Yukeey
4f607a603b apps/cli/src/domains/update/mod.rs
apps/tauri/scripts/dev-with-daemon.ts
bun.lock
core/src/ops/indexing/entry.rs
core/src/volume/backend/local.rs
core/src/volume/fs/ntfs.rs
core/src/volume/fs/refs.rs
core/src/volume/platform/window.rs
2025-12-04 21:43:18 +01:00
Yukeey
f4a225f2f7 Rename memory to memory_file 2025-12-04 18:17:12 +01:00
Yukeey
0790179f4f Rename :memory: to memory 2025-12-04 18:16:30 +01:00
Jamie Pine
dbcfcb3c56 Add Sync Events Export CLI and Protocol Support
- Add SyncEventsArgs to export sync events from the CLI - Wire
SyncCmd::Events and implement export_events to fetch - format and write
results - Implement JSON, SQL, and Markdown exporters - with optional
device data in the output - Extend protocol with EventLogRequest and
EventLogResponse - Enable LogSyncHandler to handle event log requests
and return logs - Expose log_handler from BackfillManager for event
logging - Update docs with CLI examples and protocol overview
2025-12-03 21:58:29 -08:00
Jamie Pine
a84ccadfa9 sync event log 2025-12-03 21:41:15 -08:00
Jamie Pine
363bd39ffc Add cloud path handling for thumbnail generation
- Introduce is_cloud_path and to_backend_path helpers - Handle cloud vs
local paths in thumbnail generation - Download cloud files to a temp
file via the volume backend - Use backend-relative paths and clean up
the temp file after use - Slightly adjust dev-scAN comment block to
delay initialization (still disabled)
2025-12-03 18:36:48 -08:00
Jamie Pine
52cd817bf0 refactor: remove unnecessary file system operations 2025-12-03 18:00:43 -08:00
Jamie Pine
0b22a7aec4 fix: update cloud credential manager instantiation 2025-12-03 18:00:43 -08:00
Jamie Pine
40d05fcec8 feat: add cloud credential entity and migration 2025-12-03 18:00:43 -08:00
Jamie Pine
cab3d4da18 cargo format 2025-12-03 15:56:27 -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
Jamie Pine
9143a8aca5 refactor: improve key generation and file operations 2025-12-03 15:54:28 -08:00
Jamie Pine
133d48be73 fix: update file category 2025-12-03 15:54:28 -08:00
Jamie Pine
fc41ad9f0f feat: update device key handling 2025-12-03 15:54:27 -08:00
Jamie Pine
bbdc2d6d67 dockerfile 2025-12-03 02:51:41 -08:00
Jamie Pine
9634fb3dc3 more contributing docs 2025-12-02 16:49:34 -08:00
Jamie Pine
b6492e11af Exclude Tauri from default workspace builds
Add default-members to Cargo.toml to omit apps/tauri from the default
workspace build. Build the Tauri frontend separately with cd apps/tauri
&& bun run tauri:dev
2025-12-02 16:49:21 -08:00
Jamie Pine
2cc79892e7 disable gpui for faster builds for now 2025-12-02 16:26:04 -08:00
Jamie Pine
45117abf14 Merge pull request #2894 from spacedriveapp/cursor/connect-new-library-button-and-handle-events-claude-4.5-opus-high-thinking-708a
Connect new library button and handle events
2025-12-02 15:16:03 -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
Jamie Pine
f3dbd9cb95 Add task tracking docs and interface tasks 2025-12-02 15:10:50 -08: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