1074 Commits

Author SHA1 Message Date
Jamie Pine
9becfa1e7d Switch IPC to TCP sockets across daemon and client 2025-12-01 17:49:36 -08:00
Jamie Pine
e127a5aa0b Fix database migration to handle existing library.db files 2025-12-01 14:57:55 -08:00
Jamie Pine
9c8fe660d3 Remove all emojis from codebase 2025-12-01 13:33:00 -08:00
Jamie Pine
f268acf57a Add name and cmd to ShellScopeEntryAllowedArg 2025-12-01 13:18:41 -08:00
Jamie Pine
0506f9a45a Update version to 2.0.0-pre.1 2025-12-01 12:45:10 -08:00
Jamie Pine
01ec19d352 Bump version to 2.0.0-pre 2025-12-01 12:41:57 -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
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
James Pine
ce595235b5 fix build 2025-11-26 11:54:17 -08:00
Jamie Pine
c7eff9589d refactor: update main.rs and backfill.rs for improved error handling 2025-11-26 11:09:00 -08:00
Jamie Pine
4c35d6d7f7 refactor: update Cargo.toml and FK handling 2025-11-26 11:08:59 -08:00
Jamie Pine
73da2bf1e9 Migrate pairing to pkarr-based remote discovery
- Remove relay-URL based pairing flow and rely on pkarr/DNS for remote
discovery - Extend pairing code with optional node_id and adopt version
2 QR format - Generate pairing codes using node_id and drop relay_url in
non-QR flows - Enable combined mDNS, pkarr, and DNS discovery in the
endpoint - Cache relay_url in persisted device info for reconnection
optimization - Update protocol handlers to propagate node_id and
pkarr-based flow - Adjust tests and logging to reflect the new
cross-network pairing
2025-11-25 13:57:41 -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
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
Jamie Pine
8a3387ca69 Add memory system with archive and UI integration 2025-11-23 03:33:19 -08:00
Jamie Pine
d2163d842d Enable ephemeral indexing and update docs 2025-11-22 05:57:51 -08:00
Jamie Pine
bd504a721e Add tagging UI and tag system components 2025-11-22 05:12:55 -08:00
Jamie Pine
008d05414a Refactor file handling in Explorer component
- Updated file type checks from `file.kind.type` to `file.kind` for consistency across various components in the Explorer views.
- Enhanced the `Thumb` component to conditionally hide the icon based on thumbnail loading status.
- Adjusted the `HeroStats` component for improved readability and structure.
- Added a new `iconScale` prop to the `FileInspector` component's thumbnail for better visual scaling.
2025-11-21 08:01:37 -08:00
Jamie Pine
553fadd2d4 Switch to ts-client types from root package 2025-11-20 21:43:48 -08:00
Jamie Pine
63aa0f73cc Add KeyboardHandler component that wires into the Explorer keyboard -
Integrate KeyboardHandler into ExplorerLayout to enable global keys -
Memoize Explorer state flow (useCallback/useMemo) to reduce re-renders -
Propagate selection state through GridView/FileCard via new
SelectionContext props - Memoize TopBar using React.memo to prevent
unnecessary updates
2025-11-20 11:44:06 -08:00
Jamie Pine
d31ba54080 chore: update subproject commit and add blank lines for consistency
- Updated the subproject commit reference to indicate a dirty state.
- Added blank lines to various files for improved readability and consistency across the codebase.
2025-11-20 04:38:22 -08:00
Jamie Pine
8d751b0713 feat: enhance event filtering and subscription management
- Added `include_descendants` option to event filters, allowing recursive path matching for resource events.
- Updated `affects_path` method to support descendant matching, improving event handling accuracy.
- Refactored subscription logic to utilize the new filtering capabilities, ensuring only relevant events are processed.
- Introduced tests for event filtering to validate exact vs. recursive matching, enhancing reliability of event-driven updates.
- Updated related components to leverage the new filtering options, improving overall performance and user experience.
2025-11-20 04:38:01 -08:00
Jamie Pine
a4e8ed1cbb feat: add .taurignore file and enhance package.json scripts
- Created a new .taurignore file to specify ignored directories for Tauri app changes, improving build efficiency.
- Added a new script "tauri:dev:no-watch" to package.json for running the Tauri development server without file watching, providing more flexibility during development.
- Updated assetProtocol scope in tauri.conf.json to include "/Volumes/**", enhancing asset handling for mounted volumes.
2025-11-19 01:53:26 -08:00
Jamie Pine
08912e141e feat: implement library opening functionality and filesystem watcher
- Added a new "Open Library" menu item to the application, allowing users to select a library folder.
- Implemented the backend logic to handle library opening, including JSON-RPC requests to the daemon.
- Introduced a filesystem watcher in the LibraryManager to monitor library directory changes, enabling automatic opening and closing of libraries based on filesystem events.
- Enhanced error handling for library operations and added relevant logging for better traceability.
- Updated the LibraryError enum to include filesystem watcher errors, improving error reporting.
2025-11-18 18:40:56 -08:00
Jamie Pine
ef25390441 feat: add unique bytes tracking and cache refresh functionality for volumes
- Introduced a new `unique_bytes` field in the volume model to track deduplicated content size.
- Implemented a volume refresh action to recalculate unique bytes for all volumes owned by the device, emitting a cache refresh event to invalidate frontend caches.
- Updated the storage overview component to display unique bytes and other volume statistics.
- Enhanced the event system to handle cache invalidation events, ensuring real-time updates across the application.
- Added necessary migrations and database updates to support the new volume tracking features.
2025-11-17 23:37:48 -08:00
Jamie Pine
298b069a65 refactor: streamline event and log handling in the CLI and core
- Refactored the event monitoring logic in the CLI to improve readability and maintainability.
- Updated the event summarization function to enhance formatting and clarity of event messages.
- Introduced a dedicated log streaming mechanism in the core, separating log handling from event processing.
- Enhanced the RPC server to support real-time log subscriptions, allowing for more efficient log message delivery.
- Cleaned up legacy log event handling, ensuring a clearer distinction between events and logs in the system.
2025-11-17 09:22:41 -08:00
Jamie Pine
ca8bb8534e feat: add events monitoring functionality to CLI
- Introduced a new Events domain for monitoring events in real-time, allowing users to filter events by type, library ID, job ID, and device ID.
- Updated the CLI to include an Events command, enabling users to access the new monitoring features.
- Enhanced the Cargo.lock and related modules to support the new functionality, ensuring seamless integration with existing systems.
- Added necessary arguments and command handling for the Events command in the CLI.
2025-11-17 08:25:00 -08:00
Jamie Pine
91f8503426 refactor: enhance foreign key mapping and watermark management for improved synchronization
- Introduced a new `.ignore` file to prevent auto-reload on core directory changes.
- Updated foreign key mapping logic to mark records with missing dependencies for retry, ensuring parent relationships are preserved.
- Enhanced watermark management by migrating to a dual watermark schema, allowing for better tracking of validated states and recovery points.
- Added content hash computation for device-owned resources to facilitate update detection during synchronization.
- Improved logging to provide insights into filtered records and watermark promotions, enhancing overall synchronization accuracy.
2025-11-16 15:03:26 -08:00
Jamie Pine
d93d1efaaa chore: update submodule and add statistics listener for library management
- Updated the submodule reference in the landing app.
- Added a statistics recalculation listener in the LibraryManager to monitor resource changes.
- Included clipboard permissions in the capabilities configuration for enhanced functionality.
- Improved the LibraryInfoOutput struct to implement the Identifiable trait for better resource management.
2025-11-16 03:38:54 -08:00
Jamie Pine
b4e5212b60 feat: enhance clipboard capabilities and improve sync event tracking
- Added clipboard permissions for reading and writing text in the default capabilities configuration.
- Enhanced the sync test harness to capture job lifecycle events, improving tracking of indexing completion and orphaned file management.
- Implemented checks for orphaned files during synchronization, ensuring robust handling of incomplete sync scenarios.
2025-11-16 02:49:45 -08:00
Jamie Pine
c647ee8452 feat: add unique content count to library statistics
- Introduced a new field `unique_content_count` in `LibraryStatistics` to track the number of unique content identities.
- Updated various components to calculate and display unique content count, enhancing library statistics output.
- Modified the CLI and interface to reflect the new unique content metric, improving user insights into library data.
- Adjusted serialization and API responses to include the unique content count for better data consistency across the system.
2025-11-15 04:55:20 -08:00
James Pine
998d85a511 fix text language stats and add tauri icons 2025-11-14 21:24:54 -08:00
James Pine
62fd347e64 feat: implement cross-window library ID and selected files synchronization
Backend (Tauri):
- Add AppState with current_library_id and selected_file_ids
- Persist library ID to disk for app restarts
- Add Tauri commands: get/set_current_library_id, get/set_selected_file_ids
- Emit library-changed and selected-files-changed events to all windows
- Inject window globals to all windows (not just main)

Platform abstraction:
- Add library ID methods: getCurrentLibraryId, setCurrentLibraryId, onLibraryIdChanged
- Add window management: showWindow, closeWindow, onWindowEvent, getCurrentWindowLabel
- Add selected files methods: getSelectedFileIds, setSelectedFileIds, onSelectedFilesChanged
- Implement all methods in Tauri platform layer

App layer:
- Query library ID on window mount from platform state
- Listen for library-changed events and update client
- Fix event emission to trigger hooks (emitEvent: true)
- Remove direct Tauri imports from App.tsx

This enables:
 Library ID persists across app restarts
 All windows (main, inspector, quick preview) sync library ID
 Inspector receives selected files from main window in real-time
 Popout windows get current state on mount
 Clean platform abstraction - zero Tauri code in interface

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 21:20:39 -08:00
Jamie Pine
24aa4d9798 fix: specify response type for layout query in spaces module to ensure proper JSON handling 2025-11-14 07:28:19 -08:00
Jamie Pine
267d52d769 feat: enhance volume management with new filtering options and improved event handling; add stability tests for volume fingerprints 2025-11-14 05:20:05 -08:00
Jamie Pine
f0ab50c377 feat: add job policies to location management; enhance resource routing and event emissions for virtual resources; update TypeScript types for job configurations 2025-11-13 21:28:48 -08:00
Jamie Pine
54f978d210 feat: introduce Identifiable trait genericization and Spaces resource event system; enhance resource management with direct event emissions and improved routing logic 2025-11-13 10:20:45 -08:00
Jamie Pine
92291a68ff chore: update dependencies in bun.lock and Tauri app configuration; mark subproject commits as dirty for docs, landing, and interface modules 2025-11-13 04:26:58 -08:00
Jamie Pine
e7b7ce7f25 chore: mark subproject commits as dirty for docs, landing, and interface modules; update build script in Tauri app configuration 2025-11-13 04:22:51 -08:00
Jamie Pine
334cf12746 chore: update subproject commits for docs, landing, and interface modules; fix path in Tauri app configuration 2025-11-13 04:12:08 -08:00
James Pine
7983bdbd73 fix 2025-11-13 02:25:04 -08:00
Jamie Pine
da5d53942c feat: enhance media data management by adding support for audio, video, and image metadata extraction, update database schema, and improve file query operations 2025-11-12 22:20:43 -08:00
Jamie Pine
9f82071de4 feat: update Tauri app configuration with new asset protocol and permissions, enhance file path resolution, and improve volume management caching 2025-11-12 05:38:54 -08:00
Jamie Pine
b8efa432cb feat: add Spacedrop window functionality and update related routing in the Tauri app 2025-11-12 04:00:58 -08:00
Jamie Pine
b1dcb59076 feat: implement Identifiable trait for File resource, enhancing cache management and resolving frontend hacks 2025-11-12 04:00:51 -08:00
Jamie Pine
1559ab17b9 feat: add comprehensive AI processing system documentation, including job analysis, model management, and OCR/speech-to-text integration 2025-11-11 22:01:28 -08:00
Jamie Pine
2ef179d4df chore: update Zustand dependency to version 5.0.8, modify Cargo.toml for sd-core features, and enhance sidecar manager initialization in library management 2025-11-11 15:44:00 -08:00
Jamie Pine
4dde6524af chore: update subproject commits and enhance logging configuration with multi-stream support 2025-11-11 06:55:17 -08:00