Git Product home page Git Product logo

spacedriveapp / spacedrive Goto Github PK

View Code? Open in Web Editor NEW
28.9K 181.0 820.0 169.61 MB

Spacedrive is an open source cross-platform file explorer, powered by a virtual distributed filesystem written in Rust.

Home Page: https://spacedrive.com

License: GNU Affero General Public License v3.0

JavaScript 1.33% Rust 43.51% TypeScript 51.06% HTML 0.04% Swift 0.22% SCSS 1.59% Dockerfile 0.09% CSS 0.66% Shell 0.69% Java 0.01% Ruby 0.03% Objective-C 0.02% MDX 0.40% Kotlin 0.03% C 0.01% Mustache 0.04% PowerShell 0.27%
file-manager distributed-systems cross-platform encryption storage rust typescript

spacedrive's People

Contributors

abhnva avatar ameer2468 avatar benja avatar brendonovich avatar brxken128 avatar creatingbytes avatar fahimfba avatar fogodev avatar harry-hopkinson avatar he1d1 avatar heavenvolkoff avatar jamiepine avatar julianbraha avatar kodingdev avatar kor-pixel avatar layzeedk avatar maxichrome avatar mmattbtw avatar niikeec avatar oscartbeaumont avatar pineapplerind avatar pyro1121 avatar raghav-45 avatar rockbacon9922 avatar rocky43007 avatar sr2echa avatar tomheaton avatar utkubakir avatar voletro avatar xpolar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spacedrive's Issues

Ubuntu 22 build failure: prisma debian-openssl-3.0.x/query-engine.gz not found

Describe the bug
Prisma-client can't download. File not found. pnpm prep fails building prisma-client-rust.

Prisma client downloader picks the system openssl version. Ubuntu 22 repos use openssl 3.0.
Prisma has not released an official openssl 3.0 query-engine build yet. Step fails, can't do prisma generation.

To Reproduce
Build on ubuntu 22
node: 16.15 +
npm: 8.5.5 +

Steps to reproduce the behavior:

  1. Follow contributing local build steps
  2. pnpm prep
  3. prisma-client-rust fails with debian-openssl-3.0.x/query-engine.gz file not found error.

Expected behavior
Expected successful compilation of project.

Desktop:

  • OS: Ubuntu 22.04 LTS

Mitigation

  • Change this function to return "1.1.x".
  • Download Openssl 1.1.1n.tar.gz
  • configure; make; make install (backup your libssl.so and libcrypto.so symlinks before)
  • Make sure the libssl.so.1.1 and libcrypto.so.1.1 objects are symlinked in your system lib folder for libssl.so and libcrypto.so. Make sure to undo this when you're done.

You should link against the 1.1 .a libs instead for a more permanent solution.

[FEATURE] Syncthing integration

It would be really great if this had Syncthing as a backend, so it could be aware of the whole mesh, rather than just files sitting on one of the hosts in the mesh.

Google Drive Integration

  • Authenticating local cores
  • Authenticating cloud hosted cores
  • List files
  • Open files
  • Edit files
  • Delete files
  • Deal with ownership related to the CRDT sync layer

Ability to add custom metadata to a file

Is your feature request related to a problem? Please describe.
I'm often wanting to comment on a file, without the comment being part of the file. And then when browsing through files, these comments are something I would want to see, alongside other file metadata like the filename and date. It'd be amazing to be able to search for files and have matches from this metadata also show up in the search results.

Describe the solution you'd like
When viewing files, you should be able to add custom metadata such as a comment to a file. Filerun is another selfhosted app which does this, and the way it works is useful. There is a details pane on the right and details about the file show up there when you select any file, and comments can be added. Comments should have a date so if there are multiple comments they are listed by date (and maybe by user if there are eventually multiple users) which would end up looking a bit like a chat if there were several comments on the same file by different users.

Describe alternatives you've considered
I've just used filerun which has this, but I think spacedrive will end up being far better than filerun.

Additional context
Thanks for considering!

Missing the Code of Conduct

The project is currently missing the Code of Conduct that defines standards for how to engage in a community. If you would want to add that, then I would like to add a PR with the Code of Conduct. Please let me know what you think about that.

Folders containing `.` are having a type associated with it

Describe the bug
Any folder that contains a . in it, will have a type associated with it: this could cause a folder to have some random type at the end and the actual folder name could be cut off.

To Reproduce
Steps to reproduce the behavior:

  1. Make a new folder: ex: spacedrive.app
  2. Add it to Spacedrive
  3. Observe that app is the type.

Expected behavior
I would expect it to ignore adding a type since it's a folder, and folders don't usually have types.

Screenshots
image
image

Desktop (please complete the following information):

  • OS: macOS
  • Version: Commit c4723ac I believe

Can Supertag help you in any way?

I wrote Supertag in Rust a couple of years ago for fun. It has some innovative ideas around tagging, that I would love to see get picked up by this project. I can't contribute any development time, but I would be happy to help advise in any way that I can, if you're interested. If there's no interest, feel free to close the issue :)

Minimize restore and close buttons are missing on Windows

Describe the bug
There is no minimize restore and close button on windows

To Reproduce
build the project on windows and run pnpm desktop dev. The desktop app will pop up but has no minimize restore and close buttons.

Expected behavior
there should be three buttons just as in other apps on Windows,

Screenshots
success

Desktop (please complete the following information):

  • OS: Windows 10
  • Version [e.g. 22]

Crash reporting

We should set up a system like Sentry to report app crashes and issues. This means we can fix them before they are reported, making for a great UX.

AppImage fails to build

Describe the bug
The AppImage fails to build with all required dependencies.

What can be done to skip building it? I neither need the AppImage nor the DEB as I'm packaging it for the AUR.

    Finished release [optimized] target(s) in 3m 49s
[tauri:build] Binary stripped, size reduced by 24.91 MB
    Bundling spacedrive_0.1.0_amd64.deb
    Bundling spacedrive_0.1.0_amd64.AppImage
Error running CLI: failed to bundle project: Shell Scripting Error:`error running appimage.sh, try running with --verbose to see command output`
/build/spacedrive-git/src/spacedrive/apps/desktop:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @sd/[email protected] build: `vite build && tauri build`
Exit status 1
 ELIFECYCLE  Command failed with exit code 1.

What command needs to be run with --verbose to see the full output?

To Reproduce
Steps to reproduce the behavior:

pnpm i
pnpm prep
pnpm desktop build

Desktop (please complete the following information):

  • Manjaro GNOME (unstable branch)

[BUG] Build error on M1 when running pnpm prep

Describe the bug

pnpm prep is producing a build error on M1 MBP

It's entirely possible this is an environmental issue and not related to M1 directly, I'm not a Rust developer, this was a clean install of Rust.

To Reproduce

  1. Have an M1 MBP
  2. Follow contributing guide
  3. At the pnpm prep step, see error

Output

error: linking with `cc` failed: exit status: 1
  |
  = note: "cc" "-arch" "arm64" "/repo/spacedrive/target/debug/deps/sdcore-057366575273bd28.11l54r2yneiizk98.rcgu.o" ... 
  = note: ld: in /Users/JohnDoe/Documents/GitHub/spacedrive/target/debug/deps/libring-51854f980945fc0e.rlib(chacha-armv8-ios64.o), building for macOS, but linking in object file built for iOS, for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)      

warning: `sdcore` (lib test) generated 4 warnings (4 duplicates)
error: could not compile `sdcore` due to previous error; 4 warnings emitted
warning: build failed, waiting for other jobs to finish...
warning: `sdcore` (lib) generated 4 warnings
error: build failed
/Users/JohnDoe/Documents/GitHub/spacedrive/core:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @sd/[email protected] codegen: `cargo test && ts-node ./scripts/bindingsIndex.ts`
Exit status 101

Missing the issue templates

The project is currently missing the issue templates which are great for interacting with others in a specific way. If you would want to add them, then I would like to add a PR with some relevant issue templates. Please let me know what you think about that.

[BUG] Error when importing large libraries

Describe the bug
On macOS (tested), some libraries will become stuck when importing around the 12,600 file mark with an OS error of code 102, causing the indexing task to freeze.

To Reproduce
Steps to reproduce the behavior:

N/A currently, appears semi-random

Expected behavior
The library imports successfully.

Screenshots
Logs prior to error
The frozen state

Desktop (please complete the following information):

  • OS: macOS
  • Version 12.2.1 (21D62)
  • Machine: MacBook Air (M1, 2020)

Smartphone (please complete the following information):
N/A

Additional context

Stacktrace
[0] thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: Operation not supported on socket (os error 102)', core/src/file/indexer/scan.rs:178:81
[0] stack backtrace:
[0]    0: rust_begin_unwind
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:584:5
[0]    1: core::panicking::panic_fmt
             at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/panicking.rs:143:14
[0]    2: core::result::unwrap_failed
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/result.rs:1749:5
[0]    3: core::result::Result<T,E>::unwrap
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/result.rs:1065:23
[0]    4: sdcore::file::indexer::scan::prepare_values
             at /Users/koding/Documents/Code/Contributions/spacedriveapp/spacedrive/core/src/file/indexer/scan.rs:178:19
[0]    5: sdcore::file::indexer::scan::scan_path::{{closure}}
[0]              at /Users/koding/Documents/Code/Contributions/spacedriveapp/spacedrive/core/src/file/indexer/scan.rs:124:15
[0]    6: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/future/mod.rs:84:19
[0]    7: <sdcore::file::indexer::IndexerJob as sdcore::job::jobs::Job>::run::{{closure}}
[0]              at /Users/koding/Documents/Code/Contributions/spacedriveapp/spacedrive/core/src/file/indexer/mod.rs:32:7
   8: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/future/mod.rs:84:19
[0]    9: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/future/future.rs:123:9
[0]   10: sdcore::job::worker::Worker::spawn::{{closure}}::{{closure}}
[0]              at /Users/koding/Documents/Code/Contributions/spacedriveapp/spacedrive/core/src/job/worker.rs:109:47
[0]   11: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/future/mod.rs:84:19
[0]   12: tokio::runtime::task::core::CoreStage<T>::poll::{{closure}}
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/core.rs:161:17
[0]   13: tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/loom/std/unsafe_cell.rs:14:9
[0]   14: tokio::runtime::task::core::CoreStage<T>::poll
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/core.rs:151:13
[0]   15: tokio::runtime::task::harness::poll_future::{{closure}}
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/harness.rs:467:19
[0]   16: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/panic/unwind_safe.rs:271:9
[0]   17: std::panicking::try::do_call
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:492:40
[0]   18: ___rust_try
[0]   19: std::panicking::try
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:456:19
[0]   20: std::panic::catch_unwind
             at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panic.rs:137:14
[0]   21: tokio::runtime::task::harness::poll_future
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/harness.rs:455:18
[0]   22: tokio::runtime::task::harness::Harness<T,S>::poll_inner
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/harness.rs:103:27
  23: tokio::runtime::task::harness::Harness<T,S>::poll
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/harness.rs:57:15
[0]   24: tokio::runtime::task::raw::poll
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/raw.rs:128:5
[0]   25: tokio::runtime::task::raw::RawTask::poll
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/raw.rs:80:18
[0]   26: tokio::runtime::task::LocalNotified<S>::run
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/mod.rs:347:9
  27: tokio::runtime::thread_pool::worker::Context::run_task::{{closure}}
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/thread_pool/worker.rs:425:13
[0]   28: tokio::coop::with_budget::{{closure}}
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/coop.rs:102:9
[0]   29: std::thread::local::LocalKey<T>::try_with
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/thread/local.rs:413:16
[0]   30: std::thread::local::LocalKey<T>::with
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/thread/local.rs:389:9
  31: tokio::coop::with_budget
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/coop.rs:95:5
[0]   32: tokio::coop::budget
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/coop.rs:72:5
  33: tokio::runtime::thread_pool::worker::Context::run_task
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/thread_pool/worker.rs:424:9
  34: tokio::runtime::thread_pool::worker::Context::run
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/thread_pool/worker.rs:391:24
  35: tokio::runtime::thread_pool::worker::run::{{closure}}
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/thread_pool/worker.rs:376:17
[0]   36: tokio::macros::scoped_tls::ScopedKey<T>::set
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/macros/scoped_tls.rs:61:9
[0]   37: tokio::runtime::thread_pool::worker::run
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/thread_pool/worker.rs:373:5
  38: tokio::runtime::thread_pool::worker::Launch::launch::{{closure}}
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/thread_pool/worker.rs:352:45
[0]   39: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/blocking/task.rs:42:21
[0]   40: tokio::runtime::task::core::CoreStage<T>::poll::{{closure}}
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/core.rs:161:17
[0]   41: tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/loom/std/unsafe_cell.rs:14:9
[0]   42: tokio::runtime::task::core::CoreStage<T>::poll
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/core.rs:151:13
[0]   43: tokio::runtime::task::harness::poll_future::{{closure}}
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/harness.rs:467:19
  44: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/panic/unwind_safe.rs:271:9
[0]   45: std::panicking::try::do_call
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:492:40
[0]   46: ___rust_try
[0]   47: std::panicking::try
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:456:19
[0]   48: std::panic::catch_unwind
[0]              at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panic.rs:137:14
[0]   49: tokio::runtime::task::harness::poll_future
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/harness.rs:455:18
[0]   50: tokio::runtime::task::harness::Harness<T,S>::poll_inner
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/harness.rs:103:27
  51: tokio::runtime::task::harness::Harness<T,S>::poll
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/harness.rs:57:15
  52: tokio::runtime::task::raw::poll
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/raw.rs:128:5
  53: tokio::runtime::task::raw::RawTask::poll
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/raw.rs:80:18
  54: tokio::runtime::task::UnownedTask<S>::run
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/task/mod.rs:384:9
[0]   55: tokio::runtime::blocking::pool::Task::run
[0]              at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/blocking/pool.rs:91:9
[0]   56: tokio::runtime::blocking::pool::Inner::run
             at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/blocking/pool.rs:308:17
[0]   57: tokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}}
             at /Users/koding/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/blocking/pool.rs:288:17

`pnpm prep` failed to parse manifest

❯ pnpm prep
cargo prisma "generate"
error: failed to parse manifest at `Cargo.toml`

Caused by:
  namespaced features with the `dep:` prefix are only allowed on the nightly channel and requires the `-Z namespaced-features` flag on the command-line
spacedrive/core:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @sd/[email protected] prisma: `cargo prisma "generate"`
Exit status 101
 ELIFECYCLE  Command failed with exit code 1.
  • OS: Manjaro Linux
  • Version 21.2.6

"path too long" error on Windows from cargo prisma "generate"

Describe the bug

Running pnpm prep for 6c7b224 causes the following on my Windows 11 machine:

> [email protected] prep C:\Users\ilkka.poutanen\Code\spacedrive
> pnpm db:gen


> [email protected] db:gen C:\Users\ilkka.poutanen\Code\spacedrive
> pnpm core prisma generate


> [email protected] core C:\Users\ilkka.poutanen\Code\spacedrive
> pnpm --filter @sd/core --  "prisma" "generate"


> @sd/[email protected] prisma C:\Users\ilkka.poutanen\Code\spacedrive\core
> cargo prisma "generate"

    Updating git repository `https://github.com/Brendonovich/prisma-client-rust.git`
    Updating git repository `https://github.com/Brendonovich/prisma-engines`
error: failed to get `datamodel` as a dependency of package `prisma-client-rust v0.4.0 (https://github.com/Brendonovich/prisma-client-rust.git?tag=0.4.0#4c6c4bf9)`
    ... which satisfies git dependency `prisma-client-rust` (locked to 0.4.0) of package `sdcore v0.1.0 (C:\Users\ilkka.poutanen\Code\spacedrive\core)`
    ... which satisfies path dependency `sdcore` (locked to 0.1.0) of package `spacedrive v0.1.0 (C:\Users\ilkka.poutanen\Code\spacedrive\apps\desktop\src-tauri)`

Caused by:
  failed to load source for dependency `datamodel`

Caused by:
  Unable to update https://github.com/Brendonovich/prisma-engines?rev=8b94a80a2d8f12a2916fe28e3218162aa71e8539#8b94a80a

Caused by:
  path too long: 'C:/Users/ilkka.poutanen/scoop/persist/rustup/.cargo/git/checkouts/prisma-engines-8e1416dd0e571d11/8b94a80/migration-engine/connectors/mongodb-migration-connector/tests/migrations/scenarios/composite_indexes_can_be_changed_from_descending_to_ascending/.gitattributes'; class=Filesystem (30)
C:\Users\ilkka.poutanen\Code\spacedrive\core:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @sd/[email protected] prisma: `cargo prisma "generate"`
Exit status 101
 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.

I'm not super well versed on Windows particulars, but based on some Googling I believe this might be caused by something down in there using old APIs that don't allow paths longer than 260 characters. I do have the registry key for long path support turned on.

Anyway, I do understand that letting Windows users build the app at this point is probably quite low down on your list of priorities, just though I'd report this to give you a heads up on possible future problems wrt making Windows binaries :)

Cheers!

Reproduction

  1. Clone repo
  2. pnpm i
  3. rustup override set nightly
  4. pnpm prep

Expected behavior

No response

Platform and versions

Windows 11 Pro 21H2 (22000.613)

$ pnpm --version
7.0.0
$ cargo --version
cargo 1.62.0-nightly (a44758ac8 2022-05-04)
$ rustc --version
rustc 1.62.0-nightly (4c60a0ea5 2022-05-04)

Stack trace

No response

Additional context

No response

Is the project going to use P2P out of local network?

Some people have different setups and want to access their data out of home. It seems that methods of forcing your network to be "local", by for example a VPN, aren't very user friendly. Does the project aim to combat this issue? Is it going to rely on key pairs instead of login/password combos? Make the adding device process as convenient as scanning a QR code on one or two devices?

Not a list of demands by any chance, but the description I went through seems to be the closest to providing a big-guy-cloud alternative (for those who have enough space on their devices, of course) and alternative to full fledged self hosting, always-on, single server generally promoted solutions. Many people would never think of using a third party storage solution or setting up a 24/7 uptime server if they could easily access the files from all their powered on devices from anywhere, so there's a lot to win.

Finish Core Refactor

Previous:

  • New API using Derive macros
  • Database migrations for each library
  • Hot reload libraries into core
  • Add platform abstraction to frontend**

Sunday:

  • Event system
  • Typescript Changes Done:
    • Typescript bindings linked back up
    • Working events
  • Merge in file system abstraction

Monday:

  • Job system
  • Refactor queries, commands and events to the new system

Tuesday:

  • Refactor queries, commands and events to the new system

Wednesday:

  • Typescript check
  • Upgrade all Rust and Typescript deps
  • Remove any used deps
  • Removing unimplemented!(), todo!() and .unwrap()
  • Hook Tauri back up to frontend

Technical Stuff

Commands:

  • location_add.rs
  • location_generatethumbs.rs
  • identify_unique_files.rs

Queries:

  • core_info.rs
  • location_getall.rs
  • location_get.rs
  • volume_getall.rs
  • location_get_files.rs
  • job_get_running.rs
  • job_get_history.rs

Events:

  • InvalidateQuery(ClientQuery),
  • InvalidateQueryDebounced(ClientQuery),
  • InvalidateResource(CoreResource),
  • NewThumbnail { cas_id: String },
  • Log { message: String },
  • DatabaseDisconnected { reason: Option },

Missing UI Flows:

  • Make Library Dropdown work
  • Create Library
  • Update Library
  • Delete Library
  • Detect 0 libraries on startup and guide user through creating one

Setup scripts

  • Windows
  • Linux - Arch
  • Linux - Ubuntu
  • Linux - PopOS
  • Linux - Debian
  • Linux - Fedora
  • Convert CI to use the script

[Question] it's a good idea install deps with a bash script?

The question arises after the introduction of setup-system.sh script to auto install the required deps. the perplexities that have arisen are:

  • How many Os, package managers and environments the script has to support and maintain?
  • it isn't too restrictive and categorical as an approach? As user and as dev, I would to be totally independent from the local environment of the project. There are ad-hoc tools developed to solve this problem like asdf

iCloud Drive Integration

  • Authenticating local cores
  • Authenticating cloud-hosted cores - In the short term we won't support iCloud Drive on hosted due to requirement for Mac.
  • List files
  • Open files
  • Edit files
  • Delete files
  • Deal with ownership related to the CRDT sync layer

P2P Communication

  • Communication via QUIC
  • Secure communication using mutual TLS
  • Intergrate communication with the core
  • Discovery using the hosted discovery service
  • Investigate adding UDP hole punching

[BUG] Install Error - Linux

Describe the bug
Install error on Linux (Pop!_OS)

Error

❯ pnpm i
Scope: all 11 workspace projects
packages/interface                       |  WARN  deprecated @types/[email protected]
packages/ui                              |  WARN  deprecated [email protected]
packages/ui                              |  WARN  deprecated [email protected]
apps/desktop                             |  WARN  deprecated [email protected]
packages/ui                              |  WARN  deprecated [email protected]
Packages: +842
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Packages are hard linked from the content-addressable store to the virtual store.
  Content-addressable store is at: /home/astro/.local/share/pnpm/store/v3
  Virtual store is at:             node_modules/.pnpm
Progress: resolved 870, reused 829, downloaded 3, added 842, done

devDependencies:
+ prettier 2.6.2
+ turbo 1.2.4

 ERR_PNPM_PEER_DEP_ISSUES  Unmet peer dependencies

apps/desktop
└─┬ vite-plugin-react-svg
  └─┬ @babel/plugin-transform-react-jsx
    ├── ✕ missing peer @babel/core@^7.0.0-0
    └─┬ @babel/plugin-syntax-jsx
      └── ✕ missing peer @babel/core@^7.0.0-0
Peer dependencies that should be installed:
  @babel/core@">=7.0.0-0 <8.0.0"  

apps/landing
├─┬ @babel/preset-react
│ ├── ✕ missing peer @babel/core@^7.0.0-0
│ ├─┬ @babel/plugin-transform-react-display-name
│ │ └── ✕ missing peer @babel/core@^7.0.0-0
│ ├─┬ @babel/plugin-transform-react-jsx
│ │ ├── ✕ missing peer @babel/core@^7.0.0-0
│ │ └─┬ @babel/plugin-syntax-jsx
│ │   └── ✕ missing peer @babel/core@^7.0.0-0
│ ├─┬ @babel/plugin-transform-react-jsx-development
│ │ └── ✕ missing peer @babel/core@^7.0.0-0
│ └─┬ @babel/plugin-transform-react-pure-annotations
│   └── ✕ missing peer @babel/core@^7.0.0-0
├─┬ ts-node
│ └── ✕ missing peer @types/node@"*"
├─┬ @tailwindcss/typography
│ └── ✕ missing peer tailwindcss@">=3.0.0 || >= 3.0.0-alpha.1 || insiders"
├─┬ @icons-pack/react-simple-icons
│ └── ✕ unmet peer react@"^16.13 || ^17": found 18.0.0
└─┬ react-helmet
  └─┬ react-side-effect
    └── ✕ unmet peer react@"^16.3.0 || ^17.0.0": found 18.0.0
Peer dependencies that should be installed:
  @babel/core@">=7.0.0-0 <8.0.0"                         tailwindcss@">=3.0.0 || >= 3.0.0-alpha.1 || insiders"  
  @types/node@"*"                                        

packages/client
└─┬ react-query
  └── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0

packages/interface
├─┬ @apollo/client
│ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0"
│ ├── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0
│ ├─┬ @graphql-typed-document-node/core
│ │ └── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
│ └─┬ graphql-tag
│   └── ✕ missing peer graphql@"^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
├─┬ autoprefixer
│ └── ✕ missing peer postcss@^8.1.0
├─┬ @radix-ui/react-dialog
│ ├── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ ├── ✕ unmet peer react-dom@"^16.8 || ^17.0": found 18.0.0
│ ├─┬ @radix-ui/react-compose-refs
│ │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ ├─┬ @radix-ui/react-context
│ │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ ├─┬ @radix-ui/react-dismissable-layer
│ │ ├── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ │ ├─┬ @radix-ui/react-primitive
│ │ │ ├── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ │ │ └─┬ @radix-ui/react-slot
│ │ │   └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ │ ├─┬ @radix-ui/react-use-body-pointer-events
│ │ │ ├── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ │ │ └─┬ @radix-ui/react-use-layout-effect
│ │ │   └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ │ ├─┬ @radix-ui/react-use-callback-ref
│ │ │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ │ └─┬ @radix-ui/react-use-escape-keydown
│ │   └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ ├─┬ @radix-ui/react-focus-guards
│ │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ ├─┬ @radix-ui/react-focus-scope
│ │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ ├─┬ @radix-ui/react-id
│ │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ ├─┬ @radix-ui/react-portal
│ │ ├── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ │ └── ✕ unmet peer react-dom@"^16.8 || ^17.0": found 18.0.0
│ ├─┬ @radix-ui/react-use-controllable-state
│ │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ └─┬ react-remove-scroll
│   ├─┬ react-remove-scroll-bar
│   │ ├── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0
│   │ ├── ✕ unmet peer @types/react@"^16.8.0 || ^17.0.0": found 18.0.0
│   │ └─┬ react-style-singleton
│   │   ├── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0
│   │   └── ✕ unmet peer @types/react@"^16.8.0 || ^17.0.0": found 18.0.0
│   ├─┬ use-callback-ref
│   │ ├── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0
│   │ └── ✕ unmet peer @types/react@"^16.8.0 || ^17.0.0": found 18.0.0
│   └─┬ use-sidecar
│     └── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0
├─┬ @radix-ui/react-dropdown-menu
│ ├── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ ├── ✕ unmet peer react-dom@"^16.8 || ^17.0": found 18.0.0
│ └─┬ @radix-ui/react-menu
│   ├── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│   ├── ✕ unmet peer react-dom@"^16.8 || ^17.0": found 18.0.0
│   ├─┬ @radix-ui/react-collection
│   │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│   ├─┬ @radix-ui/react-popper
│   │ ├── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│   │ ├─┬ @radix-ui/react-arrow
│   │ │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│   │ ├─┬ @radix-ui/react-use-rect
│   │ │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│   │ └─┬ @radix-ui/react-use-size
│   │   └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│   ├─┬ @radix-ui/react-roving-focus
│   │ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│   └─┬ @radix-ui/react-use-direction
│     └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
├─┬ @radix-ui/react-icons
│ └── ✕ unmet peer react@"^16.x || ^17.x": found 18.0.0
├─┬ @radix-ui/react-progress
│ └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
├─┬ @radix-ui/react-slider
│ ├── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
│ └─┬ @radix-ui/react-use-previous
│   └── ✕ unmet peer react@"^16.8 || ^17.0": found 18.0.0
├─┬ react-json-view
│ ├── ✕ unmet peer react@"^17.0.0 || ^16.3.0 || ^15.5.4": found 18.0.0
│ ├── ✕ unmet peer react-dom@"^17.0.0 || ^16.3.0 || ^15.5.4": found 18.0.0
│ ├─┬ flux
│ │ └── ✕ unmet peer react@"^15.0.2 || ^16.0.0 || ^17.0.0": found 18.0.0
│ └─┬ react-textarea-autosize
│   ├── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0
│   ├─┬ use-composed-ref
│   │ └── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0
│   └─┬ use-latest
│     └── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0
├─┬ react-query
│ └── ✕ unmet peer react@"^16.8.0 || ^17.0.0": found 18.0.0
└─┬ react-spline
  └── ✕ unmet peer react@^16.0.0: found 18.0.0
Peer dependencies that should be installed:
  graphql@">=14.0.0 <15.0.0 || >=15.0.0 <16.0.0 || >=16.0.0 <17.0.0"  postcss@^8.1.0                                                      

packages/ui
└─┬ @headlessui/react
  └── ✕ missing peer react-dom@"^16 || ^17 || ^18"
Peer dependencies that should be installed:
  react-dom@"^16 || ^17 || ^18"  
[WARN] - (starship::utils): Executing command "/usr/bin/git" timed out.

Failed to load manifest for workspace member `src/spacedrive/apps/desktop/src-tauri`

  • OS: Manjaro Linux
  • Version 21.2.6
  • cargo 1.59.0
  • node v17.8.0

I've installed rust with pacman and pnpm with the following PKGBUILD

pkgname=pnpm
pkgver=6.32.11
pkgrel=1
pkgdesc="Fast, disk space efficient package manager"
arch=('any')
url="https://pnpm.io"
license=('MIT')
depends=('nodejs>=12.17.0' 'python')
makedepends=('jq' 'npm')
source=("https://registry.npmjs.org/$pkgname/-/$pkgname-$pkgver.tgz")
noextract=("$pkgname-$pkgver.tgz")
sha256sums=('38f9d94a8151ac80c429000d02ba7a0573e07e45eaeffc59ff0ab70c4b2a7da8')

package() {
  npm install -g --prefix "$pkgdir"/usr "$srcdir/$pkgname-$pkgver.tgz"

  # npm gives ownership of ALL FILES to build user
  # https://bugs.archlinux.org/task/63396
  chown -R root:root "$pkgdir"

  # Sort and cleanup package.json
  find "$pkgdir" -name package.json -print0 | xargs -r -0 sed -i '/_where/d'

  local tmppackage="$(mktemp)"
  local npmdir="$pkgdir/usr/lib/node_modules/$pkgname"
  local pkgjson="$npmdir/package.json"
  jq '.|=with_entries(select(.key|test("_.+")|not))' "$pkgjson" > "$tmppackage"
  mv "$tmppackage" "$pkgjson"
  chmod 644 "$pkgjson"

  # Delete JS SourceMaps
  find "$pkgdir/usr/lib" -depth -name '*.map' -delete

  install -Dm644 "$npmdir/LICENSE" -t "$pkgdir/usr/share/licenses/$pkgname/"
  install -Dm644 "$npmdir/README.md" -t "$pkgdir/usr/share/doc/$pkgname/"
  rm -rf "$pkgdir/usr/etc" "$npmdir/LICENSE" "$npmdir/README.md"
}

Then I tried to install spacedrive with this PKGBUILD:

pkgname=spacedrive-git
pkgver=r400.a4637ca
pkgrel=1
_debver=0.1.0
pkgdesc="An open source cross-platform file explorer, powered by a virtual distributed filesystem written in Rust."
arch=('x86_64')
url="https://www.spacedrive.app"
license=('GPL3')
depends=('ffmpeg' 'webkit2gtk')
makedepends=('cargo' 'clang' 'git' 'nodejs>=14.0.0' 'npm' 'pnpm>=6.0.0')
provides=("${pkgname%-git}")
conflicts=("${pkgname%-git}")
options=('!lto')
source=('git+https://github.com/spacedriveapp/spacedrive.git')
sha256sums=('SKIP')

pkgver() {
  cd "$srcdir/${pkgname%-git}"
  printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

prepare() {
  cd "$srcdir/${pkgname%-git}"
  pnpm config set store-dir "$srcdir/.pnpm-store"
  export RUSTUP_TOOLCHAIN=stable

  pnpm i

  cargo fetch --target "$CARCH-unknown-linux-gnu"

  # Don't bundle AppImage
  sed -i 's/"targets": "all",/"targets": "deb",/g' \
    apps/desktop/src-tauri/tauri.linux.conf.json
}

build() {
  cd "$srcdir/${pkgname%-git}"
  pnpm config set store-dir "$srcdir/.pnpm-store"
  export RUSTUP_TOOLCHAIN=stable
  export CARGO_TARGET_DIR=target

  pnpm prep
  pnpm desktop build
}

package() {
  cd "$srcdir/${pkgname%-git}"
  local releasedir='apps/desktop/src-tauri/target/release'
  install -Dm755 "$releasedir/${pkgname%-git}" -t \
    "$pkgdir/usr/bin/"
  cp -r "$releasedir/bundle/deb/${pkgname%-git}_${_debver}_amd64/data/usr/share" \
    "$pkgdir/usr/"
}

But I got the following error:

packages/vite prepare$ npm run build
│ > @sd/[email protected] build
│ > tsc
└─ Done in 4.2s
error: failed to load manifest for workspace member `/home/user/.cache/yay/spacedrive/src/spacedrive/apps/desktop/src-tauri`

Caused by:
  failed to load manifest for dependency `sdcore`

Caused by:
  failed to parse manifest at `/home/user/.cache/yay/spacedrive/src/spacedrive/core/Cargo.toml`

Caused by:
  namespaced features with the `dep:` prefix are only allowed on the nightly channel and requires the `-Z namespaced-features` flag on the command-line
==> ERROR: A failure occurred in prepare().
    Aborting...

[BUG] Build failed: thread 'main' panicked at 'Unable to find libclang

Describe the bug
Panic occured during cargo build.

To Reproduce
Steps to reproduce the behavior:

  1. $ cd spacedrive
  2. $ pnpm i
  3. $ pnpm prep

Expected behavior
Success Cargo Build

Screenshots
image

Desktop (please complete the following information):

  • OS: EndeavourOS Linux x86_64
  • Toolchain: rustc 1.61.0-nightly (76d770ac2 2022-04-02)

[BUG] Highlighted icons share their color globally

Describe the bug
When selecting a file in the file browser, all icons change color instead of respecting their color per-file.

To Reproduce
Steps to reproduce the behavior:

  1. Import a library
  2. Select a file with a custom icon & color in a folder where multiple of these exist

Expected behavior
The color is unique per icon and doesn't change across clicks.

Screenshots
image
image

Desktop (please complete the following information):

  • OS: macOS
  • Version 12.2.1 (21D62)
  • Device: MacBook Air (M1, 2020)

Smartphone (please complete the following information):
N/A

Additional context
Add any other context about the problem here.

[BUG] Linux install fails with incorrect Node version

Building from source using Node 17.9.0 yields:

Your Node version is incompatible with "/amqplib/0.5.2".

Expected version: >=0.8 <=9
Got: v17.9.0

This is happening because the package's manifest has an engines.node field specified.
To fix this issue, install the required Node version.

To Reproduce
Steps to reproduce the behavior:

  1. Clone the repo
  2. Run pnpm i
  3. See error

Expected behavior
The install to succeed.

Screenshots
image

Desktop (please complete the following information):

  • OS: Manjaro Linux 5.17

[BUG] - local installation failed

Hello,

I want to start the project in local to take a look but I met this issue. Do not really know what is the issue.

Describe the bug

あ→ pnpm prep

> [email protected] prep /tmp/spacedrive
> pnpm db:gen && pnpm core codegen


> [email protected] db:gen /tmp/spacedrive
> pnpm core prisma generate


> [email protected] core /tmp/spacedrive
> pnpm --filter @sd/core --  "prisma" "generate"


> @sd/[email protected] prisma /tmp/spacedrive/core
> cargo prisma "generate"

error: failed to parse manifest at `/tmp/spacedrive/core/Cargo.toml`

Caused by:
  namespaced features with the `dep:` prefix are only allowed on the nightly channel and requires the `-Z namespaced-features` flag on the command-line
/tmp/spacedrive/core:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @sd/[email protected] prisma: `cargo prisma "generate"`
Exit status 101
 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.

To Reproduce
Simply follow the instructions to setup the development environement

Desktop (please complete the following information):

  • OS: MacOS
  • Version 12.2.1

Additional context

node -v
v17.9.0

cargo version
cargo 1.59.0

Package 'libavresample-dev' has no installation candidate

Describe the bug
On PopOS 21.10.
Trying to run setup shell script after cloning repository.

To Reproduce
Steps to reproduce the behavior:

  1. git clone https://github.com/spacedriveapp/spacedrive
  2. cd spacedrive
  3. curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  4. curl -fsSL https://get.pnpm.io/install.sh | PNPM_VERSION=7.0.0-rc.9 sh -
  5. chmod +x ./.github/scripts/setup-system.sh && ./.github/scripts/setup-system.sh
    Results in output:
Setting up your system for Spacedrive development!
Detected 'apt' based distro!
[sudo] password for asdasdasd: 
Hit:1 https://download.docker.com/linux/ubuntu impish InRelease
Hit:2 http://ppa.launchpad.net/mosquitto-dev/mosquitto-ppa/ubuntu impish InRelease                       
Hit:3 http://us.archive.ubuntu.com/ubuntu impish InRelease                                               
Get:4 http://us.archive.ubuntu.com/ubuntu impish-security InRelease [110 kB]                
Hit:5 http://apt.pop-os.org/proprietary impish InRelease                                          
Get:6 http://apt.pop-os.org/release impish InRelease [6,850 B]                                    
Get:7 http://us.archive.ubuntu.com/ubuntu impish-updates InRelease [115 kB]                              
Get:8 http://apt.pop-os.org/release impish/main Sources [66.3 kB]                                 
Get:9 http://us.archive.ubuntu.com/ubuntu impish-backports InRelease [101 kB]                   
Hit:10 https://fman.io/updates/ubuntu stable InRelease                                  
Get:11 http://us.archive.ubuntu.com/ubuntu impish-security/main amd64 DEP-11 Metadata [20.3 kB]
Get:12 http://us.archive.ubuntu.com/ubuntu impish-security/universe amd64 DEP-11 Metadata [3,624 B]
Get:13 http://us.archive.ubuntu.com/ubuntu impish-updates/main i386 Packages [179 kB]
Get:14 http://us.archive.ubuntu.com/ubuntu impish-updates/main amd64 Packages [384 kB]             
Get:15 http://us.archive.ubuntu.com/ubuntu impish-updates/main amd64 DEP-11 Metadata [25.7 kB]
Get:16 http://us.archive.ubuntu.com/ubuntu impish-updates/universe amd64 DEP-11 Metadata [35.6 kB]
Get:17 http://us.archive.ubuntu.com/ubuntu impish-updates/multiverse amd64 DEP-11 Metadata [940 B]
Get:18 http://us.archive.ubuntu.com/ubuntu impish-backports/universe amd64 DEP-11 Metadata [16.4 kB]
Get:19 http://apt.pop-os.org/release impish/main amd64 Packages [152 kB]                   
Get:20 http://apt.pop-os.org/release impish/main i386 Packages [76.3 kB]
Fetched 1,293 kB in 2s (707 kB/s)                           
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package libavresample-dev is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libavresample-dev' has no installation candidate

Expected behavior
SpaceDrive compiles

Desktop (please complete the following information):

             /////////////                persommer@atx 
         /////////////////////            ------------- 
      ///////*767////////////////         OS: Pop!_OS 21.10 x86_64 
    //////7676767676*//////////////       Host: MS-7968 3.0 
   /////76767//7676767//////////////      Kernel: 5.17.0-051700-generic 
  /////767676///*76767///////////////     Uptime: 6 days, 11 hours, 57 mins 
 ///////767676///76767.///7676*///////    Packages: 2836 (dpkg), 50 (flatpak), 8 (snap) 
/////////767676//76767///767676////////   Shell: zsh 5.8 
//////////76767676767////76767/////////   Resolution: 3840x2160, 3840x2160, 4384x2466 
///////////76767676//////7676//////////   DE: GNOME 40.5 
////////////,7676,///////767///////////   WM: Mutter 
/////////////*7676///////76////////////   WM Theme: Pop 
///////////////7676////////////////////   Theme: Pop-dark [GTK2/3] 
 ///////////////7676///767////////////    Icons: Pop [GTK2/3] 
  //////////////////////'////////////     Terminal: gnome-terminal 
   //////.7676767676767676767,//////      CPU: Intel i7-6700K (8) @ 4.200GHz 
    /////767676767676767676767/////       GPU: AMD ATI Radeon RX 6600/6600 XT/6600M 
      ///////////////////////////         Memory: 12372MiB / 15954MiB 
         /////////////////////
             /////////////                                        
                                                                  

Implement context menu

I'm going to implement a custom-styled context menu for Spacedrive! Should be a fun test of my deeper React knowledge in a few ways :P

Auto labeling

It would be really nice if the files were labeled automatically. I have many files in my hard drives and it would be easier to find them if they were labeled. An opt-in telemetry setting for sharing labels is what comes to mind as an option to accomplish this. The labels would all be shared in the same cloud and then every file already labeled in the cloud would be automatically labeled for every user without the need of each user to label those same files themselves.

Offline Disk Integration

Is your feature request related to a problem? Please describe.
A lot of photographers and other media professionals keep copies of videos and photos in offline hard disks. Enabled by hard drive docks that allow easy swapping.

Describe the solution you'd like
It would be really nice if spacedrive could also manage indexing, redundancy and previews of offline drives. When you go for a file that was stored on external drive in your collection, it would ask for one of the drives the file exists on to be plugged in, listing the possibilities. A major part that I desire is that it not matter which computer you're on as long as you have access to the drive itself. Bonus points for keeping track of the location of drives, and allowing for redundancy rules around separate storage location of the drives (set of drives at home, set of drives at office or friends home/safety deposit box).

Describe alternatives you've considered
Labeling hard drives, and trying to find the right one. Manually updated spreadsheet.

Additional context
This would allow for photo/video libraries that don't have to always be online or in cloud. Allowing efficient, cost effective archival storage, especially for large files.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.