- Add missing @vitejs/plugin-react-swc to tauri devDependencies
- Make spaceui/spacebot vite aliases conditional in tauri config
- Use package export paths for @spacedrive/tokens CSS imports
- Use regex aliases to prevent prefix-matching collisions
- Switch macOS release runners to macos-26 (GitHub-hosted)
- Fix spaceui-link to run bun link from workspace root
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Spacebot is a separate repo not available in CI. The VoiceOverlay
component that imports it is tauri-only, so externalize it for the
web/server build.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update CSS @import paths to use the package export map
(@spacedrive/tokens/theme, /css, /css/themes/*) instead of internal
source paths. Update vite aliases to map export paths back to source
files when spaceui is available locally.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Only apply @spacedrive/* and @spacebot/* vite aliases when the sibling
repos exist locally. In CI and production builds, packages resolve from
node_modules via npm. Revert spaceui checkout from release workflow.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The web app imports @spacedrive/tokens/src/css/theme.css in index.css
but didn't declare it as a dependency, causing the vite build to fail
in CI where spaceui isn't available as a sibling directory.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- cargo fmt across all modified files
- Add Vite client types and Window.__SPACEDRIVE__ declaration
- Fix @sd/interface/platform import to @sd/interface
- Align @types/react versions between tauri and interface packages
- Remove unused imports/vars in useDropZone, DragOverlay, ContextMenuWindow
- Fix WebviewWindow.location references to use globalThis
- Exclude updater.example.ts from typecheck
- Sort `pub mod adapters` alphabetically in ops/mod.rs
- Wrap long line in volume/fs/refs.rs
- Handle empty TARGET_TRIPLE env var in xtask setup
- Replace `link:@spacedrive/*` with published `^0.2.3` versions
Address CodeRabbit review feedback:
- Apply dark titlebar to ContextMenu (direct-build window with decorations)
- Log HRESULT return values from DwmSetWindowAttribute via set_attr helper
Windows titlebar:
- Use DwmSetWindowAttribute to force dark caption color (#1E1E1E),
dark mode icons, and matching border on all windows
- Overrides user's Windows accent color that would tint the titlebar
- Applied to both config-created main window and code-created windows
Sidebar hover:
- SpaceItem: add cursor-pointer, hover bg/text for non-active items;
fix hover not applying when className prop is passed (devices)
- SidebarItem: add cursor-pointer and hover bg for non-active items
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The dev-with-daemon script hardcoded `target/debug` as the daemon
binary path, which breaks when a custom target-dir is configured
in .cargo/config.toml or CARGO_TARGET_DIR. Use `cargo metadata` to
resolve the actual target directory, with fallback to the default.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- transport.ts: clean up event listener if subscribe_to_events throws
- is_hidden_path: use FILE_ATTRIBUTE_HIDDEN only on Windows, dot-prefix
only on Unix (no cross-over that would mark .gitignore as hidden)
- reg_read_hklm: two-pass query to handle arbitrarily long REG_SZ values
- classify_volume: pass total_space instead of hardcoded 0
- ntfs volume_guid: unwrap_or(guid_buf.len()) instead of unwrap_or(0)
- wait_for_indexing: poll every 25ms instead of 5ms
- main.rs: accept both JsonOk and result keys for daemon compat
- VolumesGroup.tsx: remove unnecessary <any> type parameter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
MSI bundler rejects semver versions with non-numeric pre-release identifiers
(e.g. "2.0.0-alpha.2"). The CI already works around this by passing
--bundles nsis explicitly. Add targets: ["nsis", "app"] to tauri.windows.conf.json
so local Windows builds use the same target set as CI.
The daemon handler registry stores methods with their full prefix:
- Queries: query:<name> (e.g. query:libraries.list)
- Actions: action:<name>.input (e.g. action:libraries.open.input)
Previous fix used bare names without prefix, causing Unknown method at startup.
execute_json_operation() looks up method directly in CORE_QUERIES map.
Fix validate_and_reset_library_if_needed: libraries.list -> query:libraries.list
Fix file-association open handler: libraries.open.input -> action:libraries.open.input
Two code paths in main.rs sent JSON-RPC 2.0 formatted messages
({"jsonrpc":"2.0","id":1,"method":"query:..."}) but the daemon
expects serde-tagged DaemonRequest enums ({"Query":{"method":"..."}}).
Fix validate_and_reset_library_if_needed() (line 487):
- Request: use {"Query":{"method":"libraries.list",...}} format
- Response: parse "JsonOk" key instead of "result"
Fix file-association open handler (line 1741):
- Request: use {"Action":{"method":"libraries.open.input",...}} format
This resolves the "unknown variant 'id'" parse error and the
"Invalid response format from libraries.list query" warning at startup.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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.
- 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.
- 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.
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>
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>
- 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.
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>
- 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.
- 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.
- 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.