* Vendor openssl dependency
* Remove bindgen, seems like windows don't like it
- Add OPENSSL_RUST_USE_NASM to force windows to use nasm
* Add native-tls-vendored to reqwest
- Shouldn't change much as the openssl crates override was already dealing with the vendoring anyway
* New vscode task to start developing
* Updating db in case of library updates just in case
* Done
* Forgot to remove some debug logs
* Rust fmt
* Saving thumbnails processing state on app shutdown
* bruh
* feedback popover with new api
* allow unauthed feedback
* add login information
* allow no auth
* fix hooks
* remove emoji on reset
* show cancel on left of login button
* clippy -_-
* migrations
* alter the migration so it just renames the `dimensions` field (no db re-creation required)
* remove confusing semver addition for `libheif-sys`
* remove warning on the migration as it's just a rename
* add sort opts for resolution and date image was truly taken
* major serde ckeanup & add epoch_time and pixel_count
* rename, cleanup et optimise
* clippy
* ignore this mess
* bindings
* add explanation to schema
* comment out dt test
* better comment and WIP time
* cleanup rust
* failed timezone attempt
* remove image resolution as a sort by option
* update schema (and rename the dimensions table instead of dropping it)
* just show raw date
* add comments and update bindings
* fix migration hopefully
* fix broken migration
---------
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
Co-authored-by: Jamie Pine <ijamespine@me.com>
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
* Add onLoad and onError listeners to FileThumb
- Show toast when Original file fails loading in QuickPreview
- Formatting
* Fix close toast not working when QuickPreview was open
* Fix panic when serving unsupported files
* Formatting & lint
* folder
* wrote function
* Abstracting duplicate on file name
* Spliting between ephemeral and indexed
* Now with more type safety
* Forgot to prep
* location + path based
* bruh
* link frontend + error toast
* strip main separator
* dumb
* bruh
* create directory
Co-authored-by: Brendan Allan <Brendonovich@users.noreply.github.com>
* make some reactivity happen
---------
Co-authored-by: Ericson Fogo Soares <ericson.ds999@gmail.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: Brendan Allan <Brendonovich@users.noreply.github.com>
* derive `Type` on `*Extension`
* update `image`, `webp` and add `rspc::Error` support to the `sd-images` crate
* rename function for verbosity
* cleanup clippy allows and use scaling fn for svg conversions
* remove dead comment
* specify `generic` image extensions and add fn to enumerate all compatible extensions
* re-exports and inline hot provided method
* another inline on a provided method
* `formatter` -> `handler` and return an explicit error if the extension isn't supported, and add `convert_image()`
* `get_ext()` inlined helper fn
* add mutation for conversion and query for getting all supported extensions
* fix `svg` scaling and generation
* update bindings
* rm old const
* temporary test for all exts
* verbosity and no manual drop
* remove dbg test
* big enum and remove `cur` extension as `image` doesn't support it
* add huge extension enum
* hopefully get path from file path id and location id
* main merge fix
* chore: update toml and lockfile
* security: update webp
* comment entire crypto crate for build times
* add bincode, huge enum and custom ser/de
* Revert "comment entire crypto crate for build times"
This reverts commit 458addaad6.
* lockfile
* theoretically working ser/de
* add svg scaling
* fix pdf matching bug and use options
* move image scaling fn
* major consts overhaul with good ser/de
* disable heif checking for now due to new trait api
* make the generic handler truly generic
* fix pdf types
* fix pdf scaling so that it's 120dpi A4 paper size by default - height/aspect res are maintained
* heavy cleanup
* note to myself
* bindings & update core to use the scaling fn from the images crate (reducing code dupes)
* move vulnerable `aovec` to be a dev dep so it stays out of release builds (it's only used in tests)
* remoev exif crate from the core as it's handled in a sep. crate
* silence a clippy warning and update lockfile
* lower the maximum file size a slight amount
* bindings and minor dep bumps
* Some improvements
---------
Co-authored-by: Ericson Fogo Soares <ericson.ds999@gmail.com>
* - added local section to sidebar
- added spacedrop screen, showing local peers
- added placeholder network screen
-removed unused swift package
- created a watcher for system volumes to invalidate ui when drives are added/removed
* clouds
* fix more imports
* see more
* open location if volume is location
* gen assets
* remove log
* [ENG-939, ENG-1173] PDF Thumbnails (#1242)
* 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>
* [ENG-888] Media view should show current folder downward (#1437)
* Done but ugly
* layout
* Now with a select
---------
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
* add cool folder thing to inspector + stuff
* fix text color
* fix lock
* fix typescript
* fix ts
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: Ericson Fogo Soares <ericson.ds999@gmail.com>
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* append ` (x)` to files when duplicating, renaming or pasting instead of overwriting
* cleanup commented code
* fix renames
* rustfmt
* remove unused item
* Small tech debts and some nitpicks
* Bug with appending number on duplicates
* A bug on my new impl
---------
Co-authored-by: Ericson Fogo Soares <ericson.ds999@gmail.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>
* New functions to open ephemeral files
* Review items for ephemeral files
* Open and OpenWith context menu for ephemeral paths
* Some warnings
* Fixing inspector
* Fixing windows
* Format
* Messy rebase
* Fix macos
* Cargo fmt
* Removing devtools as it can be opened with keybind
* Fix macos
* Separating ext for ephemeral files on inspector
* Fixing bad rebase
* Removing rename button from quickpreview for ephemeral files
* Quick Preview for ephemeral files
* Requested changes
* Move postinstall script to a preprep script
- Fix libheif crate failing to build with our libheif
- Rework CI due to postinstall to preprep changes
* Linux heif build script + Update webp
* Fix ctrl+c/ctrl+v bug
* Improve libheif linux script
- Add support for linux aarch64
- Add CI workflow to build libheif for linux
- Some other misc fixes
* Fix libheif CI requires sudo
* Fix wrong path for libheif build.rs override in Windows
* Fix wrong path manipulations in libheif build script
* 🤦
* Use ubuntu-latest in libheif action
- Specify glib version in target triple to support old distros
- Fix libheif artifact publishing
* Fix artifact upload path again
* Add musl support for libheif
- Remove unused files from libheif artifact
- Add setup logic for libheif in postinstall script
* Build libheif for linux as a shared lib
* Fix meson not building the correct arch
- Add logic to get git branch from githubs CI env vars
* libheif finnaly works on linux
- Make spacedrive binary rpath point to where appimage and deb expects our libs to be
- Add some logic to tauri.js to convince tauri to bundle our shared libs
- Work-around appimage bundling step breaking sometimes
- Add logic to handle sigint in tauri.js to ensure we clean up after ourselves
- Rename postinstall.mjs to setup.mjs
- Add logic to setup.mjs to point our dev build to our shared libs in linux
* Fix windows dekstop dev
- Rename setup.mjs to preprep.mjs
* test cache-factory
* Fix preprep script not parsing the cross compilation target triple and always using the host info to download dependencies
- Fix action env vars not being correctly passed
- Remove possibility to pass multiple targests to rust action
* Don't compile mobile crates on desktop targets
* Remove cache-factory pull_request trigger
* remove patched tauri cli
* Use git plumbing command to get remote branch name
- Fallback to reading .git/HEAD if remote name was not retrieved
* fix type
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* Handle large text files
* wip
* nit
* Fix syntax highlighting
* Requiring an API call for my dev builds, no shot
* backend for line counting + wip frontend
* 600 lines is too much for this file, ngl
* wip: `LimitedByLinesBody` & some more restructuring
* Virtualised list for QuickPreview
* yeet bad ideas
* general cleanup + hack to fix broken toml
* fix
---------
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
* Setup script revamp
* Move toml to dev dep + CI runs the postinstall in debug mode
* Fix windows CI
* chmod +x scripts/setup.sh
* Fix eslint and ts CI
* Remove binstall + Fix trying to read input in CI
* Doesn't need to check pnpm and rust in CI
* Run postinstall script for Clippy CI
* Attempt to fix windows CI not running postinstall
- Ignore cache when running postinstall on CI
* commited generated config.toml by mistake
* Pass GITHUB_TOKEN to `pnpm i`
* Update archive-wasm + Increase minimum node version to 18.17
* CI: Move rust setup after post-install script
* Revert: CI: Move rust setup after post-install script
* Fix CI, generate dummy cargo config.toml to fix prisma generation
* Fix windows CI
* CI: Fix wrong command
---------
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
* Fix warnings
* Working when doing a full location indexing
* Directory size calculation for sub_path indexing
Also for shallow indexer
Now shallow indexer dispatches sub_path scans when it finds a new folder
* Directory size calculations in the watcher
* Pass directory sizes to sync system
* Life is a lie and nothing makes sense
* consistent version
* Web uses the relative alias resolver it would seem
---------
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
* Handling temporary files events on MacOS
* Debouncing create and update events
* Take files being updated for a long period
of time into account
---------
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
* sd-images crate which will support raw/dng, bmp, etc
* more work on the image formatter
* re-work `sd-images`, add svg support, r/g/b and r/g/b/a HEIF image support (will all be async again soon)
* remove `ImageFormatter`, add note about r/g/b/(a) heif impl
* implement the image formatter
* rename the conversion trait and minor cleanups
* isolate heif feature and major cleanup
* very untested raw support
* change fn name to `from_path` (a lot more idiomatic)
* clean up orientation fixing
* heif is no longer forbidden (linux has good heif)
also all extensions are correctly matched in lowercase
* fix builds, ext matching, feature gating
* attempt to fix svg handling?
* raw attempt, quite a few errors
* add comment
* new (untested) attempt
* remove `raw` stuff for now
* replace `sd-svg` with a `ToImage` `SvgHandler` impl
* add some simple math to appropriately scale thumbnails (and bmp/ico support)
* add comments regarding how the math works for image thumbs
* rename the trait to `ImageHandler`
* Add range to `SpaceblockRequest`
* Determine if file should be served from P2P
* Feature flag serveFromP2P + fix `ServeFrom` logic
* wip: yeet files over P2P
* Just work, argh
* restore backend feature flags after restart
* cleanup
* apply clippy lints to the entire ffmpeg crate in hopes of making it safer
* wording
* revert the prisma changes
* fix typo
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* fix another typo
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* remove so many `#[must_use]`s
* fix bad merge and hopefully clippy
* clippy please work i beg
* make HEIF_EXTENSIONS always available
---------
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* Initial implementation for svg rendering
* Remove unused errors
- Round up size before allocating Pixmap
- Re-order some operations
* Finish integrating with Thumbnailer
- Fix svg thumbnail size
- Fix incorrect color space while converting tiny_skia::Pixmap to image
* Fix Clippy warns
* Feedback + sd-heif async
* Update implementation to match recent changes to the Thumbnailer
- Change sd-heif and sd-svg to receive the file data, instead of opening the file internally
- Update changes to make Thumbnailer and sd-heif more async
* Minor import improvement
* Add missing cfg to gate use of sd_heif only to plataforms that have it enabled
* Drop Tauri custom URI handler
Me no likely but it has to be done.
* fix app startup with location
* fix "Add Location" button on web
* Serve correct content range
* Backport changes from 08ba4f91
* none of my homies like panics
* minor fixes
* fmt with new Rust version
* Spacedrop progress on `useP2PEvents`
* Spacedrop Tauri file picker for saving
* Prompt for save location when closing dialog
* quick maths
* Spacedrop progress
* Spacedrop cancellation
* Move accept/cancel dialog to toast
* Toast when rejecting transfer
* yeet
* `useEffect` more like `useBug`
* Fix Vite relativeAliasResolver on Windows
- Add Strawberry Perl installation to setup-system.ps1 (stop rust-analyzer from crashing on Windows)
- Remove unused imports from desktop windows crate
- Add todo for missing sync test match cases
* Use path.join instead of doing string concatenation with path.sep by hand
* Big bruh moment
* whoops
* Less stackoverflowy debug
* stuff
* Fix flawed P2P mDNS instance advertisements
* do sync when connecting with peer
* Sync after pairing
* resync_part2 all the time
* Invalidate all the things
* Invalidate whole React Query on sync event
* emit_messages_flag
* emit_messages_flag
* Backend feature flags + "emitSyncEvents" feature
* Patch `confirm` type cause Tauri cringe
* clippy
* idk but plz work
* bruh
* Fix ComLink bug
* remove log
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* basic layout
* lock
* add codec to image
* very messy wip
* rm that
* lock and toml
* working perfect exif extraction
* formatting
* migration and formatting
* mostly working
* fix
* set date created properly
* fix tsc
* working media data creation
* fix bad main merge? sorry brendan
* schema, migrations, bindings
* working exif data extraction
* why won't it work
* update migrations
* fix bad merge
* final cleanup
* cleanup migrations
* remove test (that was purely used for testing my code)
* working media data pulling, correct thumbnail orientation
* slightly optimise thumbnail rotation
* rename location to prevent specta clashes
* further improvements (location parsing is still broken)
* fix coordinate parsing i think
* rspc add some todos regarding final cleanup
* further thoughts
* major upgrades
* Some improved handling of errors and async calls
* accordion component
* heavily wip flash refactor
* fix builds all because of a (terrible) merge/move
* annoying missing newline
* i really hate exif
* remove dead code
* further flash progress :D
* docs(media-data): clarification
* minor cleanup
* cleanup and some async removal
* fix location parsing
* remove async (will do proper impl for async eventually) and major cleanup
* big W
* clippy and `FlashMode::Unknown` instead of `Invalid`
* add `NIKON` gps ref support
* comments about gps refs
* commit the submodule -_-
* major cleanup & composite image support
* remove old test image
* major cleanup and easier to use API
* remove old consts
* move `ExifReader` to dedicated module
* Media Data Extractor job and shallow job
* Extracting media data on watcher
* report no exif data on file gracefully
* cleanup errors and doctests
* Merging thumbnailer and media data extractor
* Job name and some strings in UI
* remove reliance on `sd-prisma` within the media data crate
* rename query to be more specific
* custom serializer for `MediaTime`
* tweak to format utc -> naive correctly
* generate migrations
* comment out duration in mobile
* delete test-assets folder
* all optional fields
* fix migrations again
* make requested name changes
* make further requested changes
* remove erroneous files from another wip branch
* updates procedures
* use strings where appropriate
* regen pnpm-lock
* add base layouts for video and audio media data
* use appropriate data types in schema and add audio media data framework
* make requested changes
* general cleanup and renaming of enum
* cleanup media data api
* rename media metadata type
* finishing touches
---------
Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* added some files `standard` mime type
* Used `TEXTViewer` Component to show Code Preview
* Update Thumb.tsx
* added `prismjs`
* removed unnecessary comment
* `CODEViewer` Component for Syntax Highlighting
* formatting
* using **Atom** Theme for `Prism`
* merge text/code viewers & bg-app-focus for prism
currently calling onError and onLoad without an Event argument
that should change but i'm not really sure what to do there
* removed unused imports
* Update index.ts
* `TEXTViewer` to `TextViewer_`
* `TextViewer_` to `TextViewer`
* Don't highlight normal TextFiles
* clean code
* `TEXTViewer` to `TextViewer`
* using tailwind classes more
* doing things correctly.
* installed `prismjs` in interface
* using own scroller
* Update Thumb.tsx
* Add an AbortController to the fetch request
- Fix onError and onLoad calls
- Format code
* Fix onError being called when request was aborted due to re-render
- Fix Compoenent re-rendering loop due to circular reference in useEffect
- Remove unused imports
* Improve text file serving and code syntax highlight
- Implement way to identify text files in file-ext crate
- Do not depend only on the file extension to identify text files in custom_uri
- Import more prismjs language rules files
- Add line numbers to TextViewer when rendering code
* Clippy and prettier
* Fix reading zero byte data to Vec
- Improve empty file handling
* Expand code highlight to more file types
- Fix 10MB when it should be 10KB
- Add supported for more code and config files extensions to sd-file-ext
- Add comlink and vite-plugin-comlink for easy js worker integration
- Move Prismjs logic to a Worker, because larger files (1000+ lines) where causing the UI to hang
- Replace line-number prismjs plugin with our own implementation
* Fix uppercase extension name
---------
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
Co-authored-by: pr <pineapplerind.info@gmail.com>
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
* search.objectsCount
* provide count to useExplorer and react-table
* use row count if custom count not provided
* remove placeholder items from list view
* Some initial drafts
* Finising the first draft on non-indexed locations
* Minor tweaks
* Fix warnings
* Adding date_created and date_modified to non indexed path entries
* Add id and path properties to NonIndexedPathItem
* Working ephemeral location (hardcoded home for now)
* Fix UI for ephemeral locations
* Fix windows
* Passing ephemeral thumbnails to thumbnails remover
* Indexing rules for ephemeral paths walking
* Animate Location button when path text overflow it's size
* Fix Linux not showing all volumes
* Fix Linux
- Add some missing no_os_protected rules for macOS
- Improve ephemeral location names
* Remove unecessary import
* Fix Mobile
* Improve resizing behaviour for ephemeral location topbar path button
- Improve Search View (Replace custom empty component with Explorer's emptyNotice )
- Improve how TopBar children positioning
* Hide EphemeralSection if there is no volume or home
- Disable Ephemeral topbar path button animation when text is not overflowing
* minor fixes
* Introducing ordering for ephemeral paths
* TS Format
* Ephemeral locations UI fixes
- Fix indexed Locations having no metadata
- Remove date indexed/accessed options for sorting Ephemeral locations
- Remove empty three dots from SideBar element when no settings is linked
* Add tooltip to add location button in ephemeral locations
* Fix indexed Locations selecting other folder/files in Ephemeral location
* Minor fixes
* Fix app breaking due to wrong logic to get item full path in Explorer
* Revert some recent changes to Thumb.tsx
* Fix original not loading for overview items
- Fix QuickPreview name broken for overview items
* Improve imports
* Revert replace useEffect with useLayoutEffect for locked logic in ListView
It was causing the component to full reload when clicking a header to sort per column
* Changes from feedback
* Hide some unused Inspector metadata fields on NonIndexedPaths
- Merge formatDate functions while retaining original behaviour
* Use tauri api for getting user home
* Change ThumbType to a string enum to allow for string comparisons
* Improve ObjectKind typing
---------
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* Structs for views
* hook up new preferences types to preferences system
* wip - draft
* laters useEffect, hi explorer context :D
* fix types
* wip
* hm
* preferences wip
* tweaks
* use search::SortOrder
* Refactor explorer settings to use useExplorer and useExplorerSettings (#1226)
refactor to use useExplorer and useExplorerSettings
* preferences
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
* cache job report events in context
* hoist report state to JobManager
---------
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
* Quick Preview for text file
Implemented a Quick Preview feature using an iframe to display the content of text files in the browser, enhancing the user experience with easy access to file information.
* made corners rounded
* desabled scroller in inspector
* Text Viewer's Implementation
Implemented a TEXT Viewer like PDF Viewer, which shows content of text files
* Dark Scrollbar & Padding Enhancements
Implemented dark scrollbar to match theme and added horizontal padding for improved text preview.
---------
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
* `Library` -> `LoadedLibrary`
* Move `ThumbnailRemoverActor` onto `NodeServices`
It should either be on `Library` or `NodeServices` none of this in-between stuff.
* small > big files
* prune imports
* isolate cringe
* it helps to test the code
* `Vec` -> `HashMap` - faster lookups
* mpscrr
* minor fixes
* fix language
* `!Sync` :(
* lets goooooo
* removed a comma
* fixes
* fix desktop
* lol, no one uses it
* Clippy
* #1119 Issue: Implemented "Copy as Path" functionality
I addressed issue #1119 by successfully implementing the "Copy as Path" functionality within the "More Actions" section of the Context Menu. This feature enhances user experience and offers a convenient way to copy file paths. While considering the valuable suggestion of potentially associating this option with the "Alt" key in the future, I opted to make it accessible through the "More Actions" section for now. All tests have passed smoothly
* Extend "Copy as Path" functionality to Overview, Search, and tags explorer
This commit extends the "Copy as Path" functionality to three additional screens in the SpaceDrive application: Overview (under categories), Search, and tags explorer. Users can now conveniently copy file paths from these screens, enhancing their overall experience with the application. The implementation has undergone thorough testing and is ready for review and integration into the project.
* Enhanced File Path Retrieval with RSPC Integration
The code now uses rspc to obtain the filePath, and we simply call it using useLibraryQuery from the frontend to retrieve the filePath. This RSPC-powered approach has successfully replaced the previous, less efficient method of file path retrieval. As a result, the entire process has become streamlined and optimized.
* Merge branch 'eng-848-feature-copy-as-path' of https://github.com/Raghav-45/spacedrive into eng-848-feature-copy-as-path
* Enhanced File Path Retrieval with RSPC Integration
The code now uses RSPC to obtain the file path, and we simply call it using useLibraryQuery from the frontend to retrieve the filePath. This RSPC-powered approach has successfully replaced the previous, less efficient method of file path retrieval. As a result, the entire process has become streamlined and optimized.
In the previous file path retrieval method, we relied on different file access techniques, which often led to slower & non-optimal responses
* Formatted coder with Prettier
* Refactor: Update file paths to '@sd/client'
* doing things with useLibraryMutation instead of useLibraryQuery
doing things with useLibraryMutation instead of useLibraryQuery, so that we only fetch file path only when needed
* Replace locationIdToPath api route with getPath
- Resolve full file object path on the backend instead of the front-end
- Use a query instead of a mutation
- Export rspc queryClients to allow non-reactive usage
- Error handling
- Formatting
* Update Object's context menu to use query
* Move onClick logic inside the CopyAsPath Element
* Improved a Little
- removed unused imports
- formatted document with prettier config which is present in code files `.prettierrc.js`
-
* Update Items.tsx
---------
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: nikec <nikec.job@gmail.com>
* fix(core): thumbnail removal
* chore(core): add todo
* New actor on steroids
* Improving thumbnail remover actor
* Ignoring errors from files that doesn't exist
---------
Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
* ffs
* typo
* yeet library data over p2p
* fix a bunch of edge cases
* report complete status on responder
* better log
* fix types
* mobile debug screen
* mobile + P2P is a mess
* feature flag mobile p2p pairing
* wrong one
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* less stupid name
* yeet
* awaiting futures is kinda important lol
* no-async
* more proto stuff
* cleanup
* move it round
* None of my homies like broadcast
* minor
* do the shuffle
* restore after force push
* reusing `sysinfo::System` as intended
* fix lol
* remove `node_id` from `Volume`
* Remove `node_local_id` from `Library`
* Remove `Job` to `Node` relation
* feature flags be like
* press save 4head
* remove `Location` -> `Node` relation
* `volume.rs` to `volume/mod.rs`
* yes
* add `Instance` model and deprecate `Node` model
* pairing is better now
* Pretty code
* thinking in code
* wip
* What if Observables but in Rust?!
* Observables aren't it + `useP2PEvents` hook
* more around some jsx
* Trade offer: bad code for working pairing?
* Unit test pairing protocol
* fix everything up
* corrections
* Have you got a moment for our lord and saviour Clippy
* tsc --fixMyCode
* Prisma being wacky
* Config files being f'ed up
* broken config after migrating
* Zed being Zed
* Argh
* cliipzy
* rewind
* Fix truncate logic
* wip: instances in peer metadata
* Rethink instance ids
* fix
* whoops
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* Partitioned paths to be updated on walker
* Updating file_paths in indexer
* Properly tracking modified date on renames
---------
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
* Attempt at fixing stats
* Fix macOS disk stats retrieve logic
- Ignore mounted dmgs when calculation disk total/free size
- Only take into account disk mounted by macOS
* macos only import
* Fix Linux
* Replace byte-size with a custom implementation that supports BigInt
* Fix NaN in Statistics
* clippy
* fmt
* Move linux get_volumes to a specilized function
- Fix ZFS handling
- Improve handling of disk symlinks and multiple mounts
* Fix macOS
* Fixing conflits of mts code files showing as video
* Introducing a reidentify_objects param on fullRescan
* Fix job output metadata in case of completed with errors
* Fixing bad handling of dots in directory name
* fix ci not running on rust
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
* Trying to make watcher more resilient between creates and updates
* More checks on create vs update
* Rust fmt
* PCR rev
* Windows CI fix
* Some indexer improvements
* Builder pattern for jobs and reports
* fix list view invalid date
* fix progress bar
* Normalizing job metadata output
* fixed job metadata
* Removing inner report struct from identifier job
---------
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
Co-authored-by: Jamie Pine <ijamespine@me.com>
* yeet
* destructure `JobState` when passed to `finalize`.
Let him cook.
* `impl Job for JobInitData` instead of it being `Job::Init`
The pan is on high heat and the 3 sh-meats are coming out.
* Remove `JobInitData` & `IntoJob` & `Job::new`
* clean up a little
* Remove `Job.stateful_job` in favor of `Job.state.init`
Yeah this isn't great but lets get these changes working and then think again about it.
* Properly call `StatefulJob.finalize`
* she'll be right
* fix `initialize_resumable_job`
* builder syntax for creating jobs
* Have Rust gone too far?
* Minor fixes
* fixes
---------
Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
* set date_created to tag
* update tag date modified when edited
* use `FIxedOffset` for tag `date_created`
* remove dead code and use fixedoffset
* discard duplicate code
* remove dead code & add current time to field
* remove unused code
* no longer needed in data
* set creation time for tags
* fix tag creation time
* fix & finalize timestamps
* `update_many` was not needed here
---------
Co-authored-by: brxken128 <77554505+brxken128@users.noreply.github.com>
* Fixing some warnings
* Optimizing job workers
* Removing the delay from getting job reports
* remove some commented out stuff
* Trying to optimize job report route
* fix thread 'tokio-runtime-worker' panicked at 'attempt to subtract with overflow'
* fix progress bar
* Now pause works from the UI
* Fix
* Now the worker set job report to paused
* show errors for job pause/resume
* bunch 'o ui fixes
* order location in the sidebar
* fix some text
* fix clear all jobs
* fix clear jobs & job group ui
* show queued jobs
* object validator job text
* make cancel button work
* better executable logo
* Now cancel button works instantly
* disable resume button
* remove disabled props from pause/resume buttons
* remove large comments
* show paused progress
---------
Co-authored-by: James Pine <ijamespine@me.com>
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
* lul, message parsing with a response is cringe
* deadlocks hurt me physically
* super secret commit with many secret secrets
---------
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
* Fixing copy, cut and paste
* Bug on duplicating files without extensions
* Fix paste only ignoring the location origin when validating relative paths
- Add Error handling to all context menu actions
- Hide FS actions in Overview and MediaView
- Remove redundant useExplorerSearchParams
- Add default schema to the Zod param hooks
* Hide FS actions in all Explorers but location ones
- Fix react warnings in RenameTextBox
- Fix ReactTextBox not selecting the whole file name, instead of just up to file extension
- Fix react warning due to inputing missing onChange
* basic show jobs for cut, copy and delete in job manager
* tweaks
* Fixing some warnings and minor tweaks
* Rust fmt
* Fix cut between locations on Linux
* Change how routes retrieve route params
- Replace useZodRouteParams with useLoader
- Define all schemas in the router file instead of in the route Component
- Parse schema in loader to avoid requiring the route Components having to import the schema from the router file
* Remove default argument from useZodRouteParams
---------
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
Co-authored-by: James Pine <ijamespine@me.com>
* seeded tags infra
* dumb
* here's my seed
---------
Co-authored-by: James Pine <ijamespine@me.com>
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
* [ENG-779] Finalize UI
This is one branch with a variety of UI changes
add tag select mode bar without functionality
fix group job status
add notice icon with info to stat icons
add WIP notice to media view
add modal before add location with greyed out clouds
remove disappearing add location button
add WIP spacedrop page
bring back limited key manager UI
add options bar on search page without functionality
Add greyed out encrypt library button or setting
See more button on locations
Show locations on node screen
Fix overview category left padding
* key manager placeholder
* stat info
* nodes screen
* location click yay
* fix size in bytes
Co-authored-by: Brendan Allan <Brendonovich@users.noreply.github.com>
* small ui improvements
* sh*tty see more button
* last touches
* fix merge boo boo
* Fix mobile
- Move `getItemObject`, `getItemFilePath`, `getItemLocation`, `getExplorerItemData` to @sd/core to allow mobile to use them
* Formatting
* Normalize displayed file size between all screens
- Replace every use of internal formatBytes with byte-size dep
---------
Co-authored-by: Brendan Allan <Brendonovich@users.noreply.github.com>
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
* theoretically
* just please don't fail man
* bruh
* go away serde
* fix migrations
* squash migrations
* plz for the love of all that is good work
* disable some node fields
* fix core types
* remove unused stuff
* regenerate migrations
* Fix error boundry
* undo stuff
* migration
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: James Pine <ijamespine@me.com>
* refactor job manager ui
* huge improvements to job ui api
* improve indexer errors
* minor improvements
* make icon bigger + improve styling
* Update useJobInfo.tsx
better
* improve job status reporting
* fix job indexer backend for ui responsiveness
* attempt at debugging job.getRunning slow invalidation during indexer's walk phase
* remove progress debounce, invalidate has its own throttle layer
* hotfix ghost jobs
* basic pause/resume
* pause functionality immaculate
* pause resume working for first job in group, testable on indexer phase two
* WIP
- refactored job manager
- added better job api
* fix merge issues
* add throttle to job update events and correct index
* improve front end job data handling
* move subscription to job
* wip active job indicator
* minor tweak
* Isolated subscriptions for job events + cleanup
Co-authored-by: Brendan Allan <Brendonovich@users.noreply.github.com>
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* mutable ctx
* plz let me build rspc typesafe errors Jamie
* fix merge
* working job reporting
* fix thumbnail text
* faster tick speed
* fix error
---------
Co-authored-by: Brendan Allan <Brendonovich@users.noreply.github.com>
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
Watcher bugs:
When a file was in the location root directory, it failed to fetch its
parent directory from DB, as we don't store the location root directory
* 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>
* fixes
* refactor client
* feature flag store
* move `locations.online` subscription into context
* `useDiscoveredPeers` hook
* remove it
* bruh
* Valtio is cringe
* mount p2p events provider
* Initial Windows ffmpeg + libheif custom build
* Add build steps for most of ffmpeg deps
* FFmpeg deps and libheif
* Fix libheif build
* Fix libvpx and dlfcn + attempt to fix rav1e
* Rework the whole ffmpeg-windows build system
- New system based on https://github.com/BtbN/FFmpeg-Builds
- Add new ffmpeg-windows workflow
- Rename macos ffmpeg workflow
- Adapt macos setupt script due to above name change
* Forgot to update update the workflow name
* Strip all libs from debug symbols
* Add docs
* Add libde265 deps, required by libheif
- Make x265, svtav1 and dav1d as shared deps (used by both ffmpeg and libheif)
* Add missing libheif to Linux setup script
* Fix libx265 build script
* Forgot to point x265 ninja install to the correct directory
* Remove libaom and libsvt-av1
- dav1d and rav1d are our default AV1 decoders/encoders
- Quote subshell executions
- Make libweb shared
* Forgot to remove libaom and libsvt-av1 build steps
* Fix typo
* Try force webp to link against static libs
* Revert libwebp to a static build
* Dumb typo
* Modify windows script to download our ffmpeg build (WIP)
* Fix dlls output folder structure
* Fix dumb mistake
* Remove unused ffbuild_enabled
* Enable core's heif feature on Windows
- Fix windows ffmpeg build not including the headers
- Fix windows setupt script incorrect download loagic
- Implement build_arg to pass which repo ref to use when cloning
* Fix windows setup script
* Fix workflow artifact path
- Make ffmpeg-windows dockerfile respect the FFMPEG_VERSION env
* Fix Windows setup script incorrect logic for downloading ffmpeg builds
* Error out when workflow_runs is empty
* Fix dumb mistake
* Manually define ffmpeg version for windows script
* Fix ffmpeg windows build extract logic
* Fix prop access in windows setup script
* Revert back to a web request because nightly.link does a redirect before serving the artifact content
* Fix windows setup script
* Do not use nightly.link in Github CI
* Fix windows setup script
* Should finally fix window setup script
- Update ffmpeg-windows deps
- Should fix ffmpeg-windows failing to build due to mingw changes in new base image
* Fix libxz failing to build due to doxygen
* Fix windows setup-script not executing till the end
* Fix LASTEXITCODE not defined
* Remove libjxl, deps are not being compiled
* Fix dll and lib copy logic
* Move final copy dll logic to external script
* Use main for libjxl
* Change brotli from stable to main
- Attempt to fix libjxl
* Attempt fix lib copy again
* Split copy_dll logic to avoid cache burst in docker
* Missing file
* Change how to export build files from shared deps
* Replace rsync with cp
* Fix copy
* Fix dir not existing
* Fix pkgconfig
* Remove superflous files from exported ffmpeg for windows
- Adjust dav1d to not build tools and examples
- Adjust windows setup-script to point linker to the libs directory
* Fix dav1d meson config args
* Fix dumb mistake
* WORK PLZ
* Fix .lib file location
- Strip all dlls
* Formatter
* first phase, basic sharding
* improved API for sharding using a "thumbnailKey"
* clean up param handling for custom_uri
* added version manager with migrations for the thumbnail directory
* remove redundant hash of a hash, silly
* fix mobile
* fix clippy
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
* Fix Tauri drag not working
- Fix Mpeg videos compleatly breaking QuickPreview
- Fix Dev build open data folder button not working
- Fix MP4 videos freezing in QuickPreview on MacOS
* Fix React inter-component state error
* reenable the invalidate requests system
* a tester for the invalidate system
* watch locations in Library::load
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* make it work
* use functions instead of jobs for shallow stuff
* use generalised AbortOnDrop
* simplify naming
* error stuff + alphabetical rspc types
* log errors
* don't run CI on push
* remove ephemeral
* private Worker::new
* remove comments
* Introducing many rules on a single indexer rule
* Rust fmt
* Some doc fixes and small stuff
* Small warnings
* Making front typecheks
* Migration fix
---------
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
* Fix macOS PDF rendering
- Fix app crashing due to PDF rendering receiving empty URLs
- Attempt fix PDF rendering empty PDFs due to it not supporting range requests
* Fix dumb change from `data` to `src` in `<object>`
- Fix QuickPreview not closing with space bar
- Fix double-click simultaneously renaming and opening file
- Minor improvements to QuickPreview header
- Fix Button inside Button react error in QuickPreview
- Don't render thumb without a valid source
* ExternalObject events must not influence the link state
- More macOS PDF range changes
* Use `<iframe>` instead of `<embed>` or `<object>` to load pdf in macOS
- Revert removing range support for macOS pdf type
- Rename `ExternalObject` to `PDFViewer`
- Fix `AddLocationDialog` sometimes requiring multiple confimations on first load
* `Accept-Ranges: none` Header response as it breaks linux video playback
- Extract location id from from `ExplorerItemData`, to allow rendering original versions on `Overview`
* Format
* cargo fmt
* fix extension case sensitivity
* job time estimation wip
* update schema
* use `DateTime` to handle estimated completion time
* use a date with `dayjs`
* remove old migrations
* update migrations
* remove dead code
* Quick tweaks
* unused import
---------
Co-authored-by: brxken128 <77554505+brxken128@users.noreply.github.com>
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
* fix things
* added back/forward buttons to settings
* split top bar context into left and right
* hook up path
* fix background jobs hidden from job manager
* core
* fix type + quick preview transition
* fix selected item color contrast
* fix close button on quick preview
* clean up job ui for light theme
* Improve media view overscan
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* working HEIC thumbnails
* better error handling
* better error handling and some cleanup
* fix type of maximum size, and clippy
* better extension support, WIP quick preview, better image resolution
* remove unnecessary x86_64 macos rustflags
* add correct rustflags to setup script
* add fedora libheif deps
* debian libheif deps
* arch libheif too
* add sd-heif as a dep and feature gate it
* enable aforementioned feature in tauri only
* add URI support for heif/heic (quick preview still won't work)
* correct feature gating on everything
* dedicated sd-heif crate
---------
Co-authored-by: brxken128 <77554505+brxken128@users.noreply.github.com>
* added base UI for categories on overview
* update core
* cleanup ui
* Inspector default view if nothing is selected, explorer takes child components, hidden menu tweak if no items are sm:flex
* wip
* somewhat functional
* scroll
* category fixes
* clean category bar
* added config store + made toolbar available on all explorer screens
* clean up overview.tsx
* added counts
* fix inspector bug
* add support for favorites
+ add book extension support
* refactor into smaller components
* Some small rust nitpicks
* fix camel case location_type
* Rust fmt
* fix typescript CI
---------
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
Co-authored-by: nikec <nikec.job@gmail.com>
Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
* WIP materialized_path abstraction revamp
* Optimizing indexer rules loading
* Using a better serialize impl for indexer rules
* New interruptable and faster Walker
* WIP new indexer
* WIP first success compiling after breaking the world
* Fixing some warnings
* Handling some lifetime issues in the walker
* New job completed with errors feature
* Introducing completed with errors to indexer
Removing IOError variant from JobError and using FileIOError instead
* Rust fmt
* Adding missing job status
* Better ergonomics to IsolatedFilePathData
Conversions from db's file_path kinds
Keeping original's relative path data to better conversion to OS's path
First unit tests
* Testing and fixing parent method
* Some error handling
* Rust fmt
* Some small fixes
* Fixing indexer rules decoding
* Bunch of small fixes
* Rust fmt
* Fixing indexer rules
* Updating frontend to new materialized_path format
* Trying to fix windows CI
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* d
* wip
* Nit: margin and padding tweak
* UI design tweaks
* Update Job.tsx
* Improve UI
* [WIP] - Refactor job manager
* remove invalidate explorer event on thumb generation. the event above performs atomic updates on the front end when new thumbnails are generated, now just need to make that work
* prettier formatting + removed unused imports
* UI tweaks
* progress bar width adjustment
* tweaks
* fix em
* fix thumbnail generation
* fix progress bar
* fix time
---------
Co-authored-by: Jamie Pine <ijamespine@me.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* prevent libraries having all null or empty names
* stop onboarding continuation if name field is empty
* prevent libraries with entirely empty names from being created in TS
* remove trim from schema
* add comment explaining regex, and `.trim()`
* source `has_thumbnail` correctly
* correctly check if thumbnail exists in watcher
* regen bindings
* add helper fn for getting thumbnail directory and cleanup old thumbnails if the watcher creates a new one
* finally
* should be working?
* fix types
* fix types
* Wouldn't it be nice if Metro would just work
* idk
* try harder Metro
* potentially fix bundling issues
* idk, maybe fix it?
* fix metro
* update podfile.lock
* bruh
* bruhz
* tailwind is drunk again
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
* Add dry_run for `location.create` and `location.addLibrary`
* Add dry_run to IndexerRuleCreateArgs
- Add invalidate_query to create and edit api method of the location route
- Adjust some code to use the new dry_run property
* `AddLocationDialog` and `IndexerRuleEditor` now validate with backend without user interaction
- Create `useCallbackToWatchForm` to make it easier to watch form changes with an async function that also executes during component mount
- `method` is now part of the `addLocationDialog` form schema, and a hidden input
- Add an `index.ts` for hooks and components
* Fix mobile
* Remove redundant type definition
* Add `useCallbackToWatchForm` as an additional hook to `react-hooks/exhaustive-deps`
- Improve `useCallbackToWatchForm` argument handling, to avoid duplicated references to form
* Fix unnecessary form value updates in `addLocationDialog`
- Move reset `method` on `path` change logic from the superfluous `useEffect` to `useCallbackToWatchForm` in `addLocationDialog`
- Improve core API debug logs for `dry_run`
- Fix incorrect file name for `useCallbackToWatchForm` hook
- Improve the documentation for `useCallbackToWatchForm`
- Fix `useCallbackToWatchForm` not ignoring callback errors
- Fix `useCallbackToWatchForm` ignoring returned Promise from `onWatch`
- Add basic validation for the `form` argument in `useCallbackToWatchForm`
* Remove superflous if checks
- generate new core.ts
* Remove DryRunError
* Remove unused import
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* A hint of file drop
* backport from #671
* accept/reject Spacedrop working
* final cleanup
* Rename spacedrop.tsx to Spacedrop.tsx
* Update index.tsx
* give file paths pub_id and use it primarily
* fix object indexing
* file path location + sync
* remove future plan
* use id instead of pub_id for more indexer queries
* use chain_optional_iter
---------
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* 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>
* WIP Create Indexer Rule UI + Backend api fix
* Complete IndexerEditor UI for creating new rules
- WIP testing to ensure all rules are parsed correctly
- Add utilities to satisfy the TypeScript typechecker
- Introduce a utility function to facilitate extracting information from an RSPCError
- Modify AddLocationDialog to utilize the aforementioned utility function
* Validation and submit logic is now functional
- Reorganize UI for improved user flow
- Implement validation and error messaging, replace some bare inputs with form inputs, and fix styling issues
- Resolve issues with post-processing of rules during submission
- Wrap editable portion of component in a `FormProvider` due to the `Form` being in a `Portal`
- Add specialized `ErrorMessage` component to `@sd/ui` library
- Update `AddLocationDialog` and `FormField` to utilize the new `ErrorMessage` component
* Fix submit not waiting for confirmation from backend
- Reset form after submit
- Disable form while submiting
- Update form related dependencies
* Implement deleting an indexer rule
- Modify indexer rule api route to disallow deleting default rules
* Fix form reset on error
- Minor style adjustments
* add basic UI protection to stop cut/copies to the same path
* add rust src/dest protections
* fix pasting logic
* fix path canonicalization
* skip paths instead of overwriting them
* Using non-blocking ops and fixing some warnings
---------
Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
* add support for deleting a specific job
* wip
* Update JobManager.tsx
* Job manager design tweaks + popover open state ignore prop
* tweaks
---------
Co-authored-by: jake <77554505+brxken128@users.noreply.github.com>
* remove unused onScroll
* Add open media file with double click
* Hide file thumb in inspector
* Enable media layout
* Add media layout options
* Add media view
* Fix vertical images
* Fix vertical square aspect
* query
* Update Location.tsx
* Some optimizations on explorer data query
---------
Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
* improve app level migration system
* basic unit tests for app migrator
We kinda don't want this going wrong so extra barrier is good.
* fix migrator tests
* Implement multiple Glob matches in the same indexer rule
- Replace matching logic to use GlobSet instead of simple Glob
- Add `No OS protected` indexer rule to avoid indexing OS protected files
- Enable `No OS protected` indexer rule by default
* Rust fmt
* Reduce `No OS protected` rule Glob list by using OR matches
* Add globs for android and ios files in `No OS protected` rule
* Add some more unix special path to be ignored
* Add a new property to IndexerRule to enable it by default when adding a new location:
- Modify the Prisma schema to add the default property to the IndexerRule model.
- Adjust the IndexerRule struct's create and save logic to consider the new property.
- Adjust AddLocationDialog to properly load the default indexer rules from the backend.
- Minorly improve IndexerRuleEditor to avoid adding duplicate entries to its assigned form field.
- Add editorconfig entries for SQL and Prisma types.
* rust fmt
* Add Windows users special folders and files to `No OS protected` rule
* Construct `No OS protected` globs from string vec
- Don't repeat windows globs that require both a root and C: version
* Apply review feedback and add error handling for `IndexerRuleEditor`
- Revert manual changes made to init migration
- Create external migration that adds a `default` prop in `IndexerRule` model
- Remove redundant `useMemo`
- Replace destructuring of `useQuery`
- Provide feedback to user when a error occurs while querying indexer rules
* useMemo only for `indexerRulesIds` and not the whole `defaultValues` object
- Remove logic to accpet unix root path for windows indexer `No OS protected` rule
* Fix issue with root locations failing to be added
- Add `normpath` dependency to the core
- Improve automatic name resolution for new locations
* Add `MetadataExt` trait to extend the `created` and `modified` methods of `Metadata`
- Prevent failure in the Indexer job caused by paths without associated created or modified times; assume current time for both when unavailable
- Rename possible location in root path from `/` to `Root`
* Improve hadling of location path on Windows
- Normalize location's path to ensure a valid format on Windows
- Improve error handling when adding a path
- Avoid consuming symlinks on Linux by not normalizing location's path
- Improve location naming logic
Remove read-only check when creating a location
- Revert location creation if writing the `.spacedrive` file or updating the library location manager fails