* Complying with a pedantic Clippy
* Some task runners for vscode
* Solving duplicated directories events
When creating a directory through MacOS's Finder, for some reason
FSEvents receives 2 Create Folder events that we have to handle
* Damn rustfmt
* begin spacedrop ui + misc ui improvements
* better 404 xox
* Update extensions.rs
I think I prefer Container
* added DragRegion component, ot tested cuz im on my fone
* Update DragRegion.tsx
fix import
* added dummy drop items
* better dummy data
* added clouds & search bar
* added action buttons to spacedrop items
* customize subtle button
* added support for apng, thanks luka big pants
* use relative path in sidebar
* use BYTES const
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* 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>
* begin better onboarding
* added input and altered text
* better router & text + database icon
Co-authored-by: maxichrome <maxichrome@users.noreply.github.com>
* work on privacy screen + radio buttons
* fix video extension bug and alter screens
* add pending schema and location manager helper
* functional onboarding
* added secure temp store and started creating library loading screen
* fix secure temp keystore + api
* better onboarding
* added location settings and some overview concept, all WIP
* fix switch
* prep
* fix location router
* added backend settings
* attempted to fix form
* begin indexer rules editor, plus tweaks
* indexer rules coming soon
* fix onboarding img size
* cleanup
* clone is needed here, but clippy no like
* sike
* whole bunch of fixes
* clippy + ts
* Removing some TODOs from api/libraries.rs and fixing db size calculation
* moved object kind to client, added half functionality for appearance settings
* fix RadioGroup helper
* fix type issues
* cargo fmt
* fix creating library error handling + invalidate location list on update
* forgot to switch back to onError
* Invalidating getStatistics query on library creation and introducing the concept of waiting for a job on FileCopierJob
* F* cargo fmt
* fix RadioGroup interactivity
* wipe all migrations
* put back COLLATE NOCASE on extension columns
* update core.ts
* remove unused device component
* fix typeerror in mobile
---------
Co-authored-by: maxichrome <maxichrome@users.noreply.github.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
* add `queue_check`, `mount_check` and `unlock_check`
* make `unlock_check` marginally more readable
* clippy
* clean up & rename functions
* remove unlock check on `keys.list`
* use american spelling of `favorite`
* use `then_some` (thanks clippy)
* more american spelling
* 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>
* refactor routes
* use default export for screens
* use "route" relative routing
* don't use absolute import for root screens
* no absolute importing folders!!!
* fine we can absolute import folders
* add `get_queue` and `is_queued` to KM and router
* mark keys as being mounted/finished mounting, use a `DashSet` instead of vec
also includes temporary `dbg!()`s for manual valdiation that it works
* remove dbg and fix build (works great)
* mark key manager as unlocking correctly
* cleanup keys api
* add `KeyAlreadyQueued` error
* use react mounting queue
* fully prevent against multiple mount jobs of the same key with the rust queue
* show keymanager as unlocking in the UI
* handle query invalidation for `isKeyManagerUnlocking` with a closure (semi-temporary)
* revert changing text (doesn't work where the keymanager is unlocked from, only the other unlock screen)
* clippy
* add `useRef` for mounting queue within react
* pass `ref.current` to `Key` instead
* add wip storedkey versioning
* storedkey versioning! (not pretty, but it never will be)
* add version to `StoredKey` and re-gen migrations to handle serde
* use `serde` for interacting with the DB + handle errors
* add encrypted file magic bytes/extension
* use archive icon for encrypted files temporarily
* use pascal case for encrypted extensions
Co-authored-by: Brendan Allan <brendonovich@outlook.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 hash with secret functions
* refactor KM to make the secret key both optional, and user-settable
* update library create function and create library dialog
* fix annoying MPC typo
* fix ordering of key manager creation and seeding
* overhaul master password changing UI to support the potentially empty secret key
* patch keymanager unlocking for potentially empty SK
* make create library dialog text more fitting
* remove dead code
* add autogeneration, view/hide, copy to clipboard icons
* cleanup older code
* make onboarding screen look a tad better
* minor UI tweaks
* patch backup restoration UI
* add pw generation to MP change dialog
* make sure passwords are same before submitting lib creation
* UI fixes and allow setting algorithm/hashing algorithm for master password
* make sure KM is re-seeded on SD load and prevent loading duplicate keys into the keystore
* remove old comment
* small organization
* update encryptfiledialog
* remove dead KM code
* cleanup some TS
* move `PasswordMeter` to separate file
* refactor master password change dialog
* cleanup the TS and improve string -> hashingalgorithm conversions
* add `key` values to selectoption
* capitalise `BLAKE3`
* fix sorting for `getHashingAlgorithmString`
* remove onboarding route
* Revert "add `key` values to selectoption"
This reverts commit 10e6456f22.
* add `key` to `SelectOptionKeyList`
* fix using rspc errors directly
* Update packages/interface/src/components/onboarding/Onboarding.tsx
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* use `navigator.clipboard.writeText`
* move `OnboardingConfig` to crypto crate
* move `zxcvbn` options outside of component
* further cleanup
* fix mobile typecheck
* fix keylist typo
* improve `SelectOptionKeyList` further
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* 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>
* Introducing location online/offline checks and location relink
* Some initial drafts for location watchers
* Location metadata relink and add library
* Many improvements at job system
Now using prisma batching at identifier job
Removing blocking I/O from extension subcrate
Implementing lazy generation of thumbnails
New current directory identifier job to be used on light rescans
* Some optimizations on identifier and object validator jobs
* merge jamie's identifier PR
* fully repaired identifier job
* properly hooked up object kind
* inspector fix
* fix video badge
* small improvements to libraries settings
* identifier and inspector improvements
* fix feature flags and hook up context menu location utilities
* BETTER CONTEXT MENU x100
* test-files
* style tweaks
* new icon designs
* manifest
* fix thumbnails on web
* media data
* New Location Watcher and some minor fixes
* disable broken media_data extractor, wip
* wip
* function name fix
* Fixing pnpm prep and some warnings
* Solving a race condition beetween indexer job and FS event handlerSome other minor warnings
* Generating thumbnails on watcher
* Remove event handler on watcher
* Some initial works on modify events and other small fixes
* File update event
* Trying to be more generic with used events and some tests to validate our assumptions
* Turning on location metadata file
* Introducing core unit tests on CI pipeline
* Submiting new unit test assumptions to validate on windows CI
* Fixing unit tests
* Fixing unit tests again
* Fixing unit tests
* Fixing unit tests for macos
* Fixing unit tests for macos again
* New structure for platform dependent event handling
Implementing event handlers for Linux and MacOS
* minor fixes + rustfmt + clippy
* Windows event handling
* Introducing a feature gate to only use location watching on desktop app for now
* Putting more stuff behind feature gates to avoid warnings
* Adding feature to cargo test on CI
* Changing some debug logs to trace logs and removing Jamie specific stuff
* Make location removal from manager less async
* fix build when "location-watcher" feature disabled
* fix types + clippy
* make location manager non-static
* remove uses of `to_string_lossy`
* more invalidate_query calls
* Expose `library_ctx` directly to avoid needless clones
* New materialized_path handling for directories
* Removing cascade delete between file_path and object
- Some other minor stuff
* remove unused `CurrentDirFileIdentifierJob`
Co-authored-by: Jamie Pine <ijamespine@me.com>
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* update generated key on slider click
* add ui for decrypting with password+saving to key manager
* update rust code to support password decryption and saving it to the library
* add decrypt with password UI functionality
* add content salt to key viewer
* disable key manager decryption if no keys are mounted
* clippy
* add encryption+hashing algorithm to key viewer dialog
* abstract `save()` and `open()` with `Platform`
* add automount to `StoredKey` and offer option to enable/disable it for keys
* fix missing statement exec
* general tidy up
* add sync to library button and cleanup default setting code
* use alert dialogs for unsupported `open`/`save` operations (web)
* tweak alert message
* use master key to encrypt the root key (breaking)
* introduce breaking changes to the keymanager (this breaks master password changing, backup restoration, etc)
* change MP -> RK
* minor tweaks + comment out broken features temporarily
* experimental new master password changing
* add a `write_storedkey_to_db` helper function
* general cleanup and fixes
* potentially patch backup restoration
* uncomment+clean up restoration in api
* strip whitespaces from user inputted secret key, and fix MPC bug
* clippy
* add memory only flag to `StoredKey`
* fix annoying typo that was breaking master password changing under certain conditions
* move `Select` boxes out of `react-hook-form` so they work
* add `DummyKey` and rework the UI a little
* fix bug where user could select a hashing algorithm (it did nothing)
* fix bug where encryption algorithm would be inherited from the key, not the user's choice
* 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 base crypto job
* leave hashing to the KM and not keyslots
* add latest header object versions and update examples
* add a very experimental (local file!) encrypt job
* working file encryption with default key
* working file decryption
* non-working encrypt file dialog
* general code cleanup
* comments and correct feature locking
* fix the `Dialog`
Co-authored-by: maxichrome <maxichrome@users.noreply.github.com>
* WIP encrypt dialog
* massive encrypt dialog overhaul
* add generic explorer alert dialog
* better key naming/numbering, alerts for unsupported scenarios
* cleanup + decrypt file dialog
* remove debugging stuff
* remove dead code & fix a bug with key select being empty
* clean up dialog UI massively
* add support for setting output path
* add correct button type to prevent early dialog submits
* add "nice" job data for encrypt/decrypt
* tweak functionality of key setting in encrypt dialog
* include full file metadata if selected, and lay out groundwork for preview media inclusion
* add comment about not restoring metadata/pvm just yet
* general cleanup
Co-authored-by: maxichrome <maxichrome@users.noreply.github.com>
* 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