* 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>
* 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
* Minor UI Fixes
* adjustments
* show file name and extension only if truncated and with tooltip
* name
* oops
* truncate lib name
* cleanup
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@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>
* 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>
* WIP
* Add keybind utility
* Fix Ctrl instead of Cmd in macOS
* Fix keyboard shortcuts for search
- Implement keyboard shortcut for inspector
* Minor fix for setup script
* Implement shortcut for new tag and for opening files
- Change quickpreview shortcut logic to follow others
- Fix OpenFilePath not reporting error
* fix types
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@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>
* Fix renaming
* Hide rename context menu in media view
* Alert to user if rename fails
---------
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
* Generalizing filesystem jobs to accept multiple files at once
* Some small changes and fixing front
* Enable rename route to replicate Finder's behavior
* Assign tag to multiple objects at once
* Remove from recents accepting multiple files
* Fixing some warnings
* Adding multiple files feature to Open and Open With
* Conditional stuff for macos
* Generating commands.ts and other minor warnings
* Rust fmt
* TS typecheck
* Rust format and TS typecheck
* Requested changes
* Requested changes
---------
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
* Overview categories arrow buttons
* Hide indexer rules in location + category arrow buttons
* Added masking on left and right of categories
* Expose lock_app_theme function to frontend
* Allow lockAppTheme to reset back to auto theme
* Fixes, progress bar color, useTheme update, shrink-0 for arrow button
* Only show fadeout if scrolled, onboarding css tweaks
* Framer hook unstable, motion divs to handle last category entry is much better
* Fix color picker closing
* Remove ref that is no longer needed
* Fix swift theme updating
* cleanup
* Overview categories arrow buttons and fixes
Added masking on left and right of categories
[HOTFIX] Remove placeholder nodes (#913)
Update LibrarySection.tsx
[ENG-694] Remove Spacedrop (#914)
* goodbye Spacedrop
* fix startup error escaping
* fix error fallback being cringe with long error
* backwards compatibility for early adopters
[ENG-697] Fix rename library (#916)
* random stuff
* How have we had a deadlock for 2 months lol
[ENG-701] Add explorer top bar options to tags (#918)
Add top bar options
[ENG-679] Reserve ids for built in indexer rules (#909)
* indexer rules pub ids
* should work?
* better migrator
* errors
* debugging
* maybe?
* double migrate
* please
* maybe fix?
* update lockfile
* SD_ACCEPT_DATA_LOSS message
* put tracing back
* dumb
* fix system indexer rule ui
fix(interface): quick preview not closing with SPACE (#921)
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
[ENG-700] Add empty notice to tags (#922)
Add empty notice to tags
[ENG-707] Fix list item bg color (#924)
Fix list item bg color
[ENG-706] Add deselect explorer view items (#923)
Add deselect
Expose lock_app_theme function to frontend
Allow lockAppTheme to reset back to auto theme
Fixes, progress bar color, useTheme update, shrink-0 for arrow button
Only show fadeout if scrolled, onboarding css tweaks
Framer hook unstable, motion divs to handle last category entry is much better
Fix color picker closing
Remove ref that is no longer needed
Fix swift theme updating
* cleanup
* Update pnpm-lock.yaml
* fix types & upgrade typescript version to 5.0.4
* fix folder icon
* remove rust comment
* remove mask
* masking tweak
---------
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: nikec <nikec.job@gmail.com>
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
* 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>
* wip
* wip 2
* Grid list single selection
* core & pnpm-lock
* Merge branch 'main'
Conflicts:
interface/app/$libraryId/Explorer/index.tsx
* missing import from merge
* fix total_orphan_paths bug
* add top bar context
* missing pieces of merge
* missing pieces of merge
* missing divs
* Fill fallback value - was causing null error of page
* spelling fixes
* notice light theme, list view update, other explorer updates
* Update pnpm-lock
* Remove procedure
* fix light menu ink color
* fix list view scrolled state
* Change layout default
* Remove unused imports
* remove keys
* empty notice & context menu overview
* Fix prevent selection while context menu is up
* Fix scroll with keys
* Empty notice icon
* Add light icons
* Context menu and fixed list view scroll
* Fix name column sizing
* top/bottom scroll position
* Tag assign only when objectData
* Fix list view locked state
* fix ci
* shamefully ignore eslint
---------
Co-authored-by: Jamie Pine <ijamespine@me.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: Utku Bakir <74243531+utkubakir@users.noreply.github.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
* 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 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>
* Fix setup-system breaking in macOS due to unavailable envvar
- Remove unused docker build-arg from ffmpeg workflow
- Fix Overview Explorer extending below inspector
- Fix some left behind formatting problems
* Some more formatting
* WIP
* Some minor fixes for light theme
- Fix `useIsDark` not reading the initial theme value (only reacting to theme changes)
- Fix `Inspector` always showing a dark image when no item was selected
- Fix `Thumb` video extension using black text on light theme
* Improve form error messages
- Fix `addLocationDialog` not registering the path input
- Remove `@hookform/error-message`
* Fix Dialog not respecting max-width
- Fix ErrorMessage animation jumping
* A lot of misc fixes
- Implement an `useExplorerItemData` (cleaner fix for thumbnail flicker)
- Fix broken image showing for `Thumb` due a rece condition when props are updated
- Implement an `ExternalObject` component that hacks an alternative for `onLoad` and `onError` events for <object>
- Fix `Overview` broken layout when `Inspector` is open and window is small
- Improve `IndexerRuleEditor` UX in `AddLocationDialog`
- Improve the way `IndexerRuleEditor` handles rules deletion
- Fix `IndexerRuleEditor` closing the the new rule form even when the rule creation fails
- Add an editable prop to `IndexerRuleEditor` to disable all editable functions
- Fix `getIcon` fallbacking to Document instead of the dark version of an icon if it exists
- Add some missing colors to white theme
* Format
* Fix Backup restore key dialog not resetting after error
* Feedback
* Format
* Normalize imports
* Fix ColorPicker export
* Fix Thumb video ext not showing in MediaView with show square thumbnails
- Fix AddLocationDialog Error resetting when changing IndexRules
* Centralize the file preview logic in `Thumb.tsx`
* Fix useEffect
* Fix Inspector thumb keeping internal state from previous selected files
- Change video border to follow video aspect-ratio, just like Finder
* Restore memo to Thumb
- Only add borders to video thumb, not the video itself
* Simplify and improve Thumb logic
- Add A internal Thumbnail component
- Rename main component to FileThumb to match mobile naming
- Move getIcon utility function to assets/icons
* Add new `useCallbackToWatchResize` hook
- Replace `ResizeObserver` with new resize hook in `Thumb`
- Simplify and improve `useIsDark` hook by replacing `react-responsive` with direct usage of WebAPI `matchMedia`
- Fix `Thumb` src not updating correctly
- Fix video extension incorrectly showing when size <= 80 in `Thumb`
* Fix `Inspector` not updating thumb type
- Remove superfluous `newThumb` from `getExplorerItemData`
* Remove superfluous `ThumSize`
* Forgot a `?`
* Fix incorrect className check in `Thumb`
- Updated changed files to use the hooks root import
* Format
* Fix PDF preview compleatly breaking the application
- Allow Linux to access both the spacedrive:// custom protocol and the workaround webserver
- On Linux only use the webserver for audio and video, which don't work when requested through a custom protocol
- Configure tauri IPC to allow API access to the spacedrive://localhost domain, to avoid PDF previews from breaking the security scope and rendering the application unusable
- Configure CSP to allow the pdf plugin custom protocol used by webkit
- Fix race condition between Thumb error handler and thumbType useEffect, by using replacing it with a useLayoutEffect
- Improve Thumb's error handling
* 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>
* 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>
* Attempt to fix Windows CI:
- Ensure version 15 of LLVM is installed in Windows CI (due to` ffmpeg-sys-next`)
- Use `GITHUB_TOKEN` in setup-system.ps1 to avoid rate-limiting by github api in Windows CI
- Add `yaml` settings to `.editorconfig`
- Create a symbolic link from `.prettierignore` to `.eslintignore`
- Move `eslint` root to package root config
- Enable `fileNesting` to reduce dotfile clutter in vscode
- Pass `--strict` to apps/releases `lint` command to avoid making interactive queries and hanging `pnpm lint`
- Format with `prettier` and `eslint`
- Remove empty interface/hooks/useMediaQuery.ts
* Replace unmaintained `actions-rs/toolchain` with `dtolnay/rust-toolchain`
- Change setup-system.ps1 to avoid installing pnpm in CI
- Change `pnpm/action-setup` to lock only o major versions of the action
* A hint of file drop
* backport from #671
* accept/reject Spacedrop working
* final cleanup
* Rename spacedrop.tsx to Spacedrop.tsx
* Update index.tsx
* Add bg color to layout
* Add tool options, search state
* support double click nav from search
* useTopBarOptions
* search store
* disable nav button
* search
* Update View.tsx
* rename hook
---------
Co-authored-by: Jamie Pine <ijamespine@me.com>
Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
* 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>
- Switched default Media View to squares
- Removed Media View item rounded
- Removed debug sidebar item
- Grey'd out non-functional empty
screens (I'd like to add)
- Removed junk on Overview
- Removed ring effect on buttons
* 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>
* Topbar improvements
lint
lint
Prettier formatting
* pr adjustments
* prettier
* remove forwardedRef from searchbar and use a local ref instead.
* lint
* pr adjustments
prettier
remove forwardedRef from searchbar and use a local ref instead.
lint
* date_created
* replace date_created with created_at
* fix merge
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
* Make Prettier and ESLint work together
- Resolve conflicts between Prettier and ESLint regarding indentation and Tailwind rules order
- Add `.editorconfig` to standardize basic formatting options across tools and editors
- Add `.gitattributes` to hide `pnpm-lock.yaml` in `git diff` output
- Include EditorConfig in the recommended extensions for VSCode
- Replace some instances of `pnpm exec <command>` with `pnpm <command>`
- Remove superfluous Tauri config for Linux
* Revert Prettier changes (it was working correctly before)
- Update ESLint to read Tailwind config from absolute path
- Remove redundant Prettier dependency from subprojects
- Specify the source folder for the lint script in subprojects
* use mobile's tailwind config with eslint
* pnpm format + pnpm lint:fix
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>