Commit Graph

411 Commits

Author SHA1 Message Date
Jamie Pine
56b57a27d3 chore: update logging levels and adjust periodic watermark check interval
- Changed logging from info to debug for various library operations to reduce log verbosity.
- Updated the periodic watermark check interval from 5 minutes to 1 minute for more frequent synchronization checks.
- Commented out the ContentBreakdown component in the Overview route for potential future use.
2025-11-16 07:38:27 -08:00
James Pine
a842826555 fix size view loading 2025-11-16 05:49:54 -08:00
James Pine
2f887a41fa yay 2025-11-15 08:35:07 -08:00
Jamie Pine
c647ee8452 feat: add unique content count to library statistics
- Introduced a new field `unique_content_count` in `LibraryStatistics` to track the number of unique content identities.
- Updated various components to calculate and display unique content count, enhancing library statistics output.
- Modified the CLI and interface to reflect the new unique content metric, improving user insights into library data.
- Adjusted serialization and API responses to include the unique content count for better data consistency across the system.
2025-11-15 04:55:20 -08:00
James Pine
f7d7468bce remove submodules 2025-11-14 21:31:21 -08:00
James Pine
62fd347e64 feat: implement cross-window library ID and selected files synchronization
Backend (Tauri):
- Add AppState with current_library_id and selected_file_ids
- Persist library ID to disk for app restarts
- Add Tauri commands: get/set_current_library_id, get/set_selected_file_ids
- Emit library-changed and selected-files-changed events to all windows
- Inject window globals to all windows (not just main)

Platform abstraction:
- Add library ID methods: getCurrentLibraryId, setCurrentLibraryId, onLibraryIdChanged
- Add window management: showWindow, closeWindow, onWindowEvent, getCurrentWindowLabel
- Add selected files methods: getSelectedFileIds, setSelectedFileIds, onSelectedFilesChanged
- Implement all methods in Tauri platform layer

App layer:
- Query library ID on window mount from platform state
- Listen for library-changed events and update client
- Fix event emission to trigger hooks (emitEvent: true)
- Remove direct Tauri imports from App.tsx

This enables:
 Library ID persists across app restarts
 All windows (main, inspector, quick preview) sync library ID
 Inspector receives selected files from main window in real-time
 Popout windows get current state on mount
 Clean platform abstraction - zero Tauri code in interface

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 21:20:39 -08:00
Jamie Pine
3e78e8c3c8 feat: implement comprehensive findings and resolution plan for sync system watermark issues; introduce per-resource watermark tracking to prevent data loss during sync operations 2025-11-14 06:50:59 -08:00
Jamie Pine
b3d709d571 chore: mark subproject commits as dirty for library configuration; update documentation for device and capacity fields 2025-11-14 05:46:44 -08:00
Jamie Pine
267d52d769 feat: enhance volume management with new filtering options and improved event handling; add stability tests for volume fingerprints 2025-11-14 05:20:05 -08:00
Jamie Pine
f0ab50c377 feat: add job policies to location management; enhance resource routing and event emissions for virtual resources; update TypeScript types for job configurations 2025-11-13 21:28:48 -08:00
Jamie Pine
ec3ba2577b chore: update subproject commits for docs, workbench, landing, and interface modules 2025-11-13 01:55:00 -08:00
Jamie Pine
c1680d866d feat: add support for image and audio metadata extraction, enhance media listing query with new sorting options, and update related types in TypeScript definitions 2025-11-13 01:22:34 -08:00
Jamie Pine
da5d53942c feat: enhance media data management by adding support for audio, video, and image metadata extraction, update database schema, and improve file query operations 2025-11-12 22:20:43 -08:00
Jamie Pine
9f82071de4 feat: update Tauri app configuration with new asset protocol and permissions, enhance file path resolution, and improve volume management caching 2025-11-12 05:38:54 -08:00
Jamie Pine
b1dcb59076 feat: implement Identifiable trait for File resource, enhancing cache management and resolving frontend hacks 2025-11-12 04:00:51 -08:00
Jamie Pine
2ef179d4df chore: update Zustand dependency to version 5.0.8, modify Cargo.toml for sd-core features, and enhance sidecar manager initialization in library management 2025-11-11 15:44:00 -08:00
Jamie Pine
4dde6524af chore: update subproject commits and enhance logging configuration with multi-stream support 2025-11-11 06:55:17 -08:00
Jamie Pine
b71072f065 feat: add context menu support and enhance drag demo with context menu functionality 2025-11-11 03:03:37 -08:00
Jamie Pine
d53371af92 chore: update subproject commits and enhance resource event handling with batch support 2025-11-10 19:23:47 -08:00
Jamie Pine
ee0349c97b tauri 2025-11-10 05:59:52 -08:00
Jamie Pine
ac4c5361dd chore: update dependencies in bun.lock, enhance event handling in RPC server, and add event listing functionality 2025-11-10 05:51:59 -08:00
Jamie Pine
20a55a62db chore: migrate from pnpm to Bun, update Node.js version, and remove unused configuration files 2025-11-09 22:34:26 -08:00
Brendan Allan
99a31de824 [ENG-380] Interface code structure improvement (#581)
* beginnings of app directory

* settings mostly good

* colocate way more components

* flatten components folder

* reexport QueryClientProvider from client

* move CodeBlock back to interface

* colocate Explorer, KeyManager + more

* goddamn captialisation

* get toasts out of components

* please eslint

* no more src directory

* $ instead of :

* added back RowHeader component

* fix settings modal padding

* more spacing, less margin

* fix sidebar locations button

* fix tags sidebar link

* clean up back button

* added margin to explorer context menu to prevent contact with edge of viewport

* don't export QueryClientProvider from @sd/client

* basic guidelines

* import interface correctly

* remove old demo data

* fix onboarding layout

* fix onboarding navigation

* fix key manager settings button

---------

Co-authored-by: Jamie Pine <ijamespine@me.com>
2023-02-27 21:29:48 -08:00
Oscar Beaumont
8feab45299 UI testing (#565)
* store demo data in React Query

* Playwright for UI screenshots

* use path based routing on web

* Fix Typescript error
2023-02-27 13:15:47 +08:00
Oscar Beaumont
a6a781b1c5 core startup error handling (#579)
* core startup error handling

* lazy load `PasswordMeter` so that the huge `@zxcvbn-ts` isn't in the core bundle

* please clippy

---------

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2023-02-25 13:50:22 +00:00
Jamie Pine
ac912cda6b [BUGFIX] Only show list view header on list view 2023-02-24 22:26:59 -08:00
Jamie Pine
963584f065 [ENG-379] Explorer item resizer (#580)
* added item resizer
fixed explorer store bug
refactored file image component

* better sizing for videos

* fixed inspector width issue

* remove console.log

* added column titles to list view + extra details

* moved util

* remove imports

* Update packages/interface/src/components/explorer/FileColumns.tsx

Co-authored-by: Brendan Allan <brendonovich@outlook.com>

* address issues

* fix extension in file list name

* Update packages/interface/src/components/explorer/FileColumns.tsx

---------

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2023-02-25 06:16:57 +00:00
Jamie Pine
49e85809f6 [BUG] fix broken explorer 2023-02-24 14:32:59 -08:00
Jamie Pine
fab84b7f7a [ENG-363] Spacedrop UI + Misc Improvements (#568)
* begin spacedrop ui + misc ui improvements

* better 404 xox

* Update extensions.rs

I think I prefer Container

* added DragRegion component,  ot tested cuz im on my fone

* Update DragRegion.tsx

fix import

* added dummy drop items

* better dummy data

* added clouds & search bar

* added action buttons to spacedrop items

* customize subtle button

* added support for apng, thanks luka big pants

* use relative path in sidebar

* use BYTES const

---------

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2023-02-24 08:12:21 +00:00
Utku
465708fa30 Mobile Strict Mode and Types (#578)
* better compiler options

* fix types

* fix more types
2023-02-24 08:11:48 +00:00
Brendan Allan
e2c1a7f033 check if any libraries in AppLayout 2023-02-23 18:08:56 +08:00
Brendan Allan
d9372731d6 Another routing overhaul (#577)
* whole lotta routing

* remove stats refreshing

* start integrating new contexts on mobile

* update mobile to please typescript

* fix mobile

---------

Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
2023-02-23 09:56:32 +00:00
Utku
b11b31e48d Fix Mobile & opacity/x syntax (#576)
* fix mobile

* fix opacity/xx (it doesn't exist)

* Add opacity-60 back to job manager
2023-02-21 17:57:08 +00:00
jake
d99e586766 [ENG-134] OSS Licenses and Projects (#575)
* add `deps-generator` crate

* move `clap` types to separate file

* idiomatic filtering

* experimentally update ci

* add *really* basic dependency page

* remove `license_id` from `License`

* add bare minimum JSON files

* Revert "experimentally update ci"

This reverts commit c04897d902.

* re-insert comments

* Using reqwest blocking feature to avoid asyncness

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
2023-02-20 05:58:55 +00:00
Utku
85b429336d Mobile Actions & File Info Modal (#573)
* better drawer

* fix build?

* style changes

* fix subfolder navigation

* bigger icons and drawer style tweaks

* Disable Menu animation

* more subfolder navigation & title stuff

* move tag dialogs to modal

* cleanup

* Fix text input sizing

* Improve modal component

* Hide modal close button & fix position

* update packages

* style create tag / update tag modals.

* move dialogs to modal & new modal component

* move IsPath and isObject to client + small fixes

* fix FileModal

* move kind to client

* move everything to components + cleanup

* move format bytes, info pills, work on fileinfo and actions modal, update packages, rename xcode build step

* Update Device.tsx

remove placeholder data

* small fixes

* actions modal header and some styling

* fav button

* actions item, divider and container components

* file actions

* file info modal

* remove bg-green from Inspector

* Add more info to fileinfo modal

* Delete unused Device component

* fix merge stuff

* linting + changed how we export tw + rename tw.style to twStyle
2023-02-20 05:24:59 +00:00
Brendan Allan
f4ff6c6a99 Replace Location.local_path with path (#571)
* replace Location.local_path with path

* Using more references to avoid unneeded moves and removing unneeded errors variants

* remove unnecessary stuff

* location id checks

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
2023-02-20 05:14:47 +00:00
Utku
adb322b9f3 Tailwind Prettier Plugin (#557)
* add tailwind prettier plugin + run prettier

* add eslint tailwind plugin and eslint fix to turbo

* Ran eslint fix + fixed every other lint issues

* twStyle and lint stuff

* remove auto lint as it's buggy

* update eslint & add twStyle to tailwind regex

* Fix auto lint + config inconsistencies

* Add tailwind config to prettier config

* run lint:fix

---------

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2023-02-16 07:04:19 +00:00
Oscar Beaumont
60d5bc4afe improvements to spacedrive:// custom URI protocol (#550)
* fix `spacedrive://` custom protocol on Windows
(hopefully)

* custom protocol using `http::Response` + fix broken web

* import patches before App on web

* use `http::Request` for input to `handle_custom_uri`

* break  into dedicated file + error handling

* serving files via custom protocol

* cargo fmt because vscode did cringe

* lru cache to reduce video chunk request time

* add  helper to JS

* clippy be like

* remove duplicate Open buttons in context menu

* fix Linux 🙏

* no shot

* fix Windows custom URI passing (hopefully)

* better fix for custom uri on Linux

* upgrade Tauri for  feature

* switch url replacement order

* prevent React dev tools script being added in prod to desktop

* remove React devtools from html

* upgrade Tauri; required upgrading rspc, Axum, PCR

* pass typecheck + less cringe bigint

* clippy is love, clippy is life

* Typecheck plz

* fix bigint to number conversion

* use httpz + localhost server for Linux

* clippy be right

* Remove console.log

* [wip] proper auth

* fix Linux sidebar padding

* Secure Axum server with random

* Extracting app setup specific to linux to a different file

* remove outdated comment

* Some tweaks on cursom_uri.rs

* file_path_with_location doesn't need to be a named include

* fix typo

* factually wrong comment

* Change `unwrap` to `expect`

* bruh

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
2023-02-14 13:27:11 +08:00
Jamie Pine
c07a42b7c8 [ENG 239] Onboarding Flow & Location Settings (#529)
* begin better onboarding

* added input and altered text

* better router & text + database icon

Co-authored-by: maxichrome <maxichrome@users.noreply.github.com>

* work on privacy screen + radio buttons

* fix video extension bug and alter screens

* add pending schema and location manager helper

* functional onboarding

* added secure temp store and started creating library loading screen

* fix secure temp keystore + api

* better onboarding

* added location settings and some overview concept, all WIP

* fix switch

* prep

* fix location router

* added backend settings

* attempted to fix form

* begin indexer rules editor, plus tweaks

* indexer rules coming soon

* fix onboarding img size

* cleanup

* clone is needed here, but clippy no like

* sike

* whole bunch of fixes

* clippy + ts

* Removing some TODOs from api/libraries.rs and fixing db size calculation

* moved object kind to client, added half functionality for appearance settings

* fix RadioGroup helper

* fix type issues

* cargo fmt

* fix creating library error handling + invalidate location list on update

* forgot to switch back to onError

* Invalidating getStatistics query on library creation and introducing the concept of waiting for a job on FileCopierJob

* F* cargo fmt

* fix RadioGroup interactivity

* wipe all migrations

* put back COLLATE NOCASE on extension columns

* update core.ts

* remove unused device component

* fix typeerror in mobile

---------

Co-authored-by: maxichrome <maxichrome@users.noreply.github.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
2023-02-10 14:08:13 -08:00
Brendan Allan
c781ce4782 Merge pull request #566 from JulesGuesnon/fix/file-unhighlighting 2023-02-10 12:03:15 +08:00
JulesGuesnon
2a8b4a3a34 refactor(Explorer): Removed long check by a stopPropagation 2023-02-10 11:59:31 +09:00
JulesGuesnon
bd4496218a fix(Explorer): Added unhighlightning when clicking outside a file 2023-02-09 20:25:07 +09:00
jake
c4658815ad [ENG-357] Automatically mount associated key during decryption (#564)
* auto-mount associated key during decryption based on content salt

* use iterator directly

* cleanup
2023-02-09 10:07:53 +00:00
jake
08059ae700 [ENG-358] Malicious client protection for the KM (#562)
* add `queue_check`, `mount_check` and `unlock_check`

* make `unlock_check` marginally more readable

* clippy

* clean up & rename functions

* remove unlock check on `keys.list`

* use american spelling of `favorite`

* use `then_some` (thanks clippy)

* more american spelling
2023-02-09 09:30:26 +00:00
Jules Guesnon
638f8cd166 [Fix] Dropdown focus when app is launching (#563)
fix(Interface): Removed the focus when app is launching
2023-02-08 13:37:25 -08:00
Brendan Allan
23fbb1e408 Move location online status out of database (#560)
* move location online status out of database

* remove useLibrarySubscription

* remove old code
2023-02-07 05:58:47 -08:00
jake
e5b45d8f49 [ENG-355] Keychain integration (and some typesafety) (#558)
* update crypto MSRV

* rename `keychain` to `keyring`

* make a start on the keymanager unlock refactor/keychain integration

* update routes

* update bindings

* add const identifiers

* add UI/front-end support for unlocking KM with OS keychains

* remove SK from lib creation dialog

* update query name

* add keyring functions

* attempt to update `change_master_password()` to use the keychain

* cleanup, fix master password change ui, better secret key in keyring detection

* cleanup TS a little

* add route for getting secret key from keyring

* update bindings

* update var names + show secret key in keys settings

* add `react-qr-code` and option to view the secret key (if it's in the OS keyring)

* allow copying SK to clipboard

* add `key_type` so we're not reliant on specific UUIDs for root/verification key handling

* clippy

* fix mobile typecheck

* fix typecheck, fix typo and tweak balloon hash parameters

* minor cleanup + typo fix

* use newtype structs

* WIP type refactoring (major readability boost!)

* update `use`

* add tokio `sync` feature

* too many structs? idk

* more cleanup

* add `generate` and `Nonce`

* `Nonce` and `Key` typesafety (beautiful)

* clippy + cleanup

* update code & examples

* fix bug & remove `ProtectedVec` as it looked out of place

* use `Key`

* add a query invalidation to make the UI extremely responsive

* ci pls work

* remove `keyringHasSk` route
2023-02-07 12:03:12 +00:00
Brendan Allan
d91bb9aa1d Merge branch 'main' into non-unique-objects 2023-01-30 12:11:35 +08:00
Brendan Allan
224ed772ac store cas ids on file paths 2023-01-28 11:42:24 +08:00
brxken128
253739c83e Merge branch 'main' into eng-348-async-crypto 2023-01-25 22:02:23 +00:00