Clean up package.json files: hoist @types/react to root devDependencies
with overrides, add proper exports and type declarations to @sd/assets,
improve @sd/ts-client exports and move react/@tanstack/react-query to
peer dependencies. Fix i64/u64 type mismatch in location manager.
Delete stale lockfiles from packages/interface, packages/ts-client, and
apps/mobile/modules/sd-mobile-core that shouldn't exist in a monorepo
managed by the root lockfile.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Changed versioning from "2.0.0-pre.1" to "2.0.0-alpha.1" in various Cargo.toml files and package.json to reflect a new alpha release.
- Added support for ARM64 builds in the GitHub Actions workflow, including a new host configuration and installation of VA-API libraries for the ARM target.
- Introduced a new `bump` command in the xtask to facilitate version updates across all relevant files, improving version management.
Merge sd-mobile-core into the root Cargo workspace so desktop and
mobile share a single dependency tree and target directory. Remove dead
[patch.crates-io] entries for iroh and netdev that stopped being applied
after the iroh v0.95.1 upgrade. Switch mobile core deps to workspace
versions, fix clippy/warnings surfaced by workspace-wide checks, and
add BINDGEN_EXTRA_CLANG_ARGS to fix errno.h not found on clean macOS
builds.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previous implementation of `reconstruct_path` was Unix-specific and did
not work as intended on Windows. It has now been reworked to operate
well enough on all platforms and can work with Windows most importantly.
Introduces a proper feature flag hierarchy for AI-related dependencies,
allowing lite builds without heavy speech-to-text dependencies.
Feature hierarchy:
- `ai` - umbrella feature for all AI capabilities
- `speech-to-text` - transcription capability (requires ffmpeg + whisper)
- `whisper` - Whisper speech recognition engine (internal)
- `ffmpeg` - audio/video processing (existing)
Changes:
- Make whisper-rs, hound, rubato optional deps behind `whisper` feature
- Add `speech-to-text` feature that requires both ffmpeg and whisper
- Add `ai` umbrella feature that enables all AI features
- Update all cfg guards to use semantic `#[cfg(feature = "speech-to-text")]`
- Expose new features in apps/server and apps/cli
- Update release workflow to include `ai` feature (maintains existing behavior)
This enables:
- Mobile builds without STT (smaller binary, already using default-features=false)
- Desktop "lite" builds for users who want minimal size
- Future AI features can be added under the `ai` umbrella
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Updated the handling of file IDs for Windows to use `None::<u64>` for clarity.
- Adjusted the inode assignment in the processing phase to reflect the need for unstable features, falling back to `None` for compatibility.
- Improved the backend identifier logic for network volumes by using a temporary variable for the mount path string, enhancing readability and maintainability.
- Modified the connection type retrieval to use the .borrow() method for improved compatibility with the updated Iroh API.
- Enhanced the logic for determining device connection status, ensuring accurate online/offline state updates based on current network conditions.
- Added a TODO comment regarding the potential removal of the is_online column for better clarity in future refactoring.
- Replaced NodeId with EndpointId in various components to align with the new Iroh v0.95+ API.
- Updated connection handling to utilize EndpointAddr instead of NodeAddr, reflecting changes in the underlying library.
- Adjusted discovery and connection logic to accommodate the immutability of EndpointAddr, enhancing overall network functionality.
- Enhanced the device model to handle null values more gracefully during data extraction, ensuring robust error handling for OS version, hardware model, CPU details, and other attributes.
- Updated the DevicePanel to include new connection status icons and tooltips for better user experience.
- Integrated TooltipProvider in the Shell component for consistent tooltip functionality across the interface.
- Minor documentation updates in the getting started guide to reflect the latest version and supported platforms.
registration now only triggers when a new device is created
(messaging.rs:395-448), not when updating an existing device.
What changed:
- Moved the tokio::spawn block from after the entire match
existing statement into the Ok(None) branch (new device
creation)
- When a device is updated (already exists), it no longer sends
a registration request back
- Updated the migration to leverage SQLite's ALTER TABLE DROP COLUMN feature, eliminating the need for table recreation.
- Removed the last_sync_at, last_state_watermark, and last_shared_watermark columns from the devices table, as they are no longer utilized.
- This change streamlines the database schema and improves migration efficiency.
- Removed the last_sync_at field from the device model and related structures, as it is now superseded by per-peer watermark tracking in sync.db.
- Updated various components, including device registration, sync setup, and messaging protocols, to eliminate references to last_sync_at.
- Introduced a migration to drop the obsolete last_sync_at column from the devices table.
- Adjusted tests and helper functions to reflect the removal of last_sync_at, ensuring they align with the new sync architecture.
- Added new fields for device OS, hardware model, CPU details, memory, and storage specifications to the device registration process.
- Updated the LibraryManager to handle the new device attributes during device creation and updates.
- Modified the sync setup action to include full device information when registering devices with remote peers.
- Enhanced the messaging protocol to support the transmission of detailed hardware specs during device registration.
- Introduced a new test for transitive sync backfill to validate the complete sync process across multiple devices.
- Updated device versioning to use the `updated_at` timestamp for conflict resolution.
- Refactored sync methods to support shared changes with HLC-based conflict resolution.
- Implemented automatic device discovery via shared sync, allowing devices to propagate changes to all members in the library.
- Added migration to transition existing devices to shared sync.
- Enhanced documentation to reflect changes in device ownership and sync methods.
- Introduced new event types for proxy pairing confirmation and vouching readiness in the event summarization.
- Implemented a reload mechanism for protocol configurations to support dynamic updates during runtime.
- Enhanced the PairingProtocolHandler to manage joiner pairing handshakes and improve session handling.
- Added comprehensive unit tests for proxy pairing, covering session creation, state transitions, and vouching logic.
- Updated configuration structures to include default proxy pairing settings for better integration.
- Changed the import path for ProxyPairingConfig to app_config for better organization.
- Replaced bincode serialization with encode_to_vec for improved error handling in vouch payload signing and validation.
- Updated references to AcceptedDevice and RejectedDevice to remove unnecessary super:: prefix.
- Adjusted the vouching queue to return rows_affected as a method call for consistency.
- Enhanced TestConfigBuilder to include default proxy pairing configuration.
- Reformatted the valid themes array for better readability.
- Enhanced the downcast reference for PairingProtocolHandler to improve clarity.
- Streamlined the event emission for config changes to enhance code consistency.
- Introduced GlassSearchBar component for enhanced search functionality in the mobile app.
- Added JobManagerPanel component to manage and display job statuses.
- Updated Xcode scheme to use Debug configuration and LLDB debugger for improved development experience.
- Enhanced OverviewScreen to integrate the new components, improving user interaction and job visibility.
- Added LiquidGlass dependency to enhance visual effects in the GlassButton component.
- Updated GlassButton to support LiquidGlass effects based on device compatibility.
- Introduced PageIndicator component for improved navigation feedback in BrowseScreen.
- Enhanced OverviewScreen and HeroStats to display sidecar statistics, including count and size.
- Updated related files and dependencies to reflect these changes.
- Introduced a new GlassButton component for enhanced UI interactions.
- Updated OverviewScreen to include animated blur effects and improved header behavior during scrolling.
- Added expo-blur dependency to enhance visual effects in the mobile application.
- Adjusted Podfile.lock and package.json to reflect new dependencies and ensure compatibility.
This commit enhances the BackfillManager by collecting successfully applied UUIDs during the backfill process and emitting batch resource events for UI reactivity. It also updates the protocol handler to emit resource events for insert and update changes, ensuring that the UI reflects the latest state. Additionally, a new test is added to verify that volume ResourceChanged events are emitted correctly during synchronization, improving the overall synchronization experience.
This commit introduces improvements to the synchronization process by adding foreign key conversion to UUIDs for cross-device compatibility. It also implements batch syncing of mime types before content identities to ensure proper dependency resolution. Additionally, the content identity model is updated to include mime type and kind ID handling, enhancing data integrity during sync operations. Debugging information is added to track registered models and their sync types, improving traceability in the sync process.
This commit introduces several improvements to the file explorer and search functionalities. It adds a new `getFileKindForIcon` utility for better icon resolution based on file content kind. The search input validation now allows empty queries when sorting by `IndexedAt`, and the search query execution has been optimized to handle empty queries more efficiently. Additionally, the `ContentKind` utility has been refactored and centralized in the `ts-client`, improving code organization and reusability across components. Updates to various components ensure consistent usage of the new utilities, enhancing the overall user experience.
This commit introduces the RecentsView component, which allows users to view recently indexed files sorted by the indexed_at timestamp. The view integrates seamlessly with existing components, ensuring consistent interactions such as keyboard navigation and drag-to-select. Additionally, it updates the Explorer context to support entering and exiting recents mode, enhancing the overall file browsing experience.
This commit modifies the `query_for_sync` methods in both the Location and Volume models to rename the `_device_id` parameter to `device_id` for consistency. Additionally, it enhances the filtering logic to ensure proper device ownership checks during database queries, improving data integrity and synchronization processes. The comments have also been updated to reflect these changes.