This commit updates the application structure by replacing the Explorer component with the new Shell component in both the Tauri and web applications. The Shell component serves as the main entry point, enhancing the overall architecture and layout management. Additionally, the interface documentation has been updated to reflect this change, ensuring clarity in the component hierarchy.
- 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
- 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
* Update rspc, prisma-client-rust, axum and tanstack-query
- Deleted some unused examples and fully commented out frontend code
- Implement many changes required due to the updates
- Update most rust dependencies
* Re-enable p2p
* Fix server
* Auto format
* Fix injected script format
- Update some github actions
- Update pnpm lock file
* Fix devtools showing up when app opens
- Fix million complaining about Sparkles component
* Fix sd-server
* Fix and improve thumbnails rendering
- Fix core always saying a new thumbnail was generated even for files that it skiped thumbnail generation
- Rewrite FileThumb and improve related components
* Ignore tmp files when running prettier
* Improve FileThumb component performance
- Rework useExplorerDraggable and useExplorerItemData hooks due to reduce unecessary re-renders
* More fixes for thumb component
- A couple of minor performance improvements to frontend code
* auto format
* Fix Thumbnail and QuickPreview
* Fix logic for when to show 'fail to load original' error message in QuickPreview
- Updated prisma-client-rust, libp2p, tauri, tauri-specta, rspc and hyper
* Fix type checking
- Format scripts
* Add script prettier config
* Fix serde missing feature
- Use rust-libp2p spacedrive fork again
- Update rspc
* Autoformat + fix pnpm lock
* Fix thumbnail first load again
* Autoformat
* autoformat
* Fix rust-libp2p fork url again?
* Remove usePathsInfiniteQuery hook
* Update tauri 2.0.6
* Refactor analytics configuration to use `configureAnalyticsProperties` instead of `initPlausible` for improved clarity
* format & add comment explaining analytics ping code
if any people reviewing source for their own verification of its purpose, this should make it much clearer what this does
* refactor Setting to use named function so its references can be source-peeked
* add basic support for 'none' telemetry option
changing the option in the Select dropdown breaks things right now, gotta figure out why
* fix usePlausibleEvent sending old telemetry level preference property to submitPlausibleEvent
* Fall back fo 'unknown' instead of '0.1.0' for app version stats
* Better explain the purpose of more things in submitPlausibleEvent
* organize and clean up internationalization file keys
* fix lowercase connect/connecting key names in code
* add no-telemetry option to onboarding
* Only display error report button if telemetry is enabled
* Add explainer to Sentry plugin for Vite
* Fix onboarding selection in both interface and mobile
* Add more explanation and checks to usePlausible to never send data unless allowed
* add support for onLoad to transform data from persisted mutable stores
* update some analytics explainers on mobile
* add telemetry state migration
* add migration for telemetry state from explorer layout key in persisted store
* fix cypress test for onboarding privacy page
* remove some accidentally included console.log statements
* Add localized analytics preference names
* Use localized telemetry preference names in Settings
* use cleaner text wrapping in settings
* Update the telemetry setting title
* fix telemetry typo
* update mobile no-analytics text
* remove telemetry override option
* eslint: disable no-empty-object-type for PlausibleOptions
the reason is commented
* Update to tauri 2.0.0 stable
- Update a some othe dependencies
- Autoformat rust and toml files
* Fix clippy complain
* Update tauri 2.0.1
- Update rspc
- Update some frontend files due changes in rspc
- Update some frontend build dependencies
* Revert babel update
* Fix code typing typing and style + a couple of bugs
* More type fixes
* First draft on task system usage, still missing job system
* Scan location roughly working, a ton of stuff to fix yet
* Updating some deps due to crashes and bugs
* Exposing non critical errors to frontend
* Getting active job reports from job system
* Using boxed opaque type to avoid a downcast issue with generics
* Task system issues discovered on race conditions
* Enable debug
* Fix job report in the job manager
* Fix race condition on steal tasks
* Fixed race condition on task suspend
* Some fixes on job progress reporting and save
* Fixed many race conditions and a hard deadlock
Also some progress report polishing
* Ignore .ts and .mts video files for now
* Some better logs
* bruh
* Internal deadlocks and excess of communication in the task system
- Also better logs
* Bunch of fixes and optimizations
* WIP at fixing file identifier
* Fixed file identifier job
- still need to work on its progress report frontend
* A bunch of polishing
* Fixed some bugs and did more polishing
* Cleanup
* Bridging old and new job systems
* A ton of fixes
* A bunch of bugs related to shutdown and resume
* Indexer and watcher bugs
* Log normalizing
* Fixing CI
* Change error! to warn! on non critical errors log
* Fix redirect to new location
* Type annotation
* Bogus merge resolution on cargo lock
Greatly improve production build size, now prod builds are 1/3 of the size
- Main spacedrive binary went from ~120M to ~40M
- Add more optimize options for rust prod build
- Improve vite settings for front-end prod build
- Improve lossless compression of PNGs
- Don't include videos in bundles when they are not used
- Don't generate/bundle sourcemap for prod builds
* Replace macos-14 with ubuntu runner in cypress
- Replace macos-14 with macos-13 runner in clippy
- macos14 runner has weaker hardware than other runners: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
* Remove pre-installed incompatible packages from ubuntu runner
https://github.com/actions/runner-images/issues/9546#issuecomment-2014940361
* Use ubuntu-20.04 for Cypress CI
* Adjust Cypress CI to follow common steps for linux env
* Debug preprep script
* Fix copy/paste typo
* Install playwright native dependencies
* Update release.yml
* Add Remove 32-bit libs to setup-system
* Change Cypress CI to macos-13
- Some small test fixes
- Fix onboarding test must skip testing default location screen if no default locations os available
* Back to ubuntu for Cypress and back to macos-14 to clippy
- Attempt to fix empty default locations on ubuntu CI runner
* Oops
* Install playwright native deps
* Replace path regexs with consts
- Click on share minimum when doing a fastOnboarding
* Try macos-14 again
* New test: Add location
- Add script to download some test files to allows tests to have a stable path for creating locations
- Improve onboarding test
- Add custom Cypress commands for fastOnboarding and deleteLibrary
- Add some documentation related to tests to CONTRIBUTING.md
- Update some deps
* Download small test-data for Cypress CI
* Replace globstar with find to make it compatible with bash 3.x
* Fix react too many re-renders
- add-location test should now pass successfully
* Make job model task text match less flaky
* Check if we were redirected to onboarding after Library was deleted
- Check if sidebar entry was created after adding a location
- Put route regex's into a separate file
- Make onboarding test ensure that no Library exists before running
* Enable test retries
- Log cypress default config during test run
* Run tests under webkit
- Pass CI envvar to tests to ensure correct cypress config
* Attempt fix CI config again
* Remove single use checkUrlIsLibrary function
* Basic cypress test
* Add e2e test command
* Add full e2e test for creating and deleting a library
* Add cypress to CI
* Fix cypress CI
- Use arm macos for running cypress
- Setup rust on cypress job
- Increase cypress CI timeout
* Remove unused APPLE_SIGNING_IDENTITY envvar
* Update deps again + Try to fix Cypress CI setup
* Update deps again
* Only test default location if it exists
* Use latest v18 NodeJS in CI
* Increase minimum node version due to updated dependency
- @typescript-eslint/eslint-plugin now requires node >=18.18
* Fix testing failing for optional default locations
* Enable video recording
- Fix screenshot and video artifact uploading
* Fix location test
- Use correct location name, instead of trying to derive it from the internal id
* wip for iDevices
* Working HardwareModel Info for iOS
* wip
* Merge 'main' into 'mob-hw-info-overview'
* Half-Working `get_volume()`
* Objective c bridge to talk to FS
* Working objc bridge
The bridge works now, and we can now access the iOS file system using the native objective-c APIs instead for proper values, including on the simulator.
* Isolate `icrate` for `ios` deployments only
* Working Stats for Android
* Clean Up + `pnpm format`
* Fix to FSInfoResult Type
Due to the RNFS fork change, I had to change the types to make it so it doesn't fail building and CI.
* iOS Device Name Fix
Fix eslint warning
- Fix some subdependencies requiring an older @typescript-eslint/parser version that is incompatible with the current version of typescript
- Add react-router and react-router-dom version lock to ensure pnpm doesn't download a version incompatible with our patched @remix/router
- Add version lock to @remix-run/router to avoid incompatibilities with our patched version
* Fix websockets over P2P + multi-node cache
* cleanup features
* Explorer over P2P demo
* wip
* wip
* working for ephemeral stuff
* Button to get out of remote viewer
* remove
* Cleanup
* more cleanup
* Fix cross-node library queries
* Files over P2P
* Drop `Header::File`
* Fix Clippy
* Don't let noobs get hacked
* Fix onboarding sometimes not redirecting to Explorer on prod builds
- Fix failure trying to compile landing prod builds outside Vercel
- Fix Server docker failing to restart due to some incorrecting logic for creating the unprivileged users erroring out
- Fix Storybook failing to build due to updates to Vite
- Update Storybook dependencies
- Remove unused Inter font dependency
- Fix some incorrect references to NodeJS types inside web code
- Fix $libraryId index using the incorrect redirect function
- Improve error handling for the $libraryId index route
- Fix Prism not being correctly loaded, and failing to register its plugins
- Improve Prism loading error handling
- Small improvement to the text highlight logic
- Fix SCSS deprecation for untyped hsl values
- Fix library query cache incorrectly saving empty values, which lead to the onboarding redirect bug
- Patch contentLayer to fix an error during the final part of it's build process
- Update most dev dependencies
- Update publish-artifact to be compatible with new @actions/artifact
- Fix issue with new vite-plugin-solid failing to build our .ts files due to the removal of the typescript plugin
- Fix pnpm overrides not applying due to incorrect placement in package.json
- Replace deprecated react-tsparticles and updated three used by the Bubbles background in the landing page
- Rework Bubbles background to be compatible with new @tsparticles/react
- Update @sd/config dependencies
- Update @sd/scripts dependencies
* Implement suggestions
- Replace mobile JS node setup with custom setup-pnpm action
- Handle GITHUB_SECRET default value in code and throw a warning when it is not set
- Fix pnpm now resolving the correct node version when building Spacedrive server docker
- Add missing getent command to spacedrive server docker
- Fix typo in entrypoint.sh
- Implement a more robust check if the user is already in a group
- Fix adduser failing due to missing default group
- Disconnect IntersectionObserver on component unmount
- Improve prism import comment
* Implement more suggestions
- Pin genent version to latest stable release of UClibc
- Add checksum checks for all ADD clauses in Spacedrive server Dockerfile
* Increase Maestro timeout to reduce CI failures due to slow simulator startup
* Dowgrade maestro to workaround CI timeout
* Improvements to the script that run maestro mobile tests
- Increase the amount of retries for a maestro test run to 6
- Increase Maestro driver startup timeout to 2 minutes
* Let run-maestro-tests.sh decide how to run itself
* ¯\_(ツ)_/¯
* Fix web spacedrive
- Replace useOperatingSystem from App.tsx to directly using the 'browser' value, as we can't access usePlatform yet and the frontend crashes due to it.
- Remove libav* deps from server docker, they are not needed anymore
- Replace debian with distroless for the runtime base image in server docker
* Fix wrong distroless base image
* Copy missing shared lib
* Add comment explaining why use the debug tag for distroless
* Add missing SpacedriveInterfaceRoot in web/App.tsx
* fda wip
* clippy
* add tauri invoke fns for FDA
* fda wip
* clippy
* add tauri invoke fns for FDA
* wip
* fda wip
* clippy
* add tauri invoke fns for FDA
* wip
* wip
* wip fda
* remove imports
* hopefully improve FDA
* execute only on macos
* ts
* ts
* Update Platform.tsx
* Update AddLocationButton.tsx
* remove console log
* fix: fda and add unit tests
* temp commit for Jake
* add fda state and keybind handling (so the frontend is kept up to date)
* update FDA
* update imports
* testing purposes
* Jakes work
* fix fda checks
* work in progress (but not working)
* remove dead files
* attempt #2
* !!!temporarily enable devtools in prod
* remove alert
* show FDA screen but don't require it
* add an FDA button to general client settings
* Update AddLocationButton.tsx
* remove dead code
* unused dep
* old errors
* remove import
* dead code
* dead code + typesafety
* eslint
* remove fda dialog references
* remove mp4 vid
* hopefully fix onboarding for non-macos OSes
* shorter nav
---------
Co-authored-by: jake <77554505+brxken128@users.noreply.github.com>
* tabs w/ multiple router instances
* fix router switching
* keybinds
* manual history tracking
* eslint
* remove scroll restoration
* fix tab removal
* route title + tab create delay
* typescript
* put tab list up top
* Remove import + show close button only if tabs length more than 1
* lint
* unify blur across whole top bar
* add to keybindings page, tauri drag region, and tooltip
* fix blur
* more drag regions
* merge moment
---------
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
Dependencies overhaul
- Update dependencies for all projects (except Mobile-only deps)
- Remove unused dependencies from all projects (except Mobile-only deps)
- Fix Storybook failing to import sd/ui style
- Add Node 21 as not supported due to sass-loader not working on it yet
- Add work-around for new rook version requiring webpack specific global property
- Fix landing dev not working due to missing default env value on dev
- Fix some incorrect uses of phosphor-icons non server side icons on server components on landing
- Fix some incorrect uses of phosphor-icons server side icon on client components on landing
- Fix landing fail to build on dev due to always required a Github Token to get the latest release
- Fix new Next.js version not suporting Response.redirect due to immutable Headers
- Add Gitlab as social link for teams page
- Update Vítor's team photo
- Add Vítor's twitter link
- Fix some warning due to missing useEffect dependencies
- Remove test-files dir
- Fix QuickPreview unblurred buttons in Linux
- Formatting
* custom updater with toasts
* new state management + updated router route
* tauri-specific update route
* ref
* update in prod only
* change 'Install' to 'Update'
* fix tsconfig
* desktop tauri
* remove tauri patch
* tauri 1.5
* tauri 1.5
* use tauri script
* native-deps
* Rework preprep and tauri script to better support tauri 1.5
* Update to tauri 1.5.1
- Update workspace and apps/desktop dependencies
- Fix mustache import, @types/mustache is not compatible with ES imports
- Replace arm64 with aarch64 in machineID, they should be treated the same and this simplyfies the code
* Fix tauri updater not building due to missing key
- Fix dmg background not being found
- Generate an adhoc key for tauri updater with it is enabled and the user is doing a prod build
* Fix ctrl+c/ctrl+v typo
* Normalie @tanstack/react-query version through workspace
- Use undici in scripts instead of global fetch
- Fix typecheck
* Fix linux prod and dev builds
- Improve error handling in tauri.mjs
* Normalize dev deps in workspace
- Improve linux shared libs setup
* Fix CI and server docker
* Fix windows
- Remove superfluous envvar
* Attempt to fix server, mobile, deb and release updater
* Attempt to fix deb and mobile again
- Fix type on deb dependency
- Enable release deb for aarch64-unknown-linux-gnu
* Github doesn't have arm runners
- Fix typo in server Dockerfile
* Publish deb and updater artifacts
* remove version from asset name
* update commands
* log release
* Some logs on updater errors
* show updater errors on frontend
* fix desktop ui caching
---------
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: Ericson Fogo Soares <ericson.ds999@gmail.com>
* New functions to open ephemeral files
* Review items for ephemeral files
* Open and OpenWith context menu for ephemeral paths
* Some warnings
* Fixing inspector
* Fixing windows
* Format
* Messy rebase
* Fix macos
* Cargo fmt
* Removing devtools as it can be opened with keybind
* Fix macos
* Separating ext for ephemeral files on inspector
* Fixing bad rebase
* Removing rename button from quickpreview for ephemeral files
* Quick Preview for ephemeral files
* Requested changes
* Life is a lie and nothing makes sense
* consistent version
* Web uses the relative alias resolver it would seem
---------
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>