* First draft on image labeling
* Fixing execution providers for other OSs
* Better error handling and shutdown
* Working with shallow media processor
* bruh
* Fix warnings
* Now hooked to media processor job
* Link desktop app with libonnxruntime to avoid TLS error during startup
* Be able to change models on runtime
Revert to use labels table instead of tags
* A bug on a model-less inference
* Show AI labels on Inspector
- Change yolo inference to use half precision
- Add labels api to core
* Remove LD_PRELOAD
* Fix race condition on model executor shutdown
* Don't load all images in memory moron
* Embeed yolo model in prod build
- Change yolo model path to new one relative to executable
* Disable volume watcher on linux, it was crashing the app
- Invalidate labels when they are updated
* Rust fmt
* Minor changes
* Gate onnxruntime linking to the ai-models feature
* Add build script to sd-server to handle onnxruntime linking workaround
* Move AI stuff to its own crate and normalize deps
* Rust fmt
* Don't regenerate labels unless asked to
* Now blazingly fast
* Bad merge
* Fix
* Fix
* Add backend logic to download extra yolo models
* Add models api route
- Add api call to get available model version
- Add api call to change the model version
* Improve new model download logic
- Add frontend to change image labeler model
* Fix new model downloader
* Fix model select width
* invalidate labels count after media_processor generates a new output
* Rename AI crate and first draft on download notifications
* fix types
---------
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* basic declared actor manager
* put actors in separate file
* clippy
* hopefully clean up some clippy warnings
---------
Co-authored-by: jake <77554505+brxken128@users.noreply.github.com>
* sd-pdf
* Process PDF blocking render inside a spawn_blocking
- Load a single global Pdfium instance
* Migrate pdf thumb logic to sd-images
- Replace block_in_place with spawn_blocking
- Only load LibHeif once
- Allow thumbnailer (both indexed and non-indexed locations) to process documents
- Disable loading pdf viewer in Inspection in favour of loading it's thumbnail
* Try to load pdfium lib from absolute path
* Revert removed import due to rebase
* Small nitpick and some warnings
---------
Co-authored-by: Ericson Fogo Soares <ericson.ds999@gmail.com>
* Generalizing filesystem jobs to accept multiple files at once
* Some small changes and fixing front
* Enable rename route to replicate Finder's behavior
* Assign tag to multiple objects at once
* Remove from recents accepting multiple files
* Fixing some warnings
* Adding multiple files feature to Open and Open With
* Conditional stuff for macos
* Generating commands.ts and other minor warnings
* Rust fmt
* TS typecheck
* Rust format and TS typecheck
* Requested changes
* Requested changes
---------
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
* support for late key manager setup and remove password from onboarding
* mobile
* delete master-password.tsx
* remove secure temp keystore
* remove more km_config artifacts
* fix builds
* Fix most of the UI, there still some minor bugs
* Workaround portalled closing Popovers
* Restore search in core/src/api/mod.rs
* Fix Password eye icon closing Popover on click
* Fix keymanager setup submit button spinner not centered
- Fix keymanager setup missing logic for disabling form
- Adjust keymanager tab roundness to match app style
* Restore .gitignore
* Restore .prettierignore
* fixerino tests
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
* Introducing sub path indexing for IndexerJob
* Introducing shallow indexer job
* Some feature flags to avoid warnings at pnpm prep
* Many fixes at shallow indexer job
* Changing how we implement the bookkeeping for file_path ids
Now we're account for independent locations, and also integrating
better with the LibraryContext, instead of using a static global
* Making indexer job reentrant
* Introducing shallow file identifier job
And a bunch of minor refactors
* Rust fmt
* Removing light scan from getExplorerData query
Light scan is a mutation, so we can call it on useEffect function from
the Explorer component in the frontend, when a location_id or the explorer
path changes
* Handling job early finish on init for identifier
* Only invalidate query if we have orphan paths
* Introducing ShalowThumbnailerJob
* Clippy warnings about `into_iter()`
* Naming scheme for Prisma's selects and includes
* Invalidating getExplorerData at thumbnailer
* Small mistakes lol
* Some nitpicks with pnpm prep
* Rust fmt
* Changing indexer's walk log to `trace!`
* Not deleting all file_paths on location fullRescan
* TS typecheck
* Removing `file_path` selection just with id
* 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
* 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>
* 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
* 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