Commit Graph

82 Commits

Author SHA1 Message Date
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
5a81ff8bbd fix dependencies 2023-01-22 16:09:28 +08:00
Brendan Allan
3e4ca13766 simplify eslint configs + add CI job 2023-01-22 16:01:15 +08:00
Brendan Allan
87286dba13 Refactor routes (#535)
* refactor routes

* use default export for screens

* use "route" relative routing

* don't use absolute import for root screens

* no absolute importing folders!!!

* fine we can absolute import folders
2023-01-20 12:40:36 -08:00
Brendan Allan
2589359ce2 Begin form abstraction (#515) 2023-01-12 07:26:59 -08:00
Brendan Allan
45bc9eacb9 Use import aliases (#508)
* implement a bunch of aliases

* build packages with tsc for turbo
2023-01-06 20:21:36 -08:00
Brendan Allan
3cc7a44435 relative imports in @sd/interface (#504) 2023-01-06 19:07:24 -08:00
Utku Bakir
fcbc92203b Bump node to lts (v18) 2022-12-14 12:43:02 +03:00
jake
da65ef5900 [ENG-313] Key auto-generation and viewing (#478)
* add generic dialog for keys settings

* revert artifact failed key viewing attempt

* move `Select` key list component

* rename dialog

* remove unused imports and add new select option for *all* keys

* add WIP but broken key viewer dialog

* cleanup code and fix key viewer dialog

* add clipboard icon and copy functionality

* generalise the `AlertDialog` and refactor `BackupRestoreDialog` to use it

* use new alert dialog in place of JS/tauri alerts

* use generic alerts everywhere and bring generic alert props/default state

* make `SelectOptionKeyList` generic for mounted/unmounted keys (with the use of `map` for the latter)

* add clipboard to generic alert dialog + clean up

* fix accent colour button for backup restoration

* remove unneeded props from components

* add slider+automount button

* tweak password gen function

* add password autogeneration

* clippy

* tweak password generation

* use `crypto-random-string` and drop rust password generation

* add default TEMPORARY keymanager pass/secret key to library creation screen

* make key automounting functional

* clean up key viewer

* change dialog name

* remove slider as that wasn't even being used?

* make requested changes and hide key viewer if no keys are in the key manager

* prevent automount and library sync from being enabled simultaneously

* include `memoryOnly` in key

* mark keys as memoryOnly
2022-12-12 17:13:52 +00:00
jake
ed8fd999e1 [ENG-251] Crypto Jobs (#475)
* add base crypto job

* leave hashing to the KM and not keyslots

* add latest header object versions and update examples

* add a very experimental (local file!) encrypt job

* working file encryption with default key

* working file decryption

* non-working encrypt file dialog

* general code cleanup

* comments and correct feature locking

* fix the `Dialog`

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

* WIP encrypt dialog

* massive encrypt dialog overhaul

* add generic explorer alert dialog

* better key naming/numbering, alerts for unsupported scenarios

* cleanup + decrypt file dialog

* remove debugging stuff

* remove dead code & fix a bug with key select being empty

* clean up dialog UI massively

* add support for setting output path

* add correct button type to prevent early dialog submits

* add "nice" job data for encrypt/decrypt

* tweak functionality of key setting in encrypt dialog

* include full file metadata if selected, and lay out groundwork for preview media inclusion

* add comment about not restoring metadata/pvm just yet

* general cleanup

Co-authored-by: maxichrome <maxichrome@users.noreply.github.com>
2022-12-07 15:16:13 +00:00
jake
55e9d02136 [ENG-307] Key manager features (#467)
* working key management in settings page

* sync with library button

* fix `rspc` feature and add passphrase generation

* untested key manager rework

* trying to return values from mutations

* update library manager and remove settiong master PW

* update bindings

* set static secret key/master password

* prompt user for master password if correct one hasn't been provided yet

* add `hasMasterPassword` route

* add `clearMasterPassword` route + remove dead code

* tweak `set_master_password()` and add dedicated error

* tweak UI, fix `few hooks than expected`, add unmount+lock button

* remove old comment

* fmt

* clippy

* move static key/password setting so it doesn't fail sometimes

* add dedicated `get_key()` and remove keys from memory

* add `getKey` route

* update bindings

* use `const` instead of `let`

* comment updates

* update schema to remove salt

* add string parse error

* generate passphrase within key manager

* generate new migrations

* feature gate serde support in `crypto` crate

* fmt

* more specific error types

* foramatting

* add locking mechanism to keysettings page (not working?)

* fix react hook issues

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

* remove empty onclick

* add keymanager dropdown menu

* working key backup functionality

* add experimental master password changing support

* update bindings

* semi-working change master password dialog

* use gear/lock icons to clean up key manager UI

* make settings button functional

* make buttons uniform and format code

* fix double base64 encode

* add change master password dialog and secret key dialog

* code cleanup

* restore backup dialog

* change UI wording

* make a start on restoring from a backup

* potentially working keystore restore

* don't overwrite verification key if one is set

* working backup restore + fix master password changing

* fix typo in static password/verification key check logic

* change wording to make UI clearer

* disable mount button if key is empty

* handle errors+remove type annotations

* show total imported keys on backup restoration

* add zxcvbn package

* change input border colour based on zxcvbn score

* clippy and formatting

* password strength meter

* remove nbsp

* add button type to stop early form submission

* use `react-hook-form` for backup restoration dialog

* more `react-hook-form` stuff

* attempt to fix password meter

* small cleanup

* Fix password meter

* update colours

Co-authored-by: maxichrome <maxichrome@users.noreply.github.com>
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
2022-12-02 10:18:21 +00:00
Brendan Allan
7311205146 use node 16 2022-11-06 10:14:09 +08:00
Olen Latham
2b70ba8931 ignore last commit derp 2022-11-05 18:05:40 +00:00
Olen Latham
28905c8339 looking over I think we want our @type/node to be in line with our node version requirements 2022-11-05 17:55:32 +00:00
Oscar Beaumont
aff03b3f49 Error Bounary Sentry support (#444)
* Sentry support

* remove broken import

Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
Co-authored-by: Jamie Pine <ijamespine@me.com>
2022-10-29 02:06:09 -07:00
Jamie Pine
63a846c56d Polish Icon Usage (#437) 2022-10-25 18:47:09 -07:00
Jamie Pine
ecc24a43d8 job indicator + styling 2022-10-24 01:17:10 -07:00
Jamie Pine
7a58887048 more theming 2022-10-22 22:46:46 -07:00
Brendan Allan
18d3c947f7 dropdown refactor 2022-10-22 01:35:03 +08:00
Jamie Pine
237c5a12af Merge branch 'eng-259-identify-objectkind'
Conflicts:
	apps/landing/package.json
	apps/landing/vite.config.ts
	packages/interface/src/AppLayout.tsx
	packages/interface/src/components/explorer/Explorer.tsx
	packages/interface/src/components/explorer/ExplorerTopBar.tsx
	packages/ui/src/ContextMenu.tsx
	pnpm-lock.yaml
2022-10-20 22:49:15 -07:00
Oscar Beaumont
5f4003e8b1 purge unused dependencies 2022-10-18 21:52:00 +08:00
Oscar Beaumont
30c02c1e52 upgrade rspc + fix reactivity + add in disabled Normi code 2022-10-18 04:45:37 +08:00
Jamie Pine
40657b62b4 Merge branch 'main' of https://github.com/spacedriveapp/spacedrive 2022-10-17 01:36:05 -07:00
Oscar Beaumont
450ad0daa2 merge duplicate prettier config and format repo with it 2022-10-07 07:45:15 +08:00
Oscar Beaumont
851778b2ab toast notification hook 2022-10-07 07:36:22 +08:00
Oscar Beaumont
6d7285b2ea upgrade workspace dependencies 2022-10-06 14:03:58 +08:00
Brendan Allan
817e4443c0 merge main into update-rspc-and-more 2022-10-05 08:58:03 +08:00
Brendan Allan
74b42bf45c [ENG-84] Sync library (#394)
* new sql lib stuff

* add sync stuff + rename all crates

* build sd-core

* add sync/example/dist to source

* fix sync example in monorepop

* appease clippy

* update lockfile

* update commit hooks

* fix typescript

* fix typescript build

* please rustfmt
2022-10-04 05:25:12 -07:00
Oscar Beaumont
b250ab6861 bundle splitting and performance optimisations 2022-10-02 01:37:35 +08:00
Oscar Beaumont
fc1c6d0906 upgrade rspc 2022-10-02 01:16:11 +08:00
Jamie Pine
6796262619 Added crates folder (#389)
* restructure core for crates folder

- improve naming consistency
- added placeholder files for near future code
- added docs

* - removed all typescript from core
- moved rspc bindings to client

* remove useless git ignore & rustfmt
2022-09-29 21:02:29 -07:00
Oscar Beaumont
c218fbabe1 fix explorer in production builds + move libraryId back to Valtio
Production build issue was because we `useSnapshot` in a different package to where the store was created.
Putting the libraryId in context makes the app noticeably slower because of React rules so I undid that change.
2022-09-13 14:32:32 +08:00
Oscar Beaumont
4509998eb2 fix the production build issue + cleanup frontend 2022-09-09 06:29:47 +08:00
Jamie Pine
39b80eb018 job manager wip 2022-09-07 20:04:13 -07:00
Jamie Pine
f0b14a5a7a upgrade valtio back to latest 2022-09-04 18:22:56 -07:00
Jamie Pine
f3b8e6b14a replaced interface store with Valtio 2022-09-04 18:20:22 -07:00
Jamie Pine
d16fdedd3d valtio 2022-09-04 15:58:16 -07:00
Jamie Pine
11dba3414d add tanstack virtual 2022-09-04 14:13:02 -07:00
Jamie Pine
d621145f49 Assignable Tags (#370)
* Tag queries + Identifier bug fix

- added empty pages for docs
- added non-functional "New Library" button to sidebar
- to accomplish above, moved dialog logic to component folder
- fixed Identifier bug where location id was not considered in the orphan files query, meaning it would attempt to identify many non-existent paths and fail to create the legitimate ones

* (fix) maintain file item aspect ratio in grid view
(fix) get tag query + get all tags

* codegen

* resurrected context menu

* fix window flash

* remove location based thumb sorting + update react on landing

* add is_archived to location

* improved context menu

* assign tag + refactor explorer store

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

* assign/unassign tags from context menu

* fix lint

* keep context menu open on tag change

* fix brendan feedback + merge main

* fix type

* codegen

* style changes

* revert windows size and xcode proj

* remove outdated doc

* coming sooooooon

* updated release notes

* release notes

* dashes > dots

* clean up docs

* more docs!

* restore entitlements

* remove unused util

* regenerated migrations post merge
- some additional error handling added to migration runner, needs more work!

* refactor explorer to support tags

* fix error and revert explorer bg color

* put it in a box they said

* revert location id store removal

* upgrade hero icons + style tweaks

Co-authored-by: maxichrome <maxichrome@users.noreply.github.com>
2022-09-04 13:00:24 -07:00
Oscar Beaumont
c207642429 make typecheck pass 2022-08-30 14:38:45 +08:00
Oscar Beaumont
05d08705bf Merge branch 'main' of https://github.com/spacedriveapp/spacedrive into feature/Tooltip 2022-08-30 14:32:00 +08:00
Utku
ed8bc60de4 Merge branch 'main' into eng-89-new-counter 2022-08-20 13:28:29 +03:00
Utku Bakir
22cd8a461f Fix types - Interface 2022-08-11 12:35:27 +03:00
Utku Bakir
56495719d5 Move eslint to config package 2022-08-10 18:43:04 +03:00
Oscar Beaumont
d740f7e626 fix invalid package.json 2022-08-09 15:22:54 +08:00
xPolar
00897b2dfa Merge branch 'main' into eng-89-new-counter 2022-08-09 00:14:20 -07:00
Oscar Beaumont
3804f034f1 Move Rust backend to rspc (#345)
* move Rust backend to rspc

* move server to Axum + remove parts of old bridge

* move frontend over to @rspc/client

* move core to rspc + update deps

* fix Typescript errors + upgrade deps

* document invalidate_query! macro

* general cleanup + upgrade to PCR 0.6.0

* prisma error handling

* upgrade to rspc 0.0.4

* update vite-plugin-ssr

* fix typescript

* fix builds

* put landing page app name back

* hardcode ffmpeg version on Windows

* rename 'command' to 'mutation' to line up with react-query terminology

* upgrade rspc to v0.0.5 + fix types

* use shared ffmpeg binaries

* general Typescript cleanup

* fix clippy workflow failing due to tauri proc-macro

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2022-08-03 08:36:03 -07:00
Utku
22c5477bef New counter implementation 2022-07-30 13:05:08 +03:00
Utku
2629da8323 Introducing assets package (#347)
* Move file Icons & Spacedrive logo to assets folder

* Fix all imports

Co-authored-by: Utku <>
2022-07-25 20:08:44 -07:00
Jamie Pine
47ae02b743 Bunch 'O Features (#336)
* CRUD for tags.

* Implement tags query in open.rs and make some changes to CRUD.

* Tag update.

* Hopefully working get tags.

* added node config + spaces schema

* add missing routes

* begin tag ui

* renaming query names to better fit convention

* tags progress

* tag edit

* fix delete tag description

Co-authored-by: xPolar <polar@polar.blue>
2022-07-17 20:45:04 -07:00