* 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>
* Removing migrator
* Adding serde_repr dep
* Generalizing version manager
* Updating library config to use version manager
* Updating node config to use version manager
* Updating stuff to use new configs
* More async
* Library manager errors
* Node and thumbnailer preferences
* Small warning on prep
* Upgrading batch construction for thumbnailer
* Updating thumb version file to new version manager
* Configurable parallelism for thumbnailer
* Integration with frontend and refresh batch
Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>
---------
Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>
* Backend side
* Rust fmt
* Removing uneeded duplicate files rspc route
* Create folder for ephemeral files
* Ephemeral delete files
* First draft on copy, cut and delete, still buggy
* Fixing copy function and updating async-channel dep
* Rename and some fixes
* let me create pr
* a whole lotta changes
* split `p2p_manager.rs` into smaller files
* the arcpocalypse is over
* minor generic cleanup
* wip removing 'MetadataManager'
* more wip
* wip: i am changing branch
* discovery2 -> discovery
* make it somewhat compile
* more wip
* wip: reassembling manager stream
* state more goodly
* wip
* more wip
* removing generic from sd_p2p::Manager
* reassemble networked libraries
* wip: hooking back up mDNS
* multi-flume wip
* contain bad code to a single file
* p2p_manager_actor + split handlers into file per operation
* cleanup after restructure
* cleaning up more
* wip: reenable resync
* wip: remote identity in connection payload
* track connected clients (required for `service.rs`)
* a big ass iterator
* working towards finishing `service.rs`
* service shutdown
* hook up listen channel in service
* fix address resolution
* merge nlm stuff into LibrariesService
* finish library to service mapping
* less footguns in p2p - seal `PeerId`
* fix previous pr
* p2p state rspc query
* send node events to the frontend
* minor
* wip
* more worky, less crashy
* make spacedrop work + debug state
* fix mdns expiry
* clippy
* other clippy
* remove old tests
* add tests back
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* 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
* 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>
* 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>
* 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
* 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
* 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>
* `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
* 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>
* 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
* 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>
* 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>
* 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>