* 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
* Sync tailwind configs
* Switch to new colors part 1
* new colors part 2
* switched to new colors
* settings screens template
* settings progress
* Setting header titles
* Refactor settings icon
* Fix tsconfig relative path issue
* Move mobile eslint config to @sd/config
* Add no-restricted-imports rule to eslint
* rename TextInput to Input & tailwind font sizing
* General Settings screen + Card component
* Library settings screen & delete lib dialog
* autoform hook
* Mini tweaks and new packages
* Exclude android & ios from search
* Add Switch (Input)
* Library General settings screen
* Refactor settings + Switch and Switch Container
* Locations screen & delete and rescan locations
* Rename folder + small tweaks
* Make things Swipeable
* Create Tag Dialog with color picker
* Upgrade to Expo 47
* More tag stuff
* fix pnpm lock
* regen pnpm-lock
* Change CI node version to 16
* Move `isVideo` into shared package
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* 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
* add generic dialog for keys settings
* revert artifact failed key viewing attempt
* move `Select` key list component
* rename dialog
* remove unused imports and add new select option for *all* keys
* add WIP but broken key viewer dialog
* cleanup code and fix key viewer dialog
* add clipboard icon and copy functionality
* generalise the `AlertDialog` and refactor `BackupRestoreDialog` to use it
* use new alert dialog in place of JS/tauri alerts
* use generic alerts everywhere and bring generic alert props/default state
* make `SelectOptionKeyList` generic for mounted/unmounted keys (with the use of `map` for the latter)
* add clipboard to generic alert dialog + clean up
* fix accent colour button for backup restoration
* remove unneeded props from components
* add slider+automount button
* tweak password gen function
* add password autogeneration
* clippy
* tweak password generation
* use `crypto-random-string` and drop rust password generation
* add default TEMPORARY keymanager pass/secret key to library creation screen
* make key automounting functional
* clean up key viewer
* change dialog name
* remove slider as that wasn't even being used?
* make requested changes and hide key viewer if no keys are in the key manager
* prevent automount and library sync from being enabled simultaneously
* include `memoryOnly` in key
* mark keys as memoryOnly
* 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>
This messes up the spacing in non-fullscreen view.
We need to properly attach event listeners to the window and update this when full-screen mode changes.
* use @sd/client for tsconfig extends
* move all svgs to @sd/assets
* only use vite-tsconfig-paths
* remove ui from web
* use relative extends for ui tsconfig
* remove aliases from landing?
* use wacky landing vite config
* try using tsconfig paths and root on landing
* Revert "try using tsconfig paths and root on landing"
This reverts commit 43bd2a0f84.
* remove tsconfig-paths from landing
* 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
* Fix File modal and Stats
* Add disabled and loading state for dialog
* Close library drowdown with drawer
* catch Rust panics on mobile to prevent UB
* Update packages
* Move create lib dialog to container
* Create library on onboarding
* Cleanup metro config & update packages
* onClose for Dialog & update library cache
* Fix pods, downgrade react-native-svg
* Fix lib switching, organization, start import modal
* Add device size info
* Revert merge + version upgrade/fix
* Create Location & Remove placeholder data
* Create default modal component
* Check if the location already exists
* Add media-library + prettier
* fix build
* Fix Xcode shellScript too
* More small fixes
* don't export bindings on mobile devices
* Explorer store + cleanup
* Explorer comp. & add flashlist
* [WIP] Files in Locations & new file thumb
* clean merge
* Fix imports
* Fix core on mobile
* Add platform context to mobile
* Refactor libraryStore
* Add thumb url path to platform context
* Try fixing app startup
* Add zip and video to filethumb
* Delete bindings.ts from mobile
* Remove heroicons from mobile too
* useForwardedRef hook
* Media Library permission stuff
* Clean import modal
* remove valtio-persist from @sd/client
* prevent Sentry capturing all events
* refactor `@sd/client` to make it better for mobile
* fix mobile splashscreen
Just trust me bro
* fix mobile draw active style
* use custom valtioPersist for current library state
* remove mobile lockfile
It's now in the pnpm workspace so it shared the main one.
* finally remove valtio-persist
* remove 'mobile' from Platform as it's in interface
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* Sentry support
* remove broken import
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
Co-authored-by: Jamie Pine <ijamespine@me.com>