- Add bun setup and web frontend build steps to server-build job in
release workflow (rust-embed needs apps/web/dist/ at compile time)
- Fix rustfmt violation in volume detection
- Fix storage dialog callback to use sdPath instead of location_id
- Navigate to explorer path after adding storage
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 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
Delete Sidebar.tsx, SidebarItem.tsx, Section.tsx, LocationsSection.tsx
from the old explorer sidebar. The active sidebar is SpacesSidebar
which uses SpaceItem from @spaceui/primitives.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Extract delete logic into useDeleteFiles hook (DRY: used by both
useExplorerKeyboard and useFileContextMenu)
- Add isPending guard to prevent double-deletion on rapid key presses
- Remove dead DeleteProgress struct from delete job
- Use Progress::Indeterminate for intermediate phases instead of
misleading percentage values that get overridden by with_completion
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Register explorer.delete (DEL / Cmd+Backspace) and
explorer.permanentDelete (Shift+DEL / Cmd+Alt+Backspace) handlers in
useExplorerKeyboard, using the same confirm + mutateAsync pattern as
the context menu. Clears selection after successful delete.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
- BatteryFlag: use bitmask check instead of exact equality (0x80 = no battery)
- SystemDrive: use %SystemDrive% env var instead of hardcoded C:\
- SQLite PRAGMAs: apply per-connection via SqliteConnectOptions (not one-time exec)
- System volume detection: check for Windows\System32 dir instead of drive letter
- Volume serial: use GetVolumePathNameW to resolve actual mount point
- ReFS: proper IOCTL version detection, real volume GUID, capability storage
- Volume GUID: extract shared volume_guid() from ntfs.rs to fs/mod.rs
- Device manager: reuse reg_read_hklm() instead of duplicated registry code
- VolumesGroup: remove 'local' fallback for device slug
- useNormalizedQuery: case-insensitive path matching, catch subscription errors
- Volume struct: add supports_block_cloning field for ReFS CoW routing
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>
The frontend VolumesGroup was sending volume.device_id (UUID) instead
of device.slug when constructing Physical SdPaths. This caused
as_local_path() and is_local() to return false, breaking ephemeral
volume browsing ("Location root path is not local").
Backend: SdPath::is_current_device() now accepts slug, UUID, or "local".
Frontend: VolumesGroup.tsx looks up the Device by ID and uses device.slug.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Introduced a new contributors.json file containing a list of contributors with their GitHub usernames.
- Updated AboutSettings component to display the list of contributors dynamically.
- Modified tsconfig.json to enable JSON module resolution for better imports.
- Enhanced Cargo.toml to include JSON feature for reqwest.
- Added a new Rust module to fetch and update the contributors list from GitHub.
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>
- 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.
Updated the DevicePanel component to use optional chaining when accessing the config color, enhancing the robustness of the component by preventing potential runtime errors when the config may be undefined.
Updated the DevicePanel component to use optional chaining when accessing the config icon, ensuring that it handles cases where the config may be undefined. This improves the robustness of the component.
- 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.
- 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.