* fix `spacedrive://` custom protocol on Windows
(hopefully)
* custom protocol using `http::Response` + fix broken web
* import patches before App on web
* use `http::Request` for input to `handle_custom_uri`
* break into dedicated file + error handling
* serving files via custom protocol
* cargo fmt because vscode did cringe
* lru cache to reduce video chunk request time
* add helper to JS
* clippy be like
* remove duplicate Open buttons in context menu
* fix Linux 🙏
* no shot
* fix Windows custom URI passing (hopefully)
* better fix for custom uri on Linux
* upgrade Tauri for feature
* switch url replacement order
* prevent React dev tools script being added in prod to desktop
* remove React devtools from html
* upgrade Tauri; required upgrading rspc, Axum, PCR
* pass typecheck + less cringe bigint
* clippy is love, clippy is life
* Typecheck plz
* fix bigint to number conversion
* use httpz + localhost server for Linux
* clippy be right
* Remove console.log
* [wip] proper auth
* fix Linux sidebar padding
* Secure Axum server with random
* Extracting app setup specific to linux to a different file
* remove outdated comment
* Some tweaks on cursom_uri.rs
* file_path_with_location doesn't need to be a named include
* fix typo
* factually wrong comment
* Change `unwrap` to `expect`
* bruh
---------
Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
* update crypto MSRV
* rename `keychain` to `keyring`
* make a start on the keymanager unlock refactor/keychain integration
* update routes
* update bindings
* add const identifiers
* add UI/front-end support for unlocking KM with OS keychains
* remove SK from lib creation dialog
* update query name
* add keyring functions
* attempt to update `change_master_password()` to use the keychain
* cleanup, fix master password change ui, better secret key in keyring detection
* cleanup TS a little
* add route for getting secret key from keyring
* update bindings
* update var names + show secret key in keys settings
* add `react-qr-code` and option to view the secret key (if it's in the OS keyring)
* allow copying SK to clipboard
* add `key_type` so we're not reliant on specific UUIDs for root/verification key handling
* clippy
* fix mobile typecheck
* fix typecheck, fix typo and tweak balloon hash parameters
* minor cleanup + typo fix
* use newtype structs
* WIP type refactoring (major readability boost!)
* update `use`
* add tokio `sync` feature
* too many structs? idk
* more cleanup
* add `generate` and `Nonce`
* `Nonce` and `Key` typesafety (beautiful)
* clippy + cleanup
* update code & examples
* fix bug & remove `ProtectedVec` as it looked out of place
* use `Key`
* add a query invalidation to make the UI extremely responsive
* ci pls work
* remove `keyringHasSk` route
* super barebones keychain start
* working+unfinished linux keychain
* add `copy` to `Identifier` and add `delete()`
* add generic errors + code cleanup
* cleanup code & add support for apple keychains
* remove `users` dep
* use uppercase UUID and tweak apple `account` variable
* revert uppercase change and clean up linux labels
* code cleanup & add a readme to the crypto crate
* remove useless `map`
* correctly handle keyring not supported errors
* add `Send` to `Box<dyn Keyring>`
* remove useless `cfg`s
* only return `Ok()` if we support keychains (pls work CI)
* clippy
* Minor fixes
---------
Co-authored-by: Ericson Fogo Soares <ericson.ds999@gmail.com>
* fix secret key showing as `Some()` when it's empty
* rename function
* use `uuid` feature of `rspc` so clippy works with `--all-features`
* remove dead error
* update clippy rules
* more idiomatic + cleaner hashing, that handles secrets better
* remove dead code + minor refactor of the KM
* cleanup`KeyManager::get_key()`
* cleanup keys router
* variable inlining, idiomatic rust, etc
* clean up encrypt/decrypt jobs
* embed preview media into encrypted files
* even more idiomatic rust
* fix previous file extension code (no amount of idiomatic rust can fix bad patterns)
* hopefully make large serialization slightly more efficient
* remove dead code + old tests
* inline key derivation (not so sure about this one)
* use `then` instead of `if`
* stop using expensive clones
* add `Protected::into_inner()` to prevent `.expose().clone()` patterns
* use `tokio::fs::File` where possible
* add and use `JobError::MissingData`
* use `|| null` for the secret key
* use `block_in_place` for large r/w sync tasks
* add blake3, `derive_key()` and clean up code
* fix a couple of things from the previous commit
* add context strings for root/file key derivation
* add salt to schema
* update refs of `salt` to `content_salt` within the keyslot
* cleanup code and add kdf salt to the keyslot
* rename salt to content salt in examples
* cleanup header code + remove dead code
* implement key derivation for keyslots
* gen new migrations that contain a salt column
* keymanager refactor (code is very idiomatic now) - needs thorough testing
* further cleanup
* clippy
* add a master password context string
* use key derivation for deriving keys from the root key
* update to use new code and remove `match` from `en/decrypt_bytes()`
* clippy
* use less unwraps in library manager code
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* add benchmarks for encryption/hashing
* add more benchmarking sizes
* general performance improvements
* massive performance gain with minimal security impact
* update `sd-crypto` author info
* add keys router
* make progress on keymanager integration
* make name non-negotiable
* hyphenate encryption algorithm names
* Revert "make name non-negotiable"
This reverts commit 9c0f51329e.
* add some more keymanager queries
* add master password and default key routes
* add newly registered key to db + fmt
* clippy, formatting and `updateKeyName` route
* add automount to schema+automount keys where `true`
* update bindings
* working key add/mount
* working keylist
* mounted keys show first
* cleanup code
* add comments, code cleanup, more functions
* unmount all keys button
* comment and keymanager `clear_master_password()`
* add no keys available message
* fix unmount button
* use dashmap for concurrency
* fix missing keylist issue and add invalidate query macro
* set correct RSPC types
* statically set master password (TEMPORARILY)
* add remove key function within the keymanager
* key dropdown menu and impl
* formatting
* allow `option_if_let_else`
* add comment about key stats
* add additional comment
* rpsc error handling for the keys route
* fix rspc errors with an impl
* crypto crate errors to `sd-crypto::Error`
* remove `map_err`
* use custom result type
* cargo fmt
* clippy
* fix builds
* remove `Error::MutexLock`
* fix unnecessary unwrap
* mutex error handling (buggy for some reason)
* clean default key logic
* fix default key clearing
* allow a key to be removed without bugs
* implement requested changes
* use a single `useMemo`
* update schema with defaults
* re-generate migrations
* use rust enums in TS
* remove dead code
* remove mutate expansion
* read key list from keymanager, not prisma
* add "Default" key marker and cleanup TS
* rustfmt
* remove dead code