From 237c5a12aff37d0556e4e1508f9eb991da82a135 Mon Sep 17 00:00:00 2001 From: Jamie Pine Date: Thu, 20 Oct 2022 22:49:15 -0700 Subject: [PATCH] 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 --- Cargo.lock | Bin 180257 -> 179439 bytes apps/desktop/package.json | 1 + apps/mobile/pnpm-lock.yaml | Bin 0 -> 324647 bytes core/Cargo.toml | 2 +- core/src/object/identifier_job.rs | 34 +++-- crates/file-ext/src/kind.rs | 4 +- crates/sync/docs/HLC.md | 73 +++++++++++ docs/developers/architecture/sync.md | 86 ++----------- packages/client/src/stores/explorerStore.ts | 1 + packages/interface/package.json | 1 + packages/interface/src/AppLayout.tsx | 2 +- .../src/components/explorer/Explorer.tsx | 40 +++++- .../explorer/ExplorerContextMenu.tsx | 27 ++-- .../components/explorer/ExplorerTopBar.tsx | 26 +++- .../src/components/explorer/FileItem.tsx | 4 +- .../src/components/explorer/Inspector.tsx | 10 +- .../components/explorer/VirtualizedList.tsx | 20 ++- .../src/components/jobs/JobManager.tsx | 118 +++++++++++------- packages/interface/src/screens/Debug.tsx | 2 +- packages/interface/src/screens/Overview.tsx | 2 +- packages/interface/src/screens/Photos.tsx | 2 +- .../src/screens/settings/Settings.tsx | 2 +- .../settings/client/GeneralSettings.tsx | 44 +++---- packages/interface/src/style.scss | 10 ++ packages/ui/package.json | 5 +- packages/ui/src/ContextMenu.tsx | 28 +++-- packages/ui/src/OverlayPanel.tsx | 2 +- packages/ui/style/style.scss | 5 + pnpm-lock.yaml | Bin 745872 -> 809737 bytes 29 files changed, 339 insertions(+), 212 deletions(-) create mode 100644 apps/mobile/pnpm-lock.yaml create mode 100644 crates/sync/docs/HLC.md diff --git a/Cargo.lock b/Cargo.lock index c6e2f875b897e5526a8678e70a9769861d7cdde7..a49844386f79c30a6358f7ba92e2e5d474bf0a67 100644 GIT binary patch delta 103 zcmZ43!2SLw*M^GSo9lKzK E0Gl#0dH?_b delta 447 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

NW^6r*^q20_6St%-% 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Ð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

vR-($IbH0=R$r?sRKqWgWf2T!(g(A zca*F+l?;HoiU4CIb#_v!+&FjX@N6s>~vE@)B_V78(~@MduTl@(OkgFLbG%ZF%?n-_39e>VGq z?FE!=+lkb>u8CtAu-|PkiQH%BInuR^AK)|oNQ^J%WUm+OmAK#~SstN&7uh<|j&f>F z-pLSwXb*H50h!_TyxiMwefVv-0se7E$=~U*p>*%rHILEVl^{1^G7j6Zp^)O7x@e1f zMAc&z5tM>oS>pusjc6!mVk>^W=Z+Y*IJk_eGj8YTV{>%D^|iUgx1&NI$EygZy*DfL z-Pz!S64U@b8+b?u|Lj4)_KBDKyG2#mIV8p*o<0Jv{;3TuZ>J=N8Jpx%0RgMJ2MN7t zz8;%ffiG5Wrz?$t00HL|n4u3RM_zX8oYZY*Wt>FS6y|5`LYC(Zb!w**%i=EUVRo-6Nwv%) ztcr+i*jU$@t6YKHw_YjQ&gXY-Gs4otG*#F$%e5pvQP7&Qg48@y8+{UO{Ao)78ByX^ z<9BVHADakn&{LzhuP6~aj{^umD%DDAA=sOA6S2nJGrK4=Q#|Z*(=q@E*M`BST?H$p zN!=b2*;c0jP>^f?8T|J(AKDzjHjHr>VEGh9gSp@51RZE4s!a%de zo`@%HwS$7FF-t8nL4xS$Y?DPv)SJPfQYU1CEUQD?5oPxyvhuAQ_gmBdHfi5<&4=2* z{KgdrZqKt<8!;;wGs-l3-tfYa8I3GfemT>&E<^ zJnt6Fcy2wXC8j01H1*C-c;48q0K~WJLx^h(jl`8;k+yVkMM9;wBkDSx&G1}a5F(yY zYoMvd&5p6@f>i68o^LwMBWZlklt2355WXEY>unQ)n(ZrtHuUq!43azcSGX@WDes6U zg0eSz>D(WRw(GYb3a^nW??ri2iwJt^^RR0Tl)$y{bWWhwqs$K(E;$)jX9}~DE!0c{ z;Q+VBH}CZ}&hN1i5QT*m_N)(q9MI!51gVZCqPUuoN`bO7(s64@^J65RPl(m+(-Wf$ z%|6-HX-1{(cArl9ev|8ymT;x)2T7&dB*xb`49tTJ1qa#Q20}x#6SL7 z<{jXNAmRnA7@+ttWL_Tbzy~+ued)cte3V9oc-#Bq-%6vx)9K()ynpQ=fO9LHehv6N ze%(DSde8CPUAxc2UjiX{1I1tPjW=k-bF>16l(-5DWqxyG--L*~y3$u;>97pZc{9)ot45nOlS7cO9xKOJEZtAxv zK;H(Z82gXcm;d?gvjZ>Q?I`*Au_(0$-}&CH0gp5O`T09}^nEhPpC7%mEyIL9YEfI>Zf@&~%+ay1dcEAQpgXJdul*(8^?T6`iXw zZAQ8ST)WD-<{STz9E(fCW=MFo-mLOBhwFRf?PDkh!qzC@?Eb=^^Pa5)-I~Y#sDvgP zRw=-V#{Paf(lG_dA=OOunPn8s`yMLpMzKAg6m~2V{mdS#XEh6}^KwFC$o!blF0+)n z^jKnL|D#I)A{%dc%irBOFak{iCSW)WAIrikfGh2Rm4VrKd*l7pVU<2M-|%V=$db?a zTF_nq5w-gr`cV_!K}rg))~}o5+g0Gk*+BmPFL)EJxzrb{(~6P~ED@B=tlto#ak--Q z!k>lh$mgo<3iyfag|dsoPf@2&vrM=BiYStHPnr-`<=64i9W>k#_{^~Swr*m!^%FRk! z=f_-~O_0b_=e@Ve9kJJK9|_LXZfzMj2lO;Q9p3Nm;crcc=n?&7J{7dSHLf6mO2>@W z#k3Jt)C>?j+tzH*+#?YsTQOlyGnNqtawqc?Tu*kXB-4Eh`mnYlBxdZ+(iyU*8L?WM zmK0pnZ|)=iz`$1+?8VFf`0qpOu>bRQ$^5>IQxHs#GgvtH1@|~ZAkPMzqr<`+nDpV( z=rBvSu0B`cSpe&O?_jgufSB=4%1Sd$C6Mb#FTgfx<5P&@T}x|8W>r8N zY!kZyleQ`nW#W3e&cyOO^CfYl1~cKDtxjl@81p_G;o^9I7*9N)gNM>qzBWiIB|!d` z6Ah6+aNQlMUJKkDvH@l)xMhBl0Xg zXsruv!*|v}4W=NL+VeOWxAA(FMI{a$D^;U;uO(kTQ2G{doC(=sw!+PeV6| z3%`EJm$7^Q$ZunpgFT0Y_;A&Qd&sjl`6|JdaR3OW1C-Zs*KQgLls(3llNs-2tH_Y^ zHcjTNzc6PMz*<`I072&x0ol)PiY8g3ch+>fo=y`EUFpkBpoGTiM=Si(s=B3%?i^7! z4-6d6*I{_O?Y>{(fW{s0{wk+dlZS)O+%Fc$eD02n6(9R`Jfc z{5ag7yop`%z&X3kpb79^(E(<5upf^>vVd71+c=n1GolHGjHaoJVcd`;dy(Ume`fI?-+<3p9 zYLf`es%!MRq0y2keVv;(c2O$)xOcB9IYyKYMT&ze&f2k_jCdX4&1oti0hb(>*DPA* z*2q*;7Y+k!l&V@l$m2?le+ui|F>}Ms>btnrYbS}Uf4osA zn-z|&L&60O#@w%aOrE+iX?IXbAFfe@F{|y>p?xvj`jW@4Ha0N-D+aa@+Qb3$>?}S+ z5zs$_Cx)X|I?NP*t}K#3mGKOZXoXi&B=C0V1mNus^PB~ z+pvt1s*CkNyrCkRzOR$Cnb_xxkongMYgygS0*sglg;ra0d03Scx-ytbw+?(@u(!E_ zt%1Ix_-`S>=RySyJ-wbOVM8~JQ|lyl+Rp{#v`puddF{v3bmzOvY{HMN(Q%2{P)$(G z^zjv<(~hvO)oZi^sYW|MwCifcGeQlFiU;YP4Cc3azZDsbpncCGjnFt3Q-^M^8G~%r z(ym*v$5BB`!a88*3-`!LZiWM2v*9ijHsY77(XsH6@lqjIQ`Nm@X0p;ysiJqsl|44L zNifNc_e$ySCVl|34_Ck8V1GU3K5m_z*x}C%% zEXOHj{^D$|saOe%?W{iN_R6^SJlSgixZQf&MV72U)xQhxd1A_(sC8b%)di8_TOV&r zJpFZx-9WbOAv%2X9-cBIC~s}ISZm}3DA=^3aowTa+(wq|67a14Jks~R7}rEU#V5^Z zy~NApfTuBlD#jODRaQLepTxeKlLi46yrxzXYP;{awQug|k2r6czOs@*zphDFJd~B6PLQp>6m;udm1y%!f8pf`%@p!7Gut9 zCUgdJ56QWll~<$f4~y<6XYdVW@h9{CO(i+>?uPRDb)%j97u+<{)D9kdQPNO{6BQtY zrt5Q?(7ax!_{>&z%PT4b)P53-xun${f4^n6Bt7cs6RQy^y}sa0RrTrC)`+>M_Le}Z z)w|yBH}mngy@N1cQpKks-3wFn=5XZh2l2w;Ja|-`e(CxR4fNDfBqstD^guD*Epps$ z>~jtAqSL0Kl#n>{-Ne~Ar8&;$wY$6exx)#_E?q9i^K2*Tjl)#1zz(XH^8qc|toyD(F zAw*RO4r!Vk`5WY_w@_gdxtBR`dRQK|CLo~|Swmg*!B(!zHVreZwvD7NT`o!{ zAe=TA^Y%g*_UXIW#hZhEugct+=&Bd}nN2^B*tH{azM zz&xE$@#%7Ps4Z8|ysT<2TQ`ZMv_(feI+G()DS-upTT#Wt@E1La(L%(m#h-o8M|nw^ zkIDPl`_#%j5Zb<|t}01JGJ&zVemE^I?Rd3lqO>7uGS9~`Yu99!Ctl-A7@mjcZs}Zv z!_07|r<~elIwZChv5(>2I=PNk&iS3P3&PF70uF$i;lO=PNf2PuV{Ti}(TNdT&B;I} z(*ZsLZsxBPdt*hC5kMVex8_c9IL0!*D~=d)6zV8s`3=hl^;}a%8!jE?VcvG~b_CUn z9~HVjPwzK~7HBIh;O86{1GVz{lpuND6CAsZrtCOW51#Bv@dyB9*<>m8lSN@l%wZ*f z3{jqm8xTGewo3#!pB9tRg$H>?ArT~-P;%lV9~WsW@fJMKU=!9}J?f2FUJT*f)a3IV7 zk0HWx7nuI%7;ebV#S!B*C;$hFzC#FQNw&L5hzSdSD=M?CFk@>J5yJ(aT|}*I+YzV* zi?bLiaWU{M&b(6Z1A4Xf#l5hIFEdd9D2qn%IRDeGeR(7+GS|)LaF~A8RCw>kEsk)@ zIKTX_{{^8|IETSv|AHm*_A?wupMHjk`SdfK!k>Ny7x=fIPr%Ln_JwfdeR^Q{d3fMa z^!ZJDhc$6K0AP*6v<&}z?89v?Zm-|g_IuEw$-xPRT2YufxL(*LXYP?0{~GDj*%Z zR|-9nn_t${g9m&t=&)CwGMN)X>>ycwsl!#4Xu^IuJsr=>Qp*r2qWO`S;e=|{F?aSD z&5238R!JmAYsxFL2w`Tn2B{@oaT z7o`EBp4k#n+0d52d0lVMTWoajws6)2*%AA!QzWsFks{?(CfzgLsRI(=TIFT47KFT@3cq&MMGHS}h3DcHY zGMTQnG#Ytx5H<+WI=7uvrg8L^`Ss4W;?{kHY*Qwh9|n#^Qv^3@yOP5jeLLfsRIY+N_A=M#b{I^ z2StjN_PRu>gu;aBO5e8DXw4o1S>AJD(p`R9Yd56K>sj(C|1wNsWxaxK1_GBM8A&|n zT3>ftRClL~QPs!BhPdurKHgyEf-ezyHam98hVjQ1b5^j)QZ;(lgfqek8Pl5`)Rkzh z0VjgV^Uzr&XHIHRse^jZ@U0hL#<@C2L;AxVyj$Y0=~G8Rj_egI_v-Nu#ave-S~GWW zAX++@-j?1uV@Xrbkuf__Za=B?rM9kAu^?Mk&ON*f@?vU@FJogwB?%>o9#7UJrT-X6 z`Eq2x5yib`oL;;%e_615=FT`Wkek3e!`;wvotIPh@;_gDc`5$qi&ea&-b)SU3tXw& zlKeDr!(#s~YWpew_4ZMy$A05K8&>%vMpY%Jw1s3w5C?;+c?(ZGcTkadCPeIf>Q8VL zq^W@*RK;G9zO?NU{v7MGZbaK0w^ERnBk3YOQ{<_u>D`qai~ao>-xtp z{p>?QLi$GTYFkMPe}#fJA^>Ya`AFajhj%q#|$3C5v%;zUQ}9*9EOVCqaBBk>a<_ z^NpMGh&MmFbE~|6@5+Cw6O+&~+5D7E;`jtxD4K=y@MK_8A@G;&Rh5W|n(d}lv==-n z!Z={Pj*;o2&is1HrW+F&LtM(@QfoS93=$Zzw=4B9`MXa1Y2`mU_QX8hBYlsQ@#BMU z(+UbeP$2bjV(%xwJ)ZY?{L28|p^5*gVWbQ{v@yd)%CT@TdVaNaow=`{jLpo&^~KRR zw!F~!wtm=i*g&Iuy>P*8G|`mT>UdSL!q%BFO0c&{tSq)ahWfs)g&%r;3)w%n zq{))-QlRCZUK1BG$*Fprp>#{<;V8siwZqS%?yE$)1U_I=#GUIAZ_6Md^s5xL1j5L( zFbZT#ME!Ng&0=Jy3Wq)Yll%9f8&Dy6SGO4gtj`@^CFkjJy9X?KV)v|CP&%`yH!2ml zS;p*~&ds!axDFdT5HmBkR%qMENHO9LG?L{wLSIQdvc^e>>RsnvQd-}6GhgmysIyLcv(4O=S@$e2wsv5B@mz@-;Rjoyfm&% z!zVHqGRb*9l{7y|xqg0#2l2YFM@P!%dwZ3fp&`8_2%qqSB-8dr zU{n~{ZTBZ5Z08^W1vx(`vP|Q@2f%&q^Yf=?b+Ft3bX)7p)S$wp zDTGz2jCvI~ZxWQ=O|Iz1ZOwR%xoc7a#1b1b%tRTl8eWv!BV!iRiOlG`!`0oTf^gs` zXVcSu>hn(^uJ8MN>&)voeTr&8pND(^95O%*KkVA)mTf-cKnJDh?OhrhX(q>bR zBorvMwfgmXIr2u%i3~m`qkm5S7;S<`SGVwS&PtKu8L*bO<1%Xq5IF`&E4Zd6`e#$A@ z%(0H^qLR@Cl-Rer(b~ZJIH2^#UbWWn{aPk7>{|UaPk1DW{>{%}bE|5LcDW!GRX_Mp%=y>6J z#mu=dHM&H=W3W?Cz;QHwW3J8=VYaDk`thqHP1D01*LH^GH*1(Uz=w%y75` z$du1d5qU{bBNBpfe4?$h5~?gcTT&{0sCu^(4p%WO7{c$%9~lkcD0;*Ps^sk``WGyk zU^An#fQsGa)J{5Sx0XTBXLQYv0Y_mmWSWpw1XY+L(8~dPU9>Da8O`RAnF?&tQR2`)vM5_4cTgRpY;2nIa(<0M$g! zkg^(n$$xx&8L~1ET6-=n!}sNN?k1tP3{TPuDMipiViHyr>~KD_>)^C?h)Fl+4=u?n z^nog_=fE}z6a*W(jv$VB zXHV(uh|igLS2jA1O_!9s0roi!H=LB#B0LCi$z2Do>tpM+C%C(jx7W91j}^3QZ;Ppy zv(=8P6KD2jdA>X4vkD;DH?->wjC||lmzyL|uHP*Fa~qe5@w6%!U)s&w+0G0meTzC@2(gFh{{(xytJ%Z3j*^V*2wF00+AB3JeM>NY z^$?+bw`wuie}IgBZrrslv%Ns{Jy#K?b-e_N&%D7n!q2t5Ap^4}kkQB|198uxbdSpy zQulVkcwQ($JK6htA0Fmk zqb7}%G3pbeLlpW|HZO!IKLzs;5-QExN?MU3~9sh$RFcVROTN`84BCO`W?qC(Cwq#5bNhJ@p3E z>hFLoehf;UJcye%(_=m@1!GJETex8~bi1ID#j@~F&}lX&65$s5In&Oi#Fo2*G{zx1 zw-w$@(cetnzuy=805te_{06MM|Mflp{oNt+c?ZC{Mq&NK(tY+SZ#N4`)gzt&%RMzT zko-esW@;BcyYS13+H5($q0s!#PYXAIQc1nH5SHzQ(uF@574Yye@&7kF|U z)j9g3FZ40M;?ieaw(H0uS~)R^uBIp=k{ zn4^8UFT)yDQ$sd7$yX8@_up2}cNel7TH$das{#k+{aN_J`XbH6hCG`KP|ZD`?Gnfq zFRB${G|=3rzO)JE{W6iK($sR#G3f0|=t*>Es(czB<)sBhP$d+0R)%%(lha|rhbK_- zdTZ?4ltOI&)t9KUa}K^8Kwr|A;kpY^trzMA@*jS1_JNcA<%N%cvgz?&@e*6z3#{dr zJ)offy2lR&hWO;gc5}diz<+}rNXmc~0Vvvwe|xz_@rM*j2=x%j@M}))3j{JD7zUBq zz=q%OQJ<%#{{mxzf-d(Nh4=l}5XCJe1B?McrcnHKJ0^bfg}>UMVc>`T`dm&Ngj7Qp z%XD8h&*>6%5KSsaM{B!hmy*{~NB7(=G#TOeYQ3CTTE1N**b3>(OU0dG6Vm9W+#>l& zVCQIesA&lI`y~73hd$L1 zhG_W*R-!DoVOy;6h=ZYiSl6H82e$?em%Aj3!L77I>kNM%VyT0_^_+9LCmVutRd&Bm zD{iWyg(IvIcCsE<^PD13q;;;?a<=0MdAZbaglYoCAQuHOq7Mh88xv)0AWo_{hv|9B zjqv(9qk`RAko>zN<5UF^#Mxi7W8adLLC4AfXv&6tdQ&qU9H{$?{~VNWpX(YwQx}RU zOSli!x)YJO(5x`8^vynwFPr*`j@f`mvPGmjlt-PY1VjNh>&f*R5ffi;P$t|tUU`)j zTV)TbM|KQ{ckhf~e>zU@&HQh0h=LRFNYVf9I!38;3%|ns5!hQEm(9nAZ=L+)K-_G> zm#u$)8dfKa$ft*&@-_%L30jg|EW~DS=MkQJGop)Zx8d#GWQVRGe$EohNIm54vA=qw zOXV%xE09D0OYm7*L2i5zuL;diO9^SoV>8Z?u7C5CzBw-d@C6Nh4Tb$_`2O+FlXY?< z6ts?E`hUf#Q$c~#ojas}a?5}GkN*xRl+oQMe|dR4egibVy-hscwu-^}0v(_8s}5kJ zWDuGUl3%f9=RkV{-*pQeLJ?!;TYuq?Pu*JZ=~-B;@bDXk@a5(69pUl8;dk7g96+Ju z{nf7>-Ggzz&(C}7|IpdnoDboTG=uE`wZ$JIBJUr5?fTCT|2PmofAqW2`1up}!TI@_ z+fe=V$akg#j?=aqs7D9do8emefFit2$ZuD%Z`|`Cwf@yVzqRDI?Ui@1xtpPI6EM{9j{{kxa-+&QXzgQ z`W}&u*)fj{G4A;!C#H0VbM8Cz;JbAcTOokE^Fe+376-i-NH$iU{7MJG9k?Vs8P-$7 zqsg6k!0m59{B~KoGrgYi<|4wcJDi$mYg&y>yM}C&&h0ABi_3`ei{j_Fcf?*5;>dyuKC|jf4Rp)@tnDRNg-4|Zu@h3WLt-BN!?0FRQ?#kx;%X3TH zhenZ4I;JNMlGfPLt`sQO*za=4b5XGRG;$-GyWHGwtb7mK-`SSH#b_oLUAJ4qa@!57 z37$z`8*l3Mhby8iHs-)t#$+XVuO<4>sKN7mp76J@785F|vNj}ZVr>u;C_mr-DN-pV2rk=sFQNtRR=1)TyiRE z!ZR61Se|aWso_>qPH_@21B1(=;WQ`&^=D%{?SmCu;IymB$AHIH-%BvRvl9SmxI?+_ zcH+UtG`yUq5Tgcjans})-iBl1brj(3dtv5>cLB!u{_aN}mX9yrbT&Tzs@wj5!$9B1 z@9q)Z@CDDg!8627G(T=g`{JoA6-u;lnL^NFE7_B>Wpc5zjFpSgbm7y~p2?TYW^&GEz$NrTzf zqFAT$K^c+MHp=JK%EUDzYUfg^lv~B;EiU$Pe1yu7KyO>ctGKJ6OMFZLKENt4UfR4F z%x~_Wzq{VRlhEG0haqzP-iILp``kjD?KXrQ;j%_Ri5rDQ1W;`okit!fG*Zd(JZS)n%bgQjiYa9`+0P-z7M`UGly==^yF-f4zT$ z`}k!UrAcVr5+wL@Ayoz2D980y*Ar4$rqkqFtTSI_7n7LSB<0mSK-&M3P>UHJQ5usJ`zR)7p6465Z8n;~kjv^^8k%=U0lHSkE${{QP)U!o|AKxijA$wlxsde6|_P{wIGqLM=iMReu-5YzU9~mTT>W* zCd^e;0F~-uQopUKZ|37Ii1^LuLeuX`7;u(6c~Q;DNU&$C*3_eo-Ng%tdnWCC?>ic{ zowwNz0yR4uGz%fKY;mZ>Z_H+Mu*&UpYoMivn0eGS{8qt~`GsI)U72|;r~kB`9?R)F zn|GrCDoS9Ue`NrAB!2Ez>(|W%xl@Kd%>MAsz0)7Hm4->YkHiq2dd^lE>S}Wtg;uXNYXf|qAe0fwsw2LemCLy za5Wxqc)vjHI}U6(T!1TdQ6pr3@)=2IQ*W6+#PB|r<|b}}zO{8H8@)3{If zX0h8|mB#Ii8MCS7vw$&IDGiNS9jzO!G$m1 z|I@?Y8j;(zI~rj813$&>!txk%3Nqi%1yh%ZFy(@XQUYl!g;@qkf$7*eU=-8T%b=}y zn+wjLaUghKt@hO+$hbtEa{Xma>eV%7+@NSywGtn8mwaL`E4?{L6!nue7$Vbu7ohqu zg#W*slEI;A2i(WMaK{SSeiBj~rJuO+!p!&@G|VF|4uiQ5MP(P2T^)j}vt@x&Rm~h# z$renf*LWMVyYR?OoML@#iH*RIbqzVlb6-I{tNiHz`htr4eU}#y@dJAVV$=ic>CL@- zU4s?mI|j1#$F1Xw|Io&O0C_C{d+vfs3ogkb4iEd`N%% z-lfs45(>~t&spV85`z6@k0IG^?v?AaZj5Ig6#X_E0w^$c^9BtFML#7xR5)fMy1%+D ztE57FT;|3cLGj^o$VtU0z!##n<(M+qHKl9fjC%Edl?nml@U)JNdY!4l)aR>(kzEMXrK~d zwNtq(R+r_*0wuFekvii(mzf_`WZ(4^I-I`4)SlbY+}6L!d?V%81A`xoNd&@h9KOnD zfs#7AeY`QNT`;%yB8LR!(m@zVe$o2u!q*#ZhX5?k-9^c#=k7xjbMu%JwGQl5B5QC|a~{!MJu@b% zlrl@&tRq{SqO(SU+6kq&)H*uf7NfDV34!FNtg^h}xOH*rl+%vM+{}mT`` zZ!97AmgZ-`!dXx>2{G?Mz~#C5Oefd{<6JrI(D9b!P1`!g8X0xE4iin;g}Bf``y?Et z@lxOxjdB2uG;UkR^L)D4;2y)7N@v<41i{aq%2eNvI z^wn~OQ#+4sLqib3x`Ln%vNn`u!#Yq2tJY59 z&pL{R=%uhpa~kE<+TR0D*mAi5_hY`EFU1<=rvVWOez7=QcicAVF$^FG`~S7 zVHv-E_VIQM@R7H=r~5ZNzJ7qG117`<>bloTqqlc%aLn(n-yh?GpTBLeF?R~c$5s6{ zd9TYACiS*nZ;pAFLW6$+@Uyz7Kc2g<=W1BgMRH&r4vyHBO}1yD=?=8(yKGwoyFDn? zR|~X6V_v;-ZX;AY9tXQjULOPTEN|JJ+wR7DVB}XV2scve_+b9M3=s_HZS4R03xz+g zz=s0F>|peYZ;sdx)A8*`{_Vzx^WR?Hp1ao*-K9MK@z26}{px!{_cezxY>6R&IINTp H4%`0)l}=Ai literal 0 HcmV?d00001 diff --git a/core/Cargo.toml b/core/Cargo.toml index be783ebfa..be7fcef3a 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -29,7 +29,7 @@ serde = { version = "1.0", features = ["derive"] } chrono = { version = "0.4.22", features = ["serde"] } serde_json = "1.0" futures = "0.3" -int-enum = "0.4.0" +int-enum = "0.5.0" rmp = "^0.8.11" rmp-serde = "^1.1.1" blake3 = "1.3.1" diff --git a/core/src/object/identifier_job.rs b/core/src/object/identifier_job.rs index d7c5ff478..03e8c2a6a 100644 --- a/core/src/object/identifier_job.rs +++ b/core/src/object/identifier_job.rs @@ -3,9 +3,10 @@ use crate::{ library::LibraryContext, prisma::{file_path, location, object}, }; - use chrono::{DateTime, FixedOffset}; +use int_enum::IntEnum; use prisma_client_rust::{prisma_models::PrismaValue, raw::Raw, Direction}; +use sd_file_ext::{extensions::Extension, kind::ObjectKind}; use serde::{Deserialize, Serialize}; use std::{ collections::{HashMap, HashSet}, @@ -131,8 +132,8 @@ impl StatefulJob for FileIdentifierJob { ) -> Result<(), JobError> { let db = ctx.library_ctx().db; - // link file_path ids to a CreateFile struct containing unique file data - let mut chunk: HashMap = HashMap::new(); + // link file_path ids to a CreateObject struct containing unique file data + let mut chunk: HashMap = HashMap::new(); let mut cas_lookup: HashMap = HashMap::new(); let data = state @@ -222,6 +223,7 @@ impl StatefulJob for FileIdentifierJob { PrismaValue::String(object.cas_id.clone()), PrismaValue::Int(object.size_in_bytes), PrismaValue::DateTime(object.date_created), + PrismaValue::Int(object.kind.int_value() as i64), ]); } @@ -230,9 +232,9 @@ impl StatefulJob for FileIdentifierJob { let created_files: Vec = db ._query_raw(Raw::new( &format!( - "INSERT INTO object (cas_id, size_in_bytes, date_created) VALUES {} + "INSERT INTO object (cas_id, size_in_bytes, date_created, kind) VALUES {} ON CONFLICT (cas_id) DO NOTHING RETURNING id, cas_id", - vec!["({}, {}, {})"; new_objects.len()].join(",") + vec!["({}, {}, {}, {})"; new_objects.len()].join(",") ), values, )) @@ -360,10 +362,11 @@ async fn get_orphan_file_paths( } #[derive(Deserialize, Serialize, Debug)] -struct CreateFile { +struct CreateObject { pub cas_id: String, pub size_in_bytes: i64, pub date_created: DateTime, + pub kind: ObjectKind, } #[derive(Deserialize, Serialize, Debug)] @@ -375,7 +378,7 @@ struct FileCreated { async fn assemble_object_metadata( location_path: impl AsRef, file_path: &file_path::Data, -) -> Result { +) -> Result { let path = location_path .as_ref() .join(file_path.materialized_path.as_str()); @@ -384,7 +387,19 @@ async fn assemble_object_metadata( let metadata = fs::metadata(&path).await?; - // let date_created: DateTime = metadata.created().unwrap().into(); + // derive Object kind + let object_kind: ObjectKind = match path.extension() { + Some(ext) => match ext.to_str() { + Some(ext) => { + let mut file = std::fs::File::open(&path).unwrap(); + let resolved_ext = Extension::resolve_conflicting(ext, &mut file, true); + + resolved_ext.map(Into::into).unwrap_or(ObjectKind::Unknown) + } + None => ObjectKind::Unknown, + }, + None => ObjectKind::Unknown, + }; let size = metadata.len(); @@ -398,9 +413,10 @@ async fn assemble_object_metadata( } }; - Ok(CreateFile { + Ok(CreateObject { cas_id, size_in_bytes: size as i64, date_created: file_path.date_created, + kind: object_kind, }) } diff --git a/crates/file-ext/src/kind.rs b/crates/file-ext/src/kind.rs index 4e330fdbf..01cb542b6 100644 --- a/crates/file-ext/src/kind.rs +++ b/crates/file-ext/src/kind.rs @@ -3,8 +3,8 @@ use int_enum::IntEnum; use serde::{Deserialize, Serialize}; -#[derive(Debug, Serialize, Deserialize, Clone, Copy, IntEnum)] -#[repr(u8)] +#[repr(i32)] +#[derive(Debug, Clone, Copy, Serialize, Deserialize, Eq, PartialEq, IntEnum)] pub enum ObjectKind { // A file that can not be identified by the indexer Unknown = 0, diff --git a/crates/sync/docs/HLC.md b/crates/sync/docs/HLC.md new file mode 100644 index 000000000..f4a947511 --- /dev/null +++ b/crates/sync/docs/HLC.md @@ -0,0 +1,73 @@ +```rust +pub fn update_with_timestamp(&self, timestamp: &Timestamp) -> Result<(), String> { + let mut now = (self.clock)(); + now.0 &= LMASK; + let msg_time = timestamp.get_time(); + if *msg_time > now && *msg_time - now > self.delta { + let err_msg = format!( + "incoming timestamp from {} exceeding delta {}ms is rejected: {} vs. now: {}", + timestamp.get_id(), + self.delta.to_duration().as_millis(), + msg_time, + now + ); + warn!("{}", err_msg); + Err(err_msg) + } else { + let mut last_time = lock!(self.last_time); + let max_time = cmp::max(cmp::max(now, *msg_time), *last_time); + if max_time == now { + *last_time = now; + } else if max_time == *msg_time { + *last_time = *msg_time + 1; + } else { + *last_time += 1; + } + Ok(()) + } +} +``` + +```javascript +Timestamp.recv = function (msg) { + if (!clock) { + return null; + } + + var now = Date.now(); + + var msg_time = msg.millis(); + var msg_time = msg.counter(); + + if (msg_time - now > config.maxDrift) { + throw new Timestamp.ClockDriftError(); + } + + var last_time = clock.timestamp.millis(); + var last_time = clock.timestamp.counter(); + + var max_time = Math.max(Math.max(last_time, now), msg_time); + + var last_time = + max_time === last_time && lNew === msg_time + ? Math.max(last_time, msg_time) + 1 + : max_time === last_time + ? last_time + 1 + : max_time === msg_time + ? msg_time + 1 + : 0; + + // 3. + if (max_time - phys > config.maxDrift) { + throw new Timestamp.ClockDriftError(); + } + if (last_time > MAX_COUNTER) { + throw new Timestamp.OverflowError(); + } + + clock.timestamp.setMillis(max_time); + clock.timestamp.setCounter(last_time); + + return new Timestamp(clock.timestamp.millis(), clock.timestamp.counter(), clock.timestamp.node()); +}; +``` diff --git a/docs/developers/architecture/sync.md b/docs/developers/architecture/sync.md index 38fb25500..50e05ee41 100644 --- a/docs/developers/architecture/sync.md +++ b/docs/developers/architecture/sync.md @@ -4,85 +4,15 @@ index: 12 # Sync -Spacedrive synchronizes data using a combination of master-slave replication and last-write-wins CRDTs, -with the synchronization method encoded into the Prisma schema using [record type attributes](#record-types). +Spacedrive synchronizes library data in realtime across the distributed network of Nodes. -In the cases where LWW CRDTs are used, -conflicts are resolved using a [Hybrid Logical Clock](https://github.com/atolab/uhlc-rs) -to determine the ordering of events. +Using a Unique Hybrid Logical Clock for distributed time synchronization. -We would be remiss to not credit credit [Actual Budget](https://actualbudget.com/) -with many of the CRDT concepts used in Spacedrive's sync system. +A combination of several property level CRDT types: -## Record Types +- **Local data** - migrations, statistics, sync events +- **Owned data** - locations, paths, volumes +- **Shared data** - objects, tags, spaces, jobs +- **Relationship data** - many to many tables -All data in a library conforms to one of the following types. -Each type uses a different strategy for syncing. - -### Local Records - -Local records exist entirely outside of the sync system. -They don't have Sync IDs and never leave the node they were created on. - -Used for Nodes, Statistics, and Sync Events. - -`@local` - -### Owned Records - -Owned records are only ever modified by the node they are created by, -so they can be synced in a master-slave fashion. -The creator of an owned record dictates the state of the record to other nodes, -who will simply accept new changes without considering conflicts. - -File paths are owned records since they only exist on one node, -and that node can inform all other nodes about the correct state of the paths. - -Used for Locations, Paths, and Volumes. - -`@owned(owner: String, id?: String)` -- `owner` - Field that identifies the owner of this model. - If a scalar, will directly use that value in sync operations. - If a relation, the Sync ID of the related model will be resolved for sync operations. -- `id` - Scalar field to override the default Sync ID. - -### Shared Records - -Shared records encompass most data synced in the CRDT fashion. -Updates are applied per-field using a last-write-wins strategy. - -Used for Objects, Tags, Spaces, and Jobs. - -`@shared(create: SharedCreateType, id?: String)` -- `id` - Scalar field to override the default Sync ID. -- `create` - How the model should be created. - - `Unique` (default): Model can be created with many required arguemnts, - but ID provided _must_ be unique across all nodes. - Useful for Tags since their IDs are non-deterministic. - - `Atomic`: Require the model to have no required arguments apart from ID and apply all create arguments as atomic updates. - Necessary for models with the same ID that can be created on multiple nodes. - Useful for Objects since their ID is dependent on their content, - and could be the same across nodes. - -### Relation Records - -Similar to shared records, but represent a many-to-many relation between two records. -Sync ID is the combination of `item` and `group` Sync IDs. - -Used for TagOnFile and FileInSpace. - -`@relation(item: String, group: String)` -- `item` - Field that identifies the item that the relation is connecting. - Similar to the `owner` argument of `@owned`. -- `group` - Field that identifies the group that the item should be connected to. - Similar to the `owner` argument of `@owned`. - - -## Other Prisma Attributes - -`@node` - -Indicates that a relation field should be set to the current node. -This could be done manually, -but `@node` allows `node_id` fields to be resolved from the `node_id` field of a `CRDTOperation`, -saving on bandwidth +Built in Rust on top of Prisma, it uses the schema file to determine these sync rules. diff --git a/packages/client/src/stores/explorerStore.ts b/packages/client/src/stores/explorerStore.ts index c37a1a5a8..13b0ef404 100644 --- a/packages/client/src/stores/explorerStore.ts +++ b/packages/client/src/stores/explorerStore.ts @@ -16,6 +16,7 @@ const state = { gridItemSize: 100, listItemSize: 40, selectedRowIndex: 1, + tagAssignMode: false, showInspector: true, multiSelectIndexes: [] as number[], contextMenuObjectId: null as number | null, diff --git a/packages/interface/package.json b/packages/interface/package.json index 1500c3741..7557c9cac 100644 --- a/packages/interface/package.json +++ b/packages/interface/package.json @@ -46,6 +46,7 @@ "react-router": "6.4.2", "react-router-dom": "6.4.2", "rooks": "^5.14.0", + "tailwind-styled-components": "2.1.7", "tailwindcss": "^3.1.8", "use-count-up": "^3.0.1", "use-debounce": "^8.0.4", diff --git a/packages/interface/src/AppLayout.tsx b/packages/interface/src/AppLayout.tsx index 6e21274c7..b8a571070 100644 --- a/packages/interface/src/AppLayout.tsx +++ b/packages/interface/src/AppLayout.tsx @@ -21,7 +21,7 @@ export function AppLayout() { className={clsx( // App level styles 'flex flex-row overflow-hidden text-ink select-none cursor-default', - os === 'macOS' && 'rounded-xl', + os === 'macOS' && 'rounded-xl has-blur-effects', os !== 'browser' && os !== 'windows' && 'border border-app-divider' )} onContextMenu={(e) => { diff --git a/packages/interface/src/components/explorer/Explorer.tsx b/packages/interface/src/components/explorer/Explorer.tsx index fc4d29f70..bf8a811b5 100644 --- a/packages/interface/src/components/explorer/Explorer.tsx +++ b/packages/interface/src/components/explorer/Explorer.tsx @@ -1,4 +1,5 @@ import { ExplorerData, rspc, useCurrentLibrary, useExplorerStore } from '@sd/client'; +import { useEffect, useState } from 'react'; import { Inspector } from '../explorer/Inspector'; import ExplorerContextMenu from './ExplorerContextMenu'; @@ -13,6 +14,18 @@ export default function Explorer(props: Props) { const expStore = useExplorerStore(); const { library } = useCurrentLibrary(); + const [scrollSegments, setScrollSegments] = useState<{ [key: string]: number }>({}); + const [separateTopBar, setSeparateTopBar] = useState(false); + + useEffect(() => { + setSeparateTopBar((oldValue) => { + const newValue = Object.values(scrollSegments).some((val) => val >= 5); + + if (newValue !== oldValue) return newValue; + return oldValue; + }); + }, [scrollSegments]); + rspc.useSubscription(['jobs.newThumbnail', { library_id: library!.uuid, arg: null }], { onData: (cas_id) => { expStore.addNewThumbnail(cas_id); @@ -23,15 +36,36 @@ export default function Explorer(props: Props) {
- + -
+
{props.data && ( - + { + setScrollSegments((old) => { + return { + ...old, + mainList: y + }; + }); + }} + /> )} {expStore.showInspector && (
{ + const y = (e.target as HTMLElement).scrollTop; + + setScrollSegments((old) => { + return { + ...old, + inspector: y + }; + }); + }} key={props.data?.items[expStore.selectedRowIndex]?.id} data={props.data?.items[expStore.selectedRowIndex]} /> diff --git a/packages/interface/src/components/explorer/ExplorerContextMenu.tsx b/packages/interface/src/components/explorer/ExplorerContextMenu.tsx index 5d5c8f260..dbb3432fd 100644 --- a/packages/interface/src/components/explorer/ExplorerContextMenu.tsx +++ b/packages/interface/src/components/explorer/ExplorerContextMenu.tsx @@ -1,14 +1,7 @@ -import { - getExplorerStore, - useExplorerStore, - useLibraryMutation, - useLibraryQuery -} from '@sd/client'; +import { getExplorerStore, useLibraryMutation, useLibraryQuery } from '@sd/client'; import { ContextMenu as CM } from '@sd/ui'; import { ArrowBendUpRight, - FilePlus, - FileX, LockSimple, Package, Plus, @@ -18,7 +11,6 @@ import { TrashSimple } from 'phosphor-react'; import { PropsWithChildren } from 'react'; -import { useSnapshot } from 'valtio'; const AssignTagMenuItems = (props: { objectId: number }) => { const tags = useLibraryQuery(['tags.list'], { suspense: true }); @@ -28,12 +20,13 @@ const AssignTagMenuItems = (props: { objectId: number }) => { return ( <> - {tags.data?.map((tag) => { + {tags.data?.map((tag, index) => { const active = !!tagsForObject.data?.find((t) => t.id === tag.id); return ( { e.preventDefault(); if (props.objectId === null) return; @@ -66,18 +59,18 @@ export default function ExplorerContextMenu(props: PropsWithChildren) { return (
- + - - + + - + @@ -103,8 +96,8 @@ export default function ExplorerContextMenu(props: PropsWithChildren) { )} - - + + @@ -114,7 +107,7 @@ export default function ExplorerContextMenu(props: PropsWithChildren) { - +
); diff --git a/packages/interface/src/components/explorer/ExplorerTopBar.tsx b/packages/interface/src/components/explorer/ExplorerTopBar.tsx index 6abbced7a..bb9d51160 100644 --- a/packages/interface/src/components/explorer/ExplorerTopBar.tsx +++ b/packages/interface/src/components/explorer/ExplorerTopBar.tsx @@ -1,4 +1,5 @@ import { ChevronLeftIcon, ChevronRightIcon, TagIcon } from '@heroicons/react/24/outline'; +import { KeyIcon as KeyIconSolid, TagIcon as TagIconSolid } from '@heroicons/react/24/solid'; import { OperatingSystem, getExplorerStore, @@ -55,7 +56,7 @@ const TopBarButton = forwardRef( 'rounded-r-none rounded-l-none': group && !left && !right, 'rounded-r-none': group && left, 'rounded-l-none': group && right, - 'dark:bg-gray-500': active + 'dark:bg-gray-550': active }, className )} @@ -94,7 +95,7 @@ const SearchBar = forwardRef((props, forwardedRe else if (forwardedRef) forwardedRef.current = el; }} placeholder="Search" - className="peer w-32 h-[30px] focus:w-52 text-sm p-3 rounded-lg outline-none focus:ring-2 placeholder-gray-400 dark:placeholder-gray-450 bg-[#F6F2F6] border border-gray-50 shadow-md dark:bg-gray-600 dark:border-gray-550 focus:ring-gray-100 dark:focus:ring-gray-550 dark:focus:bg-gray-800 transition-all" + className="peer w-32 h-[30px] focus:w-52 text-sm p-3 rounded-lg outline-none focus:ring-2 placeholder-gray-400 dark:placeholder-gray-450 bg-[#F6F2F6] border border-gray-50 shadow dark:shadow-gray-900/30 dark:bg-gray-600/70 dark:border-gray-550 focus:ring-gray-100 dark:focus:ring-gray-550 dark:focus:bg-gray-800 transition-all" {...searchField} /> @@ -117,7 +118,9 @@ const SearchBar = forwardRef((props, forwardedRe ); }); -export type TopBarProps = DefaultProps; +export type TopBarProps = DefaultProps & { + showSeparator?: boolean; +}; export const TopBar: React.FC = (props) => { const platform = useOperatingSystem(false); @@ -211,9 +214,16 @@ export const TopBar: React.FC = (props) => { <>
-
+
navigate(-1)} /> @@ -275,7 +285,11 @@ export const TopBar: React.FC = (props) => {
- + (getExplorerStore().tagAssignMode = !store.tagAssignMode)} + active={store.tagAssignMode} + icon={store.tagAssignMode ? TagIconSolid : TagIcon} + /> diff --git a/packages/interface/src/components/explorer/FileItem.tsx b/packages/interface/src/components/explorer/FileItem.tsx index a9822ab81..b6372c02a 100644 --- a/packages/interface/src/components/explorer/FileItem.tsx +++ b/packages/interface/src/components/explorer/FileItem.tsx @@ -40,7 +40,7 @@ function FileItem({ data, selected, index, ...rest }: Props) { className={clsx( 'border-2 border-transparent rounded-lg text-center mb-1 active:translate-y-[1px]', { - 'bg-gray-50 dark:bg-gray-750': selected + 'bg-gray-50 dark:bg-gray-750/50': selected } )} > @@ -51,7 +51,7 @@ function FileItem({ data, selected, index, ...rest }: Props) { > { context?: ExplorerContext; data?: ExplorerItem; } export const Inspector = (props: Props) => { + const { context, data, ...elementProps } = props; + const { data: types } = useQuery( ['_file-types'], () => import('../../constants/file-types.json') @@ -49,7 +52,10 @@ export const Inspector = (props: Props) => { const isVid = isVideo(props.data?.extension || ''); return ( -
+
{!!props.data && ( <>
diff --git a/packages/interface/src/components/explorer/VirtualizedList.tsx b/packages/interface/src/components/explorer/VirtualizedList.tsx index a424fa871..8407ec291 100644 --- a/packages/interface/src/components/explorer/VirtualizedList.tsx +++ b/packages/interface/src/components/explorer/VirtualizedList.tsx @@ -1,7 +1,7 @@ import { ExplorerLayoutMode, getExplorerStore, useExplorerStore } from '@sd/client'; import { ExplorerContext, ExplorerItem } from '@sd/client'; import { useVirtualizer } from '@tanstack/react-virtual'; -import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'; +import { UIEventHandler, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; import { useKey, useOnWindowResize } from 'rooks'; @@ -15,9 +15,10 @@ const GRID_TEXT_AREA_HEIGHT = 25; interface Props { context: ExplorerContext; data: ExplorerItem[]; + onScroll?: (posY: number) => void; } -export const VirtualizedList: React.FC = ({ data, context }) => { +export const VirtualizedList: React.FC = ({ data, context, onScroll }) => { const scrollRef = useRef(null); const innerRef = useRef(null); @@ -45,6 +46,19 @@ export const VirtualizedList: React.FC = ({ data, context }) => { ? explorerStore.gridItemSize + GRID_TEXT_AREA_HEIGHT : explorerStore.listItemSize; + useEffect(() => { + const el = scrollRef.current; + if (!el) return; + + const onElementScroll = (event: Event) => { + onScroll?.((event.target as HTMLElement).scrollTop); + }; + + el.addEventListener('scroll', onElementScroll); + + return () => el.removeEventListener('scroll', onElementScroll); + }, [scrollRef, onScroll]); + const rowVirtualizer = useVirtualizer({ count: amountOfRows, getScrollElement: () => scrollRef.current, @@ -109,7 +123,7 @@ export const VirtualizedList: React.FC = ({ data, context }) => { ref={innerRef} style={{ height: `${rowVirtualizer.getTotalSize()}px`, - marginTop: `${TOP_BAR_HEIGHT}px` + marginTop: `${TOP_BAR_HEIGHT + 10}px` }} className="relative w-full" > diff --git a/packages/interface/src/components/jobs/JobManager.tsx b/packages/interface/src/components/jobs/JobManager.tsx index 7ca2977b8..b240409bf 100644 --- a/packages/interface/src/components/jobs/JobManager.tsx +++ b/packages/interface/src/components/jobs/JobManager.tsx @@ -1,7 +1,14 @@ -import { EyeIcon, FolderIcon, PhotoIcon, XMarkIcon } from '@heroicons/react/24/outline'; +import { + EyeIcon, + FingerPrintIcon, + FolderIcon, + PhotoIcon, + XMarkIcon +} from '@heroicons/react/24/solid'; +import { QuestionMarkCircleIcon } from '@heroicons/react/24/solid'; import { useLibraryQuery } from '@sd/client'; import { JobReport } from '@sd/client'; -import { Button } from '@sd/ui'; +import { Button, CategoryHeading } from '@sd/ui'; import clsx from 'clsx'; import dayjs from 'dayjs'; import { ArrowsClockwise } from 'phosphor-react'; @@ -13,20 +20,26 @@ interface JobNiceData { icon: React.FC>; } -const NiceData: Record = { +const getNiceData = (job: JobReport): Record => ({ indexer: { - name: 'Indexed location', + name: `Indexed ${numberWithCommas(job.metadata?.data?.total_paths || 0)} paths at "${ + job.metadata?.data?.location_path || '?' + }"`, icon: FolderIcon }, thumbnailer: { - name: 'Generated thumbnails', + name: `Generated ${numberWithCommas(job.task_count)} thumbnails`, icon: PhotoIcon }, file_identifier: { - name: 'Identified unique files', + name: `Extracted metadata for ${numberWithCommas(job.task_count)} files`, icon: EyeIcon + }, + object_validator: { + name: `Generated ${numberWithCommas(job.task_count)} full object hashes`, + icon: FingerPrintIcon } -}; +}); const StatusColors: Record = { Running: 'text-blue-500', @@ -44,55 +57,66 @@ function elapsed(seconds: number) { export function JobsManager() { const jobs = useLibraryQuery(['jobs.getHistory']); return ( -
+
{/*
*/} +
+ Recent Jobs +
-
-
-

Recent Jobs

-
-
- {jobs.data?.map((job) => { - const color = StatusColors[job.status]; - const niceData = NiceData[job.name]; +
+
+ {jobs.data?.map((job) => { + // const color = StatusColors[job.status]; + const niceData = getNiceData(job)[job.name] || { + name: job.name, + icon: QuestionMarkCircleIcon + }; - return ( -
- - - -
- {niceData.name} -
- - {job.status === 'Failed' ? 'Failed after' : 'Took'}{' '} - {job.seconds_elapsed - ? dayjs.duration({ seconds: job.seconds_elapsed }).humanize() - : 'less than a second'} + return ( +
+ + + +
+ + {niceData.name} - - {dayjs(job.date_created).toNow(true)} ago +
+ + {job.status === 'Failed' ? 'Failed after' : 'Took'}{' '} + {job.seconds_elapsed + ? dayjs.duration({ seconds: job.seconds_elapsed }).humanize() + : 'less than a second'} + + + {dayjs(job.date_created).toNow(true)} ago +
+ {job.data}
- {job.data} -
-
- {job.status === 'Failed' && ( - + )} + - )} - +
-
- ); - })} + ); + })} +
); } + +function numberWithCommas(x: number) { + return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); +} diff --git a/packages/interface/src/screens/Debug.tsx b/packages/interface/src/screens/Debug.tsx index cb1c33dea..b43e4ce97 100644 --- a/packages/interface/src/screens/Debug.tsx +++ b/packages/interface/src/screens/Debug.tsx @@ -16,7 +16,7 @@ export default function DebugScreen() { // }); const { mutate: identifyFiles } = useLibraryMutation('jobs.identifyUniqueFiles'); return ( -
+

Developer Debugger

diff --git a/packages/interface/src/screens/Overview.tsx b/packages/interface/src/screens/Overview.tsx index 00c3416be..48ddb216b 100644 --- a/packages/interface/src/screens/Overview.tsx +++ b/packages/interface/src/screens/Overview.tsx @@ -139,7 +139,7 @@ export default function OverviewScreen() { console.log(overviewStats); return ( -
+
{/* PAGE */} diff --git a/packages/interface/src/screens/Photos.tsx b/packages/interface/src/screens/Photos.tsx index 264677b64..164e682f1 100644 --- a/packages/interface/src/screens/Photos.tsx +++ b/packages/interface/src/screens/Photos.tsx @@ -1,6 +1,6 @@ export default function PhotosScreen() { return ( -
+

Note: This is a pre-alpha build of Spacedrive, many features are yet to be diff --git a/packages/interface/src/screens/settings/Settings.tsx b/packages/interface/src/screens/settings/Settings.tsx index e860b208c..85d79c299 100644 --- a/packages/interface/src/screens/settings/Settings.tsx +++ b/packages/interface/src/screens/settings/Settings.tsx @@ -5,7 +5,7 @@ import { SettingsSidebar } from '../../components/settings/SettingsSidebar'; export default function SettingsScreen() { return ( -

+
diff --git a/packages/interface/src/screens/settings/client/GeneralSettings.tsx b/packages/interface/src/screens/settings/client/GeneralSettings.tsx index 3f6ccee06..10eb8df31 100644 --- a/packages/interface/src/screens/settings/client/GeneralSettings.tsx +++ b/packages/interface/src/screens/settings/client/GeneralSettings.tsx @@ -1,12 +1,16 @@ import { useBridgeQuery, usePlatform } from '@sd/client'; import { Input } from '@sd/ui'; import { Database } from 'phosphor-react'; +import tw from 'tailwind-styled-components'; import Card from '../../../components/layout/Card'; import { Toggle } from '../../../components/primitive'; import { SettingsContainer } from '../../../components/settings/SettingsContainer'; import { SettingsHeader } from '../../../components/settings/SettingsHeader'; +const NodePill = tw.div`px-1.5 py-[2px] rounded text-xs font-medium bg-gray-500`; +const NodeSettingLabel = tw.div`mb-1 text-xs font-medium text-gray-700 dark:text-gray-100`; + export default function GeneralSettings() { const { data: node } = useBridgeQuery(['getNode']); @@ -20,55 +24,43 @@ export default function GeneralSettings() { />
-
+
Connected Node -
-
- 0 Peers - - Running - +
+ 0 Peers + Running

-
+
- - Node Name - + Node Name
-
- - Node Port - +
+ Node Port
-
- - Node ID - - -
Run daemon when app closed
- { if (node && platform?.openLink) { platform.openLink(node.data_path); } }} - className="text-xs font-medium text-gray-700 dark:text-gray-400" + className="text-xs font-medium leading-relaxed text-gray-700 dark:text-gray-400" > - - Data Folder + + Data Folder + {node?.data_path} - +
diff --git a/packages/interface/src/style.scss b/packages/interface/src/style.scss index 6b5527033..2bde52fa2 100644 --- a/packages/interface/src/style.scss +++ b/packages/interface/src/style.scss @@ -7,6 +7,16 @@ body { font-family: 'InterVariable', sans-serif; } +.app-bg { + @apply bg-app; +} + +.has-blur-effects { + .app-bg { + @apply bg-app/90; + } +} + .no-scrollbar { -ms-overflow-style: none; /* for Internet Explorer, Edge */ scrollbar-width: none; /* for Firefox */ diff --git a/packages/ui/package.json b/packages/ui/package.json index cd0337b09..500d4da22 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -38,8 +38,6 @@ "tailwindcss-radix": "^2.6.0" }, "devDependencies": { - "tailwindcss": "^3.1.8", - "storybook": "^6.5.12", "@babel/core": "^7.19.3", "@sd/config": "workspace:*", "@storybook/addon-actions": "^6.5.12", @@ -62,8 +60,11 @@ "postcss-loader": "^7.0.1", "sass": "^1.55.0", "sass-loader": "^13.0.2", + "storybook": "^6.5.12", "storybook-tailwind-dark-mode": "^1.0.15", "style-loader": "^3.3.1", + "tailwind-styled-components": "2.1.7", + "tailwindcss": "^3.1.8", "typescript": "^4.8.4" } } diff --git a/packages/ui/src/ContextMenu.tsx b/packages/ui/src/ContextMenu.tsx index 044ac7784..f8ad1e601 100644 --- a/packages/ui/src/ContextMenu.tsx +++ b/packages/ui/src/ContextMenu.tsx @@ -10,12 +10,12 @@ interface Props extends RadixCM.MenuContentProps { const MENU_CLASSES = ` flex flex-col - min-w-[11rem] p-2 space-y-1 + min-w-[8rem] p-1 text-left text-sm dark:text-gray-100 text-gray-800 - bg-gray-50 border-gray-200 dark:bg-gray-750 dark:bg-opacity-70 backdrop-blur + bg-gray-50 border-gray-200 dark:bg-gray-650 dark:bg-opacity-80 backdrop-blur border border-transparent dark:border-gray-550 shadow-md shadow-gray-300 dark:shadow-gray-750 - select-none cursor-default rounded-lg + select-none cursor-default rounded-md `; export const ContextMenu = ({ @@ -37,7 +37,7 @@ export const ContextMenu = ({ }; export const Separator = () => ( - + ); export const SubMenu = ({ @@ -48,7 +48,7 @@ export const SubMenu = ({ }: RadixCM.MenuSubContentProps & ItemProps) => { return ( - + @@ -88,6 +88,7 @@ interface ItemProps extends VariantProps { icon?: Icon; rightArrow?: boolean; label?: string; + keybind?: string; } export const Item = ({ @@ -95,11 +96,17 @@ export const Item = ({ label, rightArrow, children, + keybind, variant, ...props }: ItemProps & RadixCM.MenuItemProps) => ( - - {children ? children : } + +
+ {children ? children : } +
); @@ -109,13 +116,18 @@ const DivItem = ({ variant, ...props }: ItemProps) => (
); -const ItemInternals = ({ icon, label, rightArrow }: ItemProps) => { +const ItemInternals = ({ icon, label, rightArrow, keybind }: ItemProps) => { const ItemIcon = icon; return ( <> {ItemIcon && } {label &&

{label}

} + {keybind && ( + + {keybind} + + )} {rightArrow && ( <>
diff --git a/packages/ui/src/OverlayPanel.tsx b/packages/ui/src/OverlayPanel.tsx index 77a12d189..e8bbfc23f 100644 --- a/packages/ui/src/OverlayPanel.tsx +++ b/packages/ui/src/OverlayPanel.tsx @@ -17,7 +17,7 @@ const MENU_CLASSES = ` border border-gray-300 dark:border-gray-500 shadow-2xl shadow-gray-300 dark:shadow-gray-950 select-none cursor-default rounded-lg - !bg-opacity-80 backdrop-blur + !bg-opacity-90 backdrop-blur `; export const OverlayPanel = ({ diff --git a/packages/ui/style/style.scss b/packages/ui/style/style.scss index bfd8e9732..e824cde28 100644 --- a/packages/ui/style/style.scss +++ b/packages/ui/style/style.scss @@ -14,6 +14,11 @@ -webkit-backdrop-filter: blur(18px); } +.top-bar-blur { + @apply border-app-divider; + backdrop-filter: saturate(120%) blur(18px); +} + .inset-center { position: absolute; top: 50%; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 474497b73dc0115ad029951ea9232aee7b5b0a09..b03575afbc91c8772fb70c1113b27607e0f2560f 100644 GIT binary patch delta 42142 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̙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 delta 3222 zcmaJ@Yjjgp7GC##?!8Hyl0sj!6p$h@HK?j50~OwwEkttY)8vQ{&Y@A{ajr=qjM(HQ$A^E7D@}H{=mP`YzOJs2 zw@c&kX+rG_{5`F{reJsYm^?o0A5%|i=7opN4~4Tb<>9f)qv4N)k!oQZ0tn)8vs)XO3b1!W|CaJnExAgRfb zIU*(CivG@?b3C0pjN1If5+ z)F8fUB4p5GAr5um$A<|KnC(Pj5}|>#Pl#nBY@}}@-v22v0V@eI@g1JL{ykpx2F2r{ z6p96j#BK||_ayfq_|#PVNJ>%`Qz`J`3`(9!7~!oJDrrPXd_pMUTn{y2Y!p0cF?EZ( z55^LBB6cpO+VEpDsT6#AF_j3{R#0Ms1Q^bsGVyoM(@8LM6SXND&Yqy2$N=(Z>c=>I zV2v0rQKmVpkkPNfJvsd>F{)e}Pb1hKOB1w2WQUUWllZzwGk@4%8Al)gU!5U=-Yem6 zCD2b(pc_xe|6v2TCemA&(H&Au;-=EG@Q#P*3`e=g?hDq1v;&2t=fW{V(BSZkxQ$>kLC+-PeXr3 z{Wk+}*+3_ee^@8x(;ss80}K~u(=kLeKbM~5a$u5~p3#ZpyG13;f0O=+g2WwkCj}GV zq1UjW-%GFK@pUtrGL4x}!Pv>n6cWCi!ffMUQVwGuhg-j3m3Y9y zoX5qdI3+X`F^>>9zl2$azpIdn^k4~7EW_*Tm{|PuONa&a9Of`VX>)Y&yMy_fgmH73 zB?M$X#^gw+m3-nyTA4jj@8jE;eH11=%*$}Qi%F;8ijR?zusXn87zf$Q83hfBRm?$z zC#_-P;oS4gs|0oplS)|p0&^-JjKj<#2IjrX#3YYW#opr#3;o9!nt;9&%;1!$mmhC4 zgFFl)b|(i@)lX$*-`x2w49r z+noZ}KVqLCVevs$9|w^$Y$*jxzhQ?6xbrP*mqmTpZnE!_Al_y-jDzYJ?ppy)CvjSK zGz>B6T)G0s<#M~C{Ey^vhoDi%U8G@X2Demzredyzg=`!5Isx;XoRNc}d7Pid8(O%x zU|JiuI|H6s$-PP74SQIGXYJ)<@KBhe!SM{Ykc9JVI8MOB8@Rn7yv&tRpxDfoioyKa3>cOqA4rb$Bk7+5%njyT?lran#je%4aSsCdn_k@^KoF9XV;E0H9S80YT(l5f<)D5k`aLeH zXnX-pGl1ndn!`Zem#AU1=yCWoIz5th+;aw<9Th6hqLZUn2X(u9+`gtj0H<9;S&p)N zXLYl)w6G*-bY>YmxsC1;Uv*Gj;_+6PTfKfyTZJuXDmL3{b4zW-<$a!3qb4xWSEg?c zxe9GQXSD>Ws?yigWQDxlp-{hlptZB!jZI4#BUYS47YQxiH&Gl9@~_YV5`q`dbRG)7 zNBbDq`Y$9$FzYV*S&nNF|2BLe@J}h>yEML9fO(nx3JQ+q@Y5(9(DD&{RmblGPafYP zUCbH$YXlf)@q;9UO?)2-mJ&W6!G|?`h`<+W`3uo7o~h+UI5LNq-@hGS&*xnPB)Ry? zXq>^_&i7ET*29|#T;Szpu&|py!eT1Oe;c)MEy%wYmA3Zr+aP;@uc7fPf8jUdRcCk_ zcdlk*vGs9&KYX^352ixJMt%hWFTBJz$-y$rf6l^A;7^k9;BJ123@&`adnZVv@p=iV zo6|nvbmn@jt^Q#CfIYXwYtJg{*L9e(%FR_)ZEb0rUuSU^Iw~5}1FpQfzFcc%pg32Z z?=9^$w>rD>10Alx>f!-IUPY-tsMA?GT5an3229kWRJe7OC#BYKjejr`uiC;3@cuZV zRfdxv5PpglO#BoQA)74e9pr@)rt1^asRrY|Z z%#-hI?yMYauxlKl1^spQ&dyMKOP;1o)nT=iH+E~Y>Z^1{eCca45$-047ij!qx_E1} z<>HCrd=k&T$nyBj2gDe-H(4AYadkF79q?397Z;sr!+9c&zc7klK-&!QX#%TfiO29S zYF-KS!=j#mGX>%imh5f96AM`td{rU_NqljomwbN=x;{v1ITct4@+U<44 z%?%wvqgmUpG8Y;e4WZut1#X+Fb+D+@-(T9KF*S60OjUi2dS|b<-yQO3Y6?w0qhAwp znW`69vdTJIs;i1TfszU}zM)`KVJ#&a`!IgnEIWm@7TM*|NsLz%%Vc