Commit Graph

1232 Commits

Author SHA1 Message Date
Jamie Pine
f1843bf2a0 Merge branch 'main' of https://github.com/spacedriveapp/spacedrive 2026-02-06 19:59:11 -08:00
Jamie Pine
8ea57396bc Refactor daemon binary resolution in Tauri application
- Introduced a new function `find_daemon_binary` to streamline the process of locating the daemon binary, accommodating both target-triple-suffixed and plain names.
- Removed redundant code for determining the daemon path in multiple locations, enhancing code clarity and maintainability.
- Exposed the target triple to runtime code for improved daemon binary resolution.
2026-02-06 19:59:09 -08:00
Jamie Pine
21c641dddf Merge branch 'main' into release-build-fixes 2026-02-06 19:20:52 -08:00
Jamie Pine
f735852410 Refactor Tauri configuration for Windows and streamline resource management
- Updated the release workflow to conditionally include a Windows-specific configuration file for Tauri builds.
- Simplified the resource management in the Tauri configuration by removing unnecessary DLL paths from the main config and adding them to a new Windows-specific config file.
2026-02-06 18:13:24 -08:00
Jamie Pine
55a132c890 Enhance DLL copying process in setup function
- Updated the setup function to copy DLLs to additional target-triple directories for CI cross-compilation, improving build flexibility.
- Modified the logging to reflect the target directory label during the copy process.
2026-02-06 15:36:40 -08:00
StarbirdTech
5c4b000765 build: add mobile-dev profile, fix metro watcher and NDK config
Add a mobile-dev Cargo profile for faster mobile development builds
(parallel codegen, no LTO, opt-level 2) — available opt-in via
`cargo build --profile mobile-dev`. Production builds use --release.

Fix NDK host_tag to always use darwin-x86_64 on macOS since Google
ships universal binaries under that path. Make aws-lc-sys cache
cleaning opt-in via CLEAN_AWS_LC=1 to enable incremental iOS builds.

Scope Metro file watcher to src/ and packages/ instead of the entire
monorepo (avoids watching 4.5GB+ Rust target/ dirs) and fix React
resolution to use workspace root where bun hoists packages.

Apply tembo review feedback from #3011: fix SVG type declarations to
avoid DOM dependency, add sound asset type flexibility, and add public
subpath exports to ts-client.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 03:34:44 -05:00
Jamie Pine
e64e4213da Merge branch 'main' into release-build-fixes 2026-02-05 23:41:04 -08:00
StarbirdTech
abedb6a6e6 chore: fix package exports, hoist types, remove stale lockfiles
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>
2026-02-06 02:19:00 -05:00
Jamie Pine
b23ae40a01 v2.0.0-alpha.2 2026-02-05 23:12:55 -08:00
Jamie Pine
9de7ee88ed Update versioning across multiple packages and enhance GitHub Actions workflow
- 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.
2026-02-05 22:58:11 -08:00
Jamie Pine
9f7edb5086 Merge pull request #3010 from StarbirdTech/build/unify-workspace-cleanup
build: unify mobile core into root workspace
2026-02-05 22:25:24 -08:00
StarbirdTech
7741f970e5 build: unify mobile core into root workspace
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>
2026-02-06 01:01:27 -05:00
Jamie Pine
ab9c39526d Update GitHub Actions workflow to install VA-API libraries for ARM64
- Added a step to install VA-API libraries in the release workflow specifically for the ARM64 target, enhancing multimedia processing capabilities.
- Adjusted the file path in the Tauri configuration to ensure correct library linking, improving deployment consistency.
2026-02-05 21:59:50 -08:00
Jamie Pine
2ea55d86e1 Merge branch 'main' into release-build-fixes 2026-02-05 21:12:36 -08:00
StarbirdTech
74d3b82a87 feat(core): add speech-to-text feature flag for optional AI dependencies
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>
2026-01-29 00:07:07 -05:00
Jamie Pine
991956b8cd Enhance Tauri application with updater functionality
- Integrated the tauri-plugin-updater to enable automatic updates for the application.
- Updated tauri configuration to include updater artifacts and defined permissions for the updater in the capabilities schema.
- Refactored the main.rs file to initialize the updater plugin during application startup.
- Improved the handling of file sources in the mobile explorer, simplifying the logic for fetching files.
- Cleaned up unused search functionality in the mobile search screen, ensuring a more streamlined user experience.
2026-01-28 16:38:40 -08:00
Jamie Pine
13f7eeb9ae Enhance cross-compilation support in build process
- Added CARGO_BUILD_TARGET environment variable to the GitHub Actions workflow for better target management during builds.
- Updated package.json scripts to conditionally include the target option for the daemon build commands, improving flexibility for different architectures.
- Refactored the setup function in main.rs to utilize a dynamic target triple for building the release daemon, ensuring compatibility across various systems.
2026-01-24 20:41:39 -08:00
Jamie Pine
87889e5a7f Enhance native dependencies verification in GitHub Actions workflow
- Improved the verification step for native dependencies by checking the existence of the apps/.deps/lib directory and ensuring that .so files are present.
- Added detailed output for the contents of the directory and the count of .so files, providing better feedback during the build process.
2026-01-24 19:14:41 -08:00
Jamie Pine
21b0ea9668 Merge branch 'main' into release-build-fixes 2026-01-24 16:29:28 -08:00
Jamie Pine
388b4dde28 cargo fmt 2026-01-24 16:14:21 -08:00
Jamie Pine
f00b0f0fbb Update GitHub workflows for core tests and release process
- Commented out pull request trigger in core_tests.yml to simplify workflow.
- Enhanced release.yml for ARM cross-compilation by adding APT configuration steps and removing redundant setup steps for Rust target installation.
- Updated tauri commands in package.json to use the latest syntax for improved compatibility.
2026-01-24 14:15:43 -08:00
Jamie Pine
5d9a6918db Merge branch 'main' into cursor/device-proxy-pairing-651c 2026-01-24 13:27:02 -08:00
Jamie Pine
cb51a6c1fb add better ConnectionInfo 2026-01-24 12:13:26 -08:00
Jamie Pine
26a730c0f2 add sd sync partners CLI 2026-01-24 11:09:09 -08:00
Baran Mordoğan
4309ca0e97 fix: handle config changes in summarize_event 2026-01-23 09:26:02 +03:00
Jamie Pine
1d11e121dc feat(pairing): enhance proxy pairing functionality and add tests
- 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.
2026-01-22 14:55:58 -08:00
Jamie Pine
25197fde6d feat(mobile): add Jobs screen and enhance search functionality
- Introduced a new Jobs screen to display and manage job statuses with controls for pause, resume, and cancel actions.
- Updated RootLayout to include navigation to the new Jobs screen.
- Enhanced SearchScreen with improved search capabilities, including auto-focus and dynamic filtering based on user input.
- Integrated GlassContextMenu and SearchToolbar components for better user interaction during searches.
- Updated GlassSearchBar to support controlled input and clear functionality.
- Refactored ExplorerScreen to incorporate search context and improve file browsing experience.
2026-01-22 12:30:01 -08:00
Jamie Pine
60803ab7ec refactor(mobile): remove unused navigation components and enhance search functionality
- Deleted obsolete navigation components including DrawerNavigator, RootNavigator, and TabNavigator to streamline the mobile app structure.
- Introduced the GlassSearchBar component for improved search capabilities across screens.
- Updated BrowseScreen to integrate the new search bar and enhance user experience with animated scrolling and dynamic content display.
- Adjusted layout and styling for better responsiveness and visual appeal.
- Added phosphor-react-native dependency for icon support in the GlassSearchBar.
2026-01-22 11:22:18 -08:00
Cursor Agent
2f7a88a625 refactor useNormalizedQuery to accept query name
Co-authored-by: ijamespine <ijamespine@me.com>
2026-01-22 07:00:52 +00:00
Jamie Pine
0264add338 feat(mobile): add GlassSearchBar and JobManagerPanel components, update Xcode scheme
- 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.
2026-01-21 16:15:58 -08:00
Jamie Pine
59184f8849 feat(mobile): integrate LiquidGlass for enhanced UI and add sidecar statistics
- 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.
2026-01-21 14:58:12 -08:00
Jamie Pine
0f65d672ff feat(overview, mobile): Themes and improved OverviewScreen
- 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.
2026-01-21 12:26:34 -08:00
Jamie Pine
f2dc233f93 feat(file-explorer): enhance file handling and search functionality
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.
2026-01-20 10:36:18 -08:00
Jamie Pine
ebe7d36ed5 feat(recents): add RecentsView for displaying recently indexed files
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.
2026-01-20 10:35:48 -08:00
Jamie Pine
7c3e977025 feat(explorer): implement ExplorerScreen and file browsing functionality
This commit introduces the ExplorerScreen, allowing users to navigate and view files in a structured manner. It includes the implementation of hooks for fetching files, supporting both virtual and directory listings. The screen features a toggle between list and grid views, enhancing user experience. Additionally, new components for file representation in both views have been added, streamlining the browsing process and improving overall functionality.
2026-01-20 09:46:10 -08:00
Jamie Pine
1de4f625ec feat(browse): enhance BrowseScreen with new components for Devices, Locations, and Volumes
This commit introduces three new components: DevicesGroup, LocationsGroup, and VolumesGroup, to the BrowseScreen. These components utilize normalized queries to fetch and display relevant data, improving the organization and modularity of the code. Additionally, the BrowseScreen has been refactored to remove unused code and streamline the UI, enhancing overall user experience.
2026-01-19 15:43:45 -08:00
Jamie Pine
df1ee8aec5 feat(overview): add ActionButtons component and integrate into OverviewScreen
This commit introduces a new ActionButtons component to the OverviewScreen, providing quick access to device pairing, sync setup, and storage addition functionalities. The component enhances user interaction by allowing users to perform these actions directly from the overview interface. Additionally, updates to the DevicePanel and HeroStats components improve overall functionality and UI consistency.
2026-01-18 06:21:02 -08:00
Jamie Pine
aff970bc2d refactor(settings): remove unnecessary logging and streamline component structure
This commit cleans up the GeneralSettings and Settings components by removing redundant logging statements and the use of the Spacedrive client where it is no longer needed. Additionally, it updates the DeviceInfo type to include a slug field and introduces new types for device configuration updates, enhancing the overall structure and clarity of the codebase.
2026-01-17 07:55:03 -08:00
Jamie Pine
f6a68d3724 feat(settings): enhance settings UI and add device configuration updates
This commit introduces several improvements to the settings interface, including the addition of device name and slug fields in the GeneralSettings component. It also refactors the settings structure to utilize a more consistent context for state management. The UI has been updated with animations and improved styling for a better user experience. Additionally, the app now supports logging configuration updates and integrates React Query Devtools for enhanced debugging capabilities.
2026-01-17 07:39:54 -08:00
Jamie Pine
1b8e39d16b feat(volume): add volume eject functionality and update context menu
This commit introduces a new feature for safely ejecting removable volumes, enhancing the volume management capabilities. It adds the `VolumeEjectAction`, `VolumeEjectInput`, and `VolumeEjectOutput` structures to handle the eject operation. Additionally, the context menu in the UI is updated to include an option for ejecting volumes, improving user experience. The volume display logic is also refined to ensure accurate representation of volume properties. These changes collectively enhance the overall functionality and usability of the volume management system.
2026-01-16 07:13:22 -08:00
Jamie Pine
7a466e5dfa refactor(volume): update volume handling and output structure
This commit refactors the volume management system by replacing the VolumeItem struct with the Volume struct in the VolumeListOutput, streamlining the data representation. It enhances the volume display logic to utilize display names and adds helper functions to skip serializing unknown disk and volume types. Additionally, the JobManager is updated to include a new field for event emission control, improving job tracking and management. These changes improve overall clarity and efficiency in volume handling and job management.
2026-01-16 03:30:56 -08:00
Jamie Pine
635f4e54b3 feat(ephemeral): add detailed memory breakdown and UUID management for indexing
This commit introduces a detailed memory breakdown feature for the ephemeral indexing process, allowing users to view memory usage by component. It also enhances UUID management by implementing lazy generation and assignment of UUIDs during indexing and searching operations. These changes improve memory tracking and optimize UUID handling, contributing to better performance and user experience in the indexing system.
2026-01-15 09:58:26 -08:00
Jamie Pine
57a8180277 feat(daemon): refactor daemon build process to skip if already running
This commit modifies the daemon startup logic to check if the daemon is already running before attempting to build it. If the daemon is active, the build process is skipped, and the existing instance is used. This change improves efficiency by avoiding unnecessary builds and enhances the user experience during development. Additionally, the build process logging has been retained for clarity when a build is performed.
2026-01-15 09:58:09 -08:00
Jamie Pine
ae512d8c0b feat(snapshot): implement snapshot persistence for ephemeral indexes
This commit introduces a new snapshot mechanism for ephemeral indexes, allowing for fast restoration between sessions. The snapshot functionality utilizes zero-copy binary serialization with zstd compression, significantly reducing load times from over 10 minutes to just 1-2 seconds. The implementation includes methods for saving and loading snapshots, as well as enhancements to the existing indexing structure to support this feature. Additionally, the codebase is updated to ensure compatibility with the new snapshot format, improving overall performance and user experience.
2026-01-15 02:09:06 -08:00
Jamie Pine
e3a3fdc68b feat(overview): refactor OverviewScreen and introduce DevicePanel
This commit refactors the OverviewScreen component by removing the PairedDevices and StorageOverview components, replacing them with a new DevicePanel component. The DevicePanel provides a more streamlined interface for managing devices and their associated storage volumes. Additionally, the HeroStats component is updated to enhance the display of storage statistics, and the overall structure of the OverviewScreen is improved for better readability and maintainability. The changes also include the addition of new hooks for fetching location data and managing selected locations reactively.
2026-01-14 06:55:39 -08:00
Jamie Pine
0f03929600 refactor(ShellLayout, SizeView, TabBar): improve component structure and styling
This commit refactors the ShellLayout and SizeView components to enhance their structure and styling. The ShellLayout now better manages the visibility of the inspector and size view, while the SizeView component is optimized for rendering and interaction. Additionally, the TabBar component is updated for improved tab management and visual consistency. Various imports are reorganized for clarity, and CSS class names are standardized to follow a consistent format.
2026-01-13 02:52:59 -08:00
Jamie Pine
3d94195da3 chore(types): update TypeScript types generation path
This commit modifies the TypeScript types generation script to use the CARGO_MANIFEST_DIR environment variable, ensuring that the generated types are written to the correct directory within the core package structure. This change enhances the maintainability of the type generation process by preventing issues related to relative paths.
2026-01-12 19:43:36 -08:00
Jamie Pine
ccf421bc49 feat(types): generate TypeScript types for core and tauri applications
This commit introduces auto-generated TypeScript types for both the core and Tauri applications, enhancing type safety and consistency across the codebase. The generated types include various data structures and interfaces used in the applications, facilitating better integration and development experience. The types are generated using Specta and are intended to be maintained automatically, ensuring they remain up-to-date with the underlying data models.
2026-01-12 19:37:40 -08:00
Jamie Pine
6177fc480e feat(CopyJobDetails): enhance file transfer UI with auto-scrolling and metadata refetching
This commit improves the `CopyJobDetails` component by adding an auto-scroll feature that centers the currently copying file in the transfer queue. Additionally, it implements a mechanism to refetch copy metadata when the completed file count changes, ensuring that the displayed information is always up-to-date. The UI is further refined with updated icons and styles for better user experience during file operations.
2026-01-12 02:50:11 -08:00
Jamie Pine
4db6a83a45 refactor(Docker): remove legacy Docker setup and streamline server deployment
This commit removes the outdated Dockerfile, docker-compose.yml, and related documentation for the Spacedrive server, consolidating the deployment process into a single Dockerfile located in the apps/server directory. The new setup supports multi-architecture builds and includes enhanced media processing capabilities. Additionally, a self-hosting guide is introduced to assist users in deploying the server on their infrastructure, ensuring a more efficient and user-friendly experience.
2026-01-11 20:14:29 -08:00