Commit Graph

66 Commits

Author SHA1 Message Date
Ericson "Fogo" Soares
8147f78a55 [ENG-1793] Introduce error handling for sd-core-sync crate (#2556)
* Error handling for sd-core-sync crate
Also a bunch of tweaks and fixes

* Update core.ts

* Auto format

* Comment out background_processing_percentage on frontend too
 - Update rust version in contributing

* Trying to avoid data loss on actor stop

* Stronger linter on sync generator

* Stronger lint on sync subcrate

* Clean back tasks.json file

* TS typechecking

* Autoformat

* Add more verbose errors for Cloud REST API

* Removing some comments

Copilot is fun sometimes lol

* Properly stopping actors

* Fix ingest stop

* Racing on stop for actors

* Error conversion from merge with main

---------

Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: Arnab Chakraborty <11457760+Rocky43007@users.noreply.github.com>
2024-07-16 22:30:35 +00:00
Ericson "Fogo" Soares
7d431526a7 [ENG-1814] Assign objects to directories on File Identifier Job (#2580)
* Done

* Bugged edge case when the root location only had directories
Also a bug on the get orphan queries, now a file_path is only unidentified if it doesn't has a object_id.

---------

Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
2024-07-05 11:00:45 +00:00
Ericson "Fogo" Soares
ef048a866c [ENG-1809] Make core more resilient to crashes (#2574)
* Catching panics

* Re-enable unwind on release profile

* Reverting deps due to bad assertion

* Comment why the deps where reverted

---------

Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
2024-06-30 03:59:01 +00:00
Ericson "Fogo" Soares
bdc242a852 [ENG-1775] Scan location using new jobs (#2476)
* First draft on task system usage, still missing job system

* Scan location roughly working, a ton of stuff to fix yet

* Updating some deps due to crashes and bugs

* Exposing non critical errors to frontend

* Getting active job reports from job system

* Using boxed opaque type to avoid a downcast issue with generics

* Task system issues discovered on race conditions

* Enable debug

* Fix job report in the job manager

* Fix race condition on steal tasks

* Fixed race condition on task suspend

* Some fixes on job progress reporting and save

* Fixed many race conditions and a hard deadlock
Also some progress report polishing

* Ignore .ts and .mts video files for now

* Some better logs

* bruh

* Internal deadlocks and excess of communication in the task system
- Also better logs

* Bunch of fixes and optimizations

* WIP at fixing file identifier

* Fixed file identifier job
- still need to work on its progress report frontend

* A bunch of polishing

* Fixed some bugs and did more polishing

* Cleanup

* Bridging old and new job systems

* A ton of fixes

* A bunch of bugs related to shutdown and resume

* Indexer and watcher bugs

* Log normalizing

* Fixing CI

* Change error! to warn! on non critical errors log

* Fix redirect to new location

* Type annotation

* Bogus merge resolution on cargo lock
2024-06-17 21:30:57 +00:00
Vítor Vasconcellos
405fb023d8 Clean up and update rust dependencies (#2544)
* Clean up and update rust dependencies

* Attempt to fix Windows Error
2024-06-10 19:44:00 +00:00
Julian Braha
ef1be196c1 Cleanup: remove unnecessary #[allow(dead_code)] and #[allow(unused)] attributes (#2535)
Remove unnecessary #[allow(dead_code)] and #[allow(unused)] attributes
2024-06-04 07:11:36 +00:00
Brendan Allan
735e80ad4d [ENG-1776] Delete cloud ops after they've been ingested (#2512)
* delete cloud ops after they've been ingested

* give wait_tx to p2p sync ingest

* remove Ingested event

* add sync docs for setting relation fields

* Update core/crates/sync/README.md

Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>

---------

Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
2024-05-31 06:54:22 +00:00
Oscar Beaumont
0392c781d7 Serve files over p2p (#2523)
* serve files over p2p

* include location instance id in sync

* Fix P2P addressing?

---------

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2024-05-30 22:07:28 +08:00
Brendan Allan
b7c3eb6f5c sd-core-sync documentation (#2511)
* sd-core-sync api documentation

* use spaces
2024-05-29 03:30:24 +00:00
Consoli
ce3d4ff7a6 Remove unnecessary allocation (#2495) 2024-05-17 16:10:43 +00:00
ameer2468
9d47af8bd1 [MOB-95] Tags support & more (#2494)
* tags support wip

* Mob: tags in explorer, ui adjustments, add filter based on search click and more

* Fix tags scroll on filters

* Set heights so UI updates correctly

* Update Tags.tsx

* remove console logs

* remove console logs

* Update Locations.tsx

* type

* Update locations.rs

* make tags abit smaller

* list view visual improvements

* Remove plus
2024-05-17 15:55:29 +00:00
Consoli
26b6baffb6 Extend indexer rules with .gitignore when available (#2459)
* Extend indexer rules with `.gitignore` when available

* Make indexer accounts for valid git  repos when reading ignore files

* Ignore poorly formatted gitignore rules

* Reduce allocation in gitignore indexer rules

* Fix tests for gitignore indexer rules

* Remove code duplication

* Remove double call to git rules

* Improve doc for todo

* rustfmt

* Skip star rules that matches a negated pattern when parsing gitignore

* Skip conflicting glob rules

* Rename and remove print

* Make git ignore indexer consider multiple paths

* Use gix_ignore to handle gitignore rules

* Fix gitignore patterns relative to git repo

* Git indexer also consider nested repos

* Create a dedicated type for rules coming from git

* Consider every gitignore file inside a git repo

* Add IgnoredByGit to interface

* Add Gitignore system IndexerRule to allow front-end to toggle GitIgnoreRules
 - Make IndexerRules names unique
 - CLippy fmt

* Fix migration concat

---------

Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
2024-05-17 06:28:12 +00:00
Brendan Allan
7faa08c53a Make sync ingest setting public (#2485)
make sync ingest setting public
2024-05-14 08:38:00 +00:00
Ericson "Fogo" Soares
062c71fe41 Fix pnpm prep on heavy-lifting subcrate (#2475)
Fix
2024-05-10 18:25:19 +00:00
Ericson "Fogo" Soares
69412accae [ENG-1634 / ENG-1636] Integrate Media Data Extractor and Thumbnail Actor with New Task System (#2423)
* Moving stuff around

* Media data extraction task

* New thumbnailer task

* Taking more metrics on thumbnailer

* First drafts on media processor job

* Better interruption latency on thumbnailer task

* Also solve the latency on interrupt at media data extraction

* Media processor job

* Shallow media processor

* Better prioritize files identification

* Integrate ffmpeg media data extraction
- Thumbnail quality improvements parameters
2024-05-10 12:51:22 +00:00
Consoli
8e994bedaa Box heavy data inside enum (#2466)
* Box big data inside enum

* Ignore size difference of Processed
2024-05-09 04:13:35 +00:00
Vítor Vasconcellos
e797b02e65 Media metadata extraction & Thumbnailer rework (#2285)
* initial ffprobe commit

* Working slim down version ffprobe

* Auto format ffprobe and deps source

* Remove show_pixel_formats logic
- Fix do_bitexact incorrect check in main after last changes
- Fix some clangd warning

* Remove show_* and print_format options and their respective logic

* Rework ffprobe into simple_ffprobe
- Simplify ffprobe logic into a simple program that gather and print a media file metadata

* Reduce the amount of ffmpeg log messages while generating thumbnails

* Fix completly wrong comments

* mend

* Start modeling ffmpeg extracted metadata on schema
 - Start porting ffprobe code to rust
 - Rename some references to media_data to exif_data

* Finish modeling media info data
 - Add MediaProgram, MediaStream, MediaCodec, MediaVideoProps, MediaAudioProps, MediaSubtitleProps to Schema
 - Fix simple_ffproble to use its custom print_codec, instead of ffmpeg's impl

* Add relation between MediaInfo and FilePath
 - Remove shared properties from MediaInfo and related structs
 - Implement Iterator for FFmpegDict

* Fix and update schema

* Data models and start populating MediaInfo in rust

* Finish populating media info, chapters and program

* Improve FFmpegFormatContext data raw pointer access
 - Implement stream data gathering

* Impl FFmpegCodecContext, retrieve codec information
 - Improve some unsafe pointer uses
 - Impl from FFmpegFormatContext to MediaInfo conversion

* Fix FFmpegDict Drop

* Fix some crago warnings

* Impl retrieval of video props
 - Fix C char* to Rust String convertion

* Impl retrieval of audio and subtitle props
 - Fill props for MediaCodec

* Remove simple_ffprobe now that the Rust impl is done

* Fix schema to match actually retrieved media info
 - Fix import some FFmpeg constants instead of directly using values

* Rework movie_decoder
 - Re-implement create_scale_string and add support anamorphic video
 - Improve C pointer access for FFmpegFormatContext and FFmpegCodecContext
 - Use newer FFmpeg abstractions in movie_decoder

* Fix incorrect props when initializing MovieDecoder

* Remove unecessary lifetimes

* Added more native wrappers for some FFmpeg native objects used in movie_decoder

* Remove FFmpegPacket
 - Some more improvements to movie_decoder

* WIP

* Some small fixes

* More fixes
Rename movie_decoder to frame_decoder
Remove more references to film_strips

* fmt

* Fix duplicate migration for job error changes

* fix rebase

* Solving segfaults, fuck C lang

Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>

* Update rust to version 1.77
 - Pin rust version with rust-toolchain.toml
 - Change from dtolnay/rust-toolchain to IronCoreLabs/rust-toolchain for rust-toolchain support
 - Remove unused function and imports
 - Replace most CString uses with new c literal string

* More segfault solving and other minor fixes

Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>

* Fix ffmpeg rotation filter breaking portrait video thumbnails #2150
 - Plus some other misc fixes

* Auto format

* Retrieve video/audio metadata on frontend

* Auto format

* First draft on ffmpeg data save on db

Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>

* Fix some incorrect changes to prisma schema

* Some fixes for the FFmpegData schema
 - Expand logic to save FFmpegData to db

* A ton of things

Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>

* Integrating ffmpeg media data in jobs and API

* Rspc can't BigInt

* 🙄

* Add initial ffmpeg metadata entries to Inspector
 - Fix ephemeral metadata api to match the files metadata api call

* Fix Inspector not showing ffmpeg metadata

* Add bitrate, start time and chapters video metadata to Inspector
- Fix backend BigInt conversion incorrectly using i32 instead of u32
- Change FFmpegFormatContext/FFmpegMetaData bit_rate to i64
- Rename byteSize to humanizeSize
- Expand humanizeSize logic to allow handling bits and Binary units
- Move capitalize to @sd/client utils

* Solving some issues

* Fix ffmpeg probe getting incorrect stream id and breaking database unique constraint
 - Fix humanizeSize breaking when receiving floating numbers
 - Fix incorrect equality in StatCard
 - Fix unhandled error in Dialog when trying to remove an unknown dialog

* fmt

* small improvements
 - Remove some unecessary recursion_limit directive
 - Remove unused app_image releated functions
 - Fix metadata query enabled flag

* Add migration for ffmpeg media data

* Fix cypress test

* Requested changes

* Implement feedback
 - Update locale keys for all languages
 - Add pnpm command to update all language keys

* Fix thumb reactivity in non indexed locations

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>
2024-05-09 02:20:28 +00:00
Vítor Vasconcellos
0f405caf24 Fix CI (#2461)
Use native-tls-vendored for reqwest
 - Update prisma-client-rust
 - Fix mock_instance test
 - Clippy + fmt
 - Improve error handling when uninstall i386 libs in setup-system action
2024-05-08 05:04:25 +00:00
Oscar Beaumont
a238760c88 [ENG-1690] Upgrade to Tauri 2.0 (#2433)
* Most of it

* Cleanup menu

* fixes

* Fixed linux compilation, still not working though, as the app panic on start

* Add dialog permissions

* fix search keybind

* Fix linux
∙  - Disable linux-ipc-protocol feature, as that is causing panics due to trying to access some WebKit internal structures outside the main thread

* Update to Ubuntu 22.04, new tauri doesn't support ubuntu 20.04
>  - Add note to download page about deb's distro support

* Remove gen/schemas

* Update linux dependencies in setup.sh

* Fix linux deps again
 - Enable rt-tokio-crypto-rust feature in secret-service so clippy stops complaining

* Clippy + auto fmt

* Fix cache-factory
 - Create a devtools feature for desktop app, which is enabled by default on dev builds

* Fix minor error in patchTauri.mjs

* Fix some envvars that have been renamed on tauri v2

* Dont change the secrets

* Add missing linux dependency

---------

Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
2024-05-07 08:36:50 +00:00
Brendan Allan
408499229b Sync settings page (#2460)
sync settings page
2024-05-07 07:39:22 +00:00
Oscar Beaumont
ce5e285c2f Remove normalised cache (#2390)
* yeetus

* fix

* a

* fix

* todo

* fix library stuff

---------

Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
2024-04-30 00:36:39 +00:00
Ericson "Fogo" Soares
73f521a3b8 [ENG-1629] Write new file identifier with the task system (#2334)
* Introduce deep vs shallow for indexer tasks with different priorities

* Make job wait to dispatch if it's paused

* Extract file metadata task on file identifier job

* Some initial drafts on object processor task

* Object processor task for file identifier

* File Identifier job and shallow
2024-04-25 04:06:11 +00:00
Vítor Vasconcellos
2c777e53f1 Fix core test (#2386)
* Fix core test

* Import CompressedCRDTOperations

---------

Co-authored-by: Ericson "Fogo" Soares <ericson.ds999@gmail.com>
2024-04-24 23:37:38 +00:00
Brendan Allan
918c2a987d Batch ingest sync operations (#2378)
batch ingest sync operations
2024-04-24 08:26:50 +00:00
Brendan Allan
663d1e9f1e Group create and initial update operations into Create (#2329)
* ignore update after delete in sync

* Group create and initial update operations into Create

* fix ts

* fix sync generator

* fix sync debug route

* oops
2024-04-18 03:53:16 +00:00
Brendan Allan
a315dd632d ignore update after delete in sync (#2327) 2024-04-17 04:57:45 +00:00
Brendan Allan
b99a1adfca [ENG-1740] Add sempahore for generating sync operation timestamps (#2335)
add sempahore for generating sync operation timestamps
2024-04-16 08:14:08 +00:00
Oscar Beaumont
e77a475e61 Date header is not working (#2321)
* wip

* more

* bindings

* show date taken

* improve date lookup and include placeholder

* date taken

---------

Co-authored-by: nikec <nikec.job@gmail.com>
2024-04-15 12:53:11 +00:00
Brendan Allan
40fa3380e5 [ENG-1722] Numeric sync model IDs (#2298)
* numeric sync model ids

* migration

* fix test compilation
2024-04-11 03:46:30 +00:00
Ericson "Fogo" Soares
67554c89b3 [ENG-1724] Introduce scan state for location (#2302)
Done
2024-04-10 16:19:59 +00:00
Ericson "Fogo" Soares
6b760b0b2a [ENG-1628] Write new indexer with the task system (#2161)
* Moving file-path-helper to a sub-crate on core

* Parallel walker tested and working

* Change inner core crate names to sd-core-* naming scheme

* Moving stuff around

* Save and Update tasks for the new indexer job

* Some initial drafts on the new job system

* More drafts on job system

* Changing walker task to a more explicit state machine
Also drafting more of job system

* More drafting on job resume

* Completed the draft on job system inner workings

* New job context abstraction to decouple library stuff from job system

* Properly use composition on task dispatcher

* First draft on indexer job

* Job serialization

* Handling ancestors in the distributed walker for indexer

* Saving computed directories sizes on a location to db

* Enable a way to check if jobs are running in a location

* Progress reporting on indexer job

* Reorganizing modules

* Shallow indexer

* Rust fmt

* Attempting windows CI fix

* Attempting windows CI fix again

* Attempting windows CI fix again
2024-04-08 14:32:44 +00:00
Brendan Allan
902ed24ffd [ENG-1674] fix request drop test and add write_ops test (#2252)
fix request drop test and add write_ops test
2024-03-27 06:40:57 +00:00
Brendan Allan
94ca18925d [ENG-1691] Sync status subscription (#2246)
* sync status subscription

* clippy
2024-03-26 07:26:37 +00:00
Vítor Vasconcellos
16354b0f72 Fix a couple of tests after #2218 (#2219)
- Fix some rust warnings
2024-03-19 02:23:42 +00:00
Brendan Allan
3afc3bd34f fix cloud sync and operations (#2218)
* fix cloud sync and operations

* remove some logs

* cleanup
2024-03-18 08:51:16 +00:00
Brendan Allan
6a2e5bc857 add message request drop test (#2201)
* Fix sync tests

* fix build

* add message request drop test

* fix: clippy

---------

Co-authored-by: jake <77554505+brxken128@users.noreply.github.com>
2024-03-13 22:16:51 +00:00
Brendan Allan
79530f1e4e Fix sync tests (#2194)
* Fix sync tests

* fix build
2024-03-13 05:34:14 +00:00
Brendan Allan
62d22c9295 move CompressedCRDTOperation and add docs around sync (#2188) 2024-03-11 09:35:53 +00:00
Brendan Allan
63b17adb10 switch sync to msgpack instead of json (#2164)
* switch sync to msgpack instead of json

* use rmpv

* more rmpv

* use msgpack in cloud

* receive operations as msgpack
2024-03-06 10:15:29 +00:00
Brendan Allan
26d7a240db paginate sync backfill (#2163)
* paginate sync backfill

* add backfill timeout

* use gt instead of gte
2024-03-06 07:13:44 +00:00
Brendan Allan
c8dc7e3d4d [ENG-1613] Enable sync operation generation with backfill (#2128)
Enable sync operation generation with backfill
2024-02-27 09:37:34 +00:00
Vítor Vasconcellos
6a32752243 Fix core test and CI breaking (#2116)
Fix core test passing inverted arguments to sync_db_entry macro
2024-02-22 06:15:36 +00:00
Brendan Allan
c533d12df0 media data sync (#2102)
* basic sync operation backfill

* media data sync

* sync entry helpers

* fix sync generator

* nicer

* re-add key_id
2024-02-21 11:42:10 +00:00
Brendan Allan
9bc1a472a8 Basic sync operation backfill (#2101)
* basic sync operation backfill

* no changes
2024-02-20 09:22:34 +00:00
Oscar Beaumont
a30deaa144 Cloud + P2P (#1970)
* P2P Debug route

* Remove legacy peer to peer pairing process

* Fix error typo

* Sync instances with cloud

* Upgrade deps + extended instance data

* Create instance with extended metadata

* Auto sync instances

* Actually `.await`

* bruh

* sync library info

* this isn't gonna work

* only sleep cloud receiver when no more messages (#1985)

* [ENG-1567] Fix renaming (#1986)

fix rename

* only sleep cloud receiver when no more messages

* use in memory instances during cloud receive (#1995)

* use in memory instances during cloud receive

* is_empty

---------

Co-authored-by: nikec <43032218+niikeec@users.noreply.github.com>

* fix type error

* wip

* make mdns mdns better

* response

* remove renames

---------

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: nikec <43032218+niikeec@users.noreply.github.com>
2024-02-02 09:31:11 +00:00
Brendan Allan
d1027a51fa Add some documentation for the sync ingester (#2028) 2024-02-01 04:58:48 +00:00
Brendan Allan
c45f6d7bfa separate cloud sync into sd-core-cloud-sync (#2025)
* separate cloud sync into sd-core-cloud-sync

* ci
2024-01-31 08:16:54 +00:00
Brendan Allan
b7872421f4 Use transaction in sync ingest (#1939) 2024-01-16 07:33:13 +00:00
Brendan Allan
4962b1160b [ENG-1488] Cloud sync message compression (#1922)
* CRDTOperationWithoutInstance

* almost there

* fully compress messages

* implement more of sd-cloud-api

* sd-cloud-api-ify

* landing -_-

* openssl

* clippy

* idk

* bruh

* wut

* ahhh right
2024-01-09 10:21:23 +00:00
Brendan Allan
5371e9f961 [ENG-1512] Replace sync operation types with single type (#1900)
* replace multiple op types with crdt_operation

* cleanup
2023-12-21 05:58:03 +00:00