From f8fd962392d8d0c90a798352f040a4e09a109301 Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Fri, 17 Jul 2026 23:04:00 +0100 Subject: [PATCH 01/14] resize images --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 69158af..be1c302 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,13 @@ [![CI](https://github.com/lucuma13/lifsaver/actions/workflows/ci.yml/badge.svg)](https://github.com/lucuma13/lifsaver/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/lucuma13/lifsaver/graph/badge.svg?token=88HT6VMLHO)](https://codecov.io/gh/lucuma13/lifsaver) - + `lifsaver` addresses a macOS bug on LIFS (Live Image File System) which prevents multiple cards from mounting when they have the same name (e.g. "Untitled"). It lives in your menu bar and watches for cards that appear but never mount, when that happens you can force-mount the stalled card with two clicks. Please note that whereas this utility has been fully tested, you should use it at your own risk.
-

- lifsaver detects a stalled card, then mounts it from the menu bar with one click -

+ ### 🚀 Installation From ef2d2519b26a4fd2480e0c234a7b99183330b525 Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sat, 18 Jul 2026 00:39:10 +0100 Subject: [PATCH 02/14] add social preview card --- docs/images/lifsaver_social_preview.png | Bin 0 -> 51650 bytes scripts/render/social_preview.sh | 76 ++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 docs/images/lifsaver_social_preview.png create mode 100755 scripts/render/social_preview.sh diff --git a/docs/images/lifsaver_social_preview.png b/docs/images/lifsaver_social_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc05fad510f187c6787e9836112b57cee5b9da8 GIT binary patch literal 51650 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 literal 0 HcmV?d00001 diff --git a/scripts/render/social_preview.sh b/scripts/render/social_preview.sh new file mode 100755 index 0000000..71d1d09 --- /dev/null +++ b/scripts/render/social_preview.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# Render the GitHub social preview (1280x640). +# +# Usage: social_preview.sh +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/../.." && pwd)" +cd "$ROOT" + +command -v rsvg-convert >/dev/null || { + echo "ERROR: rsvg-convert not found (brew install librsvg)" >&2 + exit 1 +} +command -v magick >/dev/null || { + echo "ERROR: magick not found (brew install imagemagick)" >&2 + exit 1 +} + +OUT="$ROOT/docs/images/lifsaver_social_preview.png" +mkdir -p "$(dirname "$OUT")" + +TMP="$(mktemp -d)" +trap 'rm -rf "$TMP"' EXIT + +# 1024 buoy artwork, scaled to ~500px and centred on a 1280x640 canvas. +# s = 500/1024; tx = (1280-500)/2; ty = (640-500)/2. +cat >"$TMP/social.svg" <<'SVG' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SVG + +rsvg-convert -w 1280 -h 640 "$TMP/social.svg" | + magick - -background none \ + +set date:create +set date:modify +set date:timestamp \ + -define png:exclude-chunk=tIME \ + "$OUT" +echo "Wrote $OUT" From d96403e047b9172b755d8fd62ab5e3f41f3f1483 Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sat, 18 Jul 2026 00:45:03 +0100 Subject: [PATCH 03/14] fix icon bg --- docs/images/lifsaver_logo_name.svg | 4 ---- scripts/release/app-resources/AppIcon.icns | Bin 276820 -> 276496 bytes scripts/render/assets/lifsaver_logo.svg | 21 --------------------- 3 files changed, 25 deletions(-) diff --git a/docs/images/lifsaver_logo_name.svg b/docs/images/lifsaver_logo_name.svg index 899b526..9b78ffc 100644 --- a/docs/images/lifsaver_logo_name.svg +++ b/docs/images/lifsaver_logo_name.svg @@ -13,14 +13,10 @@ - - - - diff --git a/scripts/release/app-resources/AppIcon.icns b/scripts/release/app-resources/AppIcon.icns index 3ced11c16ce9373b5d62e18bb2060da0b5793161..1f56e371fe7a9961361474133113cd6ad5d80fc1 100644 GIT binary patch delta 247429 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

IU@?oxq6|>N_gI-@bQvxd5i59NOfI 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%0AUmmIg#2 z$@JfFLnOJH+$enAwe_@dE0*T5Dsxh$z>>_O@UPy_$*O9q2TX4B<{VnKKeDcQ=2zb<+QY^f_%0Z3zUDs{N0Q!0MIAp2W&l%OC6b z{--tXsy&i{0{hX#c8_`CFk~vDN{^pXZFempS2oh7Q;9BFsZiDp_QKV4AhC^!T*gV^ zwF=KGArC*biJzW5=h5N|8jsMx}ho)<}pUGv6XypNjKLsS6SJdwgy5f}=IHFH9emD`g( zpZ|LDcTiX+rl~Dpy!cQ7V^o^m_aBq;9#ipWyjLVB@;l-5l!&0!)PvPl*mWRtWBS}B z^RU#?YWB}-5-}0SiZ*d8%Iz=K-bkLYYO_3+^n=ET$@Rr!7r%D_tAtbX$ z#v^EbBTd?-&eXL#zoLriaGcilcMX2;>1q>MRs+nf)+~6Z3Y!2DCC+QIx~kX$E7fZ1 z-;Ng0e(vvD6OS3VN2djBEM+^vliPn>2&BF4J@b7K^hDDU0PT?wl3FS2#j}xEyHzDI z)(jSx0FSeKqlSnk&_=H)hjLy=v-)=ZO4{TL_{3wcpA8q<3hU|;GO^!H&s zTwmg@CGPD;SsuP4+ZOiB=W&?tMqZ@4A!^Oh4?DG33zs-emncm{i}42TQ$xm4db-fO z{(M#;BboLbUhz+i$}ix`6^!T=@cY-8#w+BWGXhnMfQk?1E4vCqnPmu5-}~3U3UVak zgeLMpV+B7nf7tZ%{n3K*QBcDhPPGp$g3*rdBco^GbkDy^QtNnH2NeZ){!}6*wuNOg z{&?oCxj^$~*B{xer^XlEKVE2Bt*;R=-Wy-Dq4)dGr%@rwg@gaJ(aQJaj!g@c!mX%4)z2 zBkDRoxik-rx4_JNJ6q~KsySiph0o)=>Yt{VgQeB?L{4kjOW;!6(L6OlR>VBc?e5CX zB(mPEK+ytOdEcpfRiU={W&F>bK9e^Zg>s8?KqX&EtW|ETAjya)!^q31a3>4eeWUFq+&g@B`^slqz6uK1(N|nI_|8HtDArfI>|eFX;{429`WC@uIhz5>vmAMj+wf6YPa6`Ei7n64 z7I$w%8a1`h4{!XOAPP8SB|U{+1b<_FrFmhUNx4xG{f zbtVnB1^1S{<(w!kc)bb?QCzDNuNPAFbM@u*AT2;mhf!9+ad#P}6lqUXfr*HjPVe4o@uiVi^#4x1ozeV# zm_JQ&e({}>J!1-4WkTja?Jtjb4Ofhqnj$q%HHFh(P4_l9)BCq8^FxM9L^A7++!M-k ze@iFai1=G@ZD-Ti=ij7%OCwqjqi*cQ7`FO7j+yq$;p37f71;sX-App@y93oqcdY!l z%KUX`slJ9jHd0v*7^9Ys)dMq$^5Yg(I^9spcdl;Kh>Kz>fgb^cI_Y$uxO|YP&XlUp zC*au=N5^bOkD*tkLAlA8B^6n#^aEKiM`y^N$#+r#xvOBLGHJl**>pm;@`7J z|F%m3Kl196kAp>oiZ2`hPj;oH9&|+9!wpePqr3X*L7>Jp*#CT)K-|Id!+zkvt>PtJ zIL!}=7pu8zkhC8(`UHjjtB*{KW#T`%^I!?f;9nii)Z^<3vPsfw;elkb@HCupt#VJM zz{e*sjq6{!e9G2l>{m8LswUFBN$Bhe;DoFVF7wOx;@=FH+i89ShUOeb{EI49nK-4r z)u=LG{@KY9aVS29XMl~Au~eld(0$U7h9`tM2*%-g z|C_aQ+k@m|Mdc?dvE}NW4{z<=v_pSi)0c<~CyddE!NNe|6g8lrYJY6M6<@ zyZ#Cb&^`Zl3!I@uiP(KBnN#>9zb$u-}z*ou|qZXz8)d6j4wd(k$ns0I_>{-cc$Tu z9d`li%Ur-V^D{4A%Bs}XiTVt3(}2_fncg;X`-N~b3F`s=^F=Yw0;PTMtBcW6I)(Wj zuU2PA4%bm)D}6+vg4DrHV20ye4DUxw_&pH6U5!jb8jTCT|1(WaK{a;OZSu>KfA7*r zF8H!VQ}(Cz(e7+vzxbU^iOTM+$y;P*AtGP+8x{ae(;@mO3a3obPTP*W@rqim%l?)D z+>bK2`g3wj;88p!28qT*QXdQmdKn|S-4Ffkyx)rX$hU}**hF0BId&F02{y<8+9!F@r*&5Lb(%kKic-e=F>))1qZ~a1iwQ#-Q=q!tBGFB{0=_7Z(y*r*aPM zKI5kDeFcDGGk&opyuh4heILF0IJ)057uxFi z5t)d87WusXS&JS=PXEPrH1VE~htmh-H6Pr-UmTN?>mh%q^*ofn-8vnqf#on!q2TC{ zdfvnF)Rv=Ti}OP+tB|MDjKDRT-G%pVhBPJf#^vdi$Vt;Sp3k|A^ek}RJP?qGamaGB zWpmOv-`QuO2L`Cu==_0_P~994=&O;pucA;Qa)mzvM%@{A2Zx1&zp^K@CqmZ$dgwVyJt1>`Thfmg7j^Nsv56IIX_s&^XWbQDaoYZVBNC$ z@gwG21C996$D!YUM|avVENbCX;4a!{@$P&5j8ex*dY1d1z}_Fk+zEY139MQ5A?%;w zZn*@_Bo-HIVj`JobceM0V+YSS^qgWg@i|jPj!{f*4-M3)wrL^&(b?DbCW>z5@%q|{ z=U-3cdAi(87p!aH~^pQEx5?wNfe9rIA0zYY5Wzau88547U`B+0%*20J6(OK@CJ z!ro=MM4rBr`}|BP8|aeVL5i*2bB;$W$J}Cvw&2!m`fru%+cy+TV+9kzE)_%;6MMk= zgmwQdVh*kw3_MfYAjOjkv7;Gk&6LWz9f6zkAIzMFdtR4FnP{NWb%~~j4(m+_GY8~ zTud1@W_VV1eZt#cTsGKegv)yb=)MH^B}MvuYD&EGPbC8i;d^rgKsLS_gw-}<|8}CU zrSd~PXq3X4!~W3a2x`mju4JuTY^rFI05fn-LC8Thwwm<4z7{HMut|f%v32;DBG27Z z!NQVw=q`Ir@t+W3hIh00g@EPu+nZtHDdh7FS^0pCq8bH7c~0jI>&GYEf0`chcE2S< z(+gdn8UO@<7-+D~hHF!=c}P|x1FE86*?zi{uR{FN-%_8x%)oGBatxTG`&+UGOVQ67 za~M*?<@S4#h#kqt<32widJfM+#0oToswCi{g13bqh$}kW3{M3}bk)?5jq{mhFYYgo z4y4wUlyiLX=^M{KAhir0OQ$17m=LV=T6%=#zUw6$ekGtJ7LP>ZG z71^3_g1uwjpUNuJAPdLE-91W4aoO0}@B_c1-x7F*>UcyfD0|}(FAZrMK3XbT%O|a& zzCDT1igD$D25-2lX?*S>zzzP?F#T)!1KP;zdL8pV0r5wbG+67MHyLWK!F&* zt4+cZvQ>Ge48Q23hyOhPhTS$6cdmhWEVt2V(hf9q{Glt4z*nNi?wiM)o=QZ2vWBuX z>!0;*0+Z&JVK%2RM5YFqhbE=Z%R}R|psrT{wv;RG&(LL+oV_X=n6hFhftEQAV5x%{ z$D*;oNKX!{qIm^vTpT{SK1z|VttJPftaiU6{a#4r7HJnWaGQ1V?HJAN3P@;rvPwH& z3-P-q$ZL*6b?!qVMATo&sS8JJBA!%N7mT>p{+t(y9Op`g_643Je}24j(f{zEn<38WW zvxmCu#GR)oHZ$3vk}V|U%4Mv#x*SzX-C#wluzw9Y^Grsv`3MJ|*!nX?f%m@^DhHBz zNo=x_!KnuK-M_l$a>sO+4CLfK5~Zh#YZ zFhSM68a^fg14{LVs27x>qeXB6<|0>{r@=lwZ}e9`8)?+{+u`E znbvN*`{G1Q{C!K#+gdQ2G7gLVq@)mCtr=I))^&HF$(9VCn9ZMnFO-NvWGgy1QFC zq`RdgrMr>tl6d#|e19*0&zYS$*UWJ46LX=3$a~AvLbj}NVK>N3o<;d4hhNJE-ww<1 zui6?1guq;e;#5-L0SVmNTPY7{fku#~gaapGdGKir zjL&4@si46v%=2Rilr$Bz_9P}P?yGOTy)N(XJ2ykB#7mOmVq<^BL6y}NhW^qo)bu3O zq+s~p0of4pxn@rOhuAs``tKAvQGU^Nc}8=bv4)U$nrxGR6A#x2`)wry5L#|-O2i1e z?S`85T85;tLL>%R;B;I^o79qC=ZuBr;K5E8ENe2$3tFftm{Pdzw||=uJxK!xfy_$B z&r>v5(p`J^^RVq?&;@ZVyHfy`yF zLr+!|N8*d5pWj$YmZ{ew=(TOHZ-9N}nDh6SQT~UWEZA}4`K*A-gv2Cs zVM<@(&wCCO53_HC;?YE@(($0cp6?)e@XLM}p`)_1Q9pYC+T06uuZaY9fOY@K8%lY< z93x1%LGC!S-h5~>-s0xCU8jZ}y_@6io>|?!+{c~C zw2bqXs=yxG%-#7MvIUvmr01qWux8_hx+R>z*&Ptv+*#|`jBGH=0K&OO_>{v7b3df8 zid&^SU>vr-lZP6Q98;IW--=Si37ML@fGL0jt}pZk83v8K2|XsF*M**K&110mANY9H zMU?&nU}*F2`{(;Kq*`En@mA{x5xyU4*%WU#M=AO6q2F{R|CTr^NxR`GC|Y=&O73i- zRvcCKajM!ID{x!W%$&CW#Y~dkUQP=_t%h{I@^GF)QDkArtKn(C_Vi)N&1th`=*^1) zV|z914qc>*QYXu&YS@P^NL!5y2*kmSkJ2bAPUNx4dx*&qX=BChPWyEj;e0WE)Rb4$ z2!6fKGU-0Ksl5LS+dAjc+LCCYtU;yk-oDztT7O1Jx54ZGjV|?SBCR~JHN7SS&_*$3BU5jt_NDt{HOfnp#k8j8K{J*jJ+M5j zZ7chHzD;mUZpqtzICtnew1|L?`(!9t?3IN7>7^^q=E`#Ui`$!eHTrt1Y%fguthYCo z((%ogQnFYtr@#v#;MsxN)PPsOIfEK1*W*@X1r##hI0_eYd3f_@CeUya zqdR)S50$P5T)eRFln$PAoGn6r8b_>gF=YGxMXy@>hJWb7PSo|l1S{*`D*Cr!C&u_( z6WKAMkuyD7?Uy6v%_pt4i5BTx+qYY<&)1ZQ+G%nV9D|d?&p6H}E^TJ@mQ>X?!swqq ze{`XK(C5010+w00lcw#Yxj+;?#oOA4lPX2%(WL)2?>slIT5bH(XKxa$fBst#Efo59 z?r^pWAz6ed3A~4`E*R8(_jnCYj-hY}a~gP5BTgGq8Qb9?wA_CI1nr-yqzrD{yzj^9 z3ujhpggfp-bI7|>MG5JCFWVRgeF|AN3)Qg-l4;@r0cwUM?But!MM6VW%BbSU|-JN_K^h4jd&Tn{yd?J;k zUr~$XQ=q4zOK;IZ=B%V(NPkVsgR6Aa-JEf-N#=XKAm)F$MDpUYWD>WzihlT=vpnpq z@a5$*FYuA@{oMh=y2XpMIy&e#5$yb(QJjF^9`WlDExoB}FI=EXU>9)YS?I7Fjf7!v zj^u+7Qp;2RA;3+RN0G9I86p!X)1J@KCs|xMdDi?E_}7RrZFrF5xYa3p*PZbptT!a8 zyv$$)&kGX3oRoh{G|&t;j@gml{Bt3}**hmz7g!CVswBvHTr>9m>yx3LY&RflUnTC8 zOl;ya7tmC)yM1^;^P?NDK3-SCdzm4d9{W2!SX3y>MWb$demdi#nStATCw06DPlaB&)1LzC4L!Hlp%+sA(8M=2lA*Zi zr0;Xw@!b}+?|a+QYg@Q2WZmklz&WoER2Fj%lAoM{O}z>teG<#B(q?6($++>Yyl&#G zmau*VFjGlJaPP{twGMAy9SELtzg$Lp0*1?}9NO!G@1rJO4nVA*NKUhbg7(5R8R3b= z!YsL#&LbYT{QPpVr{Gy`OL#Z=i8HvkL?e;pF16DLxnq4!#<0onZ=CRWyWniTQQ1IA z)9J`-Jt4O~SJB~>8+9Z_h!yZG)Y17%FPlzrp_zxU3y%y zNjRagFu0`8KlxHA6+_=}Ju#*aC=qu0A`^PLl)-g^)-CW(29ErFKWPno5+m5ZU&_z* znM`hg;vN6y;-Ht~mys~k8FcbyE41lKPslLaZ5v19R%qL!dfSywszwUdO-5>m;;jw> z#mZ|!b(RJWYPcqx_j%eJwVm2bL7}*Yr-^_)borF9mW%NII3pu(zHAc_CLPCamUxR9~tF_jm$1C*F)j&BUwi*{<%ZGVI zO1{Pb$mH9h!0qif^_CMvM?7V9i$Ex6t~#Ob(OjMHV!a0fhBhgDx6jLv!;7_vIlabnqB9+twdK+)w*CgwQsV2GyIl zl6ZozgHS|!-qf}bYrKl)KE>Ux_cr|tN}RK#+tUr!od#!xMxy-!T!VhxXjQ(f*pFUw zB;Tiob*9RM@WOt8?W{u#TGlM4y=2PNAvOkC_=>uro^d|9ej;raLR@4)l$!Rj+jWPj z=HIzIdZZF%Wh-&zx8K(MdwmWRf#dthL~zpKKNCd{xQ{6i0>#Bx1xy(Su4Wy2VNcof z##y@`aJ}MAD0+eR7%iO-1f^DO6PTMwO%1 z5nSF7?-iMtSl$FDiL6bH)F67AMuoF2DVdi^|MC#$hH70I1CO!upLsJ}SZjcfd zg>UP#lPB&Ps5Xa`%PU}FTjJM?SU&sj(5@1XzdGiOoii*Yh!?Xk#&LbanD#?gN3RuR z%saDfL2g>omC$%UBTg_ENzzV*NBH&A{vW>M31Br`a(A98RUP@~a8Ta(43UFyfa;n~ zC_f**+=jra==<{>by8wP<|ad=%AUl`T&9wF*vd$lWxYJ}l=WJw7QH((`_u!84(ahh zLU({ckQ$rT!LM@$DL3b!pKxt007nDGkvQFDQ&E*vyrj?XGPyjDE=A(kHBY^Hhu-=P zD$s~|EdF6q1@i;BpqoLxpg49aHQYyG*DEhdV~9~^`aw1IIhc{Wg2ay8$Ga(3uD`n zAwBGkHM!9D@Qp-Mhz0M`=XE{I_2q)PExAD<(jU!m(Z}4WY)sQ3qQ0HD9kTA*tHR+< z6SGMce+czu0Qc+noi8iIJAWLCYdW<*ucJ%_SW}wv3tzWjb^X+f>--gN3G&zxy9QkT zss24#oyvuA*DTR&WM?P3R7QPZe&Q{{{lo#sZuPI^{H!bAR3h0MkJmnFx)|}v7nPj{ zW5$tCf4n17nI=??C^IeqrP4=L3JnL}Up|T4$6~{swG#6mGZV75Jp$`blCJe5>9dQD z$;FB7v$b||jDb8#QQUXr@2{_&NQr^Vf-f^9ruB}j-0HA!<-C^^dS;o+HJpM0n{(LA z@&oln|4k615EWH7!;}9U&G~iKph?1ktLC?%=8?Y_+sj?Tf%~eFl+~S(!e5WyY1MgU2@NJy03xy{_Q}sj-l8yLW!Y(i2c-8HsL$tX>R!IKM zvMFaU50un;=x-|AAd=dA6M&WRXe^uNj{c1qiKkEjo9+Sod}dG#ou+lD?A7swo|Iz^ z#YBc&>C=&SE;;{)`#bVwv~qXSoYn&MaMd2UTGzFE29aYa#3()#wA zldSaO_L-KGF@rRL^gGb|j})G*Cnnfh&whumu`OE@WW2{g~>KF?JCh7bq_NdJmHCiObzzq z&IoP=^zI-xA99t+L7?o~_J>^>XZqNc?;~6nR-oN4u0>bWv(_@avjuhbmOCe9tA7j^ zl)=|znwGhR-;nAbV*%#F-jeSQsL+iFSmIowp&tCAYs>XO+z9MCWz{WxvJ3L#{MA8A zJoFE%K*WydeFH_4!%!bmRe2iWMD&u8##WM8CRswN-*rB!{)W}C9}!&4FZd=O9O-9S zwRHf*i;MSF;2`!Z1|zpba(k#?{+zQ#4HwQ8R;iMJ_~Wx?J#gW!$;o6Mj*l3aHuGJ9 zjtJefy$Sxg1nZ-0urkiwesM7C)2gwU@AWUfr*;3UAqFQvM%_}%4u_wC2kh^suYIv9 z%-o98n)HTG0~`1pNoNQYo@FTi`*m|2`D;RFn0x+uA0b?i3SQ1&1$^#qYP0g6O(lnWDL+W{bu1|ltK2F zf=>axUY=)~C!v11TXlj=-U~XjB7FBGg6?l6?PQ&Pg?P88csIe68#9#Ckf{k0PdhU6N-_3xancyiCAQkyXQ_?%C6MH z2Z`^I>jQ{W1DUDTeA@pedQjIn>WEiSr69OmyABLTt66hxN=Lh;^z$7tE>MR7(`y;0e^SS4GS5sk)+ zN3=-N(fo3UX5NT2EI)QcZvdBq8&WEsh@K@y*Kt_96ek@Lm`0hv{gGKJObqNRG#nG} z0R$P76-&76@Z@J*KdQ+0I|Pj9c0p(R05%t;NYlb{{27SHcQ+3zqS+bv?w(9q2_hVHsq zT8iZ*}Zvo^fTD5)^o~h{@4Iy&U#J zo6e-ZZ3>|%+&f1~Y|^Uw_@3O%TygT9_q5Ubnw>I);YXbACF@6n!1V$4ao@ff#bKcG ze&5_7siAg8VAO8fBrEsrPVK7CC!z_`!-36gCW}NZnznXhi<1oack=7?BDU-EuK*dL09%VOycti)w@(SDe%MsWcoISYDv~N#E(KdC64BXe_8+*-DkOv@q_+boYSAGkxG`yX7r}4nEL%HA@H%>^PQZ~kTM9go-|l!mB(eRGNI zn4edh?WUA@CRHUUS7rLpTr5fmdtorp;~nsRnLoH-)!e%1hojxI8~Tz6o)*2)N5sf} z?9{)OO3EofD)?66T%!Um+VFsZNqj_r3(}9iqjEz%x)uYTr)2fT8YsT%QP2Q8Ps+Zv zx0FZqhIu={6Lv{fHt9t{=kT_1&y2GH8Qz92Re`Ngvl&h(%lPu=zE*4dqHxLJW+rK1 zgz?j9CVf)GETyz>#YmHxkGzmAswPM5##j{JJA0ryleByE`t8@!SRFMLIB(|UA1-@U zglF;*-K9*ryFzrK&qnqZ3DIz-*e_4Rb8UZlE_S~9eP4%wzc7hT&4&&5*e}%keyJSE z*X7e6;Wp(qJYW|Hor_$KxP=quf@oTkAa{5U9(b3R_`N#@R5+4x4&=JV1})#>SR%=H zom>ImuxSUo6~wl+WM&Yas+FSPKJu}9NIPZhB z^(MUya#ve`MSY24PmLfU4bubB&mGg=%;2zV4Tv02O{a~j2z?@Fcu&i=nb484b>_^9 zh}H2#j-aQ^)L*HI4O_GVl&)pboT!>$+ ze=rO}6-i2?yRNJ}=i}DP)7QSme?D;7OcWfD^5gr;F)ZVAeOmB)b@WWDAXHSb>kaO^ zNCX}l!C8DSD4s3A4~`ztH`&-Mh@v={_5?ZJvmf>@S@txEAPe=u zA~G$-UdlH;cuo15d&Ua)>&$m~J&Oz{CyE8TGpz|)SiO&j+b3E=v@)e_P_nhB(irm4 zEZplL;=1rb0W&}C!Tw9Fw(Q)|-c#8S`(eGGTFRaNfq9jl2H9q9B|?BTH4y{;W`+(g zd{Ofhlt;?4n^P#!P?6F~BJ{K@u3%MS&C!u9Sxu!Std}n##Kq)aAhVkm&-uH0nwv6; zq~dyfe$T0#VX*5_9H6DQ

!to3st+t_6u-AGuHq?0B$ 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�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

_NU>USxGNK~#aJ{z z5Op1n2PU+mDi&h;zkDIaX-%i~55tWkDrflIBh2J5B6VSg?IF;N&zw{(#ol6i0G?7G zg4)j8kkET_;3a8>t8HKT6yVaHOhD&xFY7x~x0MSG@!F;a?tI#ovr))9v)AoXQc?eY z@_#NIh3bM1-=zl?uKPkVwHx$m6HY?`O;crCt^yU^=<;_Od@l2M){#u&76i0Tdn+!Y zc|k-*pZ)SHau|E$4-s@_Gm-q?8$_SY@b#^BR+s#A$Q%EcJGnVc7fX6hjCXSsOeujB{Phb5z2Ei&2A`jM0AHM7+@{qA7jLe=BhA8!(cY(_P8N zGr_p|=s|<0I zDPp60gWk7HYwr?`4Blms_Tk%mdH9o(9t!9GKK>+nH!_v{({wGvhuF2mXwWn2(vmOV z@91EvMW66fRH&ANcVh(+$T5e`$b^>lS^Z^^3F;4h(aCEw+4w0a27s~&B;xBNC+oI} zlz&Y7<&pYp+x_UWo19Ganyp=0)%0=ucR-Ymb*|%cI!pU-LeA>0yIHE+H3=3zbc(O5 zQhhDhpPRWe<#gzTJ@IbKhD<#yx_eg1(;C}zV)+q9q%N2Z68G8##X;;38=fzqFd%6J z4RQ01!|Xab0pA~S+e}|BT5+KIvbnJC)ugQ8!dPQml)<5NBrn-LtBP#<9F8_@-%x#WM+MIgLg_LR$ zh%=ao!X+RrA|Es#(P1eg6~ZFIH6-7>PU8G4?Xv$CI$f|4{Po9bCEV zMbf+!F-Sowm_+fvA{t5Da)9}mosiveWK0Aa)JC(i(gW`-wK1AqQr*cXnlAaEjr>-c z`s_luWqG9L5O~nZq0{~d_EjdYFh0wg>iLtxwwSNDt10tzY|tsIFYk-U@?Z|JMuZJ3 z2K)Yqe3n!bI6TlS+43Skfw${8eBI@a-xn^)IJ_yF%Z3o!4W-Y02-c`)YMHkX9qOXM z^#|D94~Gr>UYQzx8f+~MhoRSzZ@5gHu#5vNWerkN<>S7gE_}gIu=#QK3v#_Me$&mN6%UOfws;^0x1|e?;OEU)! zi3{NxciitREz9?LTig%xFf||9QX+Z|9#1|xe4MelqOc120Jnf`r{A>v{`e$usAB|!V`5{$=t|7E{pJ&WG#j!U)XBU?yn(ftAQ4En9P=itW zO%o<|8mpmoK=p>3s!^R8t@pT_r=nbtcm^~^eRt`iin?!^@fD*br`SIh? zHbH!3c@lBqYVzft=2lkP=gm(uSoIfF)Zaq}u#rX0+TG1$3;x=)yPM?$l9F0`y>b4l zbhfhcYUruyl)*2_x{(G^c!72;ze?dxVg2potC#0evG`-U*WRw{of@izRX-o!hl2;R$w`KtG=D(I_)9k7p@^xpT-1YmwhD~qlh^RJ)6T-!S&l8>t9zB zUO2QmuPI1p@Sa3?^8u}!`To`4C+9lls>KAr3m)EJrD8O;Z6o({ z@0uQOa9Qe0+QLI@0MeW%oI&T@dcWB z=&(FPr2y&}DPF*{<(D6IJ0$*&x1t4m;bK8dn*uQ=^zZK+hb?dai>x2a-_-M+i<`!O z$=q2b;0WVA#TJ%@yH+lp_;YLIn${)qbG7-x6a3Ur zOo47LGc#ayPoaNqr8|lg(+DIk(y0QzeJ?E9{QFA@P#nh zLyp77giQR(R-soFJZ(JWqxna$f3_F+?p8*jWFt^=s^$%oJ*5v(@2#kFP%)U{<&{+F zgDmAG1E~zB4_!nA__0A-t8*IKpYsh9WkE#zGuqBM5D-+8Wl&G=On z2l`aKc!o~`yy|fw_MP_5R3|S+ZaX*7hzG@I?E(vKud_kY?a07uI~Fky}qP|M$_ ze0Rl1tWHqfRn>Ua{?m?(@cieLeTOmWYXKK+LD|=y6eG_w1C72a?O|jd-*f>0V2>X; zC^B$jPxHM4cAf^jv%Hk?WNz)UQrR!&8L{LktSJ^NM{GKLD7@;B*lpWGZ;@+0Z{i$> z5zw+@Ia>x9>;Z_}?`@?K-k)q}V3!Jc{1s zphi|k`*-a=m7!+5E{Xv^Igu9_p*dyUW>(I$J+Ic#%zH2TgY7#x*k~+&N%U`!Y|G;H zVHTw>V?jF$k8t4UJL&%XRmUZfq3e8;$NXcrqxkJV_KkA9^dOg3*S<4%dZIYU^ZvE& zWxmbRpx;?fJ7b!cltvRR%gOtjbuRm|%*ePL-ajIFhMzLyFm@wmSiidssByH~^-<=^ z#z0oC@2MrxK2F)8<5@vcl5;xpV$7(>*`>tA5LwEh*n_a=Yjw#NTJ9GL=Nml3{q;-@ zE`jgX*#6VYT-+S#jzrhR#b6ZBHbWT+DZ;4cylTTd~o82x4(c4ETRh3j!_gWKm>=Xm!&)(s#t&ADU9o%= zP@{cuYL>iM3l>67HP=l;=&n0fiL%lC7s|4uDTI=sBj?=FcQ8>!q9x-?Jp3i#<1 z#%~&4@*R-LOOp##X2-cp$)?XoqmR*Wds4p0qmL<%8~J`ph->@^4=SI?qtP!JfB9TG zo`P8K7VhLHB*mB2Ae;cggLgvIO8t!}^#%7*(Y3?U!E-N>ViVLcd~3|9;^~~HGxdr z4TxJ*HX7;2D(e_8iYi#pcEd!)h10g& zrTGsyiGej<493|w>^QMBR2YWpN8~zf-}zpqMsFh`Unj%c_*e0&iL>Lgy%>ko0MdIG zE{cuoaF|#LE?-PpzQq@imPWcngw#6B0X$f0DW!ue*Y=l5L}8&JV2+mX#oby#u1M5N zV_Js~GMxE4im~fe=N%H;?^!zedCbCkq#i2Nz-ZWq2>#x2{dA&bNn&6X zRl2#-t9JnkP(|tW)fNt>c9V55w0tD@m5VXz>vDhmlZR#aSghzX>Z6p{@vOn~-}gnv z!XG>~aGiLtPw#9_|G9h63MRDlRn-YIJhJiI$98TT`f^8_hedH}^cy(kiv$f^;`gfd z^)9dWGTGTDcpZ$Sb!W$P9Ucx}gA*D^K*OY(i+2rHClB1k3FmEIj1bR1I{!mt;9md6 z(d*vA8x10xsi@^`ccgss+#0bm!0}C*Y4|=9`>BgenV#HpavT#vr9t#oIza#$~2<$J*m4JE|C90P@pMcWWTSn;q0%4Yxb}{xiLbt!A zTE(B;CZlHVSJ-TW~$O->5-CU17r-vI~vJ7}5&xj0%y3a_K%$(Pp4@W~CnSX6S4V+#` zxAYq`RO70nRYL*vdJ#S@!{4TL=Fi{xXA-Nn4yD1YjT1ANp`Ml%xX_GgeNF!Pi=zTg znH}rbVI}X&Y^FO5$y_JV93q<+)u``wYX|=vupN7dp0+Ld)#IoM0eyv6cd3G5Y zUI_n6n0?dm>|#;U)7Sbf8z@&gWN`U8t0w{z;N(?IpzsIYNnVQRPU7ZkUKMqn7mBAb zwh$(11ta~BnC(@&)r8x0s93H}2^3Yi9kv+)n&gr=rJ96<#lh|P!ybQe*Lk<@!s$kr z5sKPan6;?VS8vbI#!RJ`HlZFC>L$XXm{Q}Aq%E_!;%-phNX-qKWn9$TM*K*!3OXWw zY?q`1ATedDk8vSE%GIOE%sEgOv2QCGp?G| z*)nuu=9Stt<{+|~&RwY0sXE_%@8!D0{+yLEYurt(F>dLoaDWt=q8^&%C5PIsHM$AA zNJ-Iboc85FZ`p6<>Af&3$?HK`PWP&jlOSb#)VkWM_PA1PuZymExIQnemt`ri0#xVGAxLYY1=TK zR=R^_LCaE6pSC;m);N!o#rI>8==*8=F5|50lqvKuf)>Wgq!E;K5umj7V_nkviRikote8eXd(ROS&t^e!*Vir;CneH5xrNu`0 ziMo=qS(x4Rd9}-JmAmgzq+QnrzwTOtoO(=gskg;%CBJZ{dS#nBV=l^lu69!C9qPHU z#HLY$&F>6k5vfH4)#dTWr~C&+al5HuP}=ojCOIFNe#R})6b50y^E!xgw$2D10?yGY zigS1?PpcVFy53( zM+YiuJVCkRUQ>i~{xQ4Wb)j{3y(b&~>%zT1HzQ@Hx#40tgD>lO&BDOQ2}xiWRek#^ z^d8zBDVc+#77IL$!(K%D^xo47Tz2nSN>7hplcs!{MOVh$N>#V;miKn94rr*M(qhI_ zLi(5*5@R{{x9m4=#CT>Y0((P26@_>Z=HO*j^#zBUo&R)D%ksEgO==a(bN9&1@!lHo zLQ#%vc!Cr%<~^auP7{Y65>%Da1@6d$HP+c+akEf>yce9#aK-%w%3SoOmM1Q5eL`x~ zqNjnxOP6FGKHPGAw^tP6@CEy7>LH@!B#}%+>z_N}*NQ_kdycA;9dLfzmgpb;WS$$; zX>k*_<_L(F!lR_&3%Xw4;KfrVS1jP{M3JE^1<}1X^ObL!tjOM0W(3m-O}i_ zjwA35)Dzwac$`RY5QjPQ;!aHK7X;#Tw(L55tr_4}Hc6nAXlUFSCYhTzi?)}H5g)lm za7Po!ekEs$tKy z;Y3=m_|FIsn?vk5V;(l$d$V>5{K#yRMlQG6-LRf)9IrN~p?hR&xBrLF1EBc4^}YN6 zk1hOH7|PE_m_gc`JhJ=1&J4iKMoF%sLKOl@oBe4&Fxd*!Zn&+VN00tHshw~otEL{J zi%pV;gtl$;^#k3bDP4s8SR2v7xjq;Q3?aB8h}pRi1#wt}8h{TTXRCVF>-|QzZqZ2} z$kH?(+5gDc4|n-}i>Pt3?X4%i9AMF7 zauJKi?AGZm-08NzDMKc8gWomP6#dW8dns>TigJIdx%5rfp;?^;YXruVxt`QWJ>T7_ zH&R&cwbTa93(vIu9+w4vHK@ukOV7uVP~ffmt>JHTxGV`!EebyKW^kP@6y$&@n{^~G zeUvf)j^}_SFP_r|k((#lVww~&UiBx;wXq~2d{5UU6EFl9N(EPrY{FgJhb_P>a*%oE zO)^%lzB3r8U*}$Q10G91I-PIZy13E1T_^%6jz!Fr7{L~UPru9+kbbPx>Ht^sIB9f4b60FVia;04C50t*U>w0+MCZWbqvJ>=Y)T3&mK2j z(D{JiOu?S9%K1l1*EXFon#CRb@nH=-pCF?_VltA27oL3(rr&)^0^?T>7=8)t32`TL zTG5HRd{hhn^DsgPk8gdE2+*T>JA&g^`+Xo`e1U`3c0YEb&p5&Q14d>yG|c+8zfa2E zEdK`H@~yW@;3vEd%@H0(ShJg#6sug7;T+~)9_(eekH!dB!@d#(Wr2caHsu44{30{< zl`P)uEkBOB^%)n`Jowu-}sNMyaNw6?`LB zC+Y7ld%5!i95=HZHgeJ&cpha*_uxuwlUrHfk8Zn-3!BT6p_Sjk=Vv4=Dmm-OPWMnp#Q zEZu#w3fx3K9p2W7`=KyUx3;;Ta;yv<0&XT|DMf%T9OXLdT-7)G5}wAI-hN9^OSg78 zvy#S&Du|9mz}(KAYvGCrN2-au0IWa}gyeG$czmq1v->|UbhBg^T{-2$h&6T;as7ju zxrYS-Bx;#Qc4o*h#L#IG?LDAw;`(2{kFJY2>yoGC${~HGy$msF-Ny4rY2=A{kbf#p zyJGy_s_3f#Qq?mW;eC80h8{gNo>}3^q@Q`50d&rgbJ*I9qaPO+2~^itTO9T zyKb;9%4_@n@53Dtn2DBQp(bdo86sL@VR6>CZrBts3!T>do%snnzG~-YIn8C0n&q`X zS|}~f51@vjje%ffI=tz%K7`4bC6m{R!i@UM8&=Ek*YJ-I43rOYgl}!!o-nm)Q|UwG zKILC#XbL)NmK@gO4RD>JboR-34uYH!uo7B=Yu3;e9yBA)Sw!V$4IR2yZ%o_lA|HpQic zP}eeWaRvRCn`sewX@N&+--UF!}dIMP6lpn(o(kCI{OzOgF_L;ZU46jGlSo zB4Mt)#4_#27sJFXy^?R3_y_u1Qos&osIjg=NrTA|zzEcbXk;$j zKapq=LejF~5ECEw#KJJTqF98dk^Z|!%lpZYo5`jq}o=AMp zuk)f^Ie=sSAhparoY{(iVaK!k%P+mYKUC_+?01QuyKOm=>pHkXsa45}T8F>`u?tPx zicEG2c7;*gS(F2u`gRK6ca3U&RmTDH6BZ{ePY9d1iRKg5(kH7$f@fBL+xf)sI}c79 zWDbb%jb5=bWu2@Fx47LFP1H5IJk9-7$5BM`9|vex0KFp=xW}BykTL}YnSrP?&}5y)ywFW=_NAL7xj!p1oxCzB_xPC`vH;(u9mp z$2(Dk=2ub!f-+~-#41)DubhOySx;4seE*k2(+7TM&t_!_BlVIBZlTHr(J)h2td=+UUxY=;> zl(X3SmsXCkp#JYu4{LYaXZ3<7G(Di)1k}(3)bCTYQmWJD?2L$7Ivn54C;MH z%POZ7@^R#W0i(SI{8uB0boOXGjqV>ruOxh zqjSd!K1N2C4)t6(VfcK{NY>q-!R&mw>swQwQUde7%c2|6=AGlTW88y~JX)wFeyu{C z?-Y12Gvn7Qd>og81;*$#b_qD*-+>N0_LDbmJ(dny)*8gxM;MpkX&Gc4{+o~qvuQxm zS~_yVibj);toDY|^F<@Nf!N(Y3bzKVp46tspq6jc*X{H~&IBA4-0&Fc6gpOI2-mZ< zmW%e$FaMxS1!!QK3E$#p@xgWwiCv6f8aTtNn&A3Yc^lA={Vy*AuF72et8ltNVzAjR z9;))Jw6q5yg7d&uRZh~zsfRp=!8VaePPrctw4n!OgRecPum|lT$?9BqB=h)5-|sXK zmV<{vR3HcVA}|(KXJ(EH2H1~H>0{sCu-{XK>}T z=>Oc^58&OlsRU1=&xpmn62T(^NLr=hlhI+0^w2QHexxM^oBa`Ym5^iM`pY|O>16>$ z8Ep^1{;7%m)x}fx;JBKHb{nsnEKO9@F}Ynyb>6*dt0_{g&njs zABq8)&0U!dmrPz>OD9(u2UMG`TDp;L>PO-^qy65c=#AE=hm0UuyGQ!vk;1b zPg@O!g%O5Q01s;BqX|_6ZDpeeST?uCTlSXaZZm)Gkf37Pk3R(1?F=?fD3rk9OTlEgOT$s21)6GwR;zlhcRzyc#ounOsH?L?@}&|^%DG8{ z=tbbOa8Wo>9s;vgQf@xn5JBj3>(T|Frc%W8{AVGIQ2(fCzz1D>5)+_^D%9&6geXVf z>Y%~{(YHB9hx2{lyRZnq1#RU3OqsW@+Rs>38;&sMYu;9HceDx{!QHtTH5hx-{0wSy zkhWd^itSDvOB^in(+e@e{4zhMbi+xTodXcT;!k1ZM(4}rjX`-YSQJn5n397Gi~AoD z7;e7-T(54Lv{6srWeKgxEgqD_`4z;^_Ppdbfj_zPofsF)$3(p-(q@3|{wq&%YAV)e z{N`|c-|(Pcldk*Hb271fAB{veTReTy@cK_^^-R~*+zh5IP?%muWwI?25tuI z_>x*L;H=D7oL8Euw66-BPBGPBr4fU*erc|6mzibb>^}LP$6k4lYKqBwtHlrQ$HnEe zxhI<%_EN~~c?%vZyL(fc+JeVw_M5pnN^${nzRIkOP^-{blN06uy|3MIT3Sou+Svo2 zKeDd0V!{X;uO=Uy|Eko8NNfeX+rA`9b|CtBfWP&$~tkz%apFkvOmbM+Q^yJ=&%$v_k)jqm(|B|EjC?K%Fg!fTCoE63Id`9I$u*#zG3n$-?>Z5R4ic2q5n(*>nd1lcox|hq z7yiBuupI6();7`!`6>lL8~hc}(g0ZDe;#I6FGnOuln&o z?`K}Tit>e+FN7R_aH=B`W;ZT=K7)5?64nyyB?y3q!im#0WDSpkgN8!Yhx$4;2{FjrPiVTb+%y2LrYDre=kHx~RB!c0>@3+vO(bNAT$}x_QFj)BneS zq9|{kzF4bdbx?4q4R2Y=aIVhysgjA59*UaA_EYm<4l{Zp(Gr30F%Rsw=b!pAt<&7( zki*CT!?%=9e_iDwZelh;;E(6{KS!&RRxqnKxyGIu-LqFmFO>y<-&Rg5`I^?^`s5RC zqsV>!CcO9j2MY4+AQa1!5J^Ol^U{N{Ku7i=U;DLQ0k9jbVo_ZAaYzf#KiIa8(oT8f zAfcS)At!^1p8?Xy^S0qa57CX6ULq<0Xzp=Onolpnnsu~ti)P~ciMi*;{)m2jr~@_P{&R}3n1;a)V$)oV`KVTxUw1J9QZ3o47-FHB_pi8p-xF9co6#00$T z2kQc`C+n$vJ1+3kZW<5DRiGsZ1I`)*JH!+MaxP(vdp-WH_jJu4t^7&mg%L#UA$`_V z(sCGrgL?zzj{nS`_eJX7mO@7AP#MO^*JDel?tGJ&Ts`wYkej>TS{z8Y?rErxdHbhD zCoE*P4FTS7*k6DDFSds^x8nD}r;*TwpR~ioE8~k8QM?{*a_v$4On}NKSQ?t89{3RF zr`CCc&_R$1;c0j8_>-iZ7{On5%^K{7&q z5IHoHu#v?nyPeLknEQL*jxwa8$tQ70VPJ~=Uh!;@F8#>dqdU@G0FUb}3Hr|#>FV?H z2ZPh=^x%jj{Fxo(2$0{JY6tIU1g8Nq5`#(9h>WGh>^BTK*zzLPgSc@Clh8jO9KMkq zm+Y{Cl-a8b$_Ib6!taZ7k#GJ^AViqf+FlCFhE5<(Yx#=&Y6qeg5TYW#6A7 z4;E@kpw)M;+VzfD8AP;VtJcaXiM6Q7bNEsBx~A)WlO63US*z5n;c9CkW-|4rk0 zXG6JJvlh^w{)voi86YINV1yAzew zTZ?;6Cdb?4JlfgXWNG(n@naAk6Q5f?&8x5#A3`VX3-4v8E+`jqXgDMYc5WaD)2Gw0+udABdChtHzZc-(9o)wEX0; z%)6-?HnM%Isjz-d_Dbn6_IB)Mt=5yzvr1j>gDY*|802Z1&^n`-eUwOQ{bpo zWo9%wRuA3;PQ(tv(Oe>vx%@WGE1f6c^~a@Ws^=Sa?qTymukT(V4J^1I$SpxUfC*3f zLkia-*pAl%{;cm2iVD)_=V#-gV6FwT3idnRB8tn_9k-hDJp@b0HJv003vD2@v zv@u~M|MLe|7fh%q@WULF0(c?6{=81rC4&AX<__T_tVsHJ*<%EJ6lTb@jYxrjc7qEm zfWJAPG3a7q)sGPUl|hEt`imf$5{MRwUkpIwQD7y=HXS~0Ls-HMVV!TP<0=`5u%uWw zWDqC%s5&*L&70z~CV7Lu%Qt37M;aC9eY$nhZAhBnt$;#s(u14IIgR@WtQmu(v?3i3Eu--=DclO95s}95N4^d>(*SnZ~Z5_bE)1w%@Ex@UDa5;k^<4B(_J#EYE0)t zQr?s4lZjO*+2Q@*^;hlQLBMyq;0I_d1X`#$D2-aeVxY)4c zM_Sb-uiNHI%KTVr`YC=?ot1My6323JJUB8a9O=*Hc;mLLH*VV&E%cBEmPC;3vKSpR z=0Kdt-%7jZgK+tEUmN4SuoH#Wq{;&5muZt{7Y}I8)d*U-qtCAYq`!?zC0q;sOBaN| z9%_(*U-OJ0f`YXf;J@nN$%_24NTCd$7Q9nCu9IRznl|%vnc0^Qhynmm9?hEzURropiIUQ$!Mdo@IV<@(Ip0(dQU(7D#8?3-0@+_AURq@~-ED#!+ZT@n}IeDYeV&gXv- zV2wF1Mu?oCf`YZWg35V{F6{EE0^3RNBqR*oAbMBmiu&kusB+ugXZiFZAuBryy-j@E z#R=$``J-PeE4RI1NUibM@rxGcQcl`+d2zH*Fg46E4K*zqvviP}yXePs*LI76Tl8x5 z**WkxJz^i=A3^8PVyg8@rwtR!VSB^=YlBU)N5bt`O`$3~8$=_fx}l|B%fWw(gkZno}}ajE<_S2i(_% zX_lz%rx0wBnZBC`Hxag2 zU%c>YAY8vBvaX4~9qXJr(t*PO^w_mj-4)a*QDD6fqYvfU7tjH3o{X#>ccNooRI3pTwt`(BS*;Kk;|TbG=ycge0dy#b>y+d zJQm<~D&Y+=rETch^;m8(BEVMilO}G4a|f%@!OF4Q%#{$;v=V5iKcJ$PtEFLZgQe0i zCjy-=QKEv?XP$|amBT}?)O6S`9ixnQ)h*EvnM~LB91FcIz`1|-)OJ1m_ z=3`hRw!S9Y0DzUww+67Ig_q;>KhVH#aLaH@J%C`@Ec)!Z4Eg?u^L+~yn}k7hdA->; z4?{#L$<2Q;O{sbF!QW@KcHMz`fNyOI$?jTee-CkdM!?#Rt-^+^humNn4CeThfQ%X= zWi@tm$4(3pQQ;83e@WS@^Dt2N{b zNJxfkleD(Q)+$!x!27TV2Ev><6sQnv@18P-76z_12)oZxz^5S}962{RvoDz`o(seH z`>g~mPg(f+ic?u{{#{;3@f%~M482lZ{7E9kv`-JPfz;qpeLj|?x~gE_2EW_OD-b#> z6_y98bCGU%83P*eIVsGKqi@rR@C=3JiAwkevQ~{hPRPj$T#fxIIX;0`(-S_=SYqkG zpTHlvpVMogatV?U)JIT1eT(A_n(MEZ8Gh`{hrjb#H2}yG&X4(*(y?b|UR?JLl0RE* zQvsY_GD=rwAo#a*#DYlrWUrZ!LGTfa8aXUd!+d{fWVcSnt)b@Bo0|qg;5F2x&AluX z>0wV8_?Zi(tVSJ{Y3lnA6MkU(@+euF_A(cSqff)yC1ye3%2%w+|kIl*s6hI4u(1yTPUWXOvx08_(1%%X5CA2FO#Jo?7RYI%K)OGclHLaH6i2}yDRX%^Bb3J1!paI za-ll6kzz-{R)IZM{hTLNvPtN4YX9?03j#}YCD^CSua26_FrWgkgGtdut(x5Y^&4X{ za$Y>ISpg*(HXd4-D497|Yga9f{XK?P_!U+Y>w!}&I=c|unRH20V1cQ%p?(gUyf0jg zu{>W_rTz~Jw&Cq0uka;L#p-ZO8otayxd$;t!|0+}fu%u7c61MhG5$kIHcF-rGS{-H zlAwqa@%#ixQw-MH&x?33&?X%3;S$u^Wel@_I=t$n2Y1zd57~Rek7f{Lex|ewVMlAD zxve!22q;^{G+g2NBUkKfRx*19P?=$xc$&PA4L4XKeNmKlZC7YmStx53g5}B+iscr7 zs<~ymrYZ}7tC+amwCe6<-_EO1;jHEr(wYfR2DngATs#j!0g>D=L8#tNKcRU{5agA4 zt3nlA@{<76X!-P#Qd%Szfpy2+T_gH$c|Vft1VRl0xgbPXq}6hc$#3Tdf6(5Y>zOk8 z58HmZRKBOT#Wrv*nU!uAn8L^r`Ix2PGqhx&_qRU{?4TK)Qs(xwn+LsCtLK2T|KZ9N zfC|-75Zxl~-Fvtd^-3o><@eat@pA4b5iU!fCYXv2CjK&RJ zMvB0BTuSnU@hx~eL&8gn9qC9SRM7JT4dn5RUoyc`KYZ)G2gtls17J9bG68mhyAa>R zyBW_4l^7V@Ib;NJL#5K+ROj6)VlZBQ6yF-KDvo735q*{50OH2Yej38t-^s%lefcb4 zI92=D)kSaw*7dxnALk?s5&9|a4DSFi6yZ2M9*VsqdKDL)^F&J)w(NTTPlCB|qpovn z=J!s5;r~a|Rfbj7HeEP$ceiv1NQbn9bVws1-618l4~=xUgf!A6ogyuzgmfy>NXI$f z#^?S1@Q>^4J7#9hnl*DHF#T*M11!g#6#z0-dS3#0i+X! z0TcUriq34Ht0ze88|_n<3-=8(8yFc`RTJnmp!iXt(jQxqRMFuFe?iC%W+!s)xY3P_ zF3$D1*eYRggO@M6bio%XNHPk>kjNXHOL6;h_nHh z2;F!4Qd}7l<49z{^Gn71-xd0)Z^Ssj?7~6Oy3oTq#&#UEA~}^mHDVAWFn~8XvS31y zJDwO->or+nc&inQW3hrkO8knUsGLwvod*Vk<%3h_RZMVxjw_gGzs5Fg6z_GOKSCPr zJnOSH8`21Zdzd&sZE7HdF|V)5o{qRb9!D@UbKNo!j0oJ{k)0N;^a@buJ10q(~$Y9)s-v@3Ria$EESuIeiH^;Z%{z`gvRN(J`f zo2*oe&r{>T7o(?n&+1MlCtm~!o$)8RcwC~bK#Z!K7K+YJ$tJJcFfOhh!Rmled#<=rcxx*n^ zD>*0JTqFv(Y-F8Ul?u_RmOw|ABYW`S>W9lSrlNuefDh`a%%7zp+^dTIn2AeYW$?@u z562(8=NXy!n&)NB2A1pnV`syGAeOVnXN!4Pe6;T(CE!$c@plO?a1A^lx6D$Zx%4g& z3$^l>L~~A2chaK&pc-ZN*V=_a$@^Y&#iBC+989ON8sYrI+WkV3^G8JT!7BkD?*W3# zeq8{&d^NrZhh_m}B0i1a>-$fSDqrg(!v7R?SUr8bAz<%8{0cX(zIgqU?wJf1s%e82jBX&MF2aNEq@&bZ`~L{{AW02| ze#9cl;4;COT9gXgt&z+;r!?uQMtE1jl6f{WW$Z)Vy#dPSjub4fq{rP6S;FA$^01in z-G93yYhHrR<^!!=qtN$;wsczv{ynCmk-ch@xR9K+^hACWw77n^3_tAr8e&*$Gu8r z&ktBiGHghRzN+M<8asv}G}g9+i86S_C*W&o@b0%4`x)no=v*j>mw+k{TksGFE`vdE z8ANK#0fNgc$^AWp>mK;D?dca7Bl%z7lMG=OMRlN3{)ZaF(zrkj!BHY=s0(WZRgT5* zxIFwfIY_>dztrOGsyjKp6&AY7$b#=VZ8!b{cZUDiNf7^F`-AM{^I2eR=VI%{TULc! z+VeayNXECADr_nt($XpZuLALX>XVs6xI!V-Q}@C2+=gcEs|i5o==In7Thf3%pgZ!J zl5@itm2p@7rg1dB0VlHO)WcFA+VPPo=ho||Te&wvoko6nUmlikf_u*Qn%aBRHW@~z z!g`4zv!Jh~lR!zChI%oFPua7Yru#)IoK&OH4W!&9^lx0sf-jwzKOkJb`jrTEedU~u zZN&FOppOcBK`AzL8!YNI@pc|4)ST;zUBIrQ9R z4Q1$l;WK&Sq31KJ8_#l`_CkgZ`!>k(LnWk0P$)>9o~nngJSX7ks9t-|BjrI1RxwP? z5WG?e>)JZ-ayX(b8Z(Cq>))&cc~Vf<`-5lL9f42o6H=1mniZsv2LUp?`%T*TJa*<_ z^e;K>0>SNh%dc<7$|x1>!`Me8lqo*oXDZWE;}%|gVK^83z|t7>bjHcXsfJC9M^7Sj zKxAnKL%7Qmr5QE#uoWVKW4lg%AcKklhx^^pzDjy;(^SW9D|bw8gl4h;6jKPBz7sv) zTVxwmma~>26%e4>)&{0w*1J-ps&oGgxLI1-SQBxdj80la5G(FA(rSP~>F~|aUzwFIVlo8#D?DX({9Py+)v*#Kb+l~y0O~|X)M>uKz zDc+u+e9b>1C{4v&?Xgk?z4)`4z+`t-Y%FVTh<*Z$r7g(>wKfZ z4WDxR&5Z3WG+;Hg!TH%VWF^f|=TGdrdy$vQ(0ob#7>PyiD%T*K2$){g06O1#j<&w! zKX@A^?LkByhS9w73i++Frm-LUWlG6{;%bX}*8P&mIK24G<}W>LBZ<+?ABkx^qrmU@ z2QcMO<~N1<5EP4Z)pzVI<0{aXoGqj5a96BnrGs820kOcLZN1XqU@kR;nBG?S)FB_N z8y(IZ;RUrs-+x@I*Bj#5B88|z&5Fk_1+rg`gpH&_s$F)U#%!Tk5vR|@WDtSl|9tm6 zg-1OO*qCLcj6|-@g0d;B+bVqTRq;&sfy)9hfeOQe>x(g9WF?U5a6=UPHo7mU6knp3MQCmjC1RbaaP z-idFPKRRFcetd@N$us+pYhy;}Rq_y{xZNSw=f0Esj_wEVC3h=)+Fu+WQvLzf^6-GU zQVd7Q&WH#uIT8pK3y3TQ_=&KupNUPyWK3StCm_Q(Ft>@Hp3`gJwWM2Ze$m8FNLWb1 z5+2_`h_Dl4`@n^GKI+Tw7xw=jZiwDmIKbX;^CyzR>!;_v=4XOI-IDA3I4Z3a*Zj@n zNz0%kD^}Re{1AQt6li!yvaeP1U;2T^ZEA?uOafZb6Az@#6Z#MswTu?)G;>x20SSB2LSO0J| zVc(qmhGxA&@Jo&O@TX*o9Jjv|qsot%58?6hL-8}|r&MGCI0Yf>wbjK1nlpP)(WftY zaq`zQ9iQo?R`?j>)`%jFPw6yrWupRaupC+nJoihim|6Pa$XbhpkiSIeVFAF~>kYWa zgqe;5moQ>m&Qsx2k#ARfWt5_>Hm1~(O1j`LMM?Xtyll!7D>nTD+jJK6g_ET5w_b-b zEdTvZ@jM79rU~D87N9g6rrLvKXu;#q#5gq_lTZBLCmM7iLztQx+W0!K0dpwA!57MkC2wc%!?cYt* zA#V`ta+|iE&*$L-_}&{=`~$$C@upQESJ zb<~Vv{6_)Cf|Bkles#tR=VvKo`=@I>bL>0rdo5i8cRgNyBsX0Dif018Y4-q}F1Dod zyJ65H+ZVL^EZ_Z#Cf~aG@6IzidJ=FMG$!IH*+bu<#1bk9g$2{^lbC*>?2~fkC+q6uXJReQ<$f5jSVO6`ZFFKuk!{D4Qkg zU0dz+Qm8BY?EFp9v=YUv`1xdQTkzM^vD08TqJGAwh# z4TH|%<%!QsJ7X6l!H#3<@SHwe`|jbdbB4LU;n!I82w97>E2;NV)cf=(^`yG~HL`vi zs?2?{NY;;E{Fbm_eVldoUc1}C{qfW{Gt7^06H%n2w&5BRujRT4z;Bg=(0A4V;q`{tc6?JIkJCr1U`-c9{y2qS z`@sP`|DkUcwSt`QO}3&_`Ey~y%Bvxf5~AepZ7c8xT=j79VDPI!a%8XtnUiSI5V~}ARy0-I$&ad-& z=PTaFNmHl|AGJ203AYYI_VhFOtTyS z0uMY=cNT0t=Qd8aV(^lG=sWWmMpM*pMElSSmYFL^EP^#Fu*4PNf%_`|{T-XA`6BwT z)m%fN>B4)-i&tC6Bbe(nSmH+Ugy1IgAzuCFbuja%luU@ZhaFzuqWLgHs=~|2f}Y*~ zVN`T)vQF$r_@fD!bW!NX=YE;HoG-wO)Qo;coSam#EM1n8GWidY>@fB=!X}(@N~Sk_ zM)-tt?Va>35?o7SWvC1X^WVe!O9!8_Y@< zq0w0%L3{LDy@W(3iEl2QL}*@9a-ur7`Ff8zi^Mv4{>U$I4QY+oY!65a1E_9b8a&kx zfaNG=RbVd)R$G*F>)8ilUhh)>-t(=0IJ=$@9e!09+5Mng)m*ZAMud;jd&ZxzAKM{y zt?!44di~3thA9p75t%6nXei?!*P)h3UF5VBeKBS2^;vv~+ofvF$m;^ZcWi3(k(eUW ze8|7tq^K$Re+rw%AT%dETdwg?*$0#m%`;RH-=3xO{BsyF^3WgED@^B#0S`D1bMSB+ zAbPG_2D@cWwiaWnD%wE-a!yk@F9Nz=dY~<1dg=Apn zM5T&K1Do{!yw%{<*7)RlCFk(^GNo*z%x-#a9J2k&MYg2_&sFq_tzoGBm0K_6sL<0a zh|M6Y_&>Nnrq-)gE8}J5vqRtUN#^VVuzz^^yK%Sh^C|Ii=n8M*%;j5Q=da=|WD|be z@$fUA9!XT(`-~(rAbNB~zv4TzQ7`=icn`Qzp;F|0Woz&n*?C#2#I5u^u(*+)cPgL1 zk)k0)1L^PJZfCH6B#+pU`?n|8{0q>w>A#G-M_1qLt~VsO%O;)e$5CdxFZPZjAd}E?ax%=8+0JEX*`|L9c9I# zevl9W4A#&xc%Wd|W1~C&o-q)D&B5P?>X(-`GV_Zk6=9i`Fw=Oli@GdRXK0W)9uY z&&JR0{k;7a0d)|+mUX&j5 zxc4#V^0~J2H2ErwTHBM{A2CE-8d`~k0MB0lNJJJ*FymIwvbk-LmodY5Rk zpxWwf%<#=Cw&1Nfv1J!co%Z%`X=Pl8zbyk6Bho^HsN|S?uiASBqH*Zw5P-MA84v$F z%_7Fhhen3nXcje06ERL)J=2(neV4F#B?9h48hbg*b>dM3tvo8r=*y zM-Bp-J|G7@9pz~wY}@W;mVaawnegX=_NNAXz}9+xrP&y1^FPG%PXyT1xFmx$q!v@@ zWXn^G()XLMeM{sScmeg^>G|+m;XK8u)A*oZV0j+ie@$>?Fdu?#h zFOipv2Fig4L*Lix)<(CJ#mHTkA_gzkSGt1~Lulv1FSu>EX6<1QoW19`%M zrwjUb$iU3&hdM_{`4f4l#6iA@LCgPeRW39o4%n4f)U@T!vxN6dNR&xJ+z!3 z5#HGszY40UYj=v~s|L_&%E_g?&lH9VumJdpg(tR{MZ<#D+rj4KT~|K(MN){0;`%yh z6z|8*W=>x>r4OQ*Pit~J%lS)P8^)_%0_i0ZF-?zzYp_igUknGYf>udngyQMJsrsw! z(gKk&A*65ZkWmJ3n$7&a-!rl2VbiPX+v&P;t^$^s<9d#NeUg_dQ08DI zXwE--^_GwGf98Qt&sj-Ic)y>7S_Wc-vDIiYp>8t97AFH|q0HD~a^EdLRD{jz(+{OS z7|fG(waxNU2_8v_cH)EA9gG-B))LEAwRDA>S=Gqt7T)=vg$K*w1>S|ryXsP!cs_zg z&tjF?^}HpiUq!atiW#L|_PXGCj39gZA%SU8?;JvWl0~OyDV0zoB2~-`tG>=sI5D-` z+U;}dLN3HmMgSMPS(xFect-kjUnE3N&GkyZXgu@F4s%*6X}oZBD-?vm#!@N!f6EDO zehK|iu;MB8TuufivS8*o=l8tpPzbZK9Z^jCOR2R@KmT)RJJMwTuTpHzMQ@S=SDlgZ zJ6@vui~Wh~ua>Oq7m=y*dKV?Gk*mD3;f~HT=~`Goa0x4Z$Yo3L_mB*=lh^*__c}EVRwbJf}Vu~<1uVZKb!#Gxq>&$m$q;WKX+k`vw z6z-kdnADtYgbW{WNzeX%UeF;pyPNX7mXFoeoGb5v-|_I|3wo`UFGbcqoT*WRFFY2v z8>Jq#hE#p7OvcHHRYb2sh2R0lrIkzia*8Dh1>*Iox^m`MXi^!nAG+TC@H7zP03Y6h zGBYDph@y}eHUTT4xSej5R7+$0N%r{;rj-mhG#waDoMT_8E*{7!DEi#=KWQT`XwO>k z8RMgePg#%2(X^pt4nOVPq<-N8WM1lISH8kw?fDO+Dse+(+J#$^w{&PIp2a7%NewB! zv-w+Xb=iZ9nu1cXUF+Inut7=lVg)AEE65im@QJ{z&5N~WO;6y{$=dh*UN~%zLEtra2TLHB{%&sA z%UFJ1tvwqgg-nJ2;K2xL3K0!d{Q@?2s~0{qxXvM7Vt1T2o6*QS&zEOsaXd-+z8oEQ zKL06rek)>jqreFf(F5&wSyQk^kyV{~2@Y4u{8m656=egWtVH{G#|g_eiho7I(U&ubEHMczY{-qQ?Z_WBg}R96bF%jDI;P(x!G?% z1!qXW!pXRSNNE5JaVCkQCscRQqc8MkvHCr3ad?p66Q$L!}uqm%M*bDe0uoX#;ERDX*I*M6nOEjFq@(f5ht zueMujJzbHU9QlD=m;_^v&8Gui^0>Nk!%w`Zz=crm#2QY9D9K*DODu9T`A0H4{)wE^ zCtxTCBOoO@*c@Y|yf-gXs6KS=P0ikc$>ZXS7oqKumJb*yuw*^tq@Em8|503Voa`6< zUZ#EjaQM{t6c(7a?*HqYZ}V*9Q$pu^TMbW+9mmtJuh~{RsRA_8A93<10loaH&j@f2 z-$~mK&J{I<@E_Nmw$NW>r1ic|5O$ujleJC1DE8n3&)9}}{r7RHxh_xeYb3CcavdqP z^vtnRS~BxB1a>1l$Fo|D07!OWC}4&;sHlaS0;VsO zxz)SWY^Q?$@J?(;*45CH0Pr&LUVB|zPOoj{iyvmR@{{N*bQRUnEBabaBzbsAkE@F& zLbqJGTGiG4y!nub`$ZKbv7Qwv=SJuIe%wI5uu<7OSMqy;Jjaa)B<=ARxc?b3sK7DQ*eQ53`C}Bq`7`g4 zR5H+lC=TBP^U;^m>a@a$?ub!Ti=%XP`R^$)W%^bdI%z|=#-?eC+Vt!yE z4Pu-`KwFwTzW;KK%&US_)dZbuN{TG5g;C z0gzc%3xOw?Rq5O7HjX)Hw%s|DyfT1Ik5W7)mZ7~8k#x70pWX(rb`YgPLFvKo@HWlQ zM*$5MG$@egK80fc)IMVx<^|2P&O?k^Rby`tuKC)KQ*D-P50&8MXlnuY$nl9!pelOq z%+a4sOCiYdbkced)7nTbhynp7Dv-2$G;~x-raA2sF@q8@@}yU;2JsC6?>Ci40t>97 z(rQb$q+liwq(%Hz{}TLwI~xm+5>!FiYW%7FN?Gd6m6AuM!Oo$?e@jy_<>%)d;$lF~ z@KuBM6AFZ{oOx^Opzh~fYG~@Glmeoj7u$+A1)s{NGW~z#LX`lbb2)GeqjI3sYp3#n zU8AeEOAPrGd^a_O_()88X%V*9d@K#iDAu8(yoZJcPzHV>m zN^Il_>pk#U3vXf?;^GVzr*pj)_w$C0HRQcgf7Fiws>r@A-G9d!&V}-HFV-5K;Q@iO zdJ7XorFAJ(e?B4vuU#Ly=Q>e+T%oke&@J*Eqs><1SFI_XF@0x}D>n7sjV;R4R?7PY z31TtRFlL7qgw=XEog7i8_a7BPstOIfUt&YvgML-5S5Z2dwCRI8U@!b-MFu!a&U09% z{sMt@`^#GAbNSlel&LUhPd*>7MkI4BRRy{y5uP8hs&Cxry#C|g63wv~v>1E0{=cB7 z2Zips9`#h5t?93S@feL^0;Rw)$gSFuz@PU&N9jE;JcHUIIK2qAJ7vvjAxO>#gePKI z$7qQeE`4h~kqyYiWfOkHXz1I^bAZ&lLR^?RItyRX(-m(NZI3hC@3v!z31jln2o30& zrRY=IFAi0GwN#^_#MideoR5$XYKz_IJOYpi|V~! zbYLZV$f{+)#XOn6-3@9mq11sr9CuVv13_vy=d+t1U)*Ue2}T1q7dgKHa!;8u;exQ` zLOvCaA~Ud7fgb#Y5g*q7&oL|*efM>e|s`pTFh+?tI6uHWTe zT6^FrFHPBj+SC>CCl9ckN_qn&L8wAE4~PC^-NCL77A%-dHLcgpl3S-0odQ=@ip_ns zz?PKYF#G3;ZWv7&USUu8FV=pxA_F$FR%bEilDDy<@v!mSSI*Xr{tP{ z(WX|)n5sboToVaH9UPWZd09Q2wNp&?*nL43=e9$64SdOGmnsUD~{$a38ReIIkyFd#fF#+$^ez9vW zgO=jk?rvrI!v?c~=Ub@oDbjA z76)QkrRhqrKr2H&D!Zk_FLz z86ox7L$Yg{7v9h&cfU!hm$E9#W`w{#!F-@cKeLHeqT`0 zDQoUbgr2y*rcxm<&gK!7@bRt#M=zIqIaEhJqu;TvoH)ql>{xio?kfP`Cdk!}6`Fid zxDz8Df67b&)~Rx|lpEo1NpR1v4%a?}ERiwovtW&SyPeD?w^fb>foDV*(`!J#&2zu; zl#2TOkEeTTRiHoupR)qF+Gl)!;rVNHo#)X6{9cAxFhV< zAg0Oks%*))8$eLMjcRyf1~aktR@}D>=y`sMf*GCdPxg;&j%nq5rg6Hg>*)E z34ek!0jnHNSL?zln|keIQo_DNUq;tmiTXKF`)v(6{82dughC!@$`5tJ_%TP>|6-I$ z2{MbiQ{>?*J%LaLB#gtQvR*J6y_L&)sOjG2ty%@eV)dnC0@+iJpL~#K-ZIn)VPK~~ z3J$Lwm8CVB$xro#oxc3Y!Q2h&%KOQu?f$mrQp7z%R&({svv7PRQpf=DRBZ|}oPqD^*USgKkQDih zLUw<~1)N@`BL!0BU$(ra2K01?_Hs)j!s|tg0C&Lg?YX!x{eaMwJCCL(+!cN#K|dV?Eo8f-@t41_9*vQNL^_bC&I&ruy%%~Lw#pdSEMES190%>5 zhUiuHkRT5fJBb#$B8kK3ff7N{>+yUi1(%=WP(Vx5RR}Lxu$MyM@`Y*Vq2UdOBvkaG z|6KzTVox;Dx>v_5u|9z-dLbX`FA+zKQ)mx$4v=BIj>J#ya*CwLkEJsuTnKRmm4wwU zu!e&rim+!NVHWu{_o;}U2MS1-kCx>J-YtGNtIe0twNDN6aSB6*hnoAaa5FCo1^j8p zS>^BNzm+k(CyX94qAKvj(<5A4iT94A8h%cbk_& z@oD~2x1j_aFE)~U-@d{QK4`cYHtPw!xBrzFytNv}-dhlvir|u=lXYlx&+YVEEG({R zK>~M&Hc@5{fm%Rw2K}qsLvb{|k|snw`gU5r`yo(ZpYCIiQzZC^Dwg+#YM%?>J3MbD z7mc94W6RJ7bocrr=A*s-wfY5N<MMz zrAw|jms_zGpYKaW8uvLJ{!>H~Mk0(*!S{oGbc0yk{g@;S(ZOaNt}vqzn!ibF0wq-E z4DsETYIQZBCK#-cCPCK@f#L;(TFWq1$2Pa0Rg-J2*5A$zO@_ewPm(^>sZ{Ofa$+N+ z(fkkkT_kNJRJ}`N97)h%+SU*1I}wjzt+m(Vj9|J2M_N8AkhZi>G&t~K7&%S$NM zM(S~xv@AZlRzbIn(BHBiQ{20kJo~?g%QZuQ@8f2QSE!`7YI@PYZz)Cdp5NxO#i<9* z&qMPfQr4Y6=!Na^9cP zp~kh-WGntU6lF(=4bfn~gE@&==g8}xzo+f_Ny-nQDOV$p%}$>Z5bow$XaSlaJo!JY ziXFza<-KTYfVR9LlFjaNe0)utt7;nxwSBA=)|8HPb?2X_!#46zb+T%qU)e|~?XS7h zWT4wY3jw%Q$IoNcQkADReJW!Sb7grGmXQuD;JJsxWRK_z8Hv7ypfZY&_eJbo*tA$d5od=XOjJvC6RSr?Hy18eOQ_ct88`dkg~- z=8{BaE}3fnT`t1l6Nb77SqBkFY{%lEam1|j`Bg|FQ3WW7+exhM>Y3UU4oqq5C_GUC zU`t9OGy(Y`C=R8IH)TNGs-=gsi`o{8M}{Be0?WZO^{Yl%z}>|57Tv6bIcXnY=`JSe zcOiCAHQc#wXDYE2dMxpl^z{HixC~(Pm=_!*fvp3@EM}O&Kjfr~a9(@EK=+jQ zO&){_Z<7qe?~VgHVb*^x(>~Sh&pbBd*f6Y9A22&Y=hxj|jNAF7+HUI1yS}hC9p!3f z^{!{`MVkB|_j2Hgoplz zgerfu1$e}1h!HqD7bruR}cg zoN2dgB3##e8SORx|TK}cG7%3TOw_n0J>p69Jdwpj8Z(RvH zGG@fVRc|ujp@7veHqY?cqiFOm zjf#{k6Zwm3NQl+yr$V0g0QRS@l$6!duM2E)oU4ER)t zel?b_EQ`&9NU_5v&@~adpn3@{RbJ&|OYw8#4$2#4CG`FROBzWRYE1V-o3{hDzj}+1 zJb}GxsgmV*UpmFhoyT)co>s^mb@!J|N!tBFW*|=45Tn*SL(-afvjbOIN5IM^Arxwz z{)(Z@fj`#0coXxMJ&k^ll&fs;j529LvE9Vl!+Ms7oIN?xanAdqqEgjUs|RS>_> zd~_{XjM7@tQyTmaU6lMgJ5#e}8K^6JCFNr)l{42j=Pb+xRH_0?uJ!%+TTW6}5f8U$ z*^cbJYxX3|30J4F@H_V1;ib>SrkW?e{6`;!G+Si*8*X=L{XC)L4_Ly-S;ANt`HH|l z9~R%+wmG1i(|tyAdS~pV?-Gw212Mt4)ZPAo3 z7F7>((XAI)ipSFttGOBXTzs-_9w*zQul5a^+j?(ww@AQ5*zt;B*9Pu5F;Y(QaN;`~VUn`9zjJs>fiTqUg^ zmpXIH%~2Cx3l|CjXeDPV`n%VDp)wc`3XSh2Cu!(CZx@#tLw_?C0_8D&0W1NQPdvNbf@=R?lWy377y}cB*f|DnXZks`AhSaCBfAsG6BeJj#D3`eDx=g zUh+{>pb~%r^5h3>Nw`wZpv7s+RNa>w?va{mY(;cc7T%d3A@Q@38{)^c#_EkeK3~>r z$DF_WBy7%u4gYN^A4X-NSBA5ViMs8$d-6LRX2QoYC1D{lz7n*}ZYQ$b6g5F4JO$Bj zP>b6c7em;DL>ugAbpS4;H-#KtbA-XaRRJjsm{uVW7H~s#){^K7*TXh$B*E>H!DF1b z%&}|954{^SS{Mg1kzv7eMy(NyS+Y&r3U!}Z6tiw!xzuw$S7f=%YlE1YOr-0dfGIg! z+O@Za^X}M@gN;5h)rtWGT2^hzDPP@xS$df<>+}JcO@N9JNVF))LY{{XRkVv(Lf44i zcUC{~Hsc4rxO|-!-2Uon>iU&`NSt@~{rHq)vsm#i8K(bH`G&Vmy}`v8S&k5wt13(asItm zpo?^Z4dv9m##J#zGxiJgs@IU`SW;6Sq!Jgb00I4M0C#S~{$y=s-|ozf+FMbdD^S32 z`aQ`z*C}Rv;VqR-^zH{kZ8;an4sYgW$A>yW1WrgNEl(?8VnCrOrWx4~{C3L)f{MwJ zDZ>q_ke>4%c9u0(a=|fznV#U&3(lis+=W^&${!1-{N#MoLMM3aI${zDOO+LTgA3}f z1+v(pdr17E=Ls}Ubz?u`%PgQ|_eDV23g zDVW^=pfz*Uqq@$mJpV`mSwWos088_ps9=7A|70zIJ4boOeV-()HQ+Vw!huis%unHn zHJU?BJw(QusFzZ7He=&DM~HhUJML(=*%N&96B5wq;6^rza$Q3dkvMuZf~LqtT__2} zbjDnH8G2Kb5s=@C{CvtHtp5#e^28YLQ-)i)O@ScrHD`_xfN0{pu|kRr$Xl^3%vZa| zQP437#ni0)R#;lDjH?CfwQWV~tbw6Nt})##@LF)6IZaPB<2+wF= zzL0q(OwAIUKc@u*fwPF>W0gIN^*=KEOPHW`{IUIBwr1Bdr3wV}3)-Sk9J%OrKUgBI zaB!jtI~4RBcIhs*Mj*pE=YI7U#B8`q;P>+niJg2xny{0~=X+(#`=snm*C=uS-b3+Y zVPOv4E;rSz=?@TW%;7)xb9lbrR~|9(i~h~GAxc>26QAf^?)SCz*lOq|Q3!VrU|p!9 zd`(iH$-yULBFx9kC>kuI$VW2^{e4q5pP)Z^xryRIB=S=PDs3lA(L3Fv^Ho11?amSo%pr_g7?E8g|(%ySKDh z^{jv-p9f*MbZSXeMm_@k)?|B3O11I6Gj^sQ{0j`HN4AV}G$q>u8V(qT^Ofj#V%b{4 z(_B)M=R^Cm$8W`WXO`lp^Mqn?&XcF;Zp6PkHn$dY5b3*e^pa3{Snv;C`b@CjgLTws zMZA_bz%Ye74WE(oF!vI)s)4eO@PAV*5JvFem!Ub1-K|23`S(SnDAI&xTOG7g88q1Y zl=e~VFQ2PYWP>sKFMa`C3W&Zf}UdcE4-Se4O`Dq9hP7L^$oIB9xQy=wZ=Tu~%A715JMS^=$}dNun|>Vr}9roy3Kl=)r_k^PN8t-Fd%tp#y<4T4fpa*(`THb73b7bfbrv( ztq8C0-!9KoO`1jNTo)7R8u=0uBz}m6J#x$P%6q>q6gS^y&hoL=aUik>?Q^VgG`$y390b0}(vy7zv zCU#CM#_tjwChq@iwXF#K01&2jJiUexGdZE7{qb`zXdy$2ALe>OHyM&3$f)0j^ma>BWfkY_yMcKOk&oIt*bII#pON&a4^fc5wfaRasz zvp%9XMP1Sz!Vn2q{v=g~K3setF3f+pHvH`~bVNLYAV$l5xIn_a_mlXI8AhM^+^9hG9xP-Sn#u+gx z?4^p)qTVP}wl}^>soo%^zObbkShCTV_Zqrf`7}y+OR*U7=CSr}1P;joj}Kj4Y6 zmMPEV|IN_=01P_VMHW}+YOfwb(q0r3T`l$_UAcgMZGwy4BK)SV88_&&3XK(0Vc^== z=l3Ju2(w?0N3q+PpF2@YSGBw)uARTwpl3(^(@w+Gq=CL(h0j}Nt;O4CV$EPaHX0|I zEn+*sDU`H7bRuX#=uj9fP4*ft3spu>n z48ySC_~~kh70ianGjWt)k4;{Z_3(`F`UBI6BJeEe1BL|q;P#kVq3W%_PK^Df6d{h8 z2I4)o0_LhBq^HmBRVi#*h^Gm6_W0)^`422Bl!^u8l+dmp zq6Yez0Oi%%_Os~C$wi4vo#zR5)OZqu)Ji;DIu()=?0aN?J_bCdokon(7%H)pa)VvM zX==p;hK|^Cy`aCUL*+gjqOFBzv&8b$1{aRvgHR?aMLIL!Xz12oi9qvHNc2YMOF%sv zMc;W`pXDo6^vtGHT0p@E$(<)|o!0nVVNC$|tA#Hy5nE7se`=dsmq_c;I#G!7mK0AH zZ{H^{3&maD8Bj=*LYj6BASNPT{URFi!ihC`f#S3`7)@~<*e6#CguhbLpxW3kmQl~& zF!$QcnQTA<4|-~mgN*(jNJeJGra#l6#JC;&td;+B8 zKQB9sDY@=)$^LO%VhE#cjX+zcpvZi3;;6LFGgfcmZ%EpbW<8TkkRgwI6%7CS%{#ul zDbHzhO^Onud<4*QdY_`(PHT_CTwEMAP05-b{F3I;I3uB`X0X1FN;vyFR3^r(xZZnL zqedF$J3W$MP?n&Cl`Ut5Qt*Bopfb|!%J>FqQtC{Q7lwQjLr`(GaZk&25%N3eLsJon z%@6)epp=iA87L9xq37CB^w*~c8pmYQy8hG`FFzZsM@5D(ja4xajQ_0=u03JF5sh=^m1iQIb!6f@xkN7dC1 zkyk*!3it^&P7>S}U9uy7KzwL{oR>|#;bCfoX^W^*Y$1pkfIZ57(Gji!^}WDG)Wh?} za<6*m&9s@$c7YglS2xeNq*XVbvw4AlaZk=M$H#0gw&u{+79N`|>fe zhu^?yn5$Yr?`8AP__++=aRQ61IVl8*_Ur*TiO5!}`(Vg1T(eF8INhZ+{%?Fp6#`7y z5HY}VHCp>$W0o|siGaB1_tgTAn7b8%MnBYnQ^=}vI^scSXE*Ot?v(8j^F`JhlV7|~ z8Aax0u&P;y@T2CycQXx!UoF0fNh3zK@fQQNSM(ShM$V%^c3?$dF*bUl7Xl}e$kWXm z=-xUPQr0)x?RancrNy|adTy)ui$rbuWMWN{VJ~~=)d2k-i!B`xtuakiAe$0&h%Q(?D z@NIA3oYyYbuDiW$lAx%||9K!CP*zqDT7gnB%vHlQmc1+rS8uKPua1+7fFkyAkLOy` zE`Dn`H=<&G`MGSH<~W;X@s3v1T2(Mhed=x+XcxqiK?U`1psrga6yc5q&!<`Q+bQYU zK)xobTW_z#c24JKF{+MF9_GSkzBZoSDR?5!MN~!+ge+VN$RQJfmcOa8MAo*qnwfI5 zM#6jT)PjRk5m}5mVoAjfaf(yyTdX~FTVhHJLI^m6qqLzbsIpt!7}Ew2!*~~~gy~Hn zmJMYb_CD*C%hU^Q)ZA#^N^)MukYaLlWvAeZri^={yFdO)QgqdtewV{5+6G5IOEH&arjnldky$f7jzZdHm7ct9ysb%cz5?D{z0xVU!Aqn3 zln8y!ptm7!Y?mPgGgx_AymEIan~<^f2>6$f7n-sf(cEayv_=&rC7v#pZUUZ|2I(;p zx{Kw*jXVot=6u$qe%by*cJ2j9b81a4M--v6;#cC)c_H-_)m8X)9F4Ym*mdkpNu)@J zvpT&(xLm`HpM#~Pvur+j(I-38`vno95RVsEAyM1${^0iv>cFcws;EyAS%PM5Vj0*y zOD;jERU37nFW$tB+L2DRa{?UmMr?rqyophNd!aS8CDZI_eOW2zx1O+(!B3yfqXNz& zoruQDMTv@bG5CYh_e7tTnAYm^-=S*L+mD>*&z_;M)fKNDh9!hpR0?9;NG9mC^U<_vghV3m-sfLr19xjP_@GWUE%GPc5A z_>k$GjNxfd>ZaXx%+%!6KbTAp*(UTF0PiqtB?LD;RF5XOLStHYK5);i6It@o?%{ZE zWsl~Rmh}RRJou1VjJmzQc4n+!{eC_Z`aVWD=1UUuG9eBWN7>2?wWKGuy>+KNuP;TU zcC|jj(Zlw{X|n^|i_*AIjO;cJTY{gp29jNF%qMDmo^}e&({831FUBuuRxfdGY)D0a zngvbqRO0Vra!Ni%7$VO!S>U5zQBy{|qMxy|2#5Z>#O~kDx34c?mHFnoY6L|h$hKQj zdQ%m=OyE1gjvYry=vZOOM@G8*AaM7s;yj?~`epC0<_sI)EKs@k*QD5O(C(-A^X7d~ z;o-OA!#|UQwQip~ji64RYj7Kpo>gGry1gXB1A&IO()89}F@o);QsW=}qsTbySR%Z+>2su*yqN@U^iS8pGIKC7rflY>SFgg7_c3}^cm1Mz(PjOU zUi{ZezCU!$U&a)O80^`F?S(i)-&u_Rfs#y|QIzuc++3=j)0FAzR4EN(jlwxGs{t zLP+-BdtAit?fdi`_g-O|P3SnAW_pA?rx#<;ppW`OTG4EQw>X+1{u zZ+@*3EAgO1t0V&O>MK@q)=yV=heTi9)!0SXI0=jURWm0kGrJr1I2ey{^X{fZ6JEZ5*urA!khD3lYbK|8}<-nc0^E2A`j-pr>Pa^;C)2<@#gaS=`S-x$tKOEOoPaDV?r?}xO zc*g-?$2s9Na4W`Z$aLrG?UKJu6GRKUo2Q?(6V?Krh8`o-C+zxq3wWsUdg?1j7UGY8 ze{!RQ%ryZ1fJWa+;v=CuvE#72*(H^uDW+=jv$yFTdhjzEtA)}^^Qm9qD}a6x!7=NV zICF`{iE)dl-l>jgx{@U2P7!(53k#!H>fh0e7d2draKrC(OIVA1$ZR1s!+V*)Z2e`4 z#cLCd)^Y1e^kYX01X?>YtaT%fr_^{ibH;bbV>4utMa)X&nM#;)jXed zR3xCmeP8OZ!Jg?sbFQ61d--fwijM`0poPBuDSOb(f~I`5bd%2&2?5Qp3vQp$-}yHL zq=OOIoR@v|*^Pb+$eXmk(&_hqy3sq`)YvDw%mbRsuJD`erV=k$l1ac_Fqo65u$Z{z zi?0)VDBm3~lk<(x)8J@LNkjB~I6fXGg{HhX%F?Ss__&3y_md5$Ijk@nsFbPlM5=V7 z8xo6|h|5J`5Ux_P%D*WifH=}nvtd4wRXuljJg(G@F@>E0T?0|O0f#hTa{csmgi z2LQhEzz5sqA8zdMj3&BeuE2ebl?^$vZLY6R+EraiKe;e+1XIq7cgwgHC4}{dqReIc zlwHXU)Kn%ZNf%vMORK^LT7R`aPDm@s)~L)bSM12q@7oj|b`B+L&$WN+b5dc3xtkHH z)ieRoFr_T`*!$Lp9d)ph;MCRr2rDg=5cs!p18mG$Y$5wA&+PqnOf_OegC5KtQO$C? zF{X;xzc@HERM|sMe>*`j2LIjq5Iif~g^KZK=)uIE&eGio4|=Irrc3VYd70&*Y>2=3 zD%)4LkU;6ir-vpZz5<^~7UOqBGQv2#9t`ghH_(Hh!QSG-RFW_s;vicVjZ;;~pp1ZN ztZv0~I2}i}q;AawW`2f^T1C!`mIhc;K}Y^BPWB`wF!@o(A>w1nvln^>>04|3i8%u; zXQgW<%)~OIr=|{ki58FGB zZ6#Qz_Clxxck`?K)Hi!&(NzE%-~@oqMo*A z<~0bj+Z#f;2a!v%Rhhc~RXCMW@9H9acgAlue$YMrO6%Cy4M$t@GUA-&8;k~D59kL?vl3S$5PiMVRSM*T<<6P*M zC8HL)X9L)NwBEoOztnPpT%4t6leJ&;>+fudOqGlS#mq6s;)~;lKt){HsE|2P0=K%Y*bSrh4B+RMi?UCl3%mB0p3zQPBij5uW zA^)f*iiEMH*Iwg(&!N~F&qb9ax*h$j)J|r?pmsL|EU(78xOm-saL`+>!dv+gjzQvC z@!23ci!$%W@~n5`_{6g}h?QCIl!MUCp&jR>%U35Ja*|}c=Bd2o`I^MDH;x6OqG#tK zA?)>>q430T9#3~A3PE^H00XxEB3h8SQAo$+;nX|QQ-^yH*`2r|d(Ngj(p?Ak>@h6T zb@8JtV2IR&rqk_8p$g?Sj`d|2vzYsz7$*WbJS-+CTE7gK(7MH;t_sQ13R9cqa_9azpI_F~LLo93eO@42aWU6|=l6I}nd={DPRbQQ8EKls{uepoVT9 zl%q1S*13myF3*tcz8>?EooJ^+$$9MczVwVickx$0~v4* zEiLsKD9c`%Ao{JJPOHjeb0X=>Cr+}c-VEWh;GhD@0Bt-Mrxy+X9Mh0DndE@Pt8^#8 z+v~{7>0#rYUUArSq$qY;b2dgAIxRU={v$2yl|on* z^{$K|YlP~%rH}`tj}_Mixd~P!)yJsbO2E-j@du%#-in`iAF-pCO~cA8wIQGBC7R$h z;u&aE!tRb{Mfv_%bt2YN;4nUp#ixv`58I zNaK@atf4xuTt;qE=FoK}y;~6j136V07~D+robrZu2R*7NL;$a`cw&0(2XJXe`tk?4 znNVLop1P_qdQ?uXZ(jM$Mro#;4b4o5+d86Ce*bs-W>DKa?C9xdJ7-su4OC#o=NaMb z%FhNGh&l_iuTH#3#RQa`A>a4?td2%I;n&7a2orhlB8t+Va~7~SFWVZ~yn4Vd6JQVhztdw!#sm&BE z?T$&4*6HHgyz=g7G=>jGjt)5g2_Ix$gYoNb?nUEO%+h<)>L$txv_Ypm(qq5HQnxEz zzH>Y_9t)uBnwND(_k-ChX@6b1@NO|_^f9!wEGw6OnUne;z(=auwGWL;e9;a=VBNY%Hat6^e2TEgvpT3px036cCj(3C(xF%u z_N!!ul~~MA07i~&(vkh@=0;63OW|RBV19DKA7zEfd0^_Px|vkj_s>w(DkM|fLqg<+ zl=GoSnN<$w9Ez%LJo3frtkI!olhVk>}!Ym^!Oe^gYgd8}TZk7)D0J}4i3!Kzk{$%A%i+8F-p zjn`I<=t?xiQm@6HndDjt5ptSyWdZwFFBHi0o`1uw!;*7&_CYMt3gN%{?E+(Me%>IT z^m^IJr2g4mK*854w+En^(S!i)5?Y)e8eJ!UG!nZTwkNz$y!I6^Bmcc{bgYcvmkZTN z8n^>4XwCQJie&j-0gS>7)Ka2X24_-a*KCW@@6)aXjMMi`T&B;)KQtmhLd(cSDam} zuvNBE3c|2q7xLFBiC14Dx1I!bXbGcs@Cyw?xva5~+PuLd^6;6Nimi%c>$Bicb)*2D zv!VXAb#w6%*TxE`mm@sqHh1nzz4H$N`O5)_R()3Y6Im2xRWa781JGxuB^Hz8uPqQ8 zx_!g`Q|Khvt34szUmaZ%Eh_;myk~PiK00aSe;EfbS-H-4YE>80T`ww`O!a}vP5bP+ zV*;Vwe`Jw9fUw-C5MN)1@hgY|G)vHG4|XZ6~3H9m~t7xo(E6anzWgkL%2~ z6q`Eqh)xGRtP+r^gt>c6YW-?&i$gn&m)M+BZSUbgq{%^8 zRdlwHZbF)jIS1+EuaTkNwG_#IYq}n#&cvU^VNO+QamQ|6;Dab6gbEyU!lZ*70B|## zJT|(vs6X^)XB<^!p9oxsk_4Phb%8gb?elX0pUG5rSp^7ExJ0fdc}uA{!Magf15e2< zjlbis{|yfBs*$l5DrIBkR#Gb))rQ0fcL*QExQLNw}FokY>g(sio%rFfEl}vp~j_uehFK zVfn}0;0W9c{zCuh`r&2gO(zNojtT|{CE77YA7?wUnCAfmRF~Di51j4$3x3v>M#$8ZnvykFfNG+Qt7?d3L1HUonKf{4%;l5mX zF?`P8(ue99iXUHh7?5BYlt;%yqx&*qa0O+zWXqvgpg`dTYF)h_6#T2AC8*6fslF|$ zzCh8c#9RdK$T52#%~5o56klqO3*ENtiDh~=;qIIxdr}k{@ZYE$B8bz;a>+%;#fiLS zss#xMjohU-w~CNaCAB>20>M&a?*6hHgQ9sKn^XzC&f!#Kmm8_gjbDFlGWS4Ba~ zl#_1&u|C$e|rL0kiBw5V?osQ7P@%<@;W6FCNIVT%@X?CDwVYuX& zZE+EGU-d6JO!ymApe`Wuo!(Mfg4E2y-YOA_3tD>4tG2iAT=96Wdg-1;sMuLjD+C&C zJ1N(m56ghU1pXl{#{}K?y>d56C%N40#%zF-(@p ze7cql6}*h8@TAo0j^8KXcGE_Z930AnMsCla^vw$Xhz22UtL!x!p48gl#rA<{aAs~$ z@;|Lx2SNlkd&fcouLON%E-HV!Ook;`@2o=r+Te=?aK3RwS zV@%F3PYQ>U^#8(x1kbBl)K33B%LFXDi_zrY+tao_r&vI)09?C)qgdoxAu=k)k8avg z^fsIkCkBQopvUl$*;mRtes7jFgiG>5kX}nFX8S$emxq zH5h~_kMl$Fw#d&Y+xo#s_P?CdQ>ijJyG0xhRUQi(#>LWtotV)f`d|d%_Yt%sJ{5=G zFVVB@iLS}Msc`-V6`KfbYh5w@@wl`UxvbNfpQ>wa9p83^^H?f{%f4o6<}8Dd<#>t7 z7z)^7rnrsoM~$dbEgEX~)V_Y>V&U`$e}2F=aRg#&6c_T0caSr0?VDR^MHr3@?d4aHIzbQ259#tNddmHb$5xrT=rT-dqHe z4nJsUm^8#o21c_4V=gkMIhFp(TBn7?-`ti@5LfRdeI45pqr2}wI;t(9Hc8O)4q8;)GfwIheo7?v9GT{3- zQZ?$;+g6X|ixco#ul?TYhs|TmE|q+%)qMkC8`wk;sn(lY~xRzN-m5#YBxlwfdA~ z8^|NM|2s6j%R~MOu<@`}Uwdk3AMES>&|ig)#W&xV z94qZ%0A_#{(rrmwboNiEI%D1aVuf<+Ecf+ptMZjO+$kBzmi=C2>a7umWCf#^CTaHr zXcTM3e)`rx$R}xE8_m6li+dN{!8fK}6yf1h7Asf(H&rqzH6G`5y3KjY#rT58me6kd zP<$?f0aq?R)R7ScMyw}1Hoy@krTNw9lgHcQr%N%fVh0*9ER&lntrDp)3Clt~asE>U zAI>H&=P$cZuKB(#)JKK(;y7WM0<_2d}mwQcV{~G|3EN5GS zd2`E9Tnc^>zIB3DnydXPSl_nB_+I+~Yl%2=VaR-NKFz2udFXrI3g@<3B3kEd@nAqI zVj{-S$rmv`yLr(z$5Gp;%3mqB%RNd7{xABsGZ-k$4rSV?OxFW$_Cnh+sE|wPP&dhD zx0?BoEC1!6JBG{!#8B8~E$CRk3cZ-&XE2`T`B+8MzLvHhG4A#(PZjkM?Y;{fJ2bf= z#?uU^nZ)zpkDw#6H(6Dg`tg~}>BN|lfX?1-A{lneN^8a$!mQIw(SI>_b_MFYbhYGj zI@n$NjJ|2quRJrz{ydVf-De_HFW;vobuA0jz(bITp555y9ttJ+!E4V$i@xO-bwS2Lexd>JI0}b4XEJNR1kg;ZdnH~Mk^{1Rpr-YhSe7p=%n|L zbTPYo-_jk>EO`@_{CXCsdMtPQ;aWQtJ)Wi4Bnj-(Nku>k>G?1Dejnc0^M%@62Z`_( zYLkXiudwgm=jUjKMx7z8kJ9%tAJMGavCR2ZshvLd)krz%BHN=rG<)-oW=C$q01BXn zWKLNnsDz))OU0YTB6J8otcWV`7SVTlWcV&e=k_;hM-$P)iQ#U{!@%HIQoG?B3;KEQ z>Vt{339};|*=Q?Q-l4+l3_jsDX_%3~C;}cxn3Z^CWD+nzp0>ZwB(TGuVo=tgzGZ3v z`_7=U-`nqc{LWaQl;^g>Bh`+AH74Nan<_>!g9XaxP)+tP_nIZu`w7U6WaQaQ@V-)y zua!@onRpdH;?5VA)X|i@2UxbpOS0&+tHNX+)?&7OoINz&lzA^fWZe=o?C`wt*hQ6h z60J4B$6>T&mb!@IId~`ru@_{ zrgyRsvIq+*jUdL!XUy8ES9tgrr-Iy)i1%nm{TV|YdQsK_NycdaiQs#&E&n8WVwshE5IkPDSd$IB0cSrP%7_AE(ksZJrf3Z6R zSi@J=5ZZ-;o<8y8sZA)Pe~r|U&s!rr`?V`it1SsWk2!ni9V)!9EG8s_oLIw`=BHrg zC5n*Wq-FP~-uqyU)sh&?IhlqXk?f79@X=)g`Dc^VS+&m-%JO}t@&#f1lG=ei^9?7Sgf0r6PZ)|e*}27jubEA9 z9$dT6Jo|A=j{+y{<+Mb8v*FX*5eo~tr90aS@?$vm&rTW)nu>l9oo^1u3YWIT`B9Uq z(@)7VZT?iL$ANlBE3Gng1K$q$?u9m_M#omFl_Ks$*ex=KKh4>B`s1KZ7F(tKXJO*T zU^r6(PQUnaJ%Q#g7*w;zk>#^o*aE(fOsp{CMXXZEpqM+Mu-}KAq%0%0Bdyg0B8*(z zLvo>HgGA8*3j(TvXIBH&}RF4ctcAYT1-3$M$1!PTnKi-tCD43g8T$KsG6eT&u W^Jh$a`eqN3@*9+E3B{nw=>G$2qo~&a delta 247749 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%0D>4=&NyEU%N36+g&AK2K0z)6}LY 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%0D2dT46|?A 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 diff --git a/scripts/render/assets/lifsaver_logo.svg b/scripts/render/assets/lifsaver_logo.svg index 413a06c..a2381df 100644 --- a/scripts/render/assets/lifsaver_logo.svg +++ b/scripts/render/assets/lifsaver_logo.svg @@ -88,21 +88,6 @@ stop-color="#D3451A" id="stop9" /> - - - - - Date: Sat, 18 Jul 2026 12:39:06 +0100 Subject: [PATCH 04/14] update doc --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ecb71b7..1f82b52 100644 --- a/.gitignore +++ b/.gitignore @@ -113,8 +113,7 @@ fastlane/Preview.html fastlane/screenshots/**/*.png fastlane/test_output -# Local Xcode/SwiftPM user state. Package.resolved is committed, so the -# template's blanket ".swiftpm" suggestion is not used as-is. +# Local Xcode/SwiftPM user state. .swiftpm/ DerivedData/ From 832eb3b2182574bae0ac060a54946d76ed435fd4 Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sat, 18 Jul 2026 12:53:12 +0100 Subject: [PATCH 05/14] remove CLI --- .github/workflows/ci.yml | 9 +- .github/workflows/publish.yml | 11 +- Package.resolved | 15 - Package.swift | 14 - README.md | 21 +- Sources/LifsaverApp/EscalatedMount.swift | 59 ++- Sources/LifsaverApp/MountCoordinator.swift | 12 +- .../LifsaverApp/StatusItemController.swift | 9 +- Sources/LifsaverApp/main.swift | 5 + Sources/LifsaverCore/Console.swift | 6 +- Sources/LifsaverCore/DiagnosticsReport.swift | 2 +- Sources/LifsaverCore/Mounter.swift | 2 +- Sources/LifsaverCore/Report.swift | 26 +- Sources/LifsaverCore/RootMountRunner.swift | 55 +++ Sources/LifsaverCore/Scanner.swift | 5 +- Sources/LifsaverCore/StatusMenuModel.swift | 21 +- Sources/LifsaverCore/UpdateChecker.swift | 106 +---- Sources/LifsaverCore/UpgradeCommand.swift | 39 -- Sources/lifsaver/LifsaverCommand.swift | 237 ----------- Tests/LifsaverCLITests/CLISmokeTests.swift | 397 ------------------ Tests/LifsaverCLITests/ReportCLITests.swift | 72 ---- .../DiagnosticsReportTests.swift | 17 +- .../RootMountRunnerTests.swift | 134 ++++++ .../StatusMenuModelTests.swift | 28 +- .../UpdateCheckerTests.swift | 200 ++------- scripts/release/build.sh | 16 +- scripts/release/bundle_app.sh | 11 +- scripts/release/installer-scripts/postinstall | 5 - scripts/release/make_pkg.sh | 3 - .../release/templates/template_lifsaver.rb | 1 - 30 files changed, 324 insertions(+), 1214 deletions(-) delete mode 100644 Package.resolved create mode 100644 Sources/LifsaverCore/RootMountRunner.swift delete mode 100644 Sources/LifsaverCore/UpgradeCommand.swift delete mode 100644 Sources/lifsaver/LifsaverCommand.swift delete mode 100644 Tests/LifsaverCLITests/CLISmokeTests.swift delete mode 100644 Tests/LifsaverCLITests/ReportCLITests.swift create mode 100644 Tests/LifsaverCoreTests/RootMountRunnerTests.swift delete mode 100755 scripts/release/installer-scripts/postinstall diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index deb6cf1..120e290 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -124,7 +124,7 @@ jobs: run: | ./scripts/release/bundle_app.sh plutil -lint dist/Lifsaver.app/Contents/Info.plist - test -x dist/Lifsaver.app/Contents/Helpers/lifsaver + test -x dist/Lifsaver.app/Contents/MacOS/Lifsaver - name: Package installer run: ./scripts/release/make_pkg.sh - name: Upload installer for per-OS install tests @@ -169,16 +169,15 @@ jobs: path: dist - name: Install pkg run: sudo installer -pkg dist/lifsaver_installer_macos.pkg -target / - - name: Verify installed layout, signature, and CLI + - name: Verify installed layout, signature, and version run: | echo "→ $(sw_vers -productVersion) $(uname -m)" test -d /Applications/Lifsaver.app - test -L /usr/local/bin/lifsaver /usr/bin/codesign --verify --strict /Applications/Lifsaver.app VERSION="$(./scripts/version.sh)" - INSTALLED="$(/usr/local/bin/lifsaver --version)" + INSTALLED="$(plutil -extract CFBundleShortVersionString raw /Applications/Lifsaver.app/Contents/Info.plist)" if [ "$INSTALLED" != "$VERSION" ]; then - echo "ERROR: installed CLI reports $INSTALLED, expected $VERSION" >&2 + echo "ERROR: installed app reports $INSTALLED, expected $VERSION" >&2 exit 1 fi - name: Launch app and verify it stays up diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2b87d62..a2a9b96 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -120,15 +120,14 @@ jobs: run: | brew tap lucuma13/dit brew install --cask lucuma13/dit/lifsaver - - name: Smoke test CLI and app bundle + - name: Smoke test env: VERSION: ${{ needs.build-and-upload.outputs.version }} run: | - echo "→ lifsaver --version" - INSTALLED="$(lifsaver --version)" + test -d /Applications/Lifsaver.app + /usr/bin/codesign --verify --strict /Applications/Lifsaver.app + INSTALLED="$(plutil -extract CFBundleShortVersionString raw /Applications/Lifsaver.app/Contents/Info.plist)" if [ "$INSTALLED" != "$VERSION" ]; then - echo "ERROR: installed CLI reports $INSTALLED, expected $VERSION" >&2 + echo "ERROR: installed app reports $INSTALLED, expected $VERSION" >&2 exit 1 fi - test -d /Applications/Lifsaver.app - /usr/bin/codesign --verify --strict /Applications/Lifsaver.app diff --git a/Package.resolved b/Package.resolved deleted file mode 100644 index 9a4da92..0000000 --- a/Package.resolved +++ /dev/null @@ -1,15 +0,0 @@ -{ - "originHash" : "860cf30570b0c9aa59a63ff19048728aa93848b25f008273069bd48ed774b542", - "pins" : [ - { - "identity" : "swift-argument-parser", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-argument-parser", - "state" : { - "revision" : "6a52f3251125d74daf04fcbd5e6f08a75d074382", - "version" : "1.8.2" - } - } - ], - "version" : 3 -} diff --git a/Package.swift b/Package.swift index e496e7a..d6d77c0 100644 --- a/Package.swift +++ b/Package.swift @@ -4,18 +4,8 @@ import PackageDescription let package = Package( name: "lifsaver", platforms: [.macOS(.v13)], - dependencies: [ - .package(url: "https://github.com/apple/swift-argument-parser", from: "1.5.0") - ], targets: [ .target(name: "LifsaverCore"), - .executableTarget( - name: "lifsaver", - dependencies: [ - "LifsaverCore", - .product(name: "ArgumentParser", package: "swift-argument-parser"), - ] - ), .executableTarget( name: "LifsaverApp", dependencies: ["LifsaverCore"] @@ -24,9 +14,5 @@ let package = Package( name: "LifsaverCoreTests", dependencies: ["LifsaverCore"] ), - .testTarget( - name: "LifsaverCLITests", - dependencies: ["lifsaver"] - ), ] ) diff --git a/README.md b/README.md index be1c302..8d99d90 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ -`lifsaver` addresses a macOS bug on LIFS (Live Image File System) which prevents multiple cards from mounting when they have the same name (e.g. "Untitled"). It lives in your menu bar and watches for cards that appear but never mount, when that happens you can force-mount the stalled card with two clicks. Please note that whereas this utility has been fully tested, you should use it at your own risk. +`lifsaver` addresses a macOS bug on LIFS (Live Image File System) which prevents multiple cards from mounting when they have the same name (e.g. "Untitled"). It watches for cards that appear but never mount, and let's you force mount them with two clicks. Please note that whereas this utility has been fully tested, you should use it at your own risk.
@@ -22,26 +22,9 @@ brew install --cask lucuma13/dit/lifsaver The installer is not notarized – macOS will warn on first open: right-click the .pkg → Open, or allow it under System Settings → Privacy & Security. -### 📖 Usage - -**Menu bar app**. The app watches disk activity and flags any volume that appeared but never mounted: - -- The app icon turns orange and a *"Stalled volume detected"* notification appears. Click it, enter your administrator password in the standard macOS dialog, and the cards appear in Finder. -- The menu shows the same state at any time: *"Mount 2 stalled volumes"* when cards are stuck, *"No stalled volumes detected"* otherwise. - -**CLI** — same engine, same safety interlocks: - -```bash -lifsaver # scan (read-only), confirm, then mount via sudo -lifsaver --verbose # show the full mount sequence and raw mount errors -``` - ### 🐞 Reporting bugs -If `lifsaver` misses a stalled card or fails to mount one, please send a diagnostic report: - -- **Menu bar app** — choose *Save Diagnostic Report…* from the menu, optionally describe what happened, save the file, then click *Email Report* and send it to me (or open a [GitHub issue](https://github.com/lucuma13/lifsaver/issues/new)). -- **CLI** — run `lifsaver report`; it saves the report to your `~/Downloads` folder, then email it to me (or open a [GitHub issue](https://github.com/lucuma13/lifsaver/issues/new)). +If the app misses a stalled card or fails to mount it, please send a diagnostic report: choose *Send Diagnostic Report* from the menu, optionally describe what happened, save the file, then click *Email Report* and send it to me (or open a [GitHub issue](https://github.com/lucuma13/lifsaver/issues/new)). ### ⚠️ Disclaimer diff --git a/Sources/LifsaverApp/EscalatedMount.swift b/Sources/LifsaverApp/EscalatedMount.swift index 067f60c..281189d 100644 --- a/Sources/LifsaverApp/EscalatedMount.swift +++ b/Sources/LifsaverApp/EscalatedMount.swift @@ -1,8 +1,11 @@ import Foundation import LifsaverCore +import os -/// Runs the bundled CLI as root through the standard macOS administrator -/// password dialog (`do shell script … with administrator privileges`). +/// Re-runs the app's own binary as root through the standard macOS +/// administrator password dialog (`do shell script … with administrator +/// privileges`). The helper invocation (marked by `RootMountRunner.helperFlag`) +/// scans and mounts as root, reporting back as JSON on stdout. /// /// `do shell script` swallows the inner command's exit status (a nonzero exit /// raises an AppleScript error instead), so the inner shell always exits 0 and @@ -13,13 +16,30 @@ enum EscalatedMount { /// suffix: `execution error: User canceled. (-128)`. private static let userCancelledSuffix = "(-128)" + /// When argv carries the helper flag, this process was launched by `run()` + /// as the root helper: execute the mount sequence and exit. Called from + /// main.swift before any AppKit setup; never returns in that case. + static func exitIfHelperInvocation() { + guard CommandLine.arguments.contains(RootMountRunner.helperFlag) else { return } + let status = OSAllocatedUnfairLock(initialState: Int32(1)) + let finished = DispatchSemaphore(value: 0) + Task.detached { + let result = await RootMountRunner.run() + status.withLock { $0 = result } + finished.signal() + } + finished.wait() + exit(status.withLock { $0 }) + } + static func run(runner: any ProcessRunning = DefaultProcessRunner()) async -> EscalatedMountOutcome { - guard let cliPath = locateCLI() else { return .cliNotFound } + let helperPath = Bundle.main.executablePath ?? CommandLine.arguments[0] // Quote for the shell, then escape the whole line for the AppleScript // string literal (backslashes first, then double quotes). - let shellQuotedPath = "'" + cliPath.replacingOccurrences(of: "'", with: "'\\''") + "'" - let innerCommand = "\(shellQuotedPath) --json 2>/dev/null; printf '\\n\(sentinel)%d' \"$?\"" + let shellQuotedPath = "'" + helperPath.replacingOccurrences(of: "'", with: "'\\''") + "'" + let innerCommand = + "\(shellQuotedPath) \(RootMountRunner.helperFlag) 2>/dev/null; printf '\\n\(sentinel)%d' \"$?\"" let appleScriptBody = innerCommand .replacingOccurrences(of: "\\", with: "\\\\") @@ -49,40 +69,19 @@ enum EscalatedMount { private static func parse(stdout: String) -> EscalatedMountOutcome { guard let sentinelRange = stdout.range(of: sentinel, options: .backwards) else { - return .error("missing exit sentinel in CLI output") + return .error("missing exit sentinel in helper output") } let exitText = stdout[sentinelRange.upperBound...].trimmingCharacters(in: .whitespacesAndNewlines) let payload = String(stdout[.. String? { - let executable = URL(fileURLWithPath: Bundle.main.executablePath ?? CommandLine.arguments[0]) - let candidates = [ - executable - .deletingLastPathComponent() // Contents/MacOS - .deletingLastPathComponent() // Contents - .appendingPathComponent("Helpers/lifsaver"), - executable - .deletingLastPathComponent() - .appendingPathComponent("lifsaver"), - ] - for candidate in candidates where FileManager.default.isExecutableFile(atPath: candidate.path) { - return candidate.path - } - return nil + return .report(report.results) } } diff --git a/Sources/LifsaverApp/MountCoordinator.swift b/Sources/LifsaverApp/MountCoordinator.swift index 129c085..bf019a5 100644 --- a/Sources/LifsaverApp/MountCoordinator.swift +++ b/Sources/LifsaverApp/MountCoordinator.swift @@ -5,12 +5,12 @@ import LifsaverCore /// /// `diskutil mount` mounts external removable media as the logged-in user, so /// the first pass runs in-process with no privileges and no prompt. Only if it -/// leaves a volume unmounted — the raw `/sbin/mount_*` fallback needs root — is -/// the bundled CLI re-run under the admin dialog, which rescans as root and -/// picks up whatever is left. +/// leaves a volume unmounted — the raw `/sbin/mount_*` fallback needs root — +/// does the app re-run its own binary under the admin dialog, which rescans as +/// root and picks up whatever is left. enum MountCoordinator { struct Outcome: Sendable { - var unprivileged: CLIReport.Counts + var unprivileged: MountReport.Counts /// nil when the first pass left nothing for root to do — the case where /// the user is never asked for a password at all. var escalated: EscalatedMountOutcome? @@ -35,9 +35,9 @@ enum MountCoordinator { /// root", not "impossible". private static func mountUnprivileged( _ targets: [String], scanner: DiskScanner - ) async -> CLIReport.Counts { + ) async -> MountReport.Counts { let mounter = Mounter(scanner: scanner, allowRawFallback: false) - var counts = CLIReport.Counts() + var counts = MountReport.Counts() for devId in targets { switch await mounter.execute(devId) { case .ok: diff --git a/Sources/LifsaverApp/StatusItemController.swift b/Sources/LifsaverApp/StatusItemController.swift index ac9368c..8128274 100644 --- a/Sources/LifsaverApp/StatusItemController.swift +++ b/Sources/LifsaverApp/StatusItemController.swift @@ -28,11 +28,7 @@ final class StatusItemController: NSObject, NSMenuDelegate { private let updateChecker = UpdateChecker( package: "lifsaver", repo: "lucuma13/lifsaver", - currentVersion: lifsaverVersion, - upgradeCommand: lifsaverUpgradeCommand(), - // The app has no meaningful tty; the checker is used only as a data - // source for the "Update available" menu item. - stderrIsInteractive: { true } + currentVersion: lifsaverVersion ) /// Invalidates in-flight scans when a newer one starts. @@ -314,7 +310,8 @@ final class StatusItemController: NSObject, NSMenuDelegate { } /// Downloads the latest installer directly rather than sending the user to - /// the releases page. The asset name is frozen and matches the CLI's hint. + /// the releases page. The asset name is frozen — already-shipped versions + /// point at it. @objc private func downloadLatestInstaller() { let url = URL( string: diff --git a/Sources/LifsaverApp/main.swift b/Sources/LifsaverApp/main.swift index ec6fa95..0dfc82b 100644 --- a/Sources/LifsaverApp/main.swift +++ b/Sources/LifsaverApp/main.swift @@ -1,5 +1,10 @@ import AppKit +// When relaunched under the admin password dialog this process is the root +// mount helper, not the app: run the mount sequence and exit before any +// AppKit setup. +EscalatedMount.exitIfHelperInvocation() + let app = NSApplication.shared let delegate = AppDelegate() app.delegate = delegate diff --git a/Sources/LifsaverCore/Console.swift b/Sources/LifsaverCore/Console.swift index 1916bb1..662bb35 100644 --- a/Sources/LifsaverCore/Console.swift +++ b/Sources/LifsaverCore/Console.swift @@ -1,7 +1,9 @@ import Foundation -/// Injectable output sink so callers (CLI, app, tests) decide where user-facing -/// text lands. Mirrors stdout/stderr by default. +/// Injectable output sink so callers decide where diagnostic text lands: the +/// app routes it to its log, diagnostic reports capture it, and the root +/// helper sends it to stderr. `.standard` mirrors stdout/stderr for tests and +/// bare `swift run` development. public struct Console: Sendable { public var out: @Sendable (String) -> Void public var err: @Sendable (String) -> Void diff --git a/Sources/LifsaverCore/DiagnosticsReport.swift b/Sources/LifsaverCore/DiagnosticsReport.swift index 4085fbc..8f83bde 100644 --- a/Sources/LifsaverCore/DiagnosticsReport.swift +++ b/Sources/LifsaverCore/DiagnosticsReport.swift @@ -76,7 +76,7 @@ public struct DiagnosticsReporter: Sendable { # lifsaver diagnostic report - generated: \(ISO8601DateFormatter().string(from: Date())) - - version: \(lifsaverVersion) (\(lifsaverInstallChannel())) + - version: \(lifsaverVersion) - macOS: \(ProcessInfo.processInfo.operatingSystemVersionString) - architecture: \(buildArchitecture) diff --git a/Sources/LifsaverCore/Mounter.swift b/Sources/LifsaverCore/Mounter.swift index f2738ec..dade7ac 100644 --- a/Sources/LifsaverCore/Mounter.swift +++ b/Sources/LifsaverCore/Mounter.swift @@ -79,7 +79,7 @@ public struct Mounter: Sendable { // Never fight a repair in progress — wait for macOS to finish or bail out. if await scanner.isFsckActive(devId) { console.out(" SKIPPED — macOS is running a consistency check (fsck) on /dev/\(devId).") - console.out(" Let it finish and re-run; mounting mid-check risks corrupting the card.") + console.out(" Let it finish and mount again from the menu; mounting mid-check risks corrupting the card.") return .skip } diff --git a/Sources/LifsaverCore/Report.swift b/Sources/LifsaverCore/Report.swift index ff985dd..a7a9e09 100644 --- a/Sources/LifsaverCore/Report.swift +++ b/Sources/LifsaverCore/Report.swift @@ -1,16 +1,10 @@ -/// Wire format of the CLI's `--json` output, shared with the menu bar app so -/// both ends agree on the schema by construction. +/// Wire format the escalated helper prints on stdout, shared with the menu +/// bar app so both ends agree on the schema by construction. /// -/// Encoded with sorted keys and nil fields omitted: +/// Encoded with sorted keys: /// -/// {"action":"scan","targets":["disk4s1"]} -/// {"action":"mount","mounted":[…],"results":{"fail":0,"ok":1,"skip":0},"targets":["disk4s1"]} -public struct CLIReport: Codable, Sendable, Equatable { - public enum Action: String, Codable, Sendable { - case scan - case mount - } - +/// {"mounted":[…],"results":{"fail":0,"ok":1,"skip":0},"targets":["disk4s1"]} +public struct MountReport: Codable, Sendable, Equatable { public struct Counts: Codable, Sendable, Equatable { public var ok: Int public var fail: Int @@ -33,15 +27,11 @@ public struct CLIReport: Codable, Sendable, Equatable { } } - public var action: Action public var targets: [String] - /// Present for `action == .mount` only. - public var results: Counts? - /// Present for `action == .mount` only. - public var mounted: [MountedVolume]? + public var results: Counts + public var mounted: [MountedVolume] - public init(action: Action, targets: [String], results: Counts? = nil, mounted: [MountedVolume]? = nil) { - self.action = action + public init(targets: [String], results: Counts = .init(), mounted: [MountedVolume] = []) { self.targets = targets self.results = results self.mounted = mounted diff --git a/Sources/LifsaverCore/RootMountRunner.swift b/Sources/LifsaverCore/RootMountRunner.swift new file mode 100644 index 0000000..96b0e35 --- /dev/null +++ b/Sources/LifsaverCore/RootMountRunner.swift @@ -0,0 +1,55 @@ +import Foundation + +/// Root side of the app's escalated mount: the menu bar app re-runs its own +/// binary under the administrator password dialog with `helperFlag`, and this +/// scans and mounts everything found, printing a `MountReport` JSON document +/// on stdout for the app to parse. +public enum RootMountRunner { + /// Hidden argv flag marking an invocation as the escalated helper rather + /// than the menu bar app. Frozen: an updated app may invoke a not yet + /// restarted older binary's flag and vice versa. + public static let helperFlag = "--escalated-mount" + + /// Scan, mount every target, and emit the report. Stdout carries only the + /// JSON document; diagnostics go to the console (stderr by default, which + /// the invoking app discards). + public static func run( + runner: any ProcessRunning = DefaultProcessRunner(), + mountTable: any MountTableReading = LiveMountTable(), + fileOps: any FileOperating = DefaultFileOperations(), + console: Console = Console(out: Console.standard.err, err: Console.standard.err), + emit: (String) -> Void = { print($0) } + ) async -> Int32 { + let scanner = DiskScanner(runner: runner, mountTable: mountTable, console: console) + + let targets: [String] + do { + targets = try await scanner.scanTargets() + } catch { + console.err("CRITICAL: \(error)") + return 1 + } + + var results = MountReport.Counts() + var mounted: [MountReport.MountedVolume] = [] + let mounter = Mounter(scanner: scanner, fileOps: fileOps) + for devId in targets { + switch await mounter.execute(devId) { + case .ok: + results.ok += 1 + mounted.append(.init(device: devId, mountPoint: scanner.mountPoint(of: devId))) + case .fail: + results.fail += 1 + case .skip: + results.skip += 1 + } + } + + let encoder = JSONEncoder() + encoder.outputFormatting = [.sortedKeys] + if let data = try? encoder.encode(MountReport(targets: targets, results: results, mounted: mounted)) { + emit(String(decoding: data, as: UTF8.self)) + } + return results.fail > 0 ? 1 : 0 + } +} diff --git a/Sources/LifsaverCore/Scanner.swift b/Sources/LifsaverCore/Scanner.swift index 3779a46..77aa6e7 100644 --- a/Sources/LifsaverCore/Scanner.swift +++ b/Sources/LifsaverCore/Scanner.swift @@ -61,7 +61,7 @@ public struct DiskScanner: Sendable { public init( runner: any ProcessRunning, mountTable: any MountTableReading = LiveMountTable(), - console: Console = .standard, + console: Console, verbose: Bool = false ) { self.runner = runner @@ -236,8 +236,7 @@ public struct DiskScanner: Sendable { } /// Content gate for a single partition, with a logged reason for every - /// rejection so `--verbose` runs and diagnostic reports can replay the - /// decision. + /// rejection so diagnostic reports can replay the decision. private func isCandidatePartition(_ partition: [String: Any]) -> Bool { let contentType = partition["Content"] as? String ?? "" let devId = partition["DeviceIdentifier"] as? String ?? "" diff --git a/Sources/LifsaverCore/StatusMenuModel.swift b/Sources/LifsaverCore/StatusMenuModel.swift index e30a6f9..5401e4f 100644 --- a/Sources/LifsaverCore/StatusMenuModel.swift +++ b/Sources/LifsaverCore/StatusMenuModel.swift @@ -1,9 +1,8 @@ -/// Result of the menu bar app's escalated CLI mount, decoupled from the +/// Result of the menu bar app's escalated mount pass, decoupled from the /// escalation mechanism so presentation logic on top of it is testable here. public enum EscalatedMountOutcome: Equatable, Sendable { - case report(CLIReport.Counts) + case report(MountReport.Counts) case cancelled - case cliNotFound case error(String) } @@ -95,7 +94,7 @@ public enum StatusMenuModel { case .scanning: entries.append(.disabled("Scanning…")) case .failed: - entries.append(.disabled("Scan failed — try `lifsaver --verbose` in Terminal")) + entries.append(.disabled("Scan failed")) case .results(let targets) where targets.isEmpty: entries.append(.disabled("No stalled volumes detected")) case .results(let targets): @@ -141,8 +140,6 @@ public enum StatusMenuModel { switch outcome { case .cancelled: return "mount attempt cancelled at the password dialog" - case .cliNotFound: - return "mount attempt failed: bundled CLI missing" case .error(let message): return "mount attempt failed: \(message)" case .report(let counts): @@ -153,7 +150,7 @@ public enum StatusMenuModel { /// One line for the diagnostic report's event log, recording what the /// unprivileged first pass managed on its own. `fail` here is not a real /// failure — those volumes go on to the escalated pass. - public static func unprivilegedMountEventLine(for counts: CLIReport.Counts) -> String { + public static func unprivilegedMountEventLine(for counts: MountReport.Counts) -> String { "unprivileged mount pass: \(counts.ok) mounted, \(counts.fail) need elevation, \(counts.skip) skipped" } @@ -167,7 +164,7 @@ public enum StatusMenuModel { /// /// `escalated` is nil when the first pass left nothing for root to do. public static func combinedOutcome( - unprivileged: CLIReport.Counts, + unprivileged: MountReport.Counts, escalated: EscalatedMountOutcome? ) -> EscalatedMountOutcome { guard let escalated else { return .report(unprivileged) } @@ -179,7 +176,7 @@ public enum StatusMenuModel { // it; whatever mounted before the prompt still counts. guard unprivileged.ok > 0 else { return .cancelled } return .report(.init(ok: unprivileged.ok)) - case .cliNotFound, .error: + case .error: // The escalation never ran, so the first pass's failures stand. guard unprivileged.ok > 0 else { return escalated } return .report(.init(ok: unprivileged.ok, fail: unprivileged.fail)) @@ -192,11 +189,9 @@ public enum StatusMenuModel { switch outcome { case .cancelled: return nil - case .cliNotFound: - return "Bundled CLI is missing — please reinstall the app." case .report(let counts): if counts.fail > 0 { - return "Mount failed for \(counts.fail) volume(s) — try `lifsaver --verbose` in Terminal." + return "Mount failed" } if counts.ok > 0 { let noun = counts.ok == 1 ? "volume" : "volumes" @@ -204,7 +199,7 @@ public enum StatusMenuModel { } return "Nothing mounted — volumes were skipped (already mounted or being checked)." case .error: - return "Mount failed — try `lifsaver --verbose` in Terminal." + return "Mount failed" } } } diff --git a/Sources/LifsaverCore/UpdateChecker.swift b/Sources/LifsaverCore/UpdateChecker.swift index 72a2007..bf1917d 100644 --- a/Sources/LifsaverCore/UpdateChecker.swift +++ b/Sources/LifsaverCore/UpdateChecker.swift @@ -3,22 +3,14 @@ import os // Portable GitHub-releases update checker. // -// Checks the repository's latest release for a newer version and prints an -// upgrade hint to stderr: -// -// Update available! Run: brew upgrade --cask lifsaver +// Checks the repository's latest release for a newer version and surfaces it +// through knownNewerVersion() (the app's "Update to version …" menu item). // // Behaviour: -// - never crashes or slows down the host CLI: every failure is silent, -// and the network fetch runs in a background task that notify() waits -// on only briefly +// - never crashes or slows down the host process: every failure is silent, +// and the network fetch runs in a background task // - at most one API request per `checkInterval` (result cached // private-to-the-user in ~/Library/Caches/) -// - `{latest}` in `upgradeCommand` is replaced with the newest known -// version when the hint is printed (for direct download links) -// - hints only appear on interactive runs (stderr is a tty) -// - colour follows the NO_COLOR / FORCE_COLOR conventions (no-color.org) -// - opt out with LIFSAVER_NO_UPDATE_CHECK=1, NO_UPDATE_CHECK=1, or in CI // --------------------------------------------------------------------------- // Version comparison @@ -178,36 +170,23 @@ public final class UpdateChecker: Sendable { let package: String let repo: String let currentVersion: String - let upgradeCommand: String let checkInterval: TimeInterval let cacheFile: URL let fetcher: any LatestReleaseFetching - let environment: [String: String] - let stderrIsInteractive: @Sendable () -> Bool - let emit: @Sendable (String) -> Void private let latestBox = OSAllocatedUnfairLock(initialState: nil) - /// Finishes when the check settles (fetch done, cache hit, or disabled), - /// so notify() can wait for an in-flight fetch with a hard cap. - private let fetchSettled: AsyncStream - private let fetchSettledContinuation: AsyncStream.Continuation public init( package: String, repo: String, currentVersion: String, - upgradeCommand: String, checkInterval: TimeInterval = 24 * 60 * 60, cacheDirectory: URL? = nil, - fetcher: any LatestReleaseFetching = GitHubReleaseFetcher(), - environment: [String: String] = ProcessInfo.processInfo.environment, - stderrIsInteractive: @escaping @Sendable () -> Bool = { isatty(STDERR_FILENO) != 0 }, - emit: (@Sendable (String) -> Void)? = nil + fetcher: any LatestReleaseFetching = GitHubReleaseFetcher() ) { self.package = package self.repo = repo self.currentVersion = currentVersion - self.upgradeCommand = upgradeCommand self.checkInterval = checkInterval let cacheBase = cacheDirectory @@ -216,27 +195,21 @@ public final class UpdateChecker: Sendable { .appendingPathComponent(package) cacheFile = cacheBase.appendingPathComponent("update-check.json") self.fetcher = fetcher - self.environment = environment - self.stderrIsInteractive = stderrIsInteractive - self.emit = emit ?? { FileHandle.standardError.write(Data(($0 + "\n").utf8)) } - (fetchSettled, fetchSettledContinuation) = AsyncStream.makeStream(of: Void.self) } // --- lifecycle --------------------------------------------------------- - /// Begin the check. Instant: either reads a fresh cache or forks a fetch. - public func start() { - guard enabled() else { - fetchSettledContinuation.finish() - return - } + /// Begin the check. Instant: either reads a fresh cache or forks a fetch, + /// returning the fetch task so tests can await it landing. + @discardableResult + public func start() -> Task? { + // Dev build / unknown version: cannot compare, stay quiet. + guard SemanticVersion(currentVersion) != nil else { return nil } if let cached = readCache() { latestBox.withLock { $0 = cached } - fetchSettledContinuation.finish() - return + return nil } - Task(priority: .utility) { [self] in - defer { fetchSettledContinuation.finish() } + return Task(priority: .utility) { [self] in guard let tag = await fetcher.fetchLatestTag( repo: repo, @@ -250,35 +223,6 @@ public final class UpdateChecker: Sendable { } } - /// Print the upgrade hint to stderr if a newer release is known. - /// - /// Waits at most `timeout` seconds for an in-flight fetch — long enough - /// for a warm connection, short enough to be imperceptible. A fetch that - /// misses the window is simply not reported this run. - public func notify(timeout: TimeInterval = 0.25) async { - // Race the settle signal against a deadline; both branches respond - // to cancellation, so the group ends as soon as either finishes. - await withTaskGroup(of: Void.self) { group in - group.addTask { [fetchSettled] in - for await _ in fetchSettled {} - } - group.addTask { - try? await Task.sleep(nanoseconds: UInt64(timeout * 1_000_000_000)) - } - await group.next() - group.cancelAll() - } - - guard let known = latestBox.withLock({ $0 }), isNewer(latest: known, current: currentVersion) else { return } - let command = upgradeCommand.replacingOccurrences(of: "{latest}", with: known) - if stderrSupportsColor() { - // BOLD stacks on ORANGE, so the command renders bold orange. - emit("\u{1B}[38;5;208mUpdate available! Run: \u{1B}[1m\(command)\u{1B}[0m") - } else { - emit("Update available! Run: \(command)") - } - } - /// The newest known release version, from cache or a finished fetch — /// nil when up to date or unknown. For GUI surfaces (menu items). public func knownNewerVersion() -> String? { @@ -288,8 +232,8 @@ public final class UpdateChecker: Sendable { return known } - /// Force a fresh check now, ignoring the cache and the interactive/opt-out - /// gates that only govern the passive CLI hint — the user asked for this. + /// Force a fresh check now, ignoring the cache and the version gate that + /// only governs the passive launch check — the user asked for this. /// Refreshes the known version and cache; the result is then reflected by /// `knownNewerVersion()`. For the GUI "Check for Updates" menu action. public func checkNow() async { @@ -307,26 +251,6 @@ public final class UpdateChecker: Sendable { // --- internals --------------------------------------------------------- - func enabled() -> Bool { - let prefix = package.uppercased().map { $0.isLetter || $0.isNumber ? $0 : "_" } - let optOuts = ["\(String(prefix))_NO_UPDATE_CHECK", "NO_UPDATE_CHECK", "CI"] - // Any non-empty value opts out — including "0" and "false" — matching - // how CI-style flags are conventionally treated. - if optOuts.contains(where: { !(environment[$0] ?? "").isEmpty }) { - return false - } - if SemanticVersion(currentVersion) == nil { // dev build / unknown version - return false - } - return stderrIsInteractive() - } - - func stderrSupportsColor() -> Bool { - if !(environment["NO_COLOR"] ?? "").isEmpty { return false } - if !(environment["FORCE_COLOR"] ?? "").isEmpty { return true } - return stderrIsInteractive() - } - func readCache() -> String? { guard let data = try? Data(contentsOf: cacheFile), diff --git a/Sources/LifsaverCore/UpgradeCommand.swift b/Sources/LifsaverCore/UpgradeCommand.swift deleted file mode 100644 index a62f39f..0000000 --- a/Sources/LifsaverCore/UpgradeCommand.swift +++ /dev/null @@ -1,39 +0,0 @@ -import Foundation - -/// Best-effort guess at the upgrade command for this installation. -/// -/// lifsaver ships through two channels that land identical files in -/// /Applications, but only the Homebrew cask leaves a Caskroom metadata -/// directory behind — its presence is what tells the channels apart. -/// A .pkg install has no package manager to invoke, so the hint downloads -/// the new installer directly; UpdateChecker fills in `{latest}` with the -/// release version once it is known. -/// True only when `path` is an existing *directory*: a plain file sitting at a -/// Caskroom path must not be read as a cask install. -public func directoryExistsOnDisk(_ path: String) -> Bool { - var isDirectory: ObjCBool = false - return FileManager.default.fileExists(atPath: path, isDirectory: &isDirectory) - && isDirectory.boolValue -} - -private let caskrooms = [ - "/opt/homebrew/Caskroom/lifsaver", // Apple silicon prefix - "/usr/local/Caskroom/lifsaver", // Intel prefix -] - -public func lifsaverUpgradeCommand( - directoryExists: (String) -> Bool = directoryExistsOnDisk -) -> String { - if caskrooms.contains(where: directoryExists) { - return "brew upgrade --cask lifsaver" - } - return "open https://github.com/lucuma13/lifsaver/releases/download/v{latest}/lifsaver_installer_macos.pkg" -} - -/// Human-readable install channel for diagnostic reports, from the same -/// Caskroom signal the upgrade hint uses. -public func lifsaverInstallChannel( - directoryExists: (String) -> Bool = directoryExistsOnDisk -) -> String { - caskrooms.contains(where: directoryExists) ? "Homebrew cask" : "installer package or local build" -} diff --git a/Sources/lifsaver/LifsaverCommand.swift b/Sources/lifsaver/LifsaverCommand.swift deleted file mode 100644 index 38408cd..0000000 --- a/Sources/lifsaver/LifsaverCommand.swift +++ /dev/null @@ -1,237 +0,0 @@ -import ArgumentParser -import Foundation -import LifsaverCore - -/// Force-mount external camera data volumes stuck in macOS Disk Utility limbo. -/// Bypasses automated daemon naming race conditions. -/// -/// macOS Tahoe / LIFS compatibility: prefers `diskutil mount` over raw mount -/// binaries, which are increasingly sandbox-restricted in Tahoe's security model. -/// -/// Usage: -/// lifsaver # scan (read-only), confirm, then mount via sudo -@main -struct LifsaverCommand: AsyncParsableCommand { - static let configuration = CommandConfiguration( - commandName: "lifsaver", - abstract: "Force-mount stalled 'Untitled' volumes on macOS.", - version: lifsaverVersion, - subcommands: [ReportCommand.self] - ) - - @Flag(help: "Show the full mount sequence and raw stderr from mount commands.") - var verbose = false - - @Flag(help: .hidden) // machine-readable output on stdout (used by the menu bar app) - var json = false - - mutating func run() async throws { - let checker = UpdateChecker( - package: "lifsaver", - repo: "lucuma13/lifsaver", - currentVersion: lifsaverVersion, - upgradeCommand: lifsaverUpgradeCommand() - ) - checker.start() - let status = await CLIMain.run(verbose: verbose, json: json) - await checker.notify() - if status != 0 { - throw ExitCode(status) - } - } -} - -/// `lifsaver report` — save a diagnostic report for filing a bug. Read-only -/// and root-free; writes the report to ~/Downloads. -struct ReportCommand: AsyncParsableCommand { - static let configuration = CommandConfiguration( - commandName: "report", - abstract: "Save a diagnostic report (read-only) to ~/Downloads to attach to a bug report." - ) - - mutating func run() async throws { - let status = await ReportCLI.run() - if status != 0 { - throw ExitCode(status) - } - } -} - -enum ReportCLI { - static func run( - runner: any ProcessRunning = DefaultProcessRunner(), - mountTable: any MountTableReading = LiveMountTable(), - directory: URL = FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent("Downloads"), - write: (String, URL) throws -> Void = { try $0.write(to: $1, atomically: true, encoding: .utf8) }, - emit: (String) -> Void = { print($0) }, - emitError: (String) -> Void = { Console.standard.err($0) } - ) async -> Int32 { - let reporter = DiagnosticsReporter(runner: runner, mountTable: mountTable) - let report = await reporter.generate() - let url = directory.appendingPathComponent(DiagnosticsReporter.suggestedFilename()) - do { - try write(report, url) - } catch { - emitError("Could not save the diagnostic report: \(error)") - return 1 - } - emit("Diagnostic report exported to \(url.path). Please email it to \(lifsaverSupportEmail).") - return 0 - } -} - -enum CLIMain { - static func run( - verbose: Bool, - json: Bool, - runner: any ProcessRunning = DefaultProcessRunner(), - mountTable: any MountTableReading = LiveMountTable(), - console explicitConsole: Console? = nil, - fileOps: any FileOperating = DefaultFileOperations(), - uid: () -> uid_t = { getuid() }, - emit: (String) -> Void = { print($0) }, - escalate: () -> Int32 = { escalateViaSudo() } - ) async -> Int32 { - // In JSON mode stdout carries only the JSON document; every human-facing - // line is diverted to stderr. - let console = - explicitConsole - ?? (json - ? Console(out: Console.standard.err, err: Console.standard.err) - : .standard) - let scanner = DiskScanner(runner: runner, mountTable: mountTable, console: console, verbose: verbose) - - // Running `sudo lifsaver` directly skips the confirmation prompt — the - // sudo re-exec in the pre-flight would otherwise ask twice. - if uid() != 0 { - return await preflight(scanner: scanner, json: json, emit: emit, escalate: escalate) - } - return await mountSequence(mounter: Mounter(scanner: scanner, fileOps: fileOps), json: json, emit: emit) - } - - /// Non-root pre-flight: scanning is read-only, so find the targets first and - /// describe them before escalating. sudo's own password prompt acts as the - /// confirmation — Ctrl+C or a wrong password there aborts with nothing mounted. - private static func preflight( - scanner: DiskScanner, json: Bool, - emit: (String) -> Void, escalate: () -> Int32 - ) async -> Int32 { - let targets: [String] - do { - targets = try await scanner.scanTargets() - } catch { - scanner.console.err("CRITICAL: \(error)") - return 1 - } - - if json { - // Read-only JSON scan: report targets and stop — never escalate - // from JSON mode; the caller decides what to do next. - emitJSON(CLIReport(action: .scan, targets: targets), emit: emit) - return 0 - } - - guard !targets.isEmpty else { - scanner.console.out("No stalled or unmounted camera data volumes detected.") - return 0 - } - let noun = targets.count == 1 ? "volume" : "volumes" - scanner.console.out( - "Would mount \(targets.count) stalled \(noun). If you want to continue, " - + "please enter your password below (otherwise Ctrl+C to abort, or quit this window):" - ) - return escalate() - } - - /// Root path: scan again with fresh eyes, then mount everything found. - private static func mountSequence( - mounter: Mounter, json: Bool, emit: (String) -> Void - ) async -> Int32 { - let scanner = mounter.scanner - let console = scanner.console - let verbose = scanner.verbose - - if verbose { - console.out(separatorLine) - console.out("Camera volume mount sequence") - console.out(separatorLine) - } - - let targets: [String] - do { - targets = try await scanner.scanTargets() - } catch { - console.err("CRITICAL: \(error)") - return 1 - } - - guard !targets.isEmpty else { - if json { - emitJSON(CLIReport(action: .mount, targets: [], results: .init(), mounted: []), emit: emit) - } else { - console.out("No stalled or unmounted camera data volumes detected.") - if verbose { - console.out(separatorLine) - } - } - return 0 - } - - if verbose { - console.out("Found \(targets.count) candidate volume(s): \(targets.joined(separator: ", "))") - } - - let (results, mounted) = await mountAll(targets, mounter: mounter) - - if json { - emitJSON(CLIReport(action: .mount, targets: targets, results: results, mounted: mounted), emit: emit) - } else { - console.out("Done — \(results.ok) mounted, \(results.fail) failed, \(results.skip) skipped.") - } - return results.fail > 0 ? 1 : 0 - } - - /// Mount every target in order, tallying outcomes for the report. - private static func mountAll( - _ targets: [String], mounter: Mounter - ) async -> (results: CLIReport.Counts, mounted: [CLIReport.MountedVolume]) { - let scanner = mounter.scanner - var results = CLIReport.Counts() - var mounted: [CLIReport.MountedVolume] = [] - for devId in targets { - switch await mounter.execute(devId) { - case .ok: - results.ok += 1 - mounted.append(.init(device: devId, mountPoint: scanner.mountPoint(of: devId))) - case .fail: - results.fail += 1 - case .skip: - results.skip += 1 - } - if scanner.verbose { - scanner.console.out(separatorLine) - } - } - return (results, mounted) - } - - /// Replace this process with `sudo ` via - /// execvp(3). Never returns on success. - static func escalateViaSudo() -> Never { - let executable = Bundle.main.executablePath ?? CommandLine.arguments[0] - let argv = ["sudo", executable] + CommandLine.arguments.dropFirst() - var cArgv: [UnsafeMutablePointer?] = argv.map { strdup($0) } - cArgv.append(nil) - execvp("sudo", cArgv) - // exec only returns on failure - perror("lifsaver: could not exec sudo") - exit(1) - } - - private static func emitJSON(_ report: CLIReport, emit: (String) -> Void) { - let encoder = JSONEncoder() - encoder.outputFormatting = [.sortedKeys] - guard let data = try? encoder.encode(report) else { return } - emit(String(decoding: data, as: UTF8.self)) - } -} diff --git a/Tests/LifsaverCLITests/CLISmokeTests.swift b/Tests/LifsaverCLITests/CLISmokeTests.swift deleted file mode 100644 index a725aa5..0000000 --- a/Tests/LifsaverCLITests/CLISmokeTests.swift +++ /dev/null @@ -1,397 +0,0 @@ -import Foundation -import Testing -import os - -@testable import LifsaverCore -@testable import lifsaver - -// --------------------------------------------------------------------------- -// Local fakes (this target cannot see LifsaverCoreTests helpers) -// --------------------------------------------------------------------------- - -private final class RecordingRunner: ProcessRunning { - private let handler: @Sendable (String, [String]) throws -> ProcessResult - - init(handler: @escaping @Sendable (String, [String]) throws -> ProcessResult) { - self.handler = handler - } - - func run(_ executable: String, _ arguments: [String], timeout: TimeInterval) async throws -> ProcessResult { - try handler(executable, arguments) - } -} - -private final class InMemoryMountTable: MountTableReading { - private let state = OSAllocatedUnfairLock(initialState: [MountEntry]()) - - func add(device: String, mountPoint: String) { - state.withLock { $0.append(MountEntry(device: device, mountPoint: mountPoint)) } - } - - func entries() throws -> [MountEntry] { - state.withLock { $0 } - } -} - -private struct NoOpFileOperations: FileOperating { - func createDirectory(at path: String) throws {} - func removeEmptyDirectory(at path: String) {} -} - -private final class Captured { - // Console closures are @Sendable, so those sinks live in a locked box; - // emitted/escalated are only touched by synchronous non-Sendable closures. - private let lines = OSAllocatedUnfairLock(initialState: (out: [String](), err: [String]())) - var emitted: [String] = [] - var escalated = false - - var out: [String] { lines.withLock { $0.out } } - var err: [String] { lines.withLock { $0.err } } - - var console: Console { - Console( - out: { [lines] line in lines.withLock { $0.out.append(line) } }, - err: { [lines] line in lines.withLock { $0.err.append(line) } } - ) - } - - var outText: String { out.joined(separator: "\n") } - var errText: String { err.joined(separator: "\n") } -} - -private func plist(_ object: Any) -> Data { - // swiftlint:disable:next force_try - try! PropertyListSerialization.data(fromPropertyList: object, format: .xml, options: 0) -} - -/// diskutil plist with one external Microsoft Basic Data partition per device id. -private func diskDataPlist(devices: [String]) -> Data { - plist([ - "AllDisksAndPartitions": [ - [ - "DeviceIdentifier": "disk4", - "Partitions": devices.map { - ["DeviceIdentifier": $0, "Content": "Microsoft Basic Data"] - }, - ] - ] - ]) -} - -/// Fake runner + mount table emulating a full scan-and-mount environment. -private func scenario( - devices: [String], diskutilMountSucceeds: Bool = true, - diskutilListSucceeds: Bool = true, fsckActive: Bool = false -) -> (runner: RecordingRunner, mountTable: InMemoryMountTable) { - let mountTable = InMemoryMountTable() - let runner = RecordingRunner { executable, arguments in - switch executable { - case "pgrep": - // pgrep exits 1 when no fsck is running; a match lists the raw device. - guard fsckActive else { return ProcessResult(status: 1) } - let listing = devices.map { "501 fsck_exfat /dev/r\($0)" }.joined(separator: "\n") - return ProcessResult(status: 0, stdout: Data(listing.utf8)) - case "diskutil" where arguments.first == "list": - guard diskutilListSucceeds else { return ProcessResult(status: 1) } - return ProcessResult(status: 0, stdout: diskDataPlist(devices: devices)) - case "diskutil" where arguments.first == "info" && arguments.last == "disk4": - // Whole-disk externality query (hardware location lives only here). - return ProcessResult( - status: 0, stdout: plist(["Internal": false, "RemovableMediaOrExternalDevice": true])) - case "diskutil" where arguments.first == "info": - return ProcessResult(status: 0, stdout: plist(["FilesystemType": "exfat"])) - case "diskutil" where arguments.first == "mount": - if diskutilMountSucceeds { - mountTable.add(device: "/dev/\(arguments[1])", mountPoint: "/Volumes/CARD") - return ProcessResult(status: 0) - } - return ProcessResult(status: 1) - default: - return ProcessResult(status: 1) - } - } - return (runner, mountTable) -} - -private func runCLI( - verbose: Bool = false, - json: Bool = false, - devices: [String], - diskutilMountSucceeds: Bool = true, - diskutilListSucceeds: Bool = true, - fsckActive: Bool = false, - uid: uid_t, - captured: Captured -) async -> Int32 { - let (runner, mountTable) = scenario( - devices: devices, diskutilMountSucceeds: diskutilMountSucceeds, - diskutilListSucceeds: diskutilListSucceeds, fsckActive: fsckActive) - return await CLIMain.run( - verbose: verbose, json: json, - runner: runner, - mountTable: mountTable, - console: captured.console, - fileOps: NoOpFileOperations(), - uid: { uid }, - emit: { captured.emitted.append($0) }, - escalate: { - captured.escalated = true - return 0 - } - ) -} - -// =========================================================================== -// Non-root pre-flight (sudo escalation) -// =========================================================================== - -@Suite struct PreflightTests { - @Test func noTargetsPrintsMessageWithoutEscalating() async { - let captured = Captured() - let status = await runCLI(devices: [], uid: 501, captured: captured) - #expect(status == 0) - #expect(!captured.escalated) - #expect(captured.outText.contains("No stalled or unmounted camera data volumes detected.")) - } - - @Test func targetsPromptThenEscalate() async { - let captured = Captured() - _ = await runCLI(devices: ["disk4s1"], uid: 501, captured: captured) - #expect(captured.escalated) - #expect(captured.outText.contains("Would mount 1 stalled volume.")) - } - - @Test func preflightMessagePluralizesVolumeCount() async { - let captured = Captured() - _ = await runCLI(devices: ["disk4s1", "disk4s2"], uid: 501, captured: captured) - #expect(captured.escalated) - #expect(captured.outText.contains("Would mount 2 stalled volumes.")) - } - - @Test func jsonScanNeverEscalates() async { - let captured = Captured() - let status = await runCLI(json: true, devices: ["disk4s1"], uid: 501, captured: captured) - #expect(status == 0) - #expect(!captured.escalated) - #expect(captured.emitted.joined().contains("\"targets\":[\"disk4s1\"]")) - } - - @Test func failedScanReportsCriticalWithoutEscalating() async { - let captured = Captured() - let status = await runCLI( - devices: ["disk4s1"], diskutilListSucceeds: false, uid: 501, captured: captured) - #expect(status == 1) - // A scan we cannot trust must never lead to a password prompt. - #expect(!captured.escalated) - #expect(captured.errText.contains("CRITICAL")) - #expect(captured.errText.contains("Failed to query diskutil")) - } -} - -// =========================================================================== -// Root mount sequence -// =========================================================================== - -@Suite struct MountSequenceTests { - @Test func rootDoesNotEscalate() async { - let captured = Captured() - _ = await runCLI(devices: [], uid: 0, captured: captured) - #expect(!captured.escalated) - #expect(captured.outText.contains("No stalled or unmounted camera data volumes detected.")) - } - - @Test func mountsEachTargetAndSummarizes() async { - let captured = Captured() - let status = await runCLI(verbose: true, devices: ["disk4s1", "disk4s2"], uid: 0, captured: captured) - #expect(status == 0) - #expect(captured.outText.contains("Found 2 candidate volume(s): disk4s1, disk4s2")) - #expect(captured.outText.contains("Done — 2 mounted, 0 failed, 0 skipped.")) - } - - @Test func exitsNonZeroWhenAMountFails() async { - let captured = Captured() - let status = await runCLI( - devices: ["disk4s1"], diskutilMountSucceeds: false, uid: 0, captured: captured) - #expect(status == 1) - #expect(captured.outText.contains("Done — 0 mounted, 1 failed, 0 skipped.")) - } - - @Test func jsonMountReportsResults() async { - let captured = Captured() - let status = await runCLI(json: true, devices: ["disk4s1"], uid: 0, captured: captured) - #expect(status == 0) - let json = captured.emitted.joined() - #expect(json.contains("\"action\":\"mount\"")) - #expect(json.contains("\"ok\":1")) - #expect(json.contains("\"mountPoint\":\"\\/Volumes\\/CARD\"")) - } - - @Test func failedScanReportsCriticalAndMountsNothing() async { - let captured = Captured() - let status = await runCLI( - devices: ["disk4s1"], diskutilListSucceeds: false, uid: 0, captured: captured) - #expect(status == 1) - #expect(captured.errText.contains("CRITICAL")) - #expect(!captured.outText.contains("Done —")) - } - - @Test func activeFsckSkipsTargetRatherThanMounting() async { - let captured = Captured() - let status = await runCLI(devices: ["disk4s1"], fsckActive: true, uid: 0, captured: captured) - // A skipped volume is not a failure — nothing was left in a bad state. - #expect(status == 0) - #expect(captured.outText.contains("consistency check (fsck)")) - #expect(captured.outText.contains("Done — 0 mounted, 0 failed, 1 skipped.")) - } - - @Test func verboseEmptyScanStillPrintsBanner() async { - let captured = Captured() - let status = await runCLI(verbose: true, devices: [], uid: 0, captured: captured) - #expect(status == 0) - #expect(captured.outText.contains("Camera volume mount sequence")) - #expect(captured.outText.contains("No stalled or unmounted camera data volumes detected.")) - } - - @Test func jsonMountWithNoTargetsEmitsEmptyReport() async throws { - let captured = Captured() - let status = await runCLI(json: true, devices: [], uid: 0, captured: captured) - #expect(status == 0) - // The app parses every run's output, so the empty case must still be - // a well-formed mount report rather than a human-readable sentence. - let report = try JSONDecoder().decode(CLIReport.self, from: Data(captured.emitted.joined().utf8)) - #expect(report.action == .mount) - #expect(report.targets.isEmpty) - #expect(report.mounted == []) - #expect(report.results == CLIReport.Counts(ok: 0, fail: 0, skip: 0)) - } - - @Test func jsonMountRoundTripsThroughSharedReportType() async throws { - // The app decodes this exact output as CLIReport — assert the full - // document round-trips, not just substrings. - let captured = Captured() - _ = await runCLI(json: true, devices: ["disk4s1"], uid: 0, captured: captured) - let report = try JSONDecoder().decode(CLIReport.self, from: Data(captured.emitted.joined().utf8)) - #expect(report.action == .mount) - #expect(report.results == CLIReport.Counts(ok: 1, fail: 0, skip: 0)) - #expect(report.mounted == [CLIReport.MountedVolume(device: "disk4s1", mountPoint: "/Volumes/CARD")]) - } -} - -// =========================================================================== -// Default console wiring (real stdout/stderr) -// =========================================================================== - -/// Redirect the process-wide stdout/stderr file descriptors to temp files for -/// the duration of `body`, returning what each received. -/// -/// This is the only way to exercise CLIMain's *default* console: passing a -/// console explicitly short-circuits the very wiring under test. -private func capturingStandardStreams( - _ body: () async -> Void -) async -> (out: String, err: String) { - let directory = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) - try? FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) - let outURL = directory.appendingPathComponent("stdout") - let errURL = directory.appendingPathComponent("stderr") - FileManager.default.createFile(atPath: outURL.path, contents: nil) - FileManager.default.createFile(atPath: errURL.path, contents: nil) - - let outFD = open(outURL.path, O_WRONLY) - let errFD = open(errURL.path, O_WRONLY) - let savedOut = dup(STDOUT_FILENO) - let savedErr = dup(STDERR_FILENO) - dup2(outFD, STDOUT_FILENO) - dup2(errFD, STDERR_FILENO) - - await body() - - // print() is fully buffered when stdout is a file rather than a tty. - fflush(stdout) - fflush(stderr) - dup2(savedOut, STDOUT_FILENO) - dup2(savedErr, STDERR_FILENO) - for descriptor in [savedOut, savedErr, outFD, errFD] { close(descriptor) } - - let out = (try? String(contentsOf: outURL, encoding: .utf8)) ?? "" - let err = (try? String(contentsOf: errURL, encoding: .utf8)) ?? "" - try? FileManager.default.removeItem(at: directory) - return (out, err) -} - -/// Serialized: redirecting stdout/stderr mutates process-global state, so these -/// must not run alongside anything else writing to the real streams. -@Suite(.serialized) struct DefaultConsoleTests { - /// The menu bar app decodes stdout verbatim, so a stray human-readable line - /// on stdout in --json mode is a parse failure for the app. Guards the - /// `json ? Console(out: .err, err: .err) : .standard` wiring, which every - /// other test bypasses by injecting a console. - @Test func jsonModeKeepsStdoutPureAndDivertsProseToStderr() async throws { - let (runner, mountTable) = scenario(devices: []) - let (out, err) = await capturingStandardStreams { - let status = await CLIMain.run( - verbose: true, json: true, - runner: runner, mountTable: mountTable, - fileOps: NoOpFileOperations(), - uid: { 0 }, - escalate: { 1 } - ) - #expect(status == 0) - } - - // Note: these streams also carry the test harness's own progress output, - // since the redirect is process-wide and other suites run in parallel. - // Assert on lifsaver's contribution rather than byte-purity. - let reportLine = try #require(out.split(separator: "\n").first { $0.hasPrefix("{") }) - let report = try JSONDecoder().decode(CLIReport.self, from: Data(reportLine.utf8)) - #expect(report.action == .mount) - - // The verbose banner is prose: stderr only, never stdout. - #expect(!out.contains("Camera volume mount sequence")) - #expect(err.contains("Camera volume mount sequence")) - } - - @Test func humanModeSendsProseToStdout() async { - let (runner, mountTable) = scenario(devices: []) - let (out, _) = await capturingStandardStreams { - _ = await CLIMain.run( - verbose: true, json: false, - runner: runner, mountTable: mountTable, - fileOps: NoOpFileOperations(), - uid: { 0 }, - escalate: { 1 } - ) - } - #expect(out.contains("Camera volume mount sequence")) - #expect(out.contains("No stalled or unmounted camera data volumes detected.")) - } -} - -// =========================================================================== -// Built binary smoke test -// =========================================================================== - -@Suite struct BinarySmokeTests { - private final class BundleMarker {} - - private var binaryURL: URL { - // The test bundle sits in the same build products directory as the - // compiled `lifsaver` executable. - Bundle(for: BundleMarker.self).bundleURL - .deletingLastPathComponent() - .appendingPathComponent("lifsaver") - } - - @Test func versionFlagPrintsBareVersionAndExitsZero() throws { - let process = Process() - process.executableURL = binaryURL - process.arguments = ["--version"] - let pipe = Pipe() - process.standardOutput = pipe - try process.run() - let output = String( - decoding: pipe.fileHandleForReading.readDataToEndOfFile(), as: UTF8.self) - process.waitUntilExit() - #expect(process.terminationStatus == 0) - #expect(output.trimmingCharacters(in: .whitespacesAndNewlines) == lifsaverVersion) - } -} diff --git a/Tests/LifsaverCLITests/ReportCLITests.swift b/Tests/LifsaverCLITests/ReportCLITests.swift deleted file mode 100644 index 956de73..0000000 --- a/Tests/LifsaverCLITests/ReportCLITests.swift +++ /dev/null @@ -1,72 +0,0 @@ -import Foundation -import Testing -import os - -@testable import LifsaverCore -@testable import lifsaver - -// =========================================================================== -// `lifsaver report` subcommand plumbing -// =========================================================================== - -private struct CannedRunner: ProcessRunning { - func run(_ executable: String, _ arguments: [String], timeout: TimeInterval) async throws -> ProcessResult { - switch (executable, arguments.first) { - case ("diskutil", "list"): - let plist = try PropertyListSerialization.data( - fromPropertyList: [ - "AllDisksAndPartitions": [ - [ - "DeviceIdentifier": "disk4", - "Partitions": [["DeviceIdentifier": "disk4s1", "Content": "Microsoft Basic Data"]], - ] - ] - ], format: .xml, options: 0) - return ProcessResult(status: 0, stdout: plist) - case ("diskutil", "info"): - let plist = try PropertyListSerialization.data( - fromPropertyList: ["Internal": false, "FilesystemType": "exfat"], - format: .xml, options: 0) - return ProcessResult(status: 0, stdout: plist) - default: - return ProcessResult(status: 1) // pgrep: no fsck running - } - } -} - -private struct EmptyMountTable: MountTableReading { - func entries() throws -> [MountEntry] { [] } -} - -@Suite struct ReportCLITests { - @Test func savesOneCompleteReport() async throws { - let written = OSAllocatedUnfairLock(initialState: [(String, URL)]()) - let emitted = OSAllocatedUnfairLock(initialState: [String]()) - let status = await ReportCLI.run( - runner: CannedRunner(), - mountTable: EmptyMountTable(), - directory: URL(fileURLWithPath: "/tmp/lifsaver-test-downloads"), - write: { contents, url in written.withLock { $0.append((contents, url)) } }, - emit: { line in emitted.withLock { $0.append(line) } }, - emitError: { _ in } - ) - #expect(status == 0) - - let writes = written.withLock { $0 } - #expect(writes.count == 1) - let (report, url) = try #require(writes.first) - #expect(url.deletingLastPathComponent().path == "/tmp/lifsaver-test-downloads") - #expect(url.lastPathComponent.hasPrefix("lifsaver-report-")) - #expect(report.contains("# lifsaver diagnostic report")) - #expect(report.contains("target: disk4s1 (exfat, fsck idle)")) - #expect(report.contains("## diskutil list -plist")) - #expect(report.contains("--- disk4 ---")) - - // The exported-file message names the destination and the support address. - let message = emitted.withLock { $0 }.joined(separator: "\n") - #expect(message.contains("Diagnostic report exported to \(url.path).")) - #expect(message.contains("email it to \(lifsaverSupportEmail)")) - // The report itself never carries the address verbatim. - #expect(!report.contains(lifsaverSupportEmail)) - } -} diff --git a/Tests/LifsaverCoreTests/DiagnosticsReportTests.swift b/Tests/LifsaverCoreTests/DiagnosticsReportTests.swift index 352775b..67cb242 100644 --- a/Tests/LifsaverCoreTests/DiagnosticsReportTests.swift +++ b/Tests/LifsaverCoreTests/DiagnosticsReportTests.swift @@ -86,8 +86,7 @@ private struct StubError: Error {} } // =========================================================================== -// Support email (asserted via fragments — a full literal anywhere in the -// repo would hand scrapers exactly what the runtime assembly hides) +// Support email // =========================================================================== @Suite struct SupportEmailTests { @@ -109,17 +108,3 @@ private struct StubError: Error {} #expect(components.path == lifsaverSupportEmail) } } - -// =========================================================================== -// Install channel -// =========================================================================== - -@Suite struct InstallChannelTests { - @Test func caskroomPresenceMeansHomebrew() { - #expect(lifsaverInstallChannel(directoryExists: { _ in true }) == "Homebrew cask") - } - - @Test func noCaskroomMeansInstallerOrLocalBuild() { - #expect(lifsaverInstallChannel(directoryExists: { _ in false }) == "installer package or local build") - } -} diff --git a/Tests/LifsaverCoreTests/RootMountRunnerTests.swift b/Tests/LifsaverCoreTests/RootMountRunnerTests.swift new file mode 100644 index 0000000..64e6682 --- /dev/null +++ b/Tests/LifsaverCoreTests/RootMountRunnerTests.swift @@ -0,0 +1,134 @@ +import Foundation +import Testing + +@testable import LifsaverCore + +// =========================================================================== +// Escalated helper mount sequence +// =========================================================================== + +/// Fake runner + mount table emulating a full scan-and-mount environment with +/// one external Microsoft Basic Data partition per device id. +private func scenario( + devices: [String], diskutilMountSucceeds: Bool = true, + diskutilListSucceeds: Bool = true, fsckActive: Bool = false +) -> (runner: FakeProcessRunner, mountTable: FakeMountTable) { + let mountTable = FakeMountTable() + let listData = plistData([ + "AllDisksAndPartitions": [ + [ + "DeviceIdentifier": "disk4", + "Partitions": devices.map { + ["DeviceIdentifier": $0, "Content": "Microsoft Basic Data"] + }, + ] + ] + ]) + let wholeDiskInfo = plistData(infoExternal) + let partitionInfo = plistData(["FilesystemType": "exfat"]) + let runner = FakeProcessRunner { executable, arguments in + switch executable { + case "pgrep": + // pgrep exits 1 when no fsck is running; a match lists the raw device. + guard fsckActive else { return ProcessResult(status: 1) } + let listing = devices.map { "501 fsck_exfat /dev/r\($0)" }.joined(separator: "\n") + return ProcessResult(status: 0, stdout: Data(listing.utf8)) + case "diskutil" where arguments.first == "list": + guard diskutilListSucceeds else { return ProcessResult(status: 1) } + return ProcessResult(status: 0, stdout: listData) + case "diskutil" where arguments.first == "info" && arguments.last == "disk4": + // Whole-disk externality query (hardware location lives only here). + return ProcessResult(status: 0, stdout: wholeDiskInfo) + case "diskutil" where arguments.first == "info": + return ProcessResult(status: 0, stdout: partitionInfo) + case "diskutil" where arguments.first == "mount": + if diskutilMountSucceeds { + mountTable.add(device: "/dev/\(arguments[1])", mountPoint: "/Volumes/CARD") + return ProcessResult(status: 0) + } + return ProcessResult(status: 1) + default: + return ProcessResult(status: 1) + } + } + return (runner, mountTable) +} + +private struct HelperRun { + var status: Int32 + var emitted: [String] + var console: CapturedConsole + + /// The emitted stdout document decoded as the app would decode it. + func decodedReport() throws -> MountReport { + try JSONDecoder().decode(MountReport.self, from: Data(emitted.joined().utf8)) + } +} + +private func runHelper( + devices: [String], + diskutilMountSucceeds: Bool = true, + diskutilListSucceeds: Bool = true, + fsckActive: Bool = false +) async -> HelperRun { + let (runner, mountTable) = scenario( + devices: devices, diskutilMountSucceeds: diskutilMountSucceeds, + diskutilListSucceeds: diskutilListSucceeds, fsckActive: fsckActive) + let console = CapturedConsole() + var emitted: [String] = [] + let status = await RootMountRunner.run( + runner: runner, + mountTable: mountTable, + fileOps: FakeFileOperations(), + console: console.console, + emit: { emitted.append($0) } + ) + return HelperRun(status: status, emitted: emitted, console: console) +} + +@Suite struct RootMountRunnerTests { + @Test func mountsEachTargetAndRoundTripsThroughSharedReportType() async throws { + // The app decodes this exact output as MountReport — assert the full + // document round-trips, not just substrings. + let run = await runHelper(devices: ["disk4s1"]) + #expect(run.status == 0) + let report = try run.decodedReport() + #expect(report.targets == ["disk4s1"]) + #expect(report.results == MountReport.Counts(ok: 1, fail: 0, skip: 0)) + #expect(report.mounted == [MountReport.MountedVolume(device: "disk4s1", mountPoint: "/Volumes/CARD")]) + } + + @Test func emptyScanStillEmitsWellFormedReport() async throws { + // The app parses every run's output, so the empty case must still be + // a well-formed report rather than a human-readable sentence. + let run = await runHelper(devices: []) + #expect(run.status == 0) + let report = try run.decodedReport() + #expect(report.targets.isEmpty) + #expect(report.mounted.isEmpty) + #expect(report.results == MountReport.Counts(ok: 0, fail: 0, skip: 0)) + } + + @Test func exitsNonZeroWhenAMountFails() async throws { + let run = await runHelper(devices: ["disk4s1"], diskutilMountSucceeds: false) + #expect(run.status == 1) + let report = try run.decodedReport() + #expect(report.results == MountReport.Counts(ok: 0, fail: 1, skip: 0)) + } + + @Test func failedScanReportsCriticalAndEmitsNothing() async { + // Stdout must never carry a half-report the app would misparse. + let run = await runHelper(devices: ["disk4s1"], diskutilListSucceeds: false) + #expect(run.status == 1) + #expect(run.emitted.isEmpty) + #expect(run.console.errText.contains("CRITICAL")) + } + + @Test func activeFsckSkipsTargetRatherThanMounting() async throws { + // A skipped volume is not a failure — nothing was left in a bad state. + let run = await runHelper(devices: ["disk4s1"], fsckActive: true) + #expect(run.status == 0) + let report = try run.decodedReport() + #expect(report.results == MountReport.Counts(ok: 0, fail: 0, skip: 1)) + } +} diff --git a/Tests/LifsaverCoreTests/StatusMenuModelTests.swift b/Tests/LifsaverCoreTests/StatusMenuModelTests.swift index d899420..e65051c 100644 --- a/Tests/LifsaverCoreTests/StatusMenuModelTests.swift +++ b/Tests/LifsaverCoreTests/StatusMenuModelTests.swift @@ -35,10 +35,10 @@ import Testing ]) } - @Test func failureShowsTerminalHint() { + @Test func failureShowsDisabledNotice() { #expect( entries(state: .failed) == [ - .disabled("Scan failed — try `lifsaver --verbose` in Terminal"), + .disabled("Scan failed"), .separator, .saveReport(title: "Send Diagnostic Report"), .checkForUpdates(title: "Check for Updates"), @@ -144,12 +144,6 @@ import Testing == "mount attempt finished: 1 mounted, 2 failed, 3 skipped") } - @Test func missingCLIIsExplicit() { - #expect( - StatusMenuModel.mountEventLine(for: .cliNotFound) - == "mount attempt failed: bundled CLI missing") - } - @Test func unprivilegedPassRecordsWhatRootWasNeededFor() { #expect( StatusMenuModel.unprivilegedMountEventLine(for: .init(ok: 1, fail: 2, skip: 3)) @@ -163,7 +157,7 @@ import Testing @Suite struct CombinedOutcomeTests { private func combined( - _ unprivileged: CLIReport.Counts, _ escalated: EscalatedMountOutcome? + _ unprivileged: MountReport.Counts, _ escalated: EscalatedMountOutcome? ) -> EscalatedMountOutcome { StatusMenuModel.combinedOutcome(unprivileged: unprivileged, escalated: escalated) } @@ -209,10 +203,6 @@ import Testing combined(.init(ok: 1, fail: 2), .error("osascript exploded")) == .report(.init(ok: 1, fail: 2))) } - - @Test func missingCLIAfterPartialSuccessKeepsBothHalves() { - #expect(combined(.init(ok: 1, fail: 1), .cliNotFound) == .report(.init(ok: 1, fail: 1))) - } } // =========================================================================== @@ -242,14 +232,8 @@ import Testing #expect(body(for: .cancelled) == nil) } - @Test func missingCLIAsksForReinstall() { - #expect(body(for: .cliNotFound) == "Bundled CLI is missing — please reinstall the app.") - } - @Test func anyFailureWinsOverSuccesses() { - #expect( - body(for: .report(.init(ok: 2, fail: 1, skip: 0))) - == "Mount failed for 1 volume(s) — try `lifsaver --verbose` in Terminal.") + #expect(body(for: .report(.init(ok: 2, fail: 1, skip: 0))) == "Mount failed") } @Test func singleSuccessUsesSingularNoun() { @@ -266,8 +250,8 @@ import Testing == "Nothing mounted — volumes were skipped (already mounted or being checked).") } - @Test func errorSuggestsVerboseRun() { - #expect(body(for: .error("osascript exploded")) == "Mount failed — try `lifsaver --verbose` in Terminal.") + @Test func errorReportsPlainFailure() { + #expect(body(for: .error("osascript exploded")) == "Mount failed") } } diff --git a/Tests/LifsaverCoreTests/UpdateCheckerTests.swift b/Tests/LifsaverCoreTests/UpdateCheckerTests.swift index e543716..096877a 100644 --- a/Tests/LifsaverCoreTests/UpdateCheckerTests.swift +++ b/Tests/LifsaverCoreTests/UpdateCheckerTests.swift @@ -28,37 +28,19 @@ final class FakeReleaseFetcher: LatestReleaseFetching { } } -final class EmittedLines { - private let state = OSAllocatedUnfairLock(initialState: [String]()) - - var lines: [String] { state.withLock { $0 } } - var emit: @Sendable (String) -> Void { - { [state] line in state.withLock { $0.append(line) } } - } - var text: String { lines.joined(separator: "\n") } -} - private func makeChecker( currentVersion: String = "1.0.0", fetcher: FakeReleaseFetcher = FakeReleaseFetcher(tag: nil), - environment: [String: String] = [:], - interactive: Bool = true, cacheDirectory: URL, - emitted: EmittedLines = EmittedLines(), - checkInterval: TimeInterval = 24 * 60 * 60, - upgradeCommand: String = "brew upgrade --cask lifsaver" + checkInterval: TimeInterval = 24 * 60 * 60 ) -> UpdateChecker { UpdateChecker( package: "lifsaver", repo: "lucuma13/lifsaver", currentVersion: currentVersion, - upgradeCommand: upgradeCommand, checkInterval: checkInterval, cacheDirectory: cacheDirectory, - fetcher: fetcher, - environment: environment, - stderrIsInteractive: { interactive }, - emit: emitted.emit + fetcher: fetcher ) } @@ -69,10 +51,9 @@ private func temporaryDirectory() -> URL { return url } -/// start() + notify() with a generous join window so the fetch always lands. +/// start() and wait for any background fetch to land. private func check(_ checker: UpdateChecker) async { - checker.start() - await checker.notify(timeout: 5) + await checker.start()?.value } // =========================================================================== @@ -125,79 +106,10 @@ private func check(_ checker: UpdateChecker) async { } // =========================================================================== -// Upgrade-command channel detection -// =========================================================================== - -@Suite struct UpgradeCommandTests { - @Test(arguments: ["/opt/homebrew/Caskroom/lifsaver", "/usr/local/Caskroom/lifsaver"]) - func brewCommandWhenCaskroomExists(caskroom: String) { - let command = lifsaverUpgradeCommand(directoryExists: { $0 == caskroom }) - #expect(command == "brew upgrade --cask lifsaver") - } - - @Test func directDownloadLinkWithoutCaskroom() { - let command = lifsaverUpgradeCommand(directoryExists: { _ in false }) - #expect( - command - == "open https://github.com/lucuma13/lifsaver/releases/download/v{latest}/lifsaver_installer_macos.pkg" - ) - } - - @Test func directoryOnDiskIsDetected() { - let directory = temporaryDirectory() - defer { try? FileManager.default.removeItem(at: directory) } - #expect(directoryExistsOnDisk(directory.path)) - } - - @Test func missingPathIsNotADirectory() { - let missing = temporaryDirectory().appendingPathComponent("nope") - #expect(!directoryExistsOnDisk(missing.path)) - } - - @Test func plainFileIsNotMistakenForACaskInstall() throws { - // A Caskroom path occupied by a file — not a directory — must not be - // read as a Homebrew install, or we would suggest `brew upgrade` to - // someone who installed from the .pkg. - let directory = temporaryDirectory() - defer { try? FileManager.default.removeItem(at: directory) } - let file = directory.appendingPathComponent("lifsaver") - try Data("not a directory".utf8).write(to: file) - #expect(!directoryExistsOnDisk(file.path)) - } - - @Test func notifySubstitutesLatestVersionIntoCommand() async { - let emitted = EmittedLines() - let checker = makeChecker( - fetcher: FakeReleaseFetcher(tag: "v2.1.0"), - cacheDirectory: temporaryDirectory(), - emitted: emitted, - upgradeCommand: lifsaverUpgradeCommand(directoryExists: { _ in false }) - ) - await check(checker) - #expect( - emitted.text.contains( - "open https://github.com/lucuma13/lifsaver/releases/download/v2.1.0/lifsaver_installer_macos.pkg" - )) - } -} - -// =========================================================================== -// Enablement / opt-outs +// Enablement // =========================================================================== @Suite struct UpdateCheckerEnablementTests { - @Test(arguments: ["LIFSAVER_NO_UPDATE_CHECK", "NO_UPDATE_CHECK", "CI"]) - func disabledByEnvVar(variable: String) async { - let fetcher = FakeReleaseFetcher(tag: "v9.9.9") - let emitted = EmittedLines() - let checker = makeChecker( - fetcher: fetcher, environment: [variable: "1"], - cacheDirectory: temporaryDirectory(), emitted: emitted) - await check(checker) - #expect(fetcher.fetchCount == 0) - #expect(emitted.lines.isEmpty) - } - @Test func disabledForUnparsableVersion() async { let fetcher = FakeReleaseFetcher(tag: "v9.9.9") let checker = makeChecker( @@ -205,14 +117,6 @@ private func check(_ checker: UpdateChecker) async { await check(checker) #expect(fetcher.fetchCount == 0) } - - @Test func disabledWhenStderrNotATTY() async { - let fetcher = FakeReleaseFetcher(tag: "v9.9.9") - let checker = makeChecker( - fetcher: fetcher, interactive: false, cacheDirectory: temporaryDirectory()) - await check(checker) - #expect(fetcher.fetchCount == 0) - } } // =========================================================================== @@ -229,11 +133,10 @@ private func check(_ checker: UpdateChecker) async { .write(to: directory.appendingPathComponent("update-check.json")) let fetcher = FakeReleaseFetcher(tag: "v1.0.0") - let emitted = EmittedLines() - let checker = makeChecker(fetcher: fetcher, cacheDirectory: directory, emitted: emitted) + let checker = makeChecker(fetcher: fetcher, cacheDirectory: directory) await check(checker) #expect(fetcher.fetchCount == 0) - #expect(emitted.text.contains("Update available")) + #expect(checker.knownNewerVersion() == "9.9.9") } @Test func staleCacheTriggersFetchAndRewrite() async throws { @@ -245,11 +148,10 @@ private func check(_ checker: UpdateChecker) async { try JSONSerialization.data(withJSONObject: stale).write(to: cacheFile) let fetcher = FakeReleaseFetcher(tag: "v9.9.9") - let emitted = EmittedLines() - let checker = makeChecker(fetcher: fetcher, cacheDirectory: directory, emitted: emitted) + let checker = makeChecker(fetcher: fetcher, cacheDirectory: directory) await check(checker) #expect(fetcher.fetchCount == 1) - #expect(emitted.text.contains("Update available")) + #expect(checker.knownNewerVersion() == "9.9.9") let rewritten = try JSONSerialization.jsonObject(with: Data(contentsOf: cacheFile)) let object = try #require(rewritten as? [String: Any]) @@ -274,94 +176,41 @@ private func check(_ checker: UpdateChecker) async { .write(to: directory.appendingPathComponent("update-check.json")) let fetcher = FakeReleaseFetcher(tag: "v9.9.9") - let emitted = EmittedLines() - let checker = makeChecker(fetcher: fetcher, cacheDirectory: directory, emitted: emitted) + let checker = makeChecker(fetcher: fetcher, cacheDirectory: directory) await check(checker) #expect(fetcher.fetchCount == 1) - #expect(emitted.text.contains("Update available")) + #expect(checker.knownNewerVersion() == "9.9.9") } @Test func writeCacheFailureIsSilent() async { // A cache directory that cannot be created must not break the check. let impossible = URL(fileURLWithPath: "/dev/null/nope") - let emitted = EmittedLines() let checker = makeChecker( - fetcher: FakeReleaseFetcher(tag: "v9.9.9"), cacheDirectory: impossible, - emitted: emitted) + fetcher: FakeReleaseFetcher(tag: "v9.9.9"), cacheDirectory: impossible) await check(checker) - #expect(emitted.text.contains("Update available")) + #expect(checker.knownNewerVersion() == "9.9.9") } } // =========================================================================== -// Notification behaviour +// Check behaviour // =========================================================================== -@Suite struct UpdateCheckerNotifyTests { - @Test func fetchQueriesAndNotifies() async { +@Suite struct UpdateCheckerCheckTests { + @Test func fetchQueriesAndRecordsNewerVersion() async { let fetcher = FakeReleaseFetcher(tag: "v9.9.9") - let emitted = EmittedLines() - let checker = makeChecker( - fetcher: fetcher, cacheDirectory: temporaryDirectory(), emitted: emitted) + let checker = makeChecker(fetcher: fetcher, cacheDirectory: temporaryDirectory()) await check(checker) #expect(fetcher.fetchCount == 1) #expect(fetcher.lastUserAgent == "lifsaver/1.0.0 (update-check)") - #expect(emitted.text.contains("Update available! Run: ")) - #expect(emitted.text.contains("brew upgrade --cask lifsaver")) - } - - @Test func noHintWhenUpToDate() async { - let emitted = EmittedLines() - let checker = makeChecker( - fetcher: FakeReleaseFetcher(tag: "v1.0.0"), - cacheDirectory: temporaryDirectory(), emitted: emitted) - await check(checker) - #expect(emitted.lines.isEmpty) + #expect(checker.knownNewerVersion() == "9.9.9") } @Test func networkFailureIsSilent() async { - let emitted = EmittedLines() - let checker = makeChecker( - fetcher: FakeReleaseFetcher(tag: nil), - cacheDirectory: temporaryDirectory(), emitted: emitted) - await check(checker) - #expect(emitted.lines.isEmpty) - } - - @Test func notifyWithoutStartStaysSilent() async { - // notify() must not hang or hint when start() was never called. - let emitted = EmittedLines() - let checker = makeChecker( - fetcher: FakeReleaseFetcher(tag: "v9.9.9"), - cacheDirectory: temporaryDirectory(), emitted: emitted) - await checker.notify(timeout: 0.05) - #expect(emitted.lines.isEmpty) - } - - @Test func hintIsColouredWhenStderrSupportsIt() async { - let emitted = EmittedLines() let checker = makeChecker( - fetcher: FakeReleaseFetcher(tag: "v9.9.9"), - cacheDirectory: temporaryDirectory(), emitted: emitted) + fetcher: FakeReleaseFetcher(tag: nil), cacheDirectory: temporaryDirectory()) await check(checker) - #expect(emitted.text.contains("\u{1B}[38;5;208m")) - #expect(emitted.text.contains("\u{1B}[1m")) - } - - @Test( - arguments: [ - (["NO_COLOR": "1"], false), - (["FORCE_COLOR": "1"], true), - (["NO_COLOR": "1", "FORCE_COLOR": "1"], false), // NO_COLOR wins - ([:], true), // interactive default - ] as [([String: String], Bool)]) - func colourFollowsNoColorAndForceColor(environment: [String: String], coloured: Bool) async { - let emitted = EmittedLines() - let checker = makeChecker( - fetcher: FakeReleaseFetcher(tag: "v9.9.9"), environment: environment, - cacheDirectory: temporaryDirectory(), emitted: emitted) - await check(checker) - #expect(emitted.text.contains("\u{1B}[") == coloured) + #expect(checker.knownNewerVersion() == nil) } @Test func knownNewerVersionForMenuSurface() async { @@ -376,14 +225,13 @@ private func check(_ checker: UpdateChecker) async { #expect(upToDate.knownNewerVersion() == nil) } - @Test func checkNowFetchesEvenWhenOptedOut() async { - // The manual GUI check ignores the CI/opt-out gates that silence the - // passive CLI hint — the user explicitly asked. + @Test func checkNowFetchesEvenForDevBuilds() async { + // The manual GUI check ignores the version gate that silences the + // passive launch check — the user explicitly asked. let fetcher = FakeReleaseFetcher(tag: "v9.9.9") let checker = makeChecker( - fetcher: fetcher, environment: ["CI": "1"], cacheDirectory: temporaryDirectory()) + currentVersion: "unknown", fetcher: fetcher, cacheDirectory: temporaryDirectory()) await checker.checkNow() #expect(fetcher.fetchCount == 1) - #expect(checker.knownNewerVersion() == "9.9.9") } } diff --git a/scripts/release/build.sh b/scripts/release/build.sh index d5d59f4..ba989b3 100755 --- a/scripts/release/build.sh +++ b/scripts/release/build.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Build universal (arm64 + x86_64) release binaries for the app and CLI. +# Build the universal (arm64 + x86_64) release binary. set -euo pipefail @@ -11,13 +11,11 @@ swift build -c release --arch x86_64 OUT="$ROOT/.build/universal-release" mkdir -p "$OUT" -for product in lifsaver LifsaverApp; do - lipo -create \ - ".build/arm64-apple-macosx/release/$product" \ - ".build/x86_64-apple-macosx/release/$product" \ - -output "$OUT/$product" - printf '%s: ' "$product" - lipo -archs "$OUT/$product" -done +lipo -create \ + ".build/arm64-apple-macosx/release/LifsaverApp" \ + ".build/x86_64-apple-macosx/release/LifsaverApp" \ + -output "$OUT/LifsaverApp" +printf 'LifsaverApp: ' +lipo -archs "$OUT/LifsaverApp" echo "Products: $OUT" diff --git a/scripts/release/bundle_app.sh b/scripts/release/bundle_app.sh index 088f3bd..b80c723 100755 --- a/scripts/release/bundle_app.sh +++ b/scripts/release/bundle_app.sh @@ -1,7 +1,6 @@ #!/bin/bash # Assemble Lifsaver.app from the release build products: -# Contents/MacOS/Lifsaver — menu bar app -# Contents/Helpers/lifsaver — CLI (also symlinked onto PATH by the pkg) +# Contents/MacOS/Lifsaver # Ends with an ad-hoc re-sign: Apple Silicon refuses to execute unsigned # Mach-O code, and mutating the bundle invalidates any prior seal. set -euo pipefail @@ -19,11 +18,10 @@ BIN_PATH="$ROOT/.build/universal-release" APP="$ROOT/dist/Lifsaver.app" rm -rf "$APP" -mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Helpers" "$APP/Contents/Resources" +mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources" cp "$BIN_PATH/LifsaverApp" "$APP/Contents/MacOS/Lifsaver" -cp "$BIN_PATH/lifsaver" "$APP/Contents/Helpers/lifsaver" -chmod 755 "$APP/Contents/MacOS/Lifsaver" "$APP/Contents/Helpers/lifsaver" +chmod 755 "$APP/Contents/MacOS/Lifsaver" # Menu-bar icons (loose @1x/@2x/@3x PNG files; NSImage(named:) resolves them): # the monochrome template plus the orange alert variant for stalled volumes. @@ -44,8 +42,7 @@ cp "$SRC_RESOURCES/AppIcon.icns" "$APP/Contents/Resources/" sed "s/__VERSION__/$VERSION/g" scripts/release/templates/template_Info.plist >"$APP/Contents/Info.plist" printf 'APPL????' >"$APP/Contents/PkgInfo" -# Ad-hoc signing: helper first, then the bundle (inside-out). -codesign --force -s - "$APP/Contents/Helpers/lifsaver" +# Ad-hoc signing. codesign --force -s - "$APP" echo "Assembled $APP (version $VERSION)" diff --git a/scripts/release/installer-scripts/postinstall b/scripts/release/installer-scripts/postinstall deleted file mode 100755 index e41eb1c..0000000 --- a/scripts/release/installer-scripts/postinstall +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Expose the bundled CLI on PATH. -mkdir -p /usr/local/bin -ln -sf "/Applications/Lifsaver.app/Contents/Helpers/lifsaver" /usr/local/bin/lifsaver -exit 0 diff --git a/scripts/release/make_pkg.sh b/scripts/release/make_pkg.sh index b715134..7db37bd 100755 --- a/scripts/release/make_pkg.sh +++ b/scripts/release/make_pkg.sh @@ -19,11 +19,8 @@ rm -rf "$PKGROOT" mkdir -p "$PKGROOT/Applications" cp -R "$APP" "$PKGROOT/Applications/" -chmod 755 scripts/release/installer-scripts/postinstall - pkgbuild \ --root "$PKGROOT" \ - --scripts scripts/release/installer-scripts \ --identifier com.lucuma13.lifsaver \ --version "$VERSION" \ --install-location / \ diff --git a/scripts/release/templates/template_lifsaver.rb b/scripts/release/templates/template_lifsaver.rb index 36d01e6..cfc5b1a 100644 --- a/scripts/release/templates/template_lifsaver.rb +++ b/scripts/release/templates/template_lifsaver.rb @@ -8,7 +8,6 @@ homepage "https://github.com/lucuma13/lifsaver" app "Lifsaver.app" - binary "#{appdir}/Lifsaver.app/Contents/Helpers/lifsaver", target: "lifsaver" postflight do if OS.mac? && File.exist?("#{appdir}/Lifsaver.app") From b175564572f4054633f47bda7c417022050ce632 Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sat, 18 Jul 2026 13:12:36 +0100 Subject: [PATCH 06/14] rename targets to Lifsaver + LifsaverKit --- .github/workflows/ci.yml | 2 +- Package.swift | 12 ++++++------ Sources/{LifsaverApp => Lifsaver}/AppDelegate.swift | 0 .../DiagnosticReportFlow.swift | 2 +- .../DiskActivityWatcher.swift | 0 .../{LifsaverApp => Lifsaver}/EscalatedMount.swift | 2 +- .../{LifsaverApp => Lifsaver}/MountCoordinator.swift | 2 +- Sources/{LifsaverApp => Lifsaver}/Notifier.swift | 0 .../StatusItemController.swift | 2 +- Sources/{LifsaverApp => Lifsaver}/main.swift | 0 Sources/{LifsaverCore => LifsaverKit}/Console.swift | 0 .../DiagnosticsReport.swift | 0 .../{LifsaverCore => LifsaverKit}/MountTable.swift | 0 Sources/{LifsaverCore => LifsaverKit}/Mounter.swift | 0 .../ProcessRunner.swift | 0 Sources/{LifsaverCore => LifsaverKit}/Report.swift | 0 .../RootMountRunner.swift | 0 Sources/{LifsaverCore => LifsaverKit}/Scanner.swift | 0 .../StatusMenuModel.swift | 0 .../UpdateChecker.swift | 0 Sources/{LifsaverCore => LifsaverKit}/Version.swift | 0 .../DiagnosticsReportTests.swift | 2 +- .../Fixtures.swift | 2 +- .../MounterTests.swift | 2 +- .../ProcessRunnerTests.swift | 2 +- .../RootMountRunnerTests.swift | 2 +- .../ScannerTargetSelectionTests.swift | 2 +- .../ScannerTests.swift | 2 +- .../StatusMenuModelTests.swift | 2 +- .../UpdateCheckerTests.swift | 2 +- scripts/release/build.sh | 10 +++++----- scripts/release/bundle_app.sh | 4 ++-- scripts/version.sh | 2 +- 33 files changed, 28 insertions(+), 28 deletions(-) rename Sources/{LifsaverApp => Lifsaver}/AppDelegate.swift (100%) rename Sources/{LifsaverApp => Lifsaver}/DiagnosticReportFlow.swift (99%) rename Sources/{LifsaverApp => Lifsaver}/DiskActivityWatcher.swift (100%) rename Sources/{LifsaverApp => Lifsaver}/EscalatedMount.swift (99%) rename Sources/{LifsaverApp => Lifsaver}/MountCoordinator.swift (99%) rename Sources/{LifsaverApp => Lifsaver}/Notifier.swift (100%) rename Sources/{LifsaverApp => Lifsaver}/StatusItemController.swift (99%) rename Sources/{LifsaverApp => Lifsaver}/main.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/Console.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/DiagnosticsReport.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/MountTable.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/Mounter.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/ProcessRunner.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/Report.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/RootMountRunner.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/Scanner.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/StatusMenuModel.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/UpdateChecker.swift (100%) rename Sources/{LifsaverCore => LifsaverKit}/Version.swift (100%) rename Tests/{LifsaverCoreTests => LifsaverKitTests}/DiagnosticsReportTests.swift (99%) rename Tests/{LifsaverCoreTests => LifsaverKitTests}/Fixtures.swift (99%) rename Tests/{LifsaverCoreTests => LifsaverKitTests}/MounterTests.swift (99%) rename Tests/{LifsaverCoreTests => LifsaverKitTests}/ProcessRunnerTests.swift (98%) rename Tests/{LifsaverCoreTests => LifsaverKitTests}/RootMountRunnerTests.swift (99%) rename Tests/{LifsaverCoreTests => LifsaverKitTests}/ScannerTargetSelectionTests.swift (99%) rename Tests/{LifsaverCoreTests => LifsaverKitTests}/ScannerTests.swift (99%) rename Tests/{LifsaverCoreTests => LifsaverKitTests}/StatusMenuModelTests.swift (99%) rename Tests/{LifsaverCoreTests => LifsaverKitTests}/UpdateCheckerTests.swift (99%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 120e290..d0197a7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -96,7 +96,7 @@ jobs: xcrun llvm-cov export \ -format=lcov \ -instr-profile "$BIN/codecov/default.profdata" \ - "$BIN/lifsaverPackageTests.xctest/Contents/MacOS/lifsaverPackageTests" \ + "$BIN/LifsaverPackageTests.xctest/Contents/MacOS/LifsaverPackageTests" \ -ignore-filename-regex='(Tests|\.build)/' > coverage.lcov - name: Upload coverage to Codecov uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7 diff --git a/Package.swift b/Package.swift index d6d77c0..8eb5131 100644 --- a/Package.swift +++ b/Package.swift @@ -2,17 +2,17 @@ import PackageDescription let package = Package( - name: "lifsaver", + name: "Lifsaver", platforms: [.macOS(.v13)], targets: [ - .target(name: "LifsaverCore"), + .target(name: "LifsaverKit"), .executableTarget( - name: "LifsaverApp", - dependencies: ["LifsaverCore"] + name: "Lifsaver", + dependencies: ["LifsaverKit"] ), .testTarget( - name: "LifsaverCoreTests", - dependencies: ["LifsaverCore"] + name: "LifsaverKitTests", + dependencies: ["LifsaverKit"] ), ] ) diff --git a/Sources/LifsaverApp/AppDelegate.swift b/Sources/Lifsaver/AppDelegate.swift similarity index 100% rename from Sources/LifsaverApp/AppDelegate.swift rename to Sources/Lifsaver/AppDelegate.swift diff --git a/Sources/LifsaverApp/DiagnosticReportFlow.swift b/Sources/Lifsaver/DiagnosticReportFlow.swift similarity index 99% rename from Sources/LifsaverApp/DiagnosticReportFlow.swift rename to Sources/Lifsaver/DiagnosticReportFlow.swift index d5ce319..7e66207 100644 --- a/Sources/LifsaverApp/DiagnosticReportFlow.swift +++ b/Sources/Lifsaver/DiagnosticReportFlow.swift @@ -1,5 +1,5 @@ import AppKit -import LifsaverCore +import LifsaverKit /// UI flow behind the "Save Diagnostic Report…" menu item: ask for an /// optional description, pick a destination, then gather the report and diff --git a/Sources/LifsaverApp/DiskActivityWatcher.swift b/Sources/Lifsaver/DiskActivityWatcher.swift similarity index 100% rename from Sources/LifsaverApp/DiskActivityWatcher.swift rename to Sources/Lifsaver/DiskActivityWatcher.swift diff --git a/Sources/LifsaverApp/EscalatedMount.swift b/Sources/Lifsaver/EscalatedMount.swift similarity index 99% rename from Sources/LifsaverApp/EscalatedMount.swift rename to Sources/Lifsaver/EscalatedMount.swift index 281189d..20f29c1 100644 --- a/Sources/LifsaverApp/EscalatedMount.swift +++ b/Sources/Lifsaver/EscalatedMount.swift @@ -1,5 +1,5 @@ import Foundation -import LifsaverCore +import LifsaverKit import os /// Re-runs the app's own binary as root through the standard macOS diff --git a/Sources/LifsaverApp/MountCoordinator.swift b/Sources/Lifsaver/MountCoordinator.swift similarity index 99% rename from Sources/LifsaverApp/MountCoordinator.swift rename to Sources/Lifsaver/MountCoordinator.swift index bf019a5..00a3680 100644 --- a/Sources/LifsaverApp/MountCoordinator.swift +++ b/Sources/Lifsaver/MountCoordinator.swift @@ -1,4 +1,4 @@ -import LifsaverCore +import LifsaverKit /// Mounts stalled volumes in two passes, so the password dialog only appears /// when it buys something. diff --git a/Sources/LifsaverApp/Notifier.swift b/Sources/Lifsaver/Notifier.swift similarity index 100% rename from Sources/LifsaverApp/Notifier.swift rename to Sources/Lifsaver/Notifier.swift diff --git a/Sources/LifsaverApp/StatusItemController.swift b/Sources/Lifsaver/StatusItemController.swift similarity index 99% rename from Sources/LifsaverApp/StatusItemController.swift rename to Sources/Lifsaver/StatusItemController.swift index 8128274..90b58b2 100644 --- a/Sources/LifsaverApp/StatusItemController.swift +++ b/Sources/Lifsaver/StatusItemController.swift @@ -1,5 +1,5 @@ import AppKit -import LifsaverCore +import LifsaverKit import ServiceManagement /// Diagnostics from the core land in the log, never in a terminal that diff --git a/Sources/LifsaverApp/main.swift b/Sources/Lifsaver/main.swift similarity index 100% rename from Sources/LifsaverApp/main.swift rename to Sources/Lifsaver/main.swift diff --git a/Sources/LifsaverCore/Console.swift b/Sources/LifsaverKit/Console.swift similarity index 100% rename from Sources/LifsaverCore/Console.swift rename to Sources/LifsaverKit/Console.swift diff --git a/Sources/LifsaverCore/DiagnosticsReport.swift b/Sources/LifsaverKit/DiagnosticsReport.swift similarity index 100% rename from Sources/LifsaverCore/DiagnosticsReport.swift rename to Sources/LifsaverKit/DiagnosticsReport.swift diff --git a/Sources/LifsaverCore/MountTable.swift b/Sources/LifsaverKit/MountTable.swift similarity index 100% rename from Sources/LifsaverCore/MountTable.swift rename to Sources/LifsaverKit/MountTable.swift diff --git a/Sources/LifsaverCore/Mounter.swift b/Sources/LifsaverKit/Mounter.swift similarity index 100% rename from Sources/LifsaverCore/Mounter.swift rename to Sources/LifsaverKit/Mounter.swift diff --git a/Sources/LifsaverCore/ProcessRunner.swift b/Sources/LifsaverKit/ProcessRunner.swift similarity index 100% rename from Sources/LifsaverCore/ProcessRunner.swift rename to Sources/LifsaverKit/ProcessRunner.swift diff --git a/Sources/LifsaverCore/Report.swift b/Sources/LifsaverKit/Report.swift similarity index 100% rename from Sources/LifsaverCore/Report.swift rename to Sources/LifsaverKit/Report.swift diff --git a/Sources/LifsaverCore/RootMountRunner.swift b/Sources/LifsaverKit/RootMountRunner.swift similarity index 100% rename from Sources/LifsaverCore/RootMountRunner.swift rename to Sources/LifsaverKit/RootMountRunner.swift diff --git a/Sources/LifsaverCore/Scanner.swift b/Sources/LifsaverKit/Scanner.swift similarity index 100% rename from Sources/LifsaverCore/Scanner.swift rename to Sources/LifsaverKit/Scanner.swift diff --git a/Sources/LifsaverCore/StatusMenuModel.swift b/Sources/LifsaverKit/StatusMenuModel.swift similarity index 100% rename from Sources/LifsaverCore/StatusMenuModel.swift rename to Sources/LifsaverKit/StatusMenuModel.swift diff --git a/Sources/LifsaverCore/UpdateChecker.swift b/Sources/LifsaverKit/UpdateChecker.swift similarity index 100% rename from Sources/LifsaverCore/UpdateChecker.swift rename to Sources/LifsaverKit/UpdateChecker.swift diff --git a/Sources/LifsaverCore/Version.swift b/Sources/LifsaverKit/Version.swift similarity index 100% rename from Sources/LifsaverCore/Version.swift rename to Sources/LifsaverKit/Version.swift diff --git a/Tests/LifsaverCoreTests/DiagnosticsReportTests.swift b/Tests/LifsaverKitTests/DiagnosticsReportTests.swift similarity index 99% rename from Tests/LifsaverCoreTests/DiagnosticsReportTests.swift rename to Tests/LifsaverKitTests/DiagnosticsReportTests.swift index 67cb242..c148b3a 100644 --- a/Tests/LifsaverCoreTests/DiagnosticsReportTests.swift +++ b/Tests/LifsaverKitTests/DiagnosticsReportTests.swift @@ -1,7 +1,7 @@ import Foundation import Testing -@testable import LifsaverCore +@testable import LifsaverKit // =========================================================================== // Diagnostic report generation diff --git a/Tests/LifsaverCoreTests/Fixtures.swift b/Tests/LifsaverKitTests/Fixtures.swift similarity index 99% rename from Tests/LifsaverCoreTests/Fixtures.swift rename to Tests/LifsaverKitTests/Fixtures.swift index 65aa3f8..7c34d7d 100644 --- a/Tests/LifsaverCoreTests/Fixtures.swift +++ b/Tests/LifsaverKitTests/Fixtures.swift @@ -1,7 +1,7 @@ import Foundation import os -@testable import LifsaverCore +@testable import LifsaverKit // --------------------------------------------------------------------------- // Fake process runner diff --git a/Tests/LifsaverCoreTests/MounterTests.swift b/Tests/LifsaverKitTests/MounterTests.swift similarity index 99% rename from Tests/LifsaverCoreTests/MounterTests.swift rename to Tests/LifsaverKitTests/MounterTests.swift index 058801f..12c1b1a 100644 --- a/Tests/LifsaverCoreTests/MounterTests.swift +++ b/Tests/LifsaverKitTests/MounterTests.swift @@ -2,7 +2,7 @@ import Foundation import Testing import os -@testable import LifsaverCore +@testable import LifsaverKit /// Records mount-point directory operations; optionally fails creation. final class FakeFileOperations: FileOperating { diff --git a/Tests/LifsaverCoreTests/ProcessRunnerTests.swift b/Tests/LifsaverKitTests/ProcessRunnerTests.swift similarity index 98% rename from Tests/LifsaverCoreTests/ProcessRunnerTests.swift rename to Tests/LifsaverKitTests/ProcessRunnerTests.swift index dc4f7f0..34c8bfa 100644 --- a/Tests/LifsaverCoreTests/ProcessRunnerTests.swift +++ b/Tests/LifsaverKitTests/ProcessRunnerTests.swift @@ -1,7 +1,7 @@ import Foundation import Testing -@testable import LifsaverCore +@testable import LifsaverKit /// Real-subprocess tests for DefaultProcessRunner — everything else in the /// suite fakes ProcessRunning, so the genuine launch/drain/timeout paths are diff --git a/Tests/LifsaverCoreTests/RootMountRunnerTests.swift b/Tests/LifsaverKitTests/RootMountRunnerTests.swift similarity index 99% rename from Tests/LifsaverCoreTests/RootMountRunnerTests.swift rename to Tests/LifsaverKitTests/RootMountRunnerTests.swift index 64e6682..f876681 100644 --- a/Tests/LifsaverCoreTests/RootMountRunnerTests.swift +++ b/Tests/LifsaverKitTests/RootMountRunnerTests.swift @@ -1,7 +1,7 @@ import Foundation import Testing -@testable import LifsaverCore +@testable import LifsaverKit // =========================================================================== // Escalated helper mount sequence diff --git a/Tests/LifsaverCoreTests/ScannerTargetSelectionTests.swift b/Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift similarity index 99% rename from Tests/LifsaverCoreTests/ScannerTargetSelectionTests.swift rename to Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift index 6cd9441..5b51f00 100644 --- a/Tests/LifsaverCoreTests/ScannerTargetSelectionTests.swift +++ b/Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift @@ -1,7 +1,7 @@ import Foundation import Testing -@testable import LifsaverCore +@testable import LifsaverKit // =========================================================================== // isExternalHardware diff --git a/Tests/LifsaverCoreTests/ScannerTests.swift b/Tests/LifsaverKitTests/ScannerTests.swift similarity index 99% rename from Tests/LifsaverCoreTests/ScannerTests.swift rename to Tests/LifsaverKitTests/ScannerTests.swift index 428390e..a254c2f 100644 --- a/Tests/LifsaverCoreTests/ScannerTests.swift +++ b/Tests/LifsaverKitTests/ScannerTests.swift @@ -1,7 +1,7 @@ import Foundation import Testing -@testable import LifsaverCore +@testable import LifsaverKit // =========================================================================== // LiveMountTable (real getmntinfo — read-only, safe in CI) diff --git a/Tests/LifsaverCoreTests/StatusMenuModelTests.swift b/Tests/LifsaverKitTests/StatusMenuModelTests.swift similarity index 99% rename from Tests/LifsaverCoreTests/StatusMenuModelTests.swift rename to Tests/LifsaverKitTests/StatusMenuModelTests.swift index e65051c..34cace0 100644 --- a/Tests/LifsaverCoreTests/StatusMenuModelTests.swift +++ b/Tests/LifsaverKitTests/StatusMenuModelTests.swift @@ -1,6 +1,6 @@ import Testing -@testable import LifsaverCore +@testable import LifsaverKit // =========================================================================== // Menu entries diff --git a/Tests/LifsaverCoreTests/UpdateCheckerTests.swift b/Tests/LifsaverKitTests/UpdateCheckerTests.swift similarity index 99% rename from Tests/LifsaverCoreTests/UpdateCheckerTests.swift rename to Tests/LifsaverKitTests/UpdateCheckerTests.swift index 096877a..c08ff22 100644 --- a/Tests/LifsaverCoreTests/UpdateCheckerTests.swift +++ b/Tests/LifsaverKitTests/UpdateCheckerTests.swift @@ -2,7 +2,7 @@ import Foundation import Testing import os -@testable import LifsaverCore +@testable import LifsaverKit // --------------------------------------------------------------------------- // Helpers diff --git a/scripts/release/build.sh b/scripts/release/build.sh index ba989b3..16ebc13 100755 --- a/scripts/release/build.sh +++ b/scripts/release/build.sh @@ -12,10 +12,10 @@ swift build -c release --arch x86_64 OUT="$ROOT/.build/universal-release" mkdir -p "$OUT" lipo -create \ - ".build/arm64-apple-macosx/release/LifsaverApp" \ - ".build/x86_64-apple-macosx/release/LifsaverApp" \ - -output "$OUT/LifsaverApp" -printf 'LifsaverApp: ' -lipo -archs "$OUT/LifsaverApp" + ".build/arm64-apple-macosx/release/Lifsaver" \ + ".build/x86_64-apple-macosx/release/Lifsaver" \ + -output "$OUT/Lifsaver" +printf 'Lifsaver: ' +lipo -archs "$OUT/Lifsaver" echo "Products: $OUT" diff --git a/scripts/release/bundle_app.sh b/scripts/release/bundle_app.sh index b80c723..34325cf 100755 --- a/scripts/release/bundle_app.sh +++ b/scripts/release/bundle_app.sh @@ -11,7 +11,7 @@ cd "$ROOT" VERSION="$("$ROOT/scripts/version.sh")" BIN_PATH="$ROOT/.build/universal-release" -[ -x "$BIN_PATH/LifsaverApp" ] || { +[ -x "$BIN_PATH/Lifsaver" ] || { echo "ERROR: run scripts/release/build.sh first" >&2 exit 1 } @@ -20,7 +20,7 @@ APP="$ROOT/dist/Lifsaver.app" rm -rf "$APP" mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources" -cp "$BIN_PATH/LifsaverApp" "$APP/Contents/MacOS/Lifsaver" +cp "$BIN_PATH/Lifsaver" "$APP/Contents/MacOS/Lifsaver" chmod 755 "$APP/Contents/MacOS/Lifsaver" # Menu-bar icons (loose @1x/@2x/@3x PNG files; NSImage(named:) resolves them): diff --git a/scripts/version.sh b/scripts/version.sh index 56f2ac8..2ac4ff9 100755 --- a/scripts/version.sh +++ b/scripts/version.sh @@ -7,7 +7,7 @@ set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" -VERSION="$(sed -n 's/^public let lifsaverVersion = "\(.*\)"$/\1/p' "$ROOT/Sources/LifsaverCore/Version.swift")" +VERSION="$(sed -n 's/^public let lifsaverVersion = "\(.*\)"$/\1/p' "$ROOT/Sources/LifsaverKit/Version.swift")" [ -n "$VERSION" ] || { echo "ERROR: could not read version from Version.swift" >&2 exit 1 From 64891054af08df7603104fc02af6ec4941bed247 Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sat, 18 Jul 2026 13:13:23 +0100 Subject: [PATCH 07/14] rename --- .../{demo.gif => lifsaver_demo_animation.gif} | Bin .../render/{demo_gif.swift => demo_animation.swift} | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename docs/images/{demo.gif => lifsaver_demo_animation.gif} (100%) rename scripts/render/{demo_gif.swift => demo_animation.swift} (99%) diff --git a/docs/images/demo.gif b/docs/images/lifsaver_demo_animation.gif similarity index 100% rename from docs/images/demo.gif rename to docs/images/lifsaver_demo_animation.gif diff --git a/scripts/render/demo_gif.swift b/scripts/render/demo_animation.swift similarity index 99% rename from scripts/render/demo_gif.swift rename to scripts/render/demo_animation.swift index e3da26f..8a6b6b5 100644 --- a/scripts/render/demo_gif.swift +++ b/scripts/render/demo_animation.swift @@ -1,8 +1,8 @@ import AppKit -// Render the demo animation docs/images/demo.gif. +// Render the demo animation for README // -// Usage: swift demo_gif.swift (requires ffmpeg: brew install ffmpeg) +// Usage: swift demo_animation.swift (requires ffmpeg: brew install ffmpeg) // MARK: - Config @@ -10,7 +10,7 @@ let projectRoot = URL(fileURLWithPath: #filePath) .deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent() let resourcesDir = projectRoot.appendingPathComponent("scripts/release/app-resources").path -let outputGif = projectRoot.appendingPathComponent("docs/images/demo.gif").path +let outputGif = projectRoot.appendingPathComponent("docs/images/lifsaver_demo_animation.gif").path // Scratch dir for the intermediate PNG frames + ffmpeg concat manifest. let outputDir = NSTemporaryDirectory() + "lifsaver-demo-\(ProcessInfo.processInfo.processIdentifier)" From a710d7e974d89f49a89899b8cf3a39dcde927c7f Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sat, 18 Jul 2026 18:39:47 +0100 Subject: [PATCH 08/14] fix minor bugs + UX design --- Sources/Lifsaver/EscalatedMount.swift | 57 +++++- Sources/Lifsaver/MountCoordinator.swift | 24 +-- Sources/Lifsaver/Notifier.swift | 12 +- Sources/Lifsaver/StatusItemController.swift | 177 +++++++++++------- Sources/LifsaverKit/DiagnosticsReport.swift | 16 +- Sources/LifsaverKit/Mounter.swift | 70 +++++-- Sources/LifsaverKit/ProcessRunner.swift | 52 +++-- Sources/LifsaverKit/Report.swift | 7 +- Sources/LifsaverKit/RootMountRunner.swift | 26 +-- Sources/LifsaverKit/Scanner.swift | 172 +++++++++++------ Sources/LifsaverKit/StatusMenuModel.swift | 35 ++-- Sources/LifsaverKit/UpdateChecker.swift | 57 ++++-- Tests/LifsaverKitTests/MounterPassTests.swift | 76 ++++++++ .../RootMountRunnerTests.swift | 11 +- .../ScannerTargetSelectionTests.swift | 94 +++++++++- Tests/LifsaverKitTests/ScannerTests.swift | 48 +++-- .../StatusMenuModelTests.swift | 49 +++-- .../LifsaverKitTests/UpdateCheckerTests.swift | 17 ++ 18 files changed, 702 insertions(+), 298 deletions(-) create mode 100644 Tests/LifsaverKitTests/MounterPassTests.swift diff --git a/Sources/Lifsaver/EscalatedMount.swift b/Sources/Lifsaver/EscalatedMount.swift index 20f29c1..f422a2f 100644 --- a/Sources/Lifsaver/EscalatedMount.swift +++ b/Sources/Lifsaver/EscalatedMount.swift @@ -12,9 +12,9 @@ import os /// appends a `__EXIT:` sentinel that carries the real status back. enum EscalatedMount { private static let sentinel = "__EXIT:" - /// AppleScript's userCanceledErr — osascript reports the error code as a - /// suffix: `execution error: User canceled. (-128)`. - private static let userCancelledSuffix = "(-128)" + /// AppleScript's userCanceledErr — osascript reports the code in a trailing + /// parenthesis: `execution error: User canceled. (-128)`. + private static let userCancelledCode = -128 /// When argv carries the helper flag, this process was launched by `run()` /// as the root helper: execute the mount sequence and exit. Called from @@ -33,7 +33,13 @@ enum EscalatedMount { } static func run(runner: any ProcessRunning = DefaultProcessRunner()) async -> EscalatedMountOutcome { - let helperPath = Bundle.main.executablePath ?? CommandLine.arguments[0] + // Resolve symlinks first and validate + execute the same resolved path, + // so the checked file is the file the password launches. + let helperPath = URL(fileURLWithPath: Bundle.main.executablePath ?? CommandLine.arguments[0]) + .resolvingSymlinksInPath().path + if let reason = escalationSafetyError(forExecutableAt: helperPath) { + return .error("refusing to escalate: \(reason)") + } // Quote for the shell, then escape the whole line for the AppleScript // string literal (backslashes first, then double quotes). @@ -58,7 +64,7 @@ enum EscalatedMount { if result.status != 0 { let message = result.stderr.trimmingCharacters(in: .whitespacesAndNewlines) - if message.hasSuffix(userCancelledSuffix) { + if appleScriptErrorCode(from: message) == userCancelledCode { return .cancelled } return .error(message) @@ -67,6 +73,42 @@ enum EscalatedMount { return parse(stdout: result.stdoutText) } + /// The numeric code from a trailing "()" in an osascript error + /// message, or nil. Parsing the code instead of pinning one rendered string + /// keeps cancel detection working if the message text around the code ever + /// changes. + private static func appleScriptErrorCode(from message: String) -> Int? { + guard + message.hasSuffix(")"), + let open = message.lastIndex(of: "(") + else { return nil } + return Int(message[message.index(after: open).. String? { + guard let attributes = try? FileManager.default.attributesOfItem(atPath: path) else { + return "cannot inspect helper binary at \(path)" + } + guard attributes[.type] as? FileAttributeType == .typeRegular else { + return "helper binary at \(path) is not a regular file" + } + let owner = (attributes[.ownerAccountID] as? NSNumber)?.uint32Value + guard owner == 0 || owner == getuid() else { + return "helper binary at \(path) is owned by another user" + } + let permissions = (attributes[.posixPermissions] as? NSNumber)?.int16Value ?? 0 + guard permissions & 0o022 == 0 else { + return "helper binary at \(path) is writable by other users" + } + return nil + } + private static func parse(stdout: String) -> EscalatedMountOutcome { guard let sentinelRange = stdout.range(of: sentinel, options: .backwards) else { return .error("missing exit sentinel in helper output") @@ -82,6 +124,11 @@ enum EscalatedMount { return .error("unreadable helper output (exit \(exitCode))") } + // The helper's stderr is discarded by the escalation plumbing, so a + // root-side failure arrives in-band. + if let error = report.error { + return .error(error) + } return .report(report.results) } } diff --git a/Sources/Lifsaver/MountCoordinator.swift b/Sources/Lifsaver/MountCoordinator.swift index 00a3680..c82bf80 100644 --- a/Sources/Lifsaver/MountCoordinator.swift +++ b/Sources/Lifsaver/MountCoordinator.swift @@ -26,28 +26,10 @@ enum MountCoordinator { return Outcome(unprivileged: .init(), escalated: .error("scan failed: \(error)")) } - let counts = await mountUnprivileged(targets, scanner: scanner) + // First pass: diskutil only, no escalation. A `.fail` here means + // "needs root", not "impossible". + let counts = await Mounter(scanner: scanner, allowRawFallback: false).mountAll(targets).counts guard counts.fail > 0 else { return Outcome(unprivileged: counts, escalated: nil) } return Outcome(unprivileged: counts, escalated: await EscalatedMount.run()) } - - /// First pass: diskutil only, no escalation. A `.fail` here means "needs - /// root", not "impossible". - private static func mountUnprivileged( - _ targets: [String], scanner: DiskScanner - ) async -> MountReport.Counts { - let mounter = Mounter(scanner: scanner, allowRawFallback: false) - var counts = MountReport.Counts() - for devId in targets { - switch await mounter.execute(devId) { - case .ok: - counts.ok += 1 - case .fail: - counts.fail += 1 - case .skip: - counts.skip += 1 - } - } - return counts - } } diff --git a/Sources/Lifsaver/Notifier.swift b/Sources/Lifsaver/Notifier.swift index a727944..b351e86 100644 --- a/Sources/Lifsaver/Notifier.swift +++ b/Sources/Lifsaver/Notifier.swift @@ -33,7 +33,17 @@ enum Notifier { Task { let center = UNUserNotificationCenter.current() - let granted = (try? await center.requestAuthorization(options: [.alert])) ?? false + // Run the authorization flow only while undetermined; afterwards + // the recorded settings answer without re-requesting per post. + let granted: Bool + switch await center.notificationSettings().authorizationStatus { + case .notDetermined: + granted = (try? await center.requestAuthorization(options: [.alert])) ?? false + case .authorized, .provisional: + granted = true + default: + granted = false + } guard granted else { NSLog("lifsaver notification (permission denied): %@ — %@", title, body) return diff --git a/Sources/Lifsaver/StatusItemController.swift b/Sources/Lifsaver/StatusItemController.swift index 90b58b2..965cab0 100644 --- a/Sources/Lifsaver/StatusItemController.swift +++ b/Sources/Lifsaver/StatusItemController.swift @@ -14,6 +14,17 @@ private let quietConsole = Console( /// instead of calling the card stalled. private let fsckRetryDelay: TimeInterval = 15 +/// Single source for what the app says about its own distribution. The +/// packaging scripts and workflows must produce a matching asset name; releases +/// are tagged `v` (enforced by publish.yml). +private let githubRepo = "lucuma13/lifsaver" +private let installerAssetName = "lifsaver_installer_macos.pkg" + +/// `UpdateChecker.start()` is cache-gated to at most one request per day; +/// re-arming it on this cadence keeps a launch-at-login instance that runs for +/// weeks discovering releases, instead of only ever checking at launch. +private let updateRecheckInterval: TimeInterval = 6 * 60 * 60 + /// Owns the status-bar item and its menu. A DiskArbitration watcher rescans /// (read-only) whenever disks appear, disappear, mount, or unmount, so /// stalled cards are flagged proactively: the icon turns orange and a @@ -27,18 +38,23 @@ final class StatusItemController: NSObject, NSMenuDelegate { private let scanner = DiskScanner(runner: DefaultProcessRunner(), console: quietConsole) private let updateChecker = UpdateChecker( package: "lifsaver", - repo: "lucuma13/lifsaver", + repo: githubRepo, currentVersion: lifsaverVersion ) + private var updateRecheckTimer: Timer? - /// Invalidates in-flight scans when a newer one starts. - private var scanGeneration = ScanGeneration() + /// Monotonic token invalidating in-flight scans when a newer one starts. + private var scanGeneration = 0 private var mountInProgress = false private var lastScan: StatusMenuModel.ScanState? private var stalledWatch = StalledWatchState() private var diskWatcher: DiskActivityWatcher? private var checkingForUpdates = false + private var menuIsOpen = false + /// SMAppService.status is a blocking launchd XPC round-trip; query it when + /// the menu opens or the toggle flips, not on every rebuild. + private var launchAtLoginEnabled = false /// Recent scan/mount outcomes, embedded in diagnostic reports. private var recentEvents: [String] = [] @@ -82,22 +98,36 @@ final class StatusItemController: NSObject, NSMenuDelegate { diskWatcher = DiskActivityWatcher { [weak self] in self?.startScan() } updateChecker.start() + let checker = updateChecker + let timer = Timer(timeInterval: updateRecheckInterval, repeats: true) { _ in + checker.start() + } + timer.tolerance = updateRecheckInterval / 4 + RunLoop.main.add(timer, forMode: .common) + updateRecheckTimer = timer } // MARK: - NSMenuDelegate func menuWillOpen(_ menu: NSMenu) { + menuIsOpen = true guard !mountInProgress else { return } + launchAtLoginEnabled = SMAppService.mainApp.status == .enabled // The watcher keeps `lastScan` current, so show it straight away and // let the reconciling scan mutate the menu in place if anything moved. - rebuildMenu(state: lastScan ?? .scanning) + rebuildMenu() startScan() } + func menuDidClose(_ menu: NSMenu) { + menuIsOpen = false + } + // MARK: - Scanning private func startScan() { - let generation = scanGeneration.begin() + scanGeneration += 1 + let generation = scanGeneration // The scan is async (subprocess waits suspend rather than block), so // it can run as a main-actor task without freezing the menu. @@ -105,21 +135,25 @@ final class StatusItemController: NSObject, NSMenuDelegate { Task { [weak self] in do { let devices = try await scanner.scanTargets() - var targets: [StatusMenuModel.ScanTarget] = [] - var settled: [String] = [] - for device in devices { - targets.append( - StatusMenuModel.ScanTarget( - devId: device, - fsType: await scanner.partitionFSType(device) - ) - ) - // A card diskarbitrationd is still fsck-ing may yet mount - // on its own — don't call it stalled. - if !(await scanner.isFsckActive(device)) { - settled.append(device) + // The per-device queries are independent — fan them out instead + // of paying one subprocess round-trip after another. + let fsTypes = await withTaskGroup(of: (Int, String).self) { group in + for (index, device) in devices.enumerated() { + group.addTask { (index, await scanner.partitionFSType(device)) } } + var results = [String](repeating: "", count: devices.count) + for await (index, fsType) in group { + results[index] = fsType + } + return results } + let targets = zip(devices, fsTypes).map { StatusMenuModel.ScanTarget(devId: $0, fsType: $1) } + // A card diskarbitrationd is still fsck-ing may yet mount on + // its own — don't call it stalled. One pgrep snapshot serves + // every device; per-device freshness only matters at mount + // time, where Mounter re-checks. + let fsckListing = await scanner.fsckListing() + let settled = devices.filter { !scanner.isFsckActive($0, listing: fsckListing) } self?.finishScan( .results(targets), settled: settled, @@ -140,7 +174,7 @@ final class StatusItemController: NSObject, NSMenuDelegate { fsckPending: Bool, generation: Int ) { - guard scanGeneration.isCurrent(generation) else { return } + guard generation == scanGeneration else { return } lastScan = state // A failed scan proves nothing about the disks; leave the stalled @@ -152,7 +186,11 @@ final class StatusItemController: NSObject, NSMenuDelegate { } refreshIcon() } - rebuildMenu(state: state) + // Every open rebuilds anyway; while the menu is closed only the icon + // needs to stay current. + if menuIsOpen { + rebuildMenu() + } // fsck can finish without producing a disk event; look again shortly. if fsckPending { @@ -193,52 +231,21 @@ final class StatusItemController: NSObject, NSMenuDelegate { // MARK: - Menu construction - private func rebuildMenu(state: StatusMenuModel.ScanState) { + private func rebuildMenu() { menu.removeAllItems() let entries = StatusMenuModel.entries( - state: state, + state: lastScan ?? .scanning, newerVersion: updateChecker.knownNewerVersion(), isCheckingForUpdates: checkingForUpdates, showLaunchAtLogin: Bundle.main.bundleIdentifier != nil, - launchAtLoginEnabled: SMAppService.mainApp.status == .enabled + launchAtLoginEnabled: launchAtLoginEnabled ) for entry in entries { menu.addItem(menuItem(for: entry)) } } - private func menuItem(for entry: StatusMenuModel.Entry) -> NSMenuItem { - switch entry { - case .separator: - return NSMenuItem.separator() - case .disabled(let title): - let item = NSMenuItem(title: title, action: nil, keyEquivalent: "") - item.isEnabled = false - return item - case .mount(let title): - return actionItem(title: title, action: #selector(mountClicked)) - case .checkForUpdates(let title): - return actionItem(title: title, action: #selector(checkForUpdatesClicked)) - case .updateAvailable(let title): - return actionItem(title: title, action: #selector(downloadLatestInstaller)) - case .launchAtLogin(let enabled): - let item = actionItem(title: "Start at Login", action: #selector(toggleLaunchAtLogin)) - item.state = enabled ? .on : .off - return item - case .saveReport(let title): - return actionItem(title: title, action: #selector(saveReportClicked)) - case .quit(let title): - return actionItem(title: title, action: #selector(quit), keyEquivalent: "q") - } - } - - private func actionItem(title: String, action: Selector, keyEquivalent: String = "") -> NSMenuItem { - let item = NSMenuItem(title: title, action: action, keyEquivalent: keyEquivalent) - item.target = self - return item - } - // MARK: - Actions @objc private func mountClicked() { @@ -299,27 +306,29 @@ final class StatusItemController: NSObject, NSMenuDelegate { @objc private func checkForUpdatesClicked() { guard !checkingForUpdates else { return } checkingForUpdates = true - rebuildMenu(state: lastScan ?? .scanning) + rebuildMenu() Task { [weak self] in guard let self else { return } await updateChecker.checkNow() checkingForUpdates = false - rebuildMenu(state: lastScan ?? .scanning) + rebuildMenu() } } - /// Downloads the latest installer directly rather than sending the user to - /// the releases page. The asset name is frozen — already-shipped versions - /// point at it. + /// Downloads the installer for exactly the version the menu item named, + /// rather than sending the user to the releases page. Not the + /// `releases/latest/download/…` alias: GitHub resolves that to the newest + /// non-prerelease release, which 404s while only prereleases exist and can + /// serve a different version than the item advertised. @objc private func downloadLatestInstaller() { - let url = URL( - string: - "https://github.com/lucuma13/lifsaver/releases/latest/download/lifsaver_installer_macos.pkg" - ) - if let url { - NSWorkspace.shared.open(url) - } + guard + let version = updateChecker.knownNewerVersion(), + let url = URL( + string: "https://github.com/\(githubRepo)/releases/download/v\(version)/\(installerAssetName)" + ) + else { return } + NSWorkspace.shared.open(url) } @objc private func toggleLaunchAtLogin() { @@ -332,9 +341,45 @@ final class StatusItemController: NSObject, NSMenuDelegate { } catch { NSLog("lifsaver: launch-at-login toggle failed: %@", "\(error)") } + launchAtLoginEnabled = SMAppService.mainApp.status == .enabled } @objc private func quit() { NSApp.terminate(nil) } } + +// MARK: - Menu entry rendering + +extension StatusItemController { + fileprivate func menuItem(for entry: StatusMenuModel.Entry) -> NSMenuItem { + switch entry { + case .separator: + return NSMenuItem.separator() + case .disabled(let title): + let item = NSMenuItem(title: title, action: nil, keyEquivalent: "") + item.isEnabled = false + return item + case .mount(let title): + return actionItem(title: title, action: #selector(mountClicked)) + case .checkForUpdates(let title): + return actionItem(title: title, action: #selector(checkForUpdatesClicked)) + case .updateAvailable(let title): + return actionItem(title: title, action: #selector(downloadLatestInstaller)) + case .launchAtLogin(let enabled): + let item = actionItem(title: "Start at Login", action: #selector(toggleLaunchAtLogin)) + item.state = enabled ? .on : .off + return item + case .saveReport(let title): + return actionItem(title: title, action: #selector(saveReportClicked)) + case .quit(let title): + return actionItem(title: title, action: #selector(quit), keyEquivalent: "q") + } + } + + private func actionItem(title: String, action: Selector, keyEquivalent: String = "") -> NSMenuItem { + let item = NSMenuItem(title: title, action: action, keyEquivalent: keyEquivalent) + item.target = self + return item + } +} diff --git a/Sources/LifsaverKit/DiagnosticsReport.swift b/Sources/LifsaverKit/DiagnosticsReport.swift index 8f83bde..83573b4 100644 --- a/Sources/LifsaverKit/DiagnosticsReport.swift +++ b/Sources/LifsaverKit/DiagnosticsReport.swift @@ -64,8 +64,12 @@ public struct DiagnosticsReporter: Sendable { sections.append(("Scan trace", await scanTrace())) sections.append(("Mount table", mountTableDump())) sections.append(("fsck processes", await fsckDump())) - sections.append(("diskutil list -plist", await rawCommand("diskutil", ["list", "-plist"]))) - sections.append(("diskutil info -plist, per whole disk", await diskInfoDump())) + // One listing serves both the raw dump and the per-disk enumeration — a + // second spawn could disagree with the first mid-report, which is + // exactly the inconsistency a diagnostic report exists to rule out. + let listing = await rawCommand("diskutil", ["list", "-plist"]) + sections.append(("diskutil list -plist", listing)) + sections.append(("diskutil info -plist, per whole disk", await diskInfoDump(fromListing: listing))) return header() + "\n\n" + sections.map { "## \($0.0)\n\n\($0.1)" }.joined(separator: "\n\n") + "\n" @@ -130,11 +134,11 @@ public struct DiagnosticsReporter: Sendable { } /// The externality signals (`Internal`, `RemovableMediaOrExternalDevice`) - /// exist only in per-disk `info` output, so dump it for every whole disk. - private func diskInfoDump() async -> String { + /// exist only in per-disk `info` output, so dump it for every whole disk + /// named in the already-captured listing. + private func diskInfoDump(fromListing listing: String) async -> String { guard - let result = try? await runner.run("diskutil", ["list", "-plist"], timeout: queryTimeout), - let plist = try? PropertyListSerialization.propertyList(from: result.stdout, format: nil), + let plist = try? PropertyListSerialization.propertyList(from: Data(listing.utf8), format: nil), let data = plist as? [String: Any] else { return "unavailable: could not enumerate disks" } diff --git a/Sources/LifsaverKit/Mounter.swift b/Sources/LifsaverKit/Mounter.swift index dade7ac..e9ba97f 100644 --- a/Sources/LifsaverKit/Mounter.swift +++ b/Sources/LifsaverKit/Mounter.swift @@ -70,8 +70,10 @@ public struct Mounter: Sendable { console.out("\nTarget: /dev/\(devId)") } - // Re-query live mount table immediately before acting (race guard) - if scanner.isCurrentlyMounted(devId) { + // Re-query live mount table immediately before acting (race guard). nil + // (table unreadable) proceeds: diskutil mount on an already mounted + // volume is a harmless no-op, skipping a stalled one is not. + if scanner.isCurrentlyMounted(devId) == true { console.out(" SKIPPED — /dev/\(devId) became mounted since scan.") return .skip } @@ -102,12 +104,15 @@ public struct Mounter: Sendable { /// Try `diskutil mount` first (preferred; handles LIFS sandboxing), then /// fall back to raw mount binaries. Verifies against the live mount table - /// after each attempt. + /// after each attempt; when the table cannot be read (nil), the mount + /// binary's zero exit stands — an unreadable table must not turn a + /// successful mount into a spurious failure (and, one level up, into an + /// unwarranted admin password prompt). func attemptMounts(_ devId: String, fsType: String) async -> Bool { if verbose { console.out(" Attempting diskutil mount...") } - if await diskutilMount(devId), scanner.isCurrentlyMounted(devId) { + if await diskutilMount(devId), scanner.isCurrentlyMounted(devId) != false { if verbose { let location = scanner.mountPoint(of: devId) console.out(" SUCCESS via diskutil → \(location.isEmpty ? "(see /Volumes)" : location)") @@ -121,7 +126,7 @@ public struct Mounter: Sendable { console.out(" diskutil mount failed; falling back to raw mount binaries...") } if await rawMount(devId, fsType: fsType) { - if scanner.isCurrentlyMounted(devId) { + if scanner.isCurrentlyMounted(devId) != false { if verbose { console.out(" SUCCESS via raw mount → \(rawMountPoint(devId))") } @@ -135,6 +140,33 @@ public struct Mounter: Sendable { return false } + /// One pass over `targets`: mount each and tally, collecting the mount + /// points of the volumes this pass mounted. Shared by the unprivileged + /// first pass and the escalated root helper so their tallies can never + /// drift. + public struct PassResult: Sendable { + public var counts = MountReport.Counts() + public var mounted: [MountReport.MountedVolume] = [] + + public init() {} + } + + public func mountAll(_ targets: [String]) async -> PassResult { + var result = PassResult() + for devId in targets { + switch await execute(devId) { + case .ok: + result.counts.ok += 1 + result.mounted.append(.init(device: devId, mountPoint: scanner.mountPoint(of: devId))) + case .fail: + result.counts.fail += 1 + case .skip: + result.counts.skip += 1 + } + } + return result + } + /// Where rawMount grafts the volume — the raw binaries need an explicit, /// pre-created mount point (diskutil manages its own under /Volumes). func rawMountPoint(_ devId: String) -> String { @@ -149,17 +181,25 @@ public struct Mounter: Sendable { do { result = try await runner.run("diskutil", ["mount", devId], timeout: mountTimeout) } catch { - if verbose { - console.err(" [diskutil error] \(error)") - } + logError("diskutil", error) return false } - if verbose && !result.stderr.isEmpty { - console.err(" [diskutil stderr] \(result.stderr.trimmingCharacters(in: .whitespacesAndNewlines))") - } + logStderr("diskutil", result) return result.status == 0 } + /// Verbose diagnostic logging shared by every mount attempt, so the + /// diskutil and raw-binary paths always trace identically. + private func logStderr(_ label: String, _ result: ProcessResult) { + guard verbose, !result.stderr.isEmpty else { return } + console.err(" [\(label) stderr] \(result.stderr.trimmingCharacters(in: .whitespacesAndNewlines))") + } + + private func logError(_ label: String, _ error: any Error) { + guard verbose else { return } + console.err(" [\(label) error] \(error)") + } + /// Fallback: use low-level mount binaries when diskutil mount is /// unavailable or returns an error. Mount-point directory is created and /// cleaned up on failure. @@ -201,14 +241,10 @@ public struct Mounter: Sendable { } catch { // Missing binary (removed in newer macOS) or a hung card reader: // move on to the next candidate rather than crashing. - if verbose { - console.err(" [\(name) error] \(error)") - } + logError(name, error) continue } - if verbose && !result.stderr.isEmpty { - console.err(" [\(name) stderr] \(result.stderr.trimmingCharacters(in: .whitespacesAndNewlines))") - } + logStderr(name, result) if result.status == 0 { return true } diff --git a/Sources/LifsaverKit/ProcessRunner.swift b/Sources/LifsaverKit/ProcessRunner.swift index 863a704..2f2ce78 100644 --- a/Sources/LifsaverKit/ProcessRunner.swift +++ b/Sources/LifsaverKit/ProcessRunner.swift @@ -1,4 +1,5 @@ import Foundation +import os public struct ProcessResult: Sendable { public let status: Int32 @@ -77,18 +78,7 @@ public struct DefaultProcessRunner: ProcessRunning { process.standardError = errPipe process.standardInput = FileHandle.nullDevice - // Installed before run() so an instantly-exiting child cannot slip - // past; the stream buffers the exit until it is awaited. The reason - // rides along so a timeout can be told apart from a natural exit. - let (terminations, termination) = AsyncStream.makeStream(of: ChildExit.self) - process.terminationHandler = { process in - termination.yield( - ChildExit( - status: process.terminationStatus, - killedBySignal: process.terminationReason == .uncaughtSignal - )) - termination.finish() - } + let (terminations, exited) = Self.terminationStream(for: process) do { try process.run() @@ -103,7 +93,7 @@ public struct DefaultProcessRunner: ProcessRunning { async let stderrData = Self.drain(errPipe.fileHandleForReading) let pid = process.processIdentifier - let watchdog = Self.watchdog(pid: pid, timeout: timeout) + let watchdog = Self.watchdog(pid: pid, timeout: timeout, exited: exited) var childExit: ChildExit? for await exit in terminations { @@ -114,7 +104,9 @@ public struct DefaultProcessRunner: ProcessRunning { guard let childExit else { // Only possible when the surrounding task was cancelled, which // ends stream iteration early: reap the child and propagate. - kill(pid, SIGKILL) + if !exited.withLock({ $0 }) { + kill(pid, SIGKILL) + } process.waitUntilExit() _ = await (stdoutData, stderrData) throw CancellationError() @@ -138,15 +130,45 @@ public struct DefaultProcessRunner: ProcessRunning { ) } + /// Installed before run() so an instantly-exiting child cannot slip past; + /// the stream buffers the exit until it is awaited. The reason rides along + /// so a timeout can be told apart from a natural exit. `exited` flips + /// synchronously in the handler so a late signal sender can tell "still + /// running" from "already reaped": a SIGKILL aimed at a reaped pid can hit + /// an unrelated, recycled pid — as root in the escalated helper. The check + /// narrows that window to the instant between Foundation reaping the child + /// and the handler running. + private static func terminationStream( + for process: Process + ) -> (AsyncStream, OSAllocatedUnfairLock) { + let exited = OSAllocatedUnfairLock(initialState: false) + let (terminations, termination) = AsyncStream.makeStream(of: ChildExit.self) + process.terminationHandler = { process in + exited.withLock { $0 = true } + termination.yield( + ChildExit( + status: process.terminationStatus, + killedBySignal: process.terminationReason == .uncaughtSignal + )) + termination.finish() + } + return (terminations, exited) + } + /// SIGKILLs `pid` once `timeout` elapses; the task's value reports /// whether it fired. An infinite timeout means no watchdog at all — for /// commands that legitimately wait on the user (e.g. a password dialog). - private static func watchdog(pid: pid_t, timeout: TimeInterval) -> Task? { + private static func watchdog( + pid: pid_t, timeout: TimeInterval, exited: OSAllocatedUnfairLock + ) -> Task? { guard timeout.isFinite else { return nil } return Task { guard (try? await Task.sleep(nanoseconds: UInt64(timeout * 1_000_000_000))) != nil else { return false // cancelled — the child exited in time } + // A child that exited right at the timeout boundary was reaped; its + // pid may already belong to someone else. Never kill it. + guard !exited.withLock({ $0 }) else { return false } kill(pid, SIGKILL) return true } diff --git a/Sources/LifsaverKit/Report.swift b/Sources/LifsaverKit/Report.swift index a7a9e09..519c856 100644 --- a/Sources/LifsaverKit/Report.swift +++ b/Sources/LifsaverKit/Report.swift @@ -30,10 +30,15 @@ public struct MountReport: Codable, Sendable, Equatable { public var targets: [String] public var results: Counts public var mounted: [MountedVolume] + /// Set when the helper failed before mounting anything (e.g. its scan + /// threw). Carried in-band because the invoking app discards the helper's + /// stderr — this is the only channel that survives the escalation. + public var error: String? - public init(targets: [String], results: Counts = .init(), mounted: [MountedVolume] = []) { + public init(targets: [String], results: Counts = .init(), mounted: [MountedVolume] = [], error: String? = nil) { self.targets = targets self.results = results self.mounted = mounted + self.error = error } } diff --git a/Sources/LifsaverKit/RootMountRunner.swift b/Sources/LifsaverKit/RootMountRunner.swift index 96b0e35..13e5a25 100644 --- a/Sources/LifsaverKit/RootMountRunner.swift +++ b/Sources/LifsaverKit/RootMountRunner.swift @@ -26,30 +26,24 @@ public enum RootMountRunner { do { targets = try await scanner.scanTargets() } catch { + // The invoking app discards this process's stderr, so the failure + // must also travel in the JSON report — otherwise the user pays for + // a password dialog and learns nothing about why it failed. console.err("CRITICAL: \(error)") + emitReport(MountReport(targets: [], error: "root-side scan failed: \(error)"), emit: emit) return 1 } - var results = MountReport.Counts() - var mounted: [MountReport.MountedVolume] = [] - let mounter = Mounter(scanner: scanner, fileOps: fileOps) - for devId in targets { - switch await mounter.execute(devId) { - case .ok: - results.ok += 1 - mounted.append(.init(device: devId, mountPoint: scanner.mountPoint(of: devId))) - case .fail: - results.fail += 1 - case .skip: - results.skip += 1 - } - } + let pass = await Mounter(scanner: scanner, fileOps: fileOps).mountAll(targets) + emitReport(MountReport(targets: targets, results: pass.counts, mounted: pass.mounted), emit: emit) + return pass.counts.fail > 0 ? 1 : 0 + } + private static func emitReport(_ report: MountReport, emit: (String) -> Void) { let encoder = JSONEncoder() encoder.outputFormatting = [.sortedKeys] - if let data = try? encoder.encode(MountReport(targets: targets, results: results, mounted: mounted)) { + if let data = try? encoder.encode(report) { emit(String(decoding: data, as: UTF8.self)) } - return results.fail > 0 ? 1 : 0 } } diff --git a/Sources/LifsaverKit/Scanner.swift b/Sources/LifsaverKit/Scanner.swift index 77aa6e7..6ce7d3a 100644 --- a/Sources/LifsaverKit/Scanner.swift +++ b/Sources/LifsaverKit/Scanner.swift @@ -5,8 +5,10 @@ import Foundation // --------------------------------------------------------------------------- /// Partition "Content" values reported by `diskutil list -plist`. These name -/// MBR/GPT partition types, not filesystems: -public let externalFSAllowlist: [String] = [ +/// MBR/GPT partition types, not filesystems. Membership is exact: the values +/// diskutil emits are enumerable, and exact matching can never widen to an +/// Apple/EFI system partition when a new value is added. +public let externalFSAllowlist: Set = [ "DOS_FAT_32", // MBR type 0x0B — FAT32 as formatted by macOS Disk Utility "Windows_FAT_32", // MBR type 0x0C (FAT32 LBA) — FAT32 as formatted by Windows / SD Formatter "Windows_NTFS", // MBR type 0x07 — shared by exFAT and NTFS; SDXC cards formatted in-camera report this @@ -15,10 +17,10 @@ public let externalFSAllowlist: [String] = [ "ExFAT", // values (exFAT reports Windows_NTFS or Microsoft Basic Data) ] -// Blocklist: EFI, recovery, and Apple container types. -// Redundant with the allowlist today, but kept as a second interlock: -// the allowlist uses substring matching and gets edited — a future broad -// token must still never expose Apple/EFI system partitions. +// Blocklist: EFI, recovery, and Apple container types. Redundant with the +// allowlist today, but kept as a second interlock: the allowlist gets edited, +// and no future entry may ever expose Apple/EFI system partitions. Deliberately +// substring-based — a blocklist erring broad is safe. let blockedContentTokens = [ "EFI", "Apple_APFS", @@ -74,24 +76,27 @@ public struct DiskScanner: Sendable { /// The set of currently-mounted device paths (e.g. {"/dev/disk4s1", ...}), /// from a fresh kernel snapshot. Virtual filesystems (devfs, autofs maps) - /// are excluded. - public func activeMounts() -> Set { + /// are excluded. Throws when the table cannot be read: an empty set means + /// "nothing mounted", and callers must never mistake a read failure for + /// that — it would turn every mounted volume into a mount target. + public func activeMounts() throws -> Set { + Set(try mountTable.entries().map(\.device).filter { $0.hasPrefix("/dev/") }) + } + + /// Re-query the live mount table for a single device. Always takes a fresh + /// snapshot — never relies on a cached set. nil when the table cannot be + /// read ("unknown", not "unmounted"). + public func isCurrentlyMounted(_ devId: String) -> Bool? { do { - return Set(try mountTable.entries().map(\.device).filter { $0.hasPrefix("/dev/") }) + return try activeMounts().contains("/dev/\(devId)") } catch { console.err("WARNING: Could not read mount table: \(error)") - return [] + return nil } } - /// Re-query the live mount table for a single device. - /// Always takes a fresh snapshot — never relies on a cached set. - public func isCurrentlyMounted(_ devId: String) -> Bool { - activeMounts().contains("/dev/\(devId)") - } - - /// The current mount point for a device, or "" when it is not mounted - /// (or the table cannot be read). + /// The current mount point for a device, or "" when it is not mounted (or + /// the table cannot be read). public func mountPoint(of devId: String) -> String { let devPath = "/dev/\(devId)" let entries = (try? mountTable.entries()) ?? [] @@ -108,16 +113,22 @@ public struct DiskScanner: Sendable { /// Matches both /dev/diskXsY and the raw /dev/rdiskXsY node fsck actually /// opens, without matching longer identifiers (disk4s1 ≠ disk4s10). public func isFsckActive(_ devId: String) async -> Bool { - let result: ProcessResult - do { - // pgrep exits 1 when nothing matches — not an error - result = try await runner.run("pgrep", ["-fl", "fsck"], timeout: queryTimeout) - } catch { - return false - } + isFsckActive(devId, listing: await fsckListing()) + } + + /// One `pgrep -fl fsck` snapshot, matchable against many devices via + /// `isFsckActive(_:listing:)` — a scan pass needs one snapshot, not one + /// subprocess per device. Empty when nothing matches or pgrep fails. + public func fsckListing() async -> String { + // pgrep exits 1 when nothing matches — not an error + ((try? await runner.run("pgrep", ["-fl", "fsck"], timeout: queryTimeout))?.stdoutText) ?? "" + } + + /// Pure match of one device against a captured fsck listing. + public func isFsckActive(_ devId: String, listing: String) -> Bool { let pattern = "\\br?" + NSRegularExpression.escapedPattern(for: devId) + "\\b" guard let regex = try? NSRegularExpression(pattern: pattern) else { return false } - return result.stdoutText.split(separator: "\n").contains { line in + return listing.split(separator: "\n").contains { line in let string = String(line) let range = NSRange(string.startIndex..., in: string) return regex.firstMatch(in: string, range: range) != nil @@ -143,23 +154,39 @@ public struct DiskScanner: Sendable { return data } + /// One `diskutil info -plist` fetch-and-parse, shared by every per-device + /// query so timeout and error semantics can only ever change in one place. + private func diskInfo(_ devId: String) async -> [String: Any]? { + guard + let result = try? await runner.runChecked("diskutil", ["info", "-plist", devId], timeout: queryTimeout), + let plist = try? PropertyListSerialization.propertyList(from: result.stdout, format: nil), + let info = plist as? [String: Any] + else { return nil } + return info + } + + /// The `Content` fallback names MBR partition types, not filesystems — map + /// the unambiguous FAT ones onto the token the mount path understands, so a + /// card without a `FilesystemType` key still tries mount_msdos first. + /// (exFAT/NTFS share their partition types, so those stay untranslated.) + private static let contentFSTypeAliases = [ + "dos_fat_32": "msdos", + "windows_fat_32": "msdos", + ] + /// Ask diskutil for the actual filesystem type of a partition so we can /// choose the right mount binary without trial-and-error. /// /// Returns a lowercase string such as "exfat", "msdos", "hfs", or "" if the /// information is unavailable. public func partitionFSType(_ devId: String) async -> String { - guard - let result = try? await runner.runChecked("diskutil", ["info", "-plist", devId], timeout: queryTimeout), - let plist = try? PropertyListSerialization.propertyList(from: result.stdout, format: nil), - let info = plist as? [String: Any] - else { return "" } + guard let info = await diskInfo(devId) else { return "" } // "FilesystemType" is the canonical key; fall back to content hint. // An empty string counts as absent — the fallback must still apply. let fsType = info["FilesystemType"] as? String let content = info["Content"] as? String - let fs = [fsType, content].compactMap { $0 }.first { !$0.isEmpty } ?? "" - return fs.lowercased() + let fs = ([fsType, content].compactMap { $0 }.first { !$0.isEmpty } ?? "").lowercased() + return Self.contentFSTypeAliases[fs] ?? fs } // --- partition filtering --------------------------------------------------- @@ -173,16 +200,20 @@ public struct DiskScanner: Sendable { /// /// - `Internal == false` — device sits on an external bus /// - `RemovableMediaOrExternalDevice == true` — second signal covering - /// card readers whose USB bridges misreport `Internal`, and built-in - /// SD slots (removable media on an internal bus) + /// card readers whose USB bridges misreport `Internal`, and built-in SD + /// slots (removable media on an internal bus) /// - /// Fails closed: an unreadable plist or missing keys count as internal. + /// Fails closed: an unreadable plist or missing keys count as internal. A + /// failed *query* gets one retry first — diskutil is most likely to be + /// flaky exactly when diskarbitrationd is wedged on a stalled card, and a + /// single transient failure must not hide the card the app exists to + /// rescue. A successful query whose keys say "internal" is final. public func isExternalHardware(_ diskID: String) async -> Bool { - guard - let result = try? await runner.runChecked("diskutil", ["info", "-plist", diskID], timeout: queryTimeout), - let plist = try? PropertyListSerialization.propertyList(from: result.stdout, format: nil), - let info = plist as? [String: Any] - else { return false } + var info = await diskInfo(diskID) + if info == nil { + info = await diskInfo(diskID) + } + guard let info else { return false } return info["Internal"] as? Bool == false || info["RemovableMediaOrExternalDevice"] as? Bool == true } @@ -197,29 +228,47 @@ public struct DiskScanner: Sendable { /// EFI system partitions and Apple_APFS / Apple_HFS containers are /// explicitly excluded. public func filterTargetPartitions(_ diskData: [String: Any], activeMounts: Set) async -> [String] { - var targets: [String] = [] - let disks = diskData["AllDisksAndPartitions"] as? [[String: Any]] ?? [] + + // Content checks first, so `diskutil info` only runs for disks that + // actually carry camera-card-like partitions. Unpartitioned + // (superfloppy) media put the filesystem on the whole-disk node itself, + // so a disk without partitions is its own candidate. + var perDisk: [(diskID: String, candidates: [String])] = [] for disk in disks { let partitions = disk["Partitions"] as? [[String: Any]] ?? [] - - // Content checks first, so `diskutil info` only runs for disks - // that actually carry camera-card-like partitions. - let candidates = partitions.filter(isCandidatePartition) + let nodes = partitions.isEmpty ? [disk] : partitions + let candidates = nodes.filter(isCandidatePartition) + .compactMap { $0["DeviceIdentifier"] as? String } guard !candidates.isEmpty else { continue } + perDisk.append((disk["DeviceIdentifier"] as? String ?? "", candidates)) + } - // Strict boundary: internal disks are never touched. - let diskID = disk["DeviceIdentifier"] as? String ?? "" - guard !diskID.isEmpty, await isExternalHardware(diskID) else { + // Strict boundary: internal disks are never touched. The per-disk + // queries are independent, so they run concurrently — a wedged diskutil + // stalls the scan once, not once per disk. + let externality = await withTaskGroup(of: (Int, Bool).self) { group in + for (index, entry) in perDisk.enumerated() { + let diskID = entry.diskID + group.addTask { (index, diskID.isEmpty ? false : await isExternalHardware(diskID)) } + } + var results = [Bool](repeating: false, count: perDisk.count) + for await (index, isExternal) in group { + results[index] = isExternal + } + return results + } + + var targets: [String] = [] + for (index, entry) in perDisk.enumerated() { + guard externality[index] else { if verbose { - console.out(" Skipping \(diskID.isEmpty ? "unidentified disk" : diskID) — not external hardware.") + let name = entry.diskID.isEmpty ? "unidentified disk" : entry.diskID + console.out(" Skipping \(name) — not external hardware.") } continue } - - for partition in candidates { - let devId = partition["DeviceIdentifier"] as? String ?? "" - + for devId in entry.candidates { // Safety gate: skip anything already in the mount table if activeMounts.contains("/dev/\(devId)") { if verbose { @@ -227,7 +276,6 @@ public struct DiskScanner: Sendable { } continue } - targets.append(devId) } } @@ -251,7 +299,7 @@ public struct DiskScanner: Sendable { } // Allowlist: recognised camera-card payload types - guard externalFSAllowlist.contains(where: { contentType.contains($0) }) else { + guard externalFSAllowlist.contains(contentType) else { if verbose { let shown = contentType.isEmpty ? "(empty)" : contentType console.out(" Skipping \(devId) — Content \(shown) is not camera-card-like.") @@ -264,6 +312,14 @@ public struct DiskScanner: Sendable { /// One-call read-only scan: disk data + a fresh mount-table snapshot → targets. public func scanTargets() async throws -> [String] { let data = try await diskData() - return await filterTargetPartitions(data, activeMounts: activeMounts()) + let mounts: Set + do { + mounts = try activeMounts() + } catch { + // A truthful "scan failed" beats treating every mounted volume as + // a stalled target. + throw DiskUtilError(message: "Failed to read mount table: \(error)") + } + return await filterTargetPartitions(data, activeMounts: mounts) } } diff --git a/Sources/LifsaverKit/StatusMenuModel.swift b/Sources/LifsaverKit/StatusMenuModel.swift index 5401e4f..5bee944 100644 --- a/Sources/LifsaverKit/StatusMenuModel.swift +++ b/Sources/LifsaverKit/StatusMenuModel.swift @@ -6,24 +6,6 @@ public enum EscalatedMountOutcome: Equatable, Sendable { case error(String) } -/// Invalidates in-flight scan results once a newer scan has started. -public struct ScanGeneration: Sendable { - private var current = 0 - - public init() {} - - /// Marks the start of a new scan and returns its token. - public mutating func begin() -> Int { - current += 1 - return current - } - - /// True while `token` still belongs to the most recently started scan. - public func isCurrent(_ token: Int) -> Bool { - token == current - } -} - /// Tracks which stalled volumes the user has already been alerted about, so /// the background disk watcher notifies once per card, not once per rescan. public struct StalledWatchState: Sendable { @@ -172,10 +154,10 @@ public enum StatusMenuModel { case .report(let counts): return .report(.init(ok: unprivileged.ok + counts.ok, fail: counts.fail, skip: counts.skip)) case .cancelled: - // Dismissing the dialog declines the rest rather than failing at - // it; whatever mounted before the prompt still counts. - guard unprivileged.ok > 0 else { return .cancelled } - return .report(.init(ok: unprivileged.ok)) + // Declining the dialog leaves the remaining volumes unmounted — + // that is a failure of the mount attempt, reported alongside + // whatever mounted before the prompt. + return .report(.init(ok: unprivileged.ok, fail: unprivileged.fail)) case .error: // The escalation never ran, so the first pass's failures stand. guard unprivileged.ok > 0 else { return escalated } @@ -184,14 +166,19 @@ public enum StatusMenuModel { } /// Body of the user-facing notification for a finished mount attempt, or - /// nil when the outcome warrants none (user dismissed the password dialog). + /// nil when the outcome warrants none. public static func notificationBody(for outcome: EscalatedMountOutcome) -> String? { switch outcome { case .cancelled: + // Unreachable from the app flow: combinedOutcome folds a cancel + // into a report whose failures carry the notification. return nil case .report(let counts): if counts.fail > 0 { - return "Mount failed" + // With several volumes in play a bare "failed" would hide the + // partial result — summarise both halves. + guard counts.ok + counts.fail + counts.skip > 1 else { return "Mount failed" } + return "Mount failed (\(counts.ok) mounted, \(counts.fail) failed)" } if counts.ok > 0 { let noun = counts.ok == 1 ? "volume" : "volumes" diff --git a/Sources/LifsaverKit/UpdateChecker.swift b/Sources/LifsaverKit/UpdateChecker.swift index bf1917d..05cf6c6 100644 --- a/Sources/LifsaverKit/UpdateChecker.swift +++ b/Sources/LifsaverKit/UpdateChecker.swift @@ -141,10 +141,19 @@ public protocol LatestReleaseFetching: Sendable { } public struct GitHubReleaseFetcher: LatestReleaseFetching { + /// A hostile or misbehaving server (captive portal, proxy) must not balloon + /// memory inside a long-lived menu bar app: the body is streamed and + /// abandoned at this cap, never buffered whole before checking. + static let maxResponseBytes = 1 << 20 + public init() {} public func fetchLatestTag(repo: String, userAgent: String, timeout: TimeInterval) async -> String? { - guard let url = URL(string: "https://api.github.com/repos/\(repo)/releases/latest") else { + // Not /releases/latest: GitHub defines that as the newest release NOT + // marked prerelease (404 when only prereleases exist), which would + // blind the checker to this project's beta releases. The newest release + // of any kind is the first element of /releases. + guard let url = URL(string: "https://api.github.com/repos/\(repo)/releases?per_page=1") else { return nil } var request = URLRequest(url: url, timeoutInterval: timeout) @@ -152,14 +161,23 @@ public struct GitHubReleaseFetcher: LatestReleaseFetching { request.setValue(userAgent, forHTTPHeaderField: "User-Agent") guard - let (data, response) = try? await URLSession.shared.data(for: request), + let (bytes, response) = try? await URLSession.shared.bytes(for: request), let http = response as? HTTPURLResponse, http.statusCode == 200, - data.count <= 1 << 20, - let object = try? JSONSerialization.jsonObject(with: data) as? [String: Any], - let tagName = object["tag_name"] as? String + let data = try? await Self.collect(bytes, limit: Self.maxResponseBytes), + let releases = try? JSONSerialization.jsonObject(with: data) as? [[String: Any]], + let tagName = releases.first?["tag_name"] as? String else { return nil } return tagName } + + private static func collect(_ bytes: URLSession.AsyncBytes, limit: Int) async throws -> Data { + var data = Data() + for try await byte in bytes { + data.append(byte) + guard data.count <= limit else { throw URLError(.dataLengthExceedsMaximum) } + } + return data + } } // --------------------------------------------------------------------------- @@ -210,16 +228,7 @@ public final class UpdateChecker: Sendable { return nil } return Task(priority: .utility) { [self] in - guard - let tag = await fetcher.fetchLatestTag( - repo: repo, - userAgent: "\(package)/\(currentVersion) (update-check)", - timeout: 5 - ) - else { return } - let version = tag.hasPrefix("v") ? String(tag.dropFirst()) : tag - latestBox.withLock { $0 = version } - writeCache(version) + await refresh() } } @@ -237,6 +246,15 @@ public final class UpdateChecker: Sendable { /// Refreshes the known version and cache; the result is then reflected by /// `knownNewerVersion()`. For the GUI "Check for Updates" menu action. public func checkNow() async { + await refresh() + } + + // --- internals --------------------------------------------------------- + + /// Fetch the newest release tag, normalize it, and publish it to both the + /// in-memory box and the on-disk cache. Single body shared by the passive + /// launch check and the manual menu check so the two can never drift. + private func refresh() async { guard let tag = await fetcher.fetchLatestTag( repo: repo, @@ -249,16 +267,17 @@ public final class UpdateChecker: Sendable { writeCache(version) } - // --- internals --------------------------------------------------------- - func readCache() -> String? { guard let data = try? Data(contentsOf: cacheFile), let object = try? JSONSerialization.jsonObject(with: data) as? [String: Any], let checkedAt = object["checked_at"] as? Double, - let cachedLatest = object["latest"] as? String, - Date().timeIntervalSince1970 - checkedAt < checkInterval + let cachedLatest = object["latest"] as? String else { return nil } + // A future checked_at (clock skew, NTP jump) must read as stale, not as + // "fresh until the wall clock catches up". + let elapsed = Date().timeIntervalSince1970 - checkedAt + guard elapsed >= 0, elapsed < checkInterval else { return nil } return cachedLatest } diff --git a/Tests/LifsaverKitTests/MounterPassTests.swift b/Tests/LifsaverKitTests/MounterPassTests.swift new file mode 100644 index 0000000..fa6a2c1 --- /dev/null +++ b/Tests/LifsaverKitTests/MounterPassTests.swift @@ -0,0 +1,76 @@ +import Foundation +import Testing +import os + +@testable import LifsaverKit + +// =========================================================================== +// execute — unreadable mount table +// =========================================================================== + +@Suite struct UnreadableMountTableTests { + @Test func trustsMountExitStatusWhenTableUnreadable() async { + // An unreadable table is "unknown", not "unmounted": the mount + // binary's zero exit stands, so the pass doesn't report a spurious + // failure and trigger an unwarranted admin password prompt upstream. + let runner = FakeProcessRunner { executable, arguments in + switch executable { + case "pgrep": + return ProcessResult(status: 1) + case "diskutil" where arguments.first == "info": + return ProcessResult(status: 0, stdout: plistData(["FilesystemType": "exfat"])) + default: + return ProcessResult(status: 0) + } + } + let mounter = makeMounter(runner: runner, mountTable: FakeMountTable(throwing: POSIXError(.EIO))) + #expect(await mounter.execute("disk4s1") == .ok) + } +} + +// =========================================================================== +// mountAll (shared by the unprivileged pass and the root helper) +// =========================================================================== + +/// Runner where `diskutil mount` succeeds per `mountSucceeds`, updating the +/// mount table on success the way the real command does. +private func mountingRunner( + table: FakeMountTable, mountSucceeds: @escaping @Sendable (String) -> Bool +) -> FakeProcessRunner { + FakeProcessRunner { executable, arguments in + switch executable { + case "pgrep": + return ProcessResult(status: 1) + case "diskutil" where arguments.first == "info": + return ProcessResult(status: 0, stdout: plistData(["FilesystemType": "exfat"])) + case "diskutil" where arguments.first == "mount": + let devId = arguments[1] + guard mountSucceeds(devId) else { return ProcessResult(status: 1) } + table.add(device: "/dev/\(devId)", mountPoint: "/Volumes/CARD_\(devId)") + return ProcessResult(status: 0) + default: + return ProcessResult(status: 1) + } + } +} + +@Suite struct MountAllTests { + @Test func talliesOutcomesAndCollectsMountedVolumes() async { + let table = FakeMountTable() + let mounter = makeMounter(runner: mountingRunner(table: table) { _ in true }, mountTable: table) + let result = await mounter.mountAll(["disk4s1", "disk4s2"]) + #expect(result.counts == MountReport.Counts(ok: 2, fail: 0, skip: 0)) + #expect(result.mounted.map(\.device) == ["disk4s1", "disk4s2"]) + #expect(result.mounted.map(\.mountPoint) == ["/Volumes/CARD_disk4s1", "/Volumes/CARD_disk4s2"]) + } + + @Test func countsFailuresAndSkipsWithoutCollectingThem() async { + let table = FakeMountTable([MountEntry(device: "/dev/disk4s1", mountPoint: "/Volumes/CARD")]) + let mounter = makeMounter( + runner: mountingRunner(table: table) { _ in false }, mountTable: table, + allowRawFallback: false) + let result = await mounter.mountAll(["disk4s1", "disk4s2"]) + #expect(result.counts == MountReport.Counts(ok: 0, fail: 1, skip: 1)) + #expect(result.mounted.isEmpty) + } +} diff --git a/Tests/LifsaverKitTests/RootMountRunnerTests.swift b/Tests/LifsaverKitTests/RootMountRunnerTests.swift index f876681..e2ef178 100644 --- a/Tests/LifsaverKitTests/RootMountRunnerTests.swift +++ b/Tests/LifsaverKitTests/RootMountRunnerTests.swift @@ -116,12 +116,17 @@ private func runHelper( #expect(report.results == MountReport.Counts(ok: 0, fail: 1, skip: 0)) } - @Test func failedScanReportsCriticalAndEmitsNothing() async { - // Stdout must never carry a half-report the app would misparse. + @Test func failedScanEmitsErrorReport() async throws { + // The invoking app discards this process's stderr, so the failure must + // arrive in-band as a well-formed report with `error` set — the user + // already paid for a password dialog and deserves the cause. let run = await runHelper(devices: ["disk4s1"], diskutilListSucceeds: false) #expect(run.status == 1) - #expect(run.emitted.isEmpty) #expect(run.console.errText.contains("CRITICAL")) + let report = try run.decodedReport() + #expect(report.error?.contains("root-side scan failed") == true) + #expect(report.targets.isEmpty) + #expect(report.results == MountReport.Counts(ok: 0, fail: 0, skip: 0)) } @Test func activeFsckSkipsTargetRatherThanMounting() async throws { diff --git a/Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift b/Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift index 5b51f00..206ff4f 100644 --- a/Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift +++ b/Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift @@ -1,5 +1,6 @@ import Foundation import Testing +import os @testable import LifsaverKit @@ -39,6 +40,29 @@ import Testing let runner = FakeProcessRunner(always: ProcessResult(status: 0, stdout: Data("not a plist".utf8))) #expect(!(await makeScanner(runner: runner).isExternalHardware("disk4"))) } + + @Test func retriesOnceAfterTransientQueryFailure() async { + // diskutil is most likely to be flaky exactly when diskarbitrationd is + // wedged on a stalled card; one transient failure must not hide it. + let external = plistData(infoExternal) + let attempts = OSAllocatedUnfairLock(initialState: 0) + let runner = FakeProcessRunner { _, _ in + let attempt = attempts.withLock { count -> Int in + count += 1 + return count + } + return attempt == 1 ? ProcessResult(status: 1) : ProcessResult(status: 0, stdout: external) + } + #expect(await makeScanner(runner: runner).isExternalHardware("disk4")) + #expect(attempts.withLock { $0 } == 2) + } + + @Test func confirmedInternalIsNotRetried() async { + // A successful query whose keys say "internal" is final. + let runner = diskutilRunner(info: ["disk0": infoInternalFixed]) + #expect(!(await makeScanner(runner: runner).isExternalHardware("disk0"))) + #expect(runner.calls.count == 1) + } } // =========================================================================== @@ -214,7 +238,7 @@ import Testing "Apple_CoreStorage", "EFI", ]) - func allBlocklistedContentTypesAreRejected(contentType: String) async { + func systemContentTypesAreRejected(contentType: String) async { let data: [String: Any] = [ "AllDisksAndPartitions": [ [ @@ -227,6 +251,64 @@ import Testing let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) #expect(targets.isEmpty) } + + @Test(arguments: ["Microsoft Basic Data Extra", "exFAT2", "NTFS"]) + func allowlistMatchingIsExactNotSubstring(contentType: String) async { + // The most dangerous decision the app makes must not widen through a + // partial match against an unexpected Content value. + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + [ + "DeviceIdentifier": "disk4", + "Partitions": [["DeviceIdentifier": "disk4s1", "Content": contentType]], + ] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets.isEmpty) + } + + @Test func unpartitionedSuperfloppyDiskIsATarget() async { + // Cards formatted without a partition map put the filesystem on the + // whole-disk node: no Partitions array, the Content sits on the disk. + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + ["DeviceIdentifier": "disk4", "Content": "Windows_FAT_32"] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets == ["disk4"]) + } + + @Test func partitionSchemeWholeDiskIsNotATarget() async { + // A partitioned disk whose partitions were all filtered must not fall + // back to offering the whole-disk node. + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + [ + "DeviceIdentifier": "disk4", + "Content": "GUID_partition_scheme", + "Partitions": [["DeviceIdentifier": "disk4s1", "Content": "EFI"]], + ] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets.isEmpty) + } + + @Test func mountedSuperfloppyDiskIsSkipped() async { + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + ["DeviceIdentifier": "disk4", "Content": "Windows_FAT_32"] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: ["/dev/disk4"]) + #expect(targets.isEmpty) + } } // =========================================================================== @@ -243,4 +325,14 @@ import Testing #expect(!targets.contains("disk4s2")) #expect(targets.contains("disk4s3")) } + + @Test func throwsWhenMountTableUnreadable() async { + // Guessing "nothing mounted" would offer every mounted volume as a + // target; a scan that cannot see the table must fail loudly. + let runner = diskutilRunner(list: diskutilPlistExternalExfat, info: ["disk4": infoExternal]) + let table = FakeMountTable(throwing: POSIXError(.EIO)) + await #expect(throws: DiskUtilError.self) { + try await makeScanner(runner: runner, mountTable: table).scanTargets() + } + } } diff --git a/Tests/LifsaverKitTests/ScannerTests.swift b/Tests/LifsaverKitTests/ScannerTests.swift index a254c2f..0f69208 100644 --- a/Tests/LifsaverKitTests/ScannerTests.swift +++ b/Tests/LifsaverKitTests/ScannerTests.swift @@ -20,35 +20,36 @@ import Testing // =========================================================================== @Suite struct ActiveMountsTests { - @Test func collectsDevEntries() { + @Test func collectsDevEntries() throws { let table = FakeMountTable([ MountEntry(device: "/dev/disk1s1", mountPoint: "/"), MountEntry(device: "/dev/disk3s1", mountPoint: "/Volumes/NO_NAME"), ]) - let result = makeScanner(mountTable: table).activeMounts() + let result = try makeScanner(mountTable: table).activeMounts() #expect(result == ["/dev/disk1s1", "/dev/disk3s1"]) } - @Test func ignoresVirtualFilesystems() { + @Test func ignoresVirtualFilesystems() throws { let table = FakeMountTable([ MountEntry(device: "devfs", mountPoint: "/dev"), MountEntry(device: "map auto_home", mountPoint: "/System/Volumes/Data/home"), MountEntry(device: "/dev/disk1s1", mountPoint: "/"), ]) - let result = makeScanner(mountTable: table).activeMounts() + let result = try makeScanner(mountTable: table).activeMounts() #expect(result == ["/dev/disk1s1"]) } - @Test func returnsEmptySetOnFailure() { - let captured = CapturedConsole() + @Test func throwsOnFailure() { + // A read failure must never read as "nothing mounted" — that would turn + // every mounted volume into a mount target. let table = FakeMountTable(throwing: POSIXError(.EIO)) - let result = makeScanner(mountTable: table, console: captured.console).activeMounts() - #expect(result.isEmpty) - #expect(captured.errText.contains("WARNING")) + #expect(throws: (any Error).self) { + try makeScanner(mountTable: table).activeMounts() + } } - @Test func returnsEmptySetOnEmptyTable() { - #expect(makeScanner(mountTable: FakeMountTable()).activeMounts().isEmpty) + @Test func returnsEmptySetOnEmptyTable() throws { + #expect(try makeScanner(mountTable: FakeMountTable()).activeMounts().isEmpty) } } @@ -59,12 +60,22 @@ import Testing @Suite struct IsCurrentlyMountedTests { @Test func trueWhenPresent() { let table = FakeMountTable([MountEntry(device: "/dev/disk4s1", mountPoint: "/Volumes/X")]) - #expect(makeScanner(mountTable: table).isCurrentlyMounted("disk4s1")) + #expect(makeScanner(mountTable: table).isCurrentlyMounted("disk4s1") == true) } @Test func falseWhenAbsent() { let table = FakeMountTable([MountEntry(device: "/dev/disk1s1", mountPoint: "/")]) - #expect(!makeScanner(mountTable: table).isCurrentlyMounted("disk4s1")) + #expect(makeScanner(mountTable: table).isCurrentlyMounted("disk4s1") == false) + } + + @Test func nilWhenTableUnreadable() { + // "Unknown" is a distinct answer: callers must not conflate an + // unreadable table with "unmounted". + let captured = CapturedConsole() + let table = FakeMountTable(throwing: POSIXError(.EIO)) + let scanner = makeScanner(mountTable: table, console: captured.console) + #expect(scanner.isCurrentlyMounted("disk4s1") == nil) + #expect(captured.errText.contains("WARNING")) } @Test func alwaysTakesFreshSnapshot() { @@ -186,16 +197,19 @@ import Testing #expect(await makeScanner(runner: runner).partitionFSType("disk4s1") == "exfat") } - @Test func fallsBackToContentWhenNoFilesystemType() async { - let info: [String: Any] = ["Content": "DOS_FAT_32"] + @Test(arguments: [("DOS_FAT_32", "msdos"), ("Windows_FAT_32", "msdos"), ("Windows_NTFS", "windows_ntfs")]) + func fallsBackToContentWhenNoFilesystemType(content: String, expected: String) async { + // FAT partition types map onto the token the mount path understands (so + // mount_msdos is tried first); ambiguous types pass through. + let info: [String: Any] = ["Content": content] let runner = FakeProcessRunner(always: ProcessResult(status: 0, stdout: plistData(info))) - #expect(await makeScanner(runner: runner).partitionFSType("disk4s1") == "dos_fat_32") + #expect(await makeScanner(runner: runner).partitionFSType("disk4s1") == expected) } @Test func fallsBackToContentWhenFilesystemTypeEmpty() async { let info: [String: Any] = ["FilesystemType": "", "Content": "DOS_FAT_32"] let runner = FakeProcessRunner(always: ProcessResult(status: 0, stdout: plistData(info))) - #expect(await makeScanner(runner: runner).partitionFSType("disk4s1") == "dos_fat_32") + #expect(await makeScanner(runner: runner).partitionFSType("disk4s1") == "msdos") } @Test func returnsEmptyStringOnFailure() async { diff --git a/Tests/LifsaverKitTests/StatusMenuModelTests.swift b/Tests/LifsaverKitTests/StatusMenuModelTests.swift index 34cace0..7e4bf39 100644 --- a/Tests/LifsaverKitTests/StatusMenuModelTests.swift +++ b/Tests/LifsaverKitTests/StatusMenuModelTests.swift @@ -183,14 +183,15 @@ import Testing == .report(.init(ok: 2, fail: 1, skip: 1))) } - @Test func cancellationAloneStaysSilent() { - #expect(combined(.init(fail: 1), .cancelled) == .cancelled) + @Test func cancellationAloneReportsTheDeclinedVolumesAsFailed() { + // Declining the password leaves the volume unmounted — a failure. + #expect(combined(.init(fail: 1), .cancelled) == .report(.init(fail: 1))) } - @Test func cancellingTheRestKeepsWhatAlreadyMounted() { - // Declining the dialog is not a failure of the volume that mounted - // before it appeared. - #expect(combined(.init(ok: 1, fail: 1), .cancelled) == .report(.init(ok: 1))) + @Test func cancellingTheRestFailsThemAndKeepsWhatAlreadyMounted() { + // What mounted before the prompt still counts; what the user declined + // to authorize is reported as failed, not silently dropped. + #expect(combined(.init(ok: 1, fail: 1), .cancelled) == .report(.init(ok: 1, fail: 1))) } @Test func errorAlonePassesThrough() { @@ -232,8 +233,20 @@ import Testing #expect(body(for: .cancelled) == nil) } - @Test func anyFailureWinsOverSuccesses() { - #expect(body(for: .report(.init(ok: 2, fail: 1, skip: 0))) == "Mount failed") + @Test func singleVolumeFailureIsPlain() { + #expect(body(for: .report(.init(ok: 0, fail: 1, skip: 0))) == "Mount failed") + } + + @Test func multiVolumeFailureSummarisesBothHalves() { + #expect( + body(for: .report(.init(ok: 2, fail: 1, skip: 0))) + == "Mount failed (2 mounted, 1 failed)") + } + + @Test func allVolumesFailingStillSummarisesWhenSeveral() { + #expect( + body(for: .report(.init(ok: 0, fail: 2, skip: 0))) + == "Mount failed (0 mounted, 2 failed)") } @Test func singleSuccessUsesSingularNoun() { @@ -311,23 +324,3 @@ import Testing == "3 stalled volumes detected") } } - -// =========================================================================== -// Scan generation -// =========================================================================== - -@Suite struct ScanGenerationTests { - @Test func latestTokenIsCurrent() { - var generation = ScanGeneration() - let token = generation.begin() - #expect(generation.isCurrent(token)) - } - - @Test func newScanInvalidatesEarlierToken() { - var generation = ScanGeneration() - let stale = generation.begin() - let fresh = generation.begin() - #expect(!generation.isCurrent(stale)) - #expect(generation.isCurrent(fresh)) - } -} diff --git a/Tests/LifsaverKitTests/UpdateCheckerTests.swift b/Tests/LifsaverKitTests/UpdateCheckerTests.swift index c08ff22..a2814bc 100644 --- a/Tests/LifsaverKitTests/UpdateCheckerTests.swift +++ b/Tests/LifsaverKitTests/UpdateCheckerTests.swift @@ -170,6 +170,23 @@ private func check(_ checker: UpdateChecker) async { #expect(permissions == 0o600) } + @Test func futureTimestampReadsAsStale() async throws { + // Clock skew (fast clock at write, NTP correction after) must not pin + // the cache "fresh" until the wall clock catches up. + let directory = temporaryDirectory() + let future: [String: Any] = [ + "latest": "0.0.1", "checked_at": Date().timeIntervalSince1970 + 3 * 24 * 60 * 60, + ] + try JSONSerialization.data(withJSONObject: future) + .write(to: directory.appendingPathComponent("update-check.json")) + + let fetcher = FakeReleaseFetcher(tag: "v9.9.9") + let checker = makeChecker(fetcher: fetcher, cacheDirectory: directory) + await check(checker) + #expect(fetcher.fetchCount == 1) + #expect(checker.knownNewerVersion() == "9.9.9") + } + @Test func corruptCacheIsIgnored() async throws { let directory = temporaryDirectory() try Data("not json at all {".utf8) From ccd6aa1b9c64aee9395bd9fc9e19b94b5fd1aafe Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sat, 18 Jul 2026 23:34:34 +0100 Subject: [PATCH 09/14] refactor module layout --- Sources/Lifsaver/EscalatedMount.swift | 58 ++- Sources/Lifsaver/MountCoordinator.swift | 35 -- Sources/Lifsaver/StatusItemController.swift | 4 +- Sources/LifsaverKit/DiagnosticsReport.swift | 2 +- ...unner.swift => EscalatedMountHelper.swift} | 4 +- ...ountTable.swift => KernelMountTable.swift} | 2 +- .../{Report.swift => MountReport.swift} | 0 Sources/LifsaverKit/Scanner.swift | 2 +- ....swift => EscalatedMountHelperTests.swift} | 4 +- .../KernelMountTableTests.swift | 16 + Tests/LifsaverKitTests/MounterPassTests.swift | 76 ---- Tests/LifsaverKitTests/MounterTests.swift | 73 ++++ .../ScannerTargetSelectionTests.swift | 338 ----------------- Tests/LifsaverKitTests/ScannerTests.swift | 347 +++++++++++++++++- Tests/LifsaverKitTests/VersionTests.swift | 15 + 15 files changed, 490 insertions(+), 486 deletions(-) delete mode 100644 Sources/Lifsaver/MountCoordinator.swift rename Sources/LifsaverKit/{RootMountRunner.swift => EscalatedMountHelper.swift} (95%) rename Sources/LifsaverKit/{MountTable.swift => KernelMountTable.swift} (97%) rename Sources/LifsaverKit/{Report.swift => MountReport.swift} (100%) rename Tests/LifsaverKitTests/{RootMountRunnerTests.swift => EscalatedMountHelperTests.swift} (98%) create mode 100644 Tests/LifsaverKitTests/KernelMountTableTests.swift delete mode 100644 Tests/LifsaverKitTests/MounterPassTests.swift delete mode 100644 Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift create mode 100644 Tests/LifsaverKitTests/VersionTests.swift diff --git a/Sources/Lifsaver/EscalatedMount.swift b/Sources/Lifsaver/EscalatedMount.swift index f422a2f..e594e68 100644 --- a/Sources/Lifsaver/EscalatedMount.swift +++ b/Sources/Lifsaver/EscalatedMount.swift @@ -2,10 +2,12 @@ import Foundation import LifsaverKit import os -/// Re-runs the app's own binary as root through the standard macOS -/// administrator password dialog (`do shell script … with administrator -/// privileges`). The helper invocation (marked by `RootMountRunner.helperFlag`) -/// scans and mounts as root, reporting back as JSON on stdout. +/// Mounts stalled volumes in two passes, escalating only when it buys +/// something, then re-runs the app's own binary as root through the standard +/// macOS administrator password dialog (`do shell script … with administrator +/// privileges`) for whatever the unprivileged pass could not reach. The helper +/// invocation (marked by `EscalatedMountHelper.helperFlag`) scans and mounts as +/// root, reporting back as JSON on stdout. /// /// `do shell script` swallows the inner command's exit status (a nonzero exit /// raises an AppleScript error instead), so the inner shell always exits 0 and @@ -16,15 +18,48 @@ enum EscalatedMount { /// parenthesis: `execution error: User canceled. (-128)`. private static let userCancelledCode = -128 - /// When argv carries the helper flag, this process was launched by `run()` - /// as the root helper: execute the mount sequence and exit. Called from - /// main.swift before any AppKit setup; never returns in that case. + struct Outcome: Sendable { + var unprivileged: MountReport.Counts + /// nil when the first pass left nothing for root to do — the case where + /// the user is never asked for a password at all. + var escalated: EscalatedMountOutcome? + } + + /// Two-pass mount so the password dialog only appears when it buys + /// something. + /// + /// `diskutil mount` mounts external removable media as the logged-in user, + /// so the first pass runs in-process with no privileges and no prompt. Only + /// if it leaves a volume unmounted — the raw `/sbin/mount_*` fallback needs + /// root — does the app re-run its own binary under the admin dialog, which + /// rescans as root and picks up whatever is left. + static func run(scanner: DiskScanner) async -> Outcome { + let targets: [String] + do { + targets = try await scanner.scanTargets() + } catch { + // Escalating would only reach the same failing scan under root, so + // report it rather than spend a password dialog on it. + return Outcome(unprivileged: .init(), escalated: .error("scan failed: \(error)")) + } + + // First pass: diskutil only, no escalation. A `.fail` here means + // "needs root", not "impossible". + let counts = await Mounter(scanner: scanner, allowRawFallback: false).mountAll(targets).counts + guard counts.fail > 0 else { return Outcome(unprivileged: counts, escalated: nil) } + return Outcome(unprivileged: counts, escalated: await escalate()) + } + + /// When argv carries the helper flag, this process was launched by + /// `escalate()` as the root helper: execute the mount sequence and exit. + /// Called from main.swift before any AppKit setup; never returns in that + /// case. static func exitIfHelperInvocation() { - guard CommandLine.arguments.contains(RootMountRunner.helperFlag) else { return } + guard CommandLine.arguments.contains(EscalatedMountHelper.helperFlag) else { return } let status = OSAllocatedUnfairLock(initialState: Int32(1)) let finished = DispatchSemaphore(value: 0) Task.detached { - let result = await RootMountRunner.run() + let result = await EscalatedMountHelper.run() status.withLock { $0 = result } finished.signal() } @@ -32,7 +67,8 @@ enum EscalatedMount { exit(status.withLock { $0 }) } - static func run(runner: any ProcessRunning = DefaultProcessRunner()) async -> EscalatedMountOutcome { + /// Second pass: re-run our own binary as root through the password dialog. + static func escalate(runner: any ProcessRunning = DefaultProcessRunner()) async -> EscalatedMountOutcome { // Resolve symlinks first and validate + execute the same resolved path, // so the checked file is the file the password launches. let helperPath = URL(fileURLWithPath: Bundle.main.executablePath ?? CommandLine.arguments[0]) @@ -45,7 +81,7 @@ enum EscalatedMount { // string literal (backslashes first, then double quotes). let shellQuotedPath = "'" + helperPath.replacingOccurrences(of: "'", with: "'\\''") + "'" let innerCommand = - "\(shellQuotedPath) \(RootMountRunner.helperFlag) 2>/dev/null; printf '\\n\(sentinel)%d' \"$?\"" + "\(shellQuotedPath) \(EscalatedMountHelper.helperFlag) 2>/dev/null; printf '\\n\(sentinel)%d' \"$?\"" let appleScriptBody = innerCommand .replacingOccurrences(of: "\\", with: "\\\\") diff --git a/Sources/Lifsaver/MountCoordinator.swift b/Sources/Lifsaver/MountCoordinator.swift deleted file mode 100644 index c82bf80..0000000 --- a/Sources/Lifsaver/MountCoordinator.swift +++ /dev/null @@ -1,35 +0,0 @@ -import LifsaverKit - -/// Mounts stalled volumes in two passes, so the password dialog only appears -/// when it buys something. -/// -/// `diskutil mount` mounts external removable media as the logged-in user, so -/// the first pass runs in-process with no privileges and no prompt. Only if it -/// leaves a volume unmounted — the raw `/sbin/mount_*` fallback needs root — -/// does the app re-run its own binary under the admin dialog, which rescans as -/// root and picks up whatever is left. -enum MountCoordinator { - struct Outcome: Sendable { - var unprivileged: MountReport.Counts - /// nil when the first pass left nothing for root to do — the case where - /// the user is never asked for a password at all. - var escalated: EscalatedMountOutcome? - } - - static func run(scanner: DiskScanner) async -> Outcome { - let targets: [String] - do { - targets = try await scanner.scanTargets() - } catch { - // Escalating would only reach the same failing scan under root, so - // report it rather than spend a password dialog on it. - return Outcome(unprivileged: .init(), escalated: .error("scan failed: \(error)")) - } - - // First pass: diskutil only, no escalation. A `.fail` here means - // "needs root", not "impossible". - let counts = await Mounter(scanner: scanner, allowRawFallback: false).mountAll(targets).counts - guard counts.fail > 0 else { return Outcome(unprivileged: counts, escalated: nil) } - return Outcome(unprivileged: counts, escalated: await EscalatedMount.run()) - } -} diff --git a/Sources/Lifsaver/StatusItemController.swift b/Sources/Lifsaver/StatusItemController.swift index 965cab0..3683eaf 100644 --- a/Sources/Lifsaver/StatusItemController.swift +++ b/Sources/Lifsaver/StatusItemController.swift @@ -262,12 +262,12 @@ final class StatusItemController: NSObject, NSMenuDelegate { // its blocking pipe reads on GCD, off the main actor. let scanner = self.scanner Task { [weak self] in - let outcome = await MountCoordinator.run(scanner: scanner) + let outcome = await EscalatedMount.run(scanner: scanner) self?.finishMount(outcome) } } - private func finishMount(_ outcome: MountCoordinator.Outcome) { + private func finishMount(_ outcome: EscalatedMount.Outcome) { mountInProgress = false // Logged separately from the escalated pass: whether a password was // needed at all is exactly what a mount bug report turns on. diff --git a/Sources/LifsaverKit/DiagnosticsReport.swift b/Sources/LifsaverKit/DiagnosticsReport.swift index 83573b4..1acd533 100644 --- a/Sources/LifsaverKit/DiagnosticsReport.swift +++ b/Sources/LifsaverKit/DiagnosticsReport.swift @@ -38,7 +38,7 @@ public struct DiagnosticsReporter: Sendable { private let runner: any ProcessRunning private let mountTable: any MountTableReading - public init(runner: any ProcessRunning, mountTable: any MountTableReading = LiveMountTable()) { + public init(runner: any ProcessRunning, mountTable: any MountTableReading = KernelMountTable()) { self.runner = runner self.mountTable = mountTable } diff --git a/Sources/LifsaverKit/RootMountRunner.swift b/Sources/LifsaverKit/EscalatedMountHelper.swift similarity index 95% rename from Sources/LifsaverKit/RootMountRunner.swift rename to Sources/LifsaverKit/EscalatedMountHelper.swift index 13e5a25..cd55963 100644 --- a/Sources/LifsaverKit/RootMountRunner.swift +++ b/Sources/LifsaverKit/EscalatedMountHelper.swift @@ -4,7 +4,7 @@ import Foundation /// binary under the administrator password dialog with `helperFlag`, and this /// scans and mounts everything found, printing a `MountReport` JSON document /// on stdout for the app to parse. -public enum RootMountRunner { +public enum EscalatedMountHelper { /// Hidden argv flag marking an invocation as the escalated helper rather /// than the menu bar app. Frozen: an updated app may invoke a not yet /// restarted older binary's flag and vice versa. @@ -15,7 +15,7 @@ public enum RootMountRunner { /// the invoking app discards). public static func run( runner: any ProcessRunning = DefaultProcessRunner(), - mountTable: any MountTableReading = LiveMountTable(), + mountTable: any MountTableReading = KernelMountTable(), fileOps: any FileOperating = DefaultFileOperations(), console: Console = Console(out: Console.standard.err, err: Console.standard.err), emit: (String) -> Void = { print($0) } diff --git a/Sources/LifsaverKit/MountTable.swift b/Sources/LifsaverKit/KernelMountTable.swift similarity index 97% rename from Sources/LifsaverKit/MountTable.swift rename to Sources/LifsaverKit/KernelMountTable.swift index c632b20..aa55e61 100644 --- a/Sources/LifsaverKit/MountTable.swift +++ b/Sources/LifsaverKit/KernelMountTable.swift @@ -23,7 +23,7 @@ public protocol MountTableReading: Sendable { /// Live kernel mount table via getmntinfo_r_np(3) — the same data `mount` /// prints, without a subprocess or text parsing. The _r variant is /// thread-safe; the plain getmntinfo shares one static buffer per process. -public struct LiveMountTable: MountTableReading { +public struct KernelMountTable: MountTableReading { public init() {} public func entries() throws -> [MountEntry] { diff --git a/Sources/LifsaverKit/Report.swift b/Sources/LifsaverKit/MountReport.swift similarity index 100% rename from Sources/LifsaverKit/Report.swift rename to Sources/LifsaverKit/MountReport.swift diff --git a/Sources/LifsaverKit/Scanner.swift b/Sources/LifsaverKit/Scanner.swift index 6ce7d3a..863a62a 100644 --- a/Sources/LifsaverKit/Scanner.swift +++ b/Sources/LifsaverKit/Scanner.swift @@ -62,7 +62,7 @@ public struct DiskScanner: Sendable { public init( runner: any ProcessRunning, - mountTable: any MountTableReading = LiveMountTable(), + mountTable: any MountTableReading = KernelMountTable(), console: Console, verbose: Bool = false ) { diff --git a/Tests/LifsaverKitTests/RootMountRunnerTests.swift b/Tests/LifsaverKitTests/EscalatedMountHelperTests.swift similarity index 98% rename from Tests/LifsaverKitTests/RootMountRunnerTests.swift rename to Tests/LifsaverKitTests/EscalatedMountHelperTests.swift index e2ef178..8298e4f 100644 --- a/Tests/LifsaverKitTests/RootMountRunnerTests.swift +++ b/Tests/LifsaverKitTests/EscalatedMountHelperTests.swift @@ -76,7 +76,7 @@ private func runHelper( diskutilListSucceeds: diskutilListSucceeds, fsckActive: fsckActive) let console = CapturedConsole() var emitted: [String] = [] - let status = await RootMountRunner.run( + let status = await EscalatedMountHelper.run( runner: runner, mountTable: mountTable, fileOps: FakeFileOperations(), @@ -86,7 +86,7 @@ private func runHelper( return HelperRun(status: status, emitted: emitted, console: console) } -@Suite struct RootMountRunnerTests { +@Suite struct EscalatedMountHelperTests { @Test func mountsEachTargetAndRoundTripsThroughSharedReportType() async throws { // The app decodes this exact output as MountReport — assert the full // document round-trips, not just substrings. diff --git a/Tests/LifsaverKitTests/KernelMountTableTests.swift b/Tests/LifsaverKitTests/KernelMountTableTests.swift new file mode 100644 index 0000000..cadb69f --- /dev/null +++ b/Tests/LifsaverKitTests/KernelMountTableTests.swift @@ -0,0 +1,16 @@ +import Foundation +import Testing + +@testable import LifsaverKit + +// =========================================================================== +// KernelMountTable (real getmntinfo — read-only, safe in CI) +// =========================================================================== + +@Suite struct KernelMountTableTests { + @Test func liveTableContainsRootFilesystem() throws { + let entries = try KernelMountTable().entries() + #expect(entries.contains { $0.mountPoint == "/" }) + #expect(entries.contains { $0.device.hasPrefix("/dev/disk") }) + } +} diff --git a/Tests/LifsaverKitTests/MounterPassTests.swift b/Tests/LifsaverKitTests/MounterPassTests.swift deleted file mode 100644 index fa6a2c1..0000000 --- a/Tests/LifsaverKitTests/MounterPassTests.swift +++ /dev/null @@ -1,76 +0,0 @@ -import Foundation -import Testing -import os - -@testable import LifsaverKit - -// =========================================================================== -// execute — unreadable mount table -// =========================================================================== - -@Suite struct UnreadableMountTableTests { - @Test func trustsMountExitStatusWhenTableUnreadable() async { - // An unreadable table is "unknown", not "unmounted": the mount - // binary's zero exit stands, so the pass doesn't report a spurious - // failure and trigger an unwarranted admin password prompt upstream. - let runner = FakeProcessRunner { executable, arguments in - switch executable { - case "pgrep": - return ProcessResult(status: 1) - case "diskutil" where arguments.first == "info": - return ProcessResult(status: 0, stdout: plistData(["FilesystemType": "exfat"])) - default: - return ProcessResult(status: 0) - } - } - let mounter = makeMounter(runner: runner, mountTable: FakeMountTable(throwing: POSIXError(.EIO))) - #expect(await mounter.execute("disk4s1") == .ok) - } -} - -// =========================================================================== -// mountAll (shared by the unprivileged pass and the root helper) -// =========================================================================== - -/// Runner where `diskutil mount` succeeds per `mountSucceeds`, updating the -/// mount table on success the way the real command does. -private func mountingRunner( - table: FakeMountTable, mountSucceeds: @escaping @Sendable (String) -> Bool -) -> FakeProcessRunner { - FakeProcessRunner { executable, arguments in - switch executable { - case "pgrep": - return ProcessResult(status: 1) - case "diskutil" where arguments.first == "info": - return ProcessResult(status: 0, stdout: plistData(["FilesystemType": "exfat"])) - case "diskutil" where arguments.first == "mount": - let devId = arguments[1] - guard mountSucceeds(devId) else { return ProcessResult(status: 1) } - table.add(device: "/dev/\(devId)", mountPoint: "/Volumes/CARD_\(devId)") - return ProcessResult(status: 0) - default: - return ProcessResult(status: 1) - } - } -} - -@Suite struct MountAllTests { - @Test func talliesOutcomesAndCollectsMountedVolumes() async { - let table = FakeMountTable() - let mounter = makeMounter(runner: mountingRunner(table: table) { _ in true }, mountTable: table) - let result = await mounter.mountAll(["disk4s1", "disk4s2"]) - #expect(result.counts == MountReport.Counts(ok: 2, fail: 0, skip: 0)) - #expect(result.mounted.map(\.device) == ["disk4s1", "disk4s2"]) - #expect(result.mounted.map(\.mountPoint) == ["/Volumes/CARD_disk4s1", "/Volumes/CARD_disk4s2"]) - } - - @Test func countsFailuresAndSkipsWithoutCollectingThem() async { - let table = FakeMountTable([MountEntry(device: "/dev/disk4s1", mountPoint: "/Volumes/CARD")]) - let mounter = makeMounter( - runner: mountingRunner(table: table) { _ in false }, mountTable: table, - allowRawFallback: false) - let result = await mounter.mountAll(["disk4s1", "disk4s2"]) - #expect(result.counts == MountReport.Counts(ok: 0, fail: 1, skip: 1)) - #expect(result.mounted.isEmpty) - } -} diff --git a/Tests/LifsaverKitTests/MounterTests.swift b/Tests/LifsaverKitTests/MounterTests.swift index 12c1b1a..2b0c38f 100644 --- a/Tests/LifsaverKitTests/MounterTests.swift +++ b/Tests/LifsaverKitTests/MounterTests.swift @@ -1,3 +1,5 @@ +// Consolidated one-file-per-subject suite: +// swiftlint:disable file_length import Foundation import Testing import os @@ -371,3 +373,74 @@ private final class MountScenario: Sendable { #expect(!scenario.commandsSeen.contains { $0.contains("diskutil mount") }) } } + +// =========================================================================== +// execute — unreadable mount table +// =========================================================================== + +@Suite struct UnreadableMountTableTests { + @Test func trustsMountExitStatusWhenTableUnreadable() async { + // An unreadable table is "unknown", not "unmounted": the mount + // binary's zero exit stands, so the pass doesn't report a spurious + // failure and trigger an unwarranted admin password prompt upstream. + let runner = FakeProcessRunner { executable, arguments in + switch executable { + case "pgrep": + return ProcessResult(status: 1) + case "diskutil" where arguments.first == "info": + return ProcessResult(status: 0, stdout: plistData(["FilesystemType": "exfat"])) + default: + return ProcessResult(status: 0) + } + } + let mounter = makeMounter(runner: runner, mountTable: FakeMountTable(throwing: POSIXError(.EIO))) + #expect(await mounter.execute("disk4s1") == .ok) + } +} + +// =========================================================================== +// mountAll (shared by the unprivileged pass and the root helper) +// =========================================================================== + +/// Runner where `diskutil mount` succeeds per `mountSucceeds`, updating the +/// mount table on success the way the real command does. +private func mountingRunner( + table: FakeMountTable, mountSucceeds: @escaping @Sendable (String) -> Bool +) -> FakeProcessRunner { + FakeProcessRunner { executable, arguments in + switch executable { + case "pgrep": + return ProcessResult(status: 1) + case "diskutil" where arguments.first == "info": + return ProcessResult(status: 0, stdout: plistData(["FilesystemType": "exfat"])) + case "diskutil" where arguments.first == "mount": + let devId = arguments[1] + guard mountSucceeds(devId) else { return ProcessResult(status: 1) } + table.add(device: "/dev/\(devId)", mountPoint: "/Volumes/CARD_\(devId)") + return ProcessResult(status: 0) + default: + return ProcessResult(status: 1) + } + } +} + +@Suite struct MountAllTests { + @Test func talliesOutcomesAndCollectsMountedVolumes() async { + let table = FakeMountTable() + let mounter = makeMounter(runner: mountingRunner(table: table) { _ in true }, mountTable: table) + let result = await mounter.mountAll(["disk4s1", "disk4s2"]) + #expect(result.counts == MountReport.Counts(ok: 2, fail: 0, skip: 0)) + #expect(result.mounted.map(\.device) == ["disk4s1", "disk4s2"]) + #expect(result.mounted.map(\.mountPoint) == ["/Volumes/CARD_disk4s1", "/Volumes/CARD_disk4s2"]) + } + + @Test func countsFailuresAndSkipsWithoutCollectingThem() async { + let table = FakeMountTable([MountEntry(device: "/dev/disk4s1", mountPoint: "/Volumes/CARD")]) + let mounter = makeMounter( + runner: mountingRunner(table: table) { _ in false }, mountTable: table, + allowRawFallback: false) + let result = await mounter.mountAll(["disk4s1", "disk4s2"]) + #expect(result.counts == MountReport.Counts(ok: 0, fail: 1, skip: 1)) + #expect(result.mounted.isEmpty) + } +} diff --git a/Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift b/Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift deleted file mode 100644 index 206ff4f..0000000 --- a/Tests/LifsaverKitTests/ScannerTargetSelectionTests.swift +++ /dev/null @@ -1,338 +0,0 @@ -import Foundation -import Testing -import os - -@testable import LifsaverKit - -// =========================================================================== -// isExternalHardware -// =========================================================================== - -@Suite struct IsExternalHardwareTests { - @Test func externalBusIsExternal() async { - let runner = diskutilRunner(info: ["disk4": infoExternal]) - #expect(await makeScanner(runner: runner).isExternalHardware("disk4")) - } - - @Test func internalFixedDiskIsNotExternal() async { - let runner = diskutilRunner(info: ["disk0": infoInternalFixed]) - #expect(!(await makeScanner(runner: runner).isExternalHardware("disk0"))) - } - - @Test func removableMediaRescuesMisreportedInternal() async { - // USB bridges can misreport Internal; RemovableMediaOrExternalDevice - // is the second signal that still identifies the card reader. - let runner = diskutilRunner(info: ["disk4": infoMisreportingBridge]) - #expect(await makeScanner(runner: runner).isExternalHardware("disk4")) - } - - @Test func failsClosedOnMissingKeys() async { - let runner = diskutilRunner(info: ["disk4": ["Content": "GUID_partition_scheme"]]) - #expect(!(await makeScanner(runner: runner).isExternalHardware("disk4"))) - } - - @Test func failsClosedOnDiskutilFailure() async { - let runner = FakeProcessRunner(always: ProcessResult(status: 1)) - #expect(!(await makeScanner(runner: runner).isExternalHardware("disk4"))) - } - - @Test func failsClosedOnUnreadablePlist() async { - let runner = FakeProcessRunner(always: ProcessResult(status: 0, stdout: Data("not a plist".utf8))) - #expect(!(await makeScanner(runner: runner).isExternalHardware("disk4"))) - } - - @Test func retriesOnceAfterTransientQueryFailure() async { - // diskutil is most likely to be flaky exactly when diskarbitrationd is - // wedged on a stalled card; one transient failure must not hide it. - let external = plistData(infoExternal) - let attempts = OSAllocatedUnfairLock(initialState: 0) - let runner = FakeProcessRunner { _, _ in - let attempt = attempts.withLock { count -> Int in - count += 1 - return count - } - return attempt == 1 ? ProcessResult(status: 1) : ProcessResult(status: 0, stdout: external) - } - #expect(await makeScanner(runner: runner).isExternalHardware("disk4")) - #expect(attempts.withLock { $0 } == 2) - } - - @Test func confirmedInternalIsNotRetried() async { - // A successful query whose keys say "internal" is final. - let runner = diskutilRunner(info: ["disk0": infoInternalFixed]) - #expect(!(await makeScanner(runner: runner).isExternalHardware("disk0"))) - #expect(runner.calls.count == 1) - } -} - -// =========================================================================== -// filterTargetPartitions -// =========================================================================== - -@Suite struct FilterTargetPartitionsTests { - @Test func picksUpUnmountedExternalExfat() async { - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner) - .filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: []) - #expect(targets == ["disk4s1"]) - } - - @Test func skipsInternalDisks() async { - // Boot Camp scenario: an unmounted NTFS/FAT partition on the internal - // fixed disk must never become a target. - let runner = diskutilRunner(info: ["disk0": infoInternalFixed]) - let targets = await makeScanner(runner: runner) - .filterTargetPartitions(diskutilPlistInternal, activeMounts: []) - #expect(targets.isEmpty) - } - - @Test func acceptsMisreportingBridge() async { - let runner = diskutilRunner(info: ["disk4": infoMisreportingBridge]) - let targets = await makeScanner(runner: runner) - .filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: []) - #expect(targets == ["disk4s1"]) - } - - @Test func failsClosedWhenExternalityUnknown() async { - // No info response for disk4 → treated as internal. - let targets = await makeScanner(runner: diskutilRunner()) - .filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: []) - #expect(targets.isEmpty) - } - - @Test func skipsEFIPartition() async { - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(diskutilPlistEFI, activeMounts: []) - // disk4s1 = EFI (blocked), disk4s2 = Microsoft Basic Data (allowed) - #expect(!targets.contains("disk4s1")) - #expect(targets.contains("disk4s2")) - } - - @Test func skipsAppleAPFSWithoutQueryingExternality() async { - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(diskutilPlistAPFS, activeMounts: []) - #expect(targets.isEmpty) - // Content filtering alone rules the disk out — no subprocess needed. - #expect(runner.calls.isEmpty) - } - - @Test func skipsAlreadyMountedDevice() async { - let captured = CapturedConsole() - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let scanner = makeScanner(runner: runner, console: captured.console, verbose: true) - let targets = await scanner.filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: ["/dev/disk4s1"]) - #expect(targets.isEmpty) - #expect(captured.outText.contains("already mounted")) - } - - @Test func verboseExplainsContentSkips() async { - // Diagnostic reports replay these lines; every rejection needs a why. - let captured = CapturedConsole() - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let scanner = makeScanner(runner: runner, console: captured.console, verbose: true) - _ = await scanner.filterTargetPartitions(diskutilPlistEFI, activeMounts: []) - #expect(captured.outText.contains("Skipping disk4s1 — system partition (EFI).")) - - _ = await scanner.filterTargetPartitions( - [ - "AllDisksAndPartitions": [ - ["DeviceIdentifier": "disk6", "Partitions": [["DeviceIdentifier": "disk6s1"]]] - ] - ], - activeMounts: []) - #expect(captured.outText.contains("Skipping disk6s1 — Content (empty) is not camera-card-like.")) - } - - @Test func contentSkipsAreSilentByDefault() async { - let captured = CapturedConsole() - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let scanner = makeScanner(runner: runner, console: captured.console) - _ = await scanner.filterTargetPartitions(diskutilPlistEFI, activeMounts: []) - #expect(captured.outText.isEmpty) - } - - @Test func alreadyMountedSkipIsSilentByDefault() async { - let captured = CapturedConsole() - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let scanner = makeScanner(runner: runner, console: captured.console) - let targets = await scanner.filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: ["/dev/disk4s1"]) - #expect(targets.isEmpty) - #expect(captured.outText.isEmpty) - } - - @Test func multiDiskMultiPartition() async { - // disk4s1=EFI(skip), disk4s2=MBD(ok), disk4s3=DOS_FAT_32(ok), - // disk4s4=Windows_NTFS(ok — exFAT and NTFS share MBR type 0x07), - // disk5: personality-name variants; only allowlisted spellings match - let runner = diskutilRunner(info: ["disk4": infoExternal, "disk5": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(diskutilPlistMulti, activeMounts: []) - #expect(!targets.contains("disk4s1")) - #expect(targets.contains("disk4s2")) - #expect(targets.contains("disk4s3")) - #expect(targets.contains("disk4s4")) - #expect(targets.contains("disk5s1")) - #expect(targets.contains("disk5s2")) - #expect(!targets.contains("disk5s3")) - } - - @Test func emptyDiskDataReturnsEmpty() async { - let targets = await makeScanner().filterTargetPartitions(["AllDisksAndPartitions": [Any]()], activeMounts: []) - #expect(targets.isEmpty) - } - - @Test func partitionMissingDeviceIdentifierIsSkipped() async { - let data: [String: Any] = [ - "AllDisksAndPartitions": [ - [ - "DeviceIdentifier": "disk4", - "Partitions": [["Content": "Microsoft Basic Data"]], // no DeviceIdentifier - ] - ] - ] - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) - #expect(targets.isEmpty) - } - - @Test func diskMissingDeviceIdentifierIsSkipped() async { - // Candidate partitions but no whole-disk id to verify → fail closed. - let data: [String: Any] = [ - "AllDisksAndPartitions": [ - [ - "Partitions": [["DeviceIdentifier": "disk4s1", "Content": "Microsoft Basic Data"]] - ] - ] - ] - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) - #expect(targets.isEmpty) - } - - @Test(arguments: [ - "Microsoft Basic Data", - "DOS_FAT_32", - "Windows_FAT_32", - "Windows_NTFS", - "exFAT", - "ExFAT", - ]) - func allAllowlistedContentTypesAreAccepted(contentType: String) async { - let data: [String: Any] = [ - "AllDisksAndPartitions": [ - [ - "DeviceIdentifier": "disk4", - "Partitions": [["DeviceIdentifier": "disk4s1", "Content": contentType]], - ] - ] - ] - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) - #expect(targets.contains("disk4s1")) - } - - @Test(arguments: [ - "Apple_APFS", - "Apple_HFS", - "Apple_Boot", - "Apple_Recovery", - "Apple_CoreStorage", - "EFI", - ]) - func systemContentTypesAreRejected(contentType: String) async { - let data: [String: Any] = [ - "AllDisksAndPartitions": [ - [ - "DeviceIdentifier": "disk4", - "Partitions": [["DeviceIdentifier": "disk4s1", "Content": contentType]], - ] - ] - ] - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) - #expect(targets.isEmpty) - } - - @Test(arguments: ["Microsoft Basic Data Extra", "exFAT2", "NTFS"]) - func allowlistMatchingIsExactNotSubstring(contentType: String) async { - // The most dangerous decision the app makes must not widen through a - // partial match against an unexpected Content value. - let data: [String: Any] = [ - "AllDisksAndPartitions": [ - [ - "DeviceIdentifier": "disk4", - "Partitions": [["DeviceIdentifier": "disk4s1", "Content": contentType]], - ] - ] - ] - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) - #expect(targets.isEmpty) - } - - @Test func unpartitionedSuperfloppyDiskIsATarget() async { - // Cards formatted without a partition map put the filesystem on the - // whole-disk node: no Partitions array, the Content sits on the disk. - let data: [String: Any] = [ - "AllDisksAndPartitions": [ - ["DeviceIdentifier": "disk4", "Content": "Windows_FAT_32"] - ] - ] - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) - #expect(targets == ["disk4"]) - } - - @Test func partitionSchemeWholeDiskIsNotATarget() async { - // A partitioned disk whose partitions were all filtered must not fall - // back to offering the whole-disk node. - let data: [String: Any] = [ - "AllDisksAndPartitions": [ - [ - "DeviceIdentifier": "disk4", - "Content": "GUID_partition_scheme", - "Partitions": [["DeviceIdentifier": "disk4s1", "Content": "EFI"]], - ] - ] - ] - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) - #expect(targets.isEmpty) - } - - @Test func mountedSuperfloppyDiskIsSkipped() async { - let data: [String: Any] = [ - "AllDisksAndPartitions": [ - ["DeviceIdentifier": "disk4", "Content": "Windows_FAT_32"] - ] - ] - let runner = diskutilRunner(info: ["disk4": infoExternal]) - let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: ["/dev/disk4"]) - #expect(targets.isEmpty) - } -} - -// =========================================================================== -// scanTargets (scan pipeline: diskutil plist + fresh mount table) -// =========================================================================== - -@Suite struct ScanTargetsTests { - @Test func excludesDevicesAlreadyInMountTable() async throws { - let runner = diskutilRunner( - list: diskutilPlistMulti, - info: ["disk4": infoExternal, "disk5": infoExternal]) - let table = FakeMountTable([MountEntry(device: "/dev/disk4s2", mountPoint: "/Volumes/CARD")]) - let targets = try await makeScanner(runner: runner, mountTable: table).scanTargets() - #expect(!targets.contains("disk4s2")) - #expect(targets.contains("disk4s3")) - } - - @Test func throwsWhenMountTableUnreadable() async { - // Guessing "nothing mounted" would offer every mounted volume as a - // target; a scan that cannot see the table must fail loudly. - let runner = diskutilRunner(list: diskutilPlistExternalExfat, info: ["disk4": infoExternal]) - let table = FakeMountTable(throwing: POSIXError(.EIO)) - await #expect(throws: DiskUtilError.self) { - try await makeScanner(runner: runner, mountTable: table).scanTargets() - } - } -} diff --git a/Tests/LifsaverKitTests/ScannerTests.swift b/Tests/LifsaverKitTests/ScannerTests.swift index 0f69208..b0c9c77 100644 --- a/Tests/LifsaverKitTests/ScannerTests.swift +++ b/Tests/LifsaverKitTests/ScannerTests.swift @@ -1,20 +1,11 @@ +// Consolidated one-file-per-subject suite: +// swiftlint:disable file_length import Foundation import Testing +import os @testable import LifsaverKit -// =========================================================================== -// LiveMountTable (real getmntinfo — read-only, safe in CI) -// =========================================================================== - -@Suite struct LiveMountTableTests { - @Test func liveTableContainsRootFilesystem() throws { - let entries = try LiveMountTable().entries() - #expect(entries.contains { $0.mountPoint == "/" }) - #expect(entries.contains { $0.device.hasPrefix("/dev/disk") }) - } -} - // =========================================================================== // activeMounts // =========================================================================== @@ -227,12 +218,334 @@ import Testing } // =========================================================================== -// Version +// isExternalHardware +// =========================================================================== + +@Suite struct IsExternalHardwareTests { + @Test func externalBusIsExternal() async { + let runner = diskutilRunner(info: ["disk4": infoExternal]) + #expect(await makeScanner(runner: runner).isExternalHardware("disk4")) + } + + @Test func internalFixedDiskIsNotExternal() async { + let runner = diskutilRunner(info: ["disk0": infoInternalFixed]) + #expect(!(await makeScanner(runner: runner).isExternalHardware("disk0"))) + } + + @Test func removableMediaRescuesMisreportedInternal() async { + // USB bridges can misreport Internal; RemovableMediaOrExternalDevice + // is the second signal that still identifies the card reader. + let runner = diskutilRunner(info: ["disk4": infoMisreportingBridge]) + #expect(await makeScanner(runner: runner).isExternalHardware("disk4")) + } + + @Test func failsClosedOnMissingKeys() async { + let runner = diskutilRunner(info: ["disk4": ["Content": "GUID_partition_scheme"]]) + #expect(!(await makeScanner(runner: runner).isExternalHardware("disk4"))) + } + + @Test func failsClosedOnDiskutilFailure() async { + let runner = FakeProcessRunner(always: ProcessResult(status: 1)) + #expect(!(await makeScanner(runner: runner).isExternalHardware("disk4"))) + } + + @Test func failsClosedOnUnreadablePlist() async { + let runner = FakeProcessRunner(always: ProcessResult(status: 0, stdout: Data("not a plist".utf8))) + #expect(!(await makeScanner(runner: runner).isExternalHardware("disk4"))) + } + + @Test func retriesOnceAfterTransientQueryFailure() async { + // diskutil is most likely to be flaky exactly when diskarbitrationd is + // wedged on a stalled card; one transient failure must not hide it. + let external = plistData(infoExternal) + let attempts = OSAllocatedUnfairLock(initialState: 0) + let runner = FakeProcessRunner { _, _ in + let attempt = attempts.withLock { count -> Int in + count += 1 + return count + } + return attempt == 1 ? ProcessResult(status: 1) : ProcessResult(status: 0, stdout: external) + } + #expect(await makeScanner(runner: runner).isExternalHardware("disk4")) + #expect(attempts.withLock { $0 } == 2) + } + + @Test func confirmedInternalIsNotRetried() async { + // A successful query whose keys say "internal" is final. + let runner = diskutilRunner(info: ["disk0": infoInternalFixed]) + #expect(!(await makeScanner(runner: runner).isExternalHardware("disk0"))) + #expect(runner.calls.count == 1) + } +} + +// =========================================================================== +// filterTargetPartitions +// =========================================================================== + +@Suite struct FilterTargetPartitionsTests { + @Test func picksUpUnmountedExternalExfat() async { + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner) + .filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: []) + #expect(targets == ["disk4s1"]) + } + + @Test func skipsInternalDisks() async { + // Boot Camp scenario: an unmounted NTFS/FAT partition on the internal + // fixed disk must never become a target. + let runner = diskutilRunner(info: ["disk0": infoInternalFixed]) + let targets = await makeScanner(runner: runner) + .filterTargetPartitions(diskutilPlistInternal, activeMounts: []) + #expect(targets.isEmpty) + } + + @Test func acceptsMisreportingBridge() async { + let runner = diskutilRunner(info: ["disk4": infoMisreportingBridge]) + let targets = await makeScanner(runner: runner) + .filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: []) + #expect(targets == ["disk4s1"]) + } + + @Test func failsClosedWhenExternalityUnknown() async { + // No info response for disk4 → treated as internal. + let targets = await makeScanner(runner: diskutilRunner()) + .filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: []) + #expect(targets.isEmpty) + } + + @Test func skipsEFIPartition() async { + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(diskutilPlistEFI, activeMounts: []) + // disk4s1 = EFI (blocked), disk4s2 = Microsoft Basic Data (allowed) + #expect(!targets.contains("disk4s1")) + #expect(targets.contains("disk4s2")) + } + + @Test func skipsAppleAPFSWithoutQueryingExternality() async { + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(diskutilPlistAPFS, activeMounts: []) + #expect(targets.isEmpty) + // Content filtering alone rules the disk out — no subprocess needed. + #expect(runner.calls.isEmpty) + } + + @Test func skipsAlreadyMountedDevice() async { + let captured = CapturedConsole() + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let scanner = makeScanner(runner: runner, console: captured.console, verbose: true) + let targets = await scanner.filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: ["/dev/disk4s1"]) + #expect(targets.isEmpty) + #expect(captured.outText.contains("already mounted")) + } + + @Test func verboseExplainsContentSkips() async { + // Diagnostic reports replay these lines; every rejection needs a why. + let captured = CapturedConsole() + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let scanner = makeScanner(runner: runner, console: captured.console, verbose: true) + _ = await scanner.filterTargetPartitions(diskutilPlistEFI, activeMounts: []) + #expect(captured.outText.contains("Skipping disk4s1 — system partition (EFI).")) + + _ = await scanner.filterTargetPartitions( + [ + "AllDisksAndPartitions": [ + ["DeviceIdentifier": "disk6", "Partitions": [["DeviceIdentifier": "disk6s1"]]] + ] + ], + activeMounts: []) + #expect(captured.outText.contains("Skipping disk6s1 — Content (empty) is not camera-card-like.")) + } + + @Test func contentSkipsAreSilentByDefault() async { + let captured = CapturedConsole() + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let scanner = makeScanner(runner: runner, console: captured.console) + _ = await scanner.filterTargetPartitions(diskutilPlistEFI, activeMounts: []) + #expect(captured.outText.isEmpty) + } + + @Test func alreadyMountedSkipIsSilentByDefault() async { + let captured = CapturedConsole() + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let scanner = makeScanner(runner: runner, console: captured.console) + let targets = await scanner.filterTargetPartitions(diskutilPlistExternalExfat, activeMounts: ["/dev/disk4s1"]) + #expect(targets.isEmpty) + #expect(captured.outText.isEmpty) + } + + @Test func multiDiskMultiPartition() async { + // disk4s1=EFI(skip), disk4s2=MBD(ok), disk4s3=DOS_FAT_32(ok), + // disk4s4=Windows_NTFS(ok — exFAT and NTFS share MBR type 0x07), + // disk5: personality-name variants; only allowlisted spellings match + let runner = diskutilRunner(info: ["disk4": infoExternal, "disk5": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(diskutilPlistMulti, activeMounts: []) + #expect(!targets.contains("disk4s1")) + #expect(targets.contains("disk4s2")) + #expect(targets.contains("disk4s3")) + #expect(targets.contains("disk4s4")) + #expect(targets.contains("disk5s1")) + #expect(targets.contains("disk5s2")) + #expect(!targets.contains("disk5s3")) + } + + @Test func emptyDiskDataReturnsEmpty() async { + let targets = await makeScanner().filterTargetPartitions(["AllDisksAndPartitions": [Any]()], activeMounts: []) + #expect(targets.isEmpty) + } + + @Test func partitionMissingDeviceIdentifierIsSkipped() async { + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + [ + "DeviceIdentifier": "disk4", + "Partitions": [["Content": "Microsoft Basic Data"]], // no DeviceIdentifier + ] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets.isEmpty) + } + + @Test func diskMissingDeviceIdentifierIsSkipped() async { + // Candidate partitions but no whole-disk id to verify → fail closed. + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + [ + "Partitions": [["DeviceIdentifier": "disk4s1", "Content": "Microsoft Basic Data"]] + ] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets.isEmpty) + } + + @Test(arguments: [ + "Microsoft Basic Data", + "DOS_FAT_32", + "Windows_FAT_32", + "Windows_NTFS", + "exFAT", + "ExFAT", + ]) + func allAllowlistedContentTypesAreAccepted(contentType: String) async { + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + [ + "DeviceIdentifier": "disk4", + "Partitions": [["DeviceIdentifier": "disk4s1", "Content": contentType]], + ] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets.contains("disk4s1")) + } + + @Test(arguments: [ + "Apple_APFS", + "Apple_HFS", + "Apple_Boot", + "Apple_Recovery", + "Apple_CoreStorage", + "EFI", + ]) + func systemContentTypesAreRejected(contentType: String) async { + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + [ + "DeviceIdentifier": "disk4", + "Partitions": [["DeviceIdentifier": "disk4s1", "Content": contentType]], + ] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets.isEmpty) + } + + @Test(arguments: ["Microsoft Basic Data Extra", "exFAT2", "NTFS"]) + func allowlistMatchingIsExactNotSubstring(contentType: String) async { + // The most dangerous decision the app makes must not widen through a + // partial match against an unexpected Content value. + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + [ + "DeviceIdentifier": "disk4", + "Partitions": [["DeviceIdentifier": "disk4s1", "Content": contentType]], + ] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets.isEmpty) + } + + @Test func unpartitionedSuperfloppyDiskIsATarget() async { + // Cards formatted without a partition map put the filesystem on the + // whole-disk node: no Partitions array, the Content sits on the disk. + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + ["DeviceIdentifier": "disk4", "Content": "Windows_FAT_32"] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets == ["disk4"]) + } + + @Test func partitionSchemeWholeDiskIsNotATarget() async { + // A partitioned disk whose partitions were all filtered must not fall + // back to offering the whole-disk node. + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + [ + "DeviceIdentifier": "disk4", + "Content": "GUID_partition_scheme", + "Partitions": [["DeviceIdentifier": "disk4s1", "Content": "EFI"]], + ] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: []) + #expect(targets.isEmpty) + } + + @Test func mountedSuperfloppyDiskIsSkipped() async { + let data: [String: Any] = [ + "AllDisksAndPartitions": [ + ["DeviceIdentifier": "disk4", "Content": "Windows_FAT_32"] + ] + ] + let runner = diskutilRunner(info: ["disk4": infoExternal]) + let targets = await makeScanner(runner: runner).filterTargetPartitions(data, activeMounts: ["/dev/disk4"]) + #expect(targets.isEmpty) + } +} + +// =========================================================================== +// scanTargets (scan pipeline: diskutil plist + fresh mount table) // =========================================================================== -@Suite struct VersionTests { - @Test func versionIsANonEmptySemanticVersion() { - #expect(!lifsaverVersion.isEmpty) - #expect(SemanticVersion(lifsaverVersion) != nil) +@Suite struct ScanTargetsTests { + @Test func excludesDevicesAlreadyInMountTable() async throws { + let runner = diskutilRunner( + list: diskutilPlistMulti, + info: ["disk4": infoExternal, "disk5": infoExternal]) + let table = FakeMountTable([MountEntry(device: "/dev/disk4s2", mountPoint: "/Volumes/CARD")]) + let targets = try await makeScanner(runner: runner, mountTable: table).scanTargets() + #expect(!targets.contains("disk4s2")) + #expect(targets.contains("disk4s3")) + } + + @Test func throwsWhenMountTableUnreadable() async { + // Guessing "nothing mounted" would offer every mounted volume as a + // target; a scan that cannot see the table must fail loudly. + let runner = diskutilRunner(list: diskutilPlistExternalExfat, info: ["disk4": infoExternal]) + let table = FakeMountTable(throwing: POSIXError(.EIO)) + await #expect(throws: DiskUtilError.self) { + try await makeScanner(runner: runner, mountTable: table).scanTargets() + } } } diff --git a/Tests/LifsaverKitTests/VersionTests.swift b/Tests/LifsaverKitTests/VersionTests.swift new file mode 100644 index 0000000..998b8aa --- /dev/null +++ b/Tests/LifsaverKitTests/VersionTests.swift @@ -0,0 +1,15 @@ +import Foundation +import Testing + +@testable import LifsaverKit + +// =========================================================================== +// Version +// =========================================================================== + +@Suite struct VersionTests { + @Test func versionIsANonEmptySemanticVersion() { + #expect(!lifsaverVersion.isEmpty) + #expect(SemanticVersion(lifsaverVersion) != nil) + } +} From 13acb06ba97954efa2fa3d36aba10c85a065aeb1 Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sat, 18 Jul 2026 23:56:36 +0100 Subject: [PATCH 10/14] enhance diagnostic reporting --- Sources/Lifsaver/DiagnosticReportFlow.swift | 4 +- Sources/Lifsaver/EscalatedMount.swift | 30 ++++++---- Sources/Lifsaver/StatusItemController.swift | 23 +++++--- Sources/LifsaverKit/Console.swift | 55 +++++++++++++++++++ Sources/LifsaverKit/DiagnosticsReport.swift | 8 ++- .../LifsaverKit/EscalatedMountHelper.swift | 17 ++++-- Sources/LifsaverKit/MountReport.swift | 12 +++- Tests/LifsaverKitTests/ConsoleTests.swift | 50 +++++++++++++++++ .../DiagnosticsReportTests.swift | 11 ++++ .../EscalatedMountHelperTests.swift | 15 +++++ 10 files changed, 197 insertions(+), 28 deletions(-) create mode 100644 Tests/LifsaverKitTests/ConsoleTests.swift diff --git a/Sources/Lifsaver/DiagnosticReportFlow.swift b/Sources/Lifsaver/DiagnosticReportFlow.swift index 7e66207..ded3f37 100644 --- a/Sources/Lifsaver/DiagnosticReportFlow.swift +++ b/Sources/Lifsaver/DiagnosticReportFlow.swift @@ -6,7 +6,7 @@ import LifsaverKit /// reveal the saved file in Finder. @MainActor enum DiagnosticReportFlow { - static func begin(appEvents: [String]) { + static func begin(appEvents: [String], liveLog: [String]) { // A menu bar app is never frontmost; without activating, the alert // and save panel open behind whatever the user is working in. NSApp.activate(ignoringOtherApps: true) @@ -20,7 +20,7 @@ enum DiagnosticReportFlow { Task { let reporter = DiagnosticsReporter(runner: DefaultProcessRunner()) - let report = await reporter.generate(userNote: note, appEvents: appEvents) + let report = await reporter.generate(userNote: note, appEvents: appEvents, liveLog: liveLog) do { try report.write(to: url, atomically: true, encoding: .utf8) NSWorkspace.shared.activateFileViewerSelecting([url]) diff --git a/Sources/Lifsaver/EscalatedMount.swift b/Sources/Lifsaver/EscalatedMount.swift index e594e68..bbee4a8 100644 --- a/Sources/Lifsaver/EscalatedMount.swift +++ b/Sources/Lifsaver/EscalatedMount.swift @@ -23,6 +23,9 @@ enum EscalatedMount { /// nil when the first pass left nothing for root to do — the case where /// the user is never asked for a password at all. var escalated: EscalatedMountOutcome? + /// Timestamped console lines the root helper recorded, carried in-band + /// because the escalation plumbing discards the helper's stderr. + var helperLog: [String] = [] } /// Two-pass mount so the password dialog only appears when it buys @@ -47,7 +50,8 @@ enum EscalatedMount { // "needs root", not "impossible". let counts = await Mounter(scanner: scanner, allowRawFallback: false).mountAll(targets).counts guard counts.fail > 0 else { return Outcome(unprivileged: counts, escalated: nil) } - return Outcome(unprivileged: counts, escalated: await escalate()) + let (escalated, helperLog) = await escalate() + return Outcome(unprivileged: counts, escalated: escalated, helperLog: helperLog) } /// When argv carries the helper flag, this process was launched by @@ -68,13 +72,17 @@ enum EscalatedMount { } /// Second pass: re-run our own binary as root through the password dialog. - static func escalate(runner: any ProcessRunning = DefaultProcessRunner()) async -> EscalatedMountOutcome { + /// Alongside the outcome, returns whatever log lines the helper carried + /// back in its report (empty on cancel or launch failure). + static func escalate( + runner: any ProcessRunning = DefaultProcessRunner() + ) async -> (outcome: EscalatedMountOutcome, helperLog: [String]) { // Resolve symlinks first and validate + execute the same resolved path, // so the checked file is the file the password launches. let helperPath = URL(fileURLWithPath: Bundle.main.executablePath ?? CommandLine.arguments[0]) .resolvingSymlinksInPath().path if let reason = escalationSafetyError(forExecutableAt: helperPath) { - return .error("refusing to escalate: \(reason)") + return (.error("refusing to escalate: \(reason)"), []) } // Quote for the shell, then escape the whole line for the AppleScript @@ -95,15 +103,15 @@ enum EscalatedMount { // cooperative pool, so nothing blocks while the dialog waits. result = try await runner.run("/usr/bin/osascript", ["-e", script], timeout: .infinity) } catch { - return .error("could not launch osascript: \(error)") + return (.error("could not launch osascript: \(error)"), []) } if result.status != 0 { let message = result.stderr.trimmingCharacters(in: .whitespacesAndNewlines) if appleScriptErrorCode(from: message) == userCancelledCode { - return .cancelled + return (.cancelled, []) } - return .error(message) + return (.error(message), []) } return parse(stdout: result.stdoutText) @@ -145,9 +153,9 @@ enum EscalatedMount { return nil } - private static func parse(stdout: String) -> EscalatedMountOutcome { + private static func parse(stdout: String) -> (outcome: EscalatedMountOutcome, helperLog: [String]) { guard let sentinelRange = stdout.range(of: sentinel, options: .backwards) else { - return .error("missing exit sentinel in helper output") + return (.error("missing exit sentinel in helper output"), []) } let exitText = stdout[sentinelRange.upperBound...].trimmingCharacters(in: .whitespacesAndNewlines) let payload = String(stdout[.. + private let capacity: Int + private let now: @Sendable () -> Date + + public init(capacity: Int = 400, now: @escaping @Sendable () -> Date = { Date() }) { + self.lines = OSAllocatedUnfairLock(initialState: []) + self.capacity = capacity + self.now = now + } + + /// Records one line, prefixed with a timestamp. + public func record(_ line: String) { + append(["\(ISO8601DateFormatter().string(from: now())) \(line)"]) + } + + /// Appends already-formatted lines verbatim — for merging a log captured + /// elsewhere (the root helper timestamps its own lines). + public func append(_ newLines: [String]) { + lines.withLock { + $0.append(contentsOf: newLines) + if $0.count > capacity { + $0.removeFirst($0.count - capacity) + } + } + } + + public func snapshot() -> [String] { + lines.withLock { $0 } + } + + /// A console that records every line here and forwards it to `other`. + public func console(alsoTo other: Console) -> Console { + Console( + out: { line in + self.record(line) + other.out(line) + }, + err: { line in + self.record(line) + other.err(line) + } + ) + } +} diff --git a/Sources/LifsaverKit/DiagnosticsReport.swift b/Sources/LifsaverKit/DiagnosticsReport.swift index 1acd533..04a8675 100644 --- a/Sources/LifsaverKit/DiagnosticsReport.swift +++ b/Sources/LifsaverKit/DiagnosticsReport.swift @@ -52,8 +52,9 @@ public struct DiagnosticsReporter: Sendable { } /// `userNote` is the reporter's own description of what went wrong; - /// `appEvents` are the menu bar app's recent scan/mount outcomes. - public func generate(userNote: String = "", appEvents: [String] = []) async -> String { + /// `appEvents` are the app's recent scan/mount outcomes; `liveLog` is the + /// console output recorded live during those scans and mount attempts. + public func generate(userNote: String = "", appEvents: [String] = [], liveLog: [String] = []) async -> String { let note = userNote.trimmingCharacters(in: .whitespacesAndNewlines) var sections: [(String, String)] = [ ("What happened", note.isEmpty ? "(not provided)" : note) @@ -61,6 +62,9 @@ public struct DiagnosticsReporter: Sendable { if !appEvents.isEmpty { sections.append(("Recent app events", appEvents.joined(separator: "\n"))) } + if !liveLog.isEmpty { + sections.append(("Live log", liveLog.joined(separator: "\n"))) + } sections.append(("Scan trace", await scanTrace())) sections.append(("Mount table", mountTableDump())) sections.append(("fsck processes", await fsckDump())) diff --git a/Sources/LifsaverKit/EscalatedMountHelper.swift b/Sources/LifsaverKit/EscalatedMountHelper.swift index cd55963..e48b977 100644 --- a/Sources/LifsaverKit/EscalatedMountHelper.swift +++ b/Sources/LifsaverKit/EscalatedMountHelper.swift @@ -12,7 +12,8 @@ public enum EscalatedMountHelper { /// Scan, mount every target, and emit the report. Stdout carries only the /// JSON document; diagnostics go to the console (stderr by default, which - /// the invoking app discards). + /// the invoking app discards) and are also carried home in the report's + /// `log`. public static func run( runner: any ProcessRunning = DefaultProcessRunner(), mountTable: any MountTableReading = KernelMountTable(), @@ -20,7 +21,11 @@ public enum EscalatedMountHelper { console: Console = Console(out: Console.standard.err, err: Console.standard.err), emit: (String) -> Void = { print($0) } ) async -> Int32 { - let scanner = DiskScanner(runner: runner, mountTable: mountTable, console: console) + let log = ConsoleLog() + let console = log.console(alsoTo: console) + // Verbose: skip reasons only ever land in the report log, and "why was + // my card skipped as root" is exactly what a mount bug report turns on. + let scanner = DiskScanner(runner: runner, mountTable: mountTable, console: console, verbose: true) let targets: [String] do { @@ -30,12 +35,16 @@ public enum EscalatedMountHelper { // must also travel in the JSON report — otherwise the user pays for // a password dialog and learns nothing about why it failed. console.err("CRITICAL: \(error)") - emitReport(MountReport(targets: [], error: "root-side scan failed: \(error)"), emit: emit) + emitReport( + MountReport(targets: [], error: "root-side scan failed: \(error)", log: log.snapshot()), + emit: emit) return 1 } let pass = await Mounter(scanner: scanner, fileOps: fileOps).mountAll(targets) - emitReport(MountReport(targets: targets, results: pass.counts, mounted: pass.mounted), emit: emit) + emitReport( + MountReport(targets: targets, results: pass.counts, mounted: pass.mounted, log: log.snapshot()), + emit: emit) return pass.counts.fail > 0 ? 1 : 0 } diff --git a/Sources/LifsaverKit/MountReport.swift b/Sources/LifsaverKit/MountReport.swift index 519c856..fdfbe50 100644 --- a/Sources/LifsaverKit/MountReport.swift +++ b/Sources/LifsaverKit/MountReport.swift @@ -3,7 +3,7 @@ /// /// Encoded with sorted keys: /// -/// {"mounted":[…],"results":{"fail":0,"ok":1,"skip":0},"targets":["disk4s1"]} +/// {"log":[…],"mounted":[…],"results":{"fail":0,"ok":1,"skip":0},"targets":["disk4s1"]} public struct MountReport: Codable, Sendable, Equatable { public struct Counts: Codable, Sendable, Equatable { public var ok: Int @@ -34,11 +34,19 @@ public struct MountReport: Codable, Sendable, Equatable { /// threw). Carried in-band because the invoking app discards the helper's /// stderr — this is the only channel that survives the escalation. public var error: String? + /// Timestamped console lines the helper recorded while scanning and + /// mounting, carried in-band for the same reason as `error`. The app merges + /// them into its live log for diagnostic reports. + public var log: [String] - public init(targets: [String], results: Counts = .init(), mounted: [MountedVolume] = [], error: String? = nil) { + public init( + targets: [String], results: Counts = .init(), mounted: [MountedVolume] = [], + error: String? = nil, log: [String] = [] + ) { self.targets = targets self.results = results self.mounted = mounted self.error = error + self.log = log } } diff --git a/Tests/LifsaverKitTests/ConsoleTests.swift b/Tests/LifsaverKitTests/ConsoleTests.swift new file mode 100644 index 0000000..bda6db6 --- /dev/null +++ b/Tests/LifsaverKitTests/ConsoleTests.swift @@ -0,0 +1,50 @@ +import Foundation +import Testing + +@testable import LifsaverKit + +// =========================================================================== +// Live console log +// =========================================================================== + +@Suite struct ConsoleLogTests { + @Test func recordedLinesCarryTimestamps() { + let log = ConsoleLog(now: { Date(timeIntervalSince1970: 0) }) + log.record("Target: /dev/disk4s1") + #expect(log.snapshot() == ["1970-01-01T00:00:00Z Target: /dev/disk4s1"]) + } + + @Test func teeConsoleRecordsAndForwardsBothStreams() { + let log = ConsoleLog(now: { Date(timeIntervalSince1970: 0) }) + let wrapped = CapturedConsole() + let console = log.console(alsoTo: wrapped.console) + + console.out("attempting mount") + console.err("mount stderr") + + #expect(wrapped.out == ["attempting mount"]) + #expect(wrapped.err == ["mount stderr"]) + #expect( + log.snapshot() == [ + "1970-01-01T00:00:00Z attempting mount", + "1970-01-01T00:00:00Z mount stderr", + ]) + } + + @Test func oldestLinesRollOffPastCapacity() { + // The disk watcher rescans on every disk event for as long as the app + // stays resident; the buffer must stay bounded and keep the newest. + let log = ConsoleLog(capacity: 3) + log.append(["1", "2"]) + log.append(["3", "4", "5"]) + #expect(log.snapshot() == ["3", "4", "5"]) + } + + @Test func appendMergesForeignLinesVerbatim() { + // The root helper's lines arrive already timestamped by its own log; + // merging must not re-stamp them. + let log = ConsoleLog() + log.append(["--- escalated helper (root) ---", "already stamped line"]) + #expect(log.snapshot() == ["--- escalated helper (root) ---", "already stamped line"]) + } +} diff --git a/Tests/LifsaverKitTests/DiagnosticsReportTests.swift b/Tests/LifsaverKitTests/DiagnosticsReportTests.swift index c148b3a..7bdf9d7 100644 --- a/Tests/LifsaverKitTests/DiagnosticsReportTests.swift +++ b/Tests/LifsaverKitTests/DiagnosticsReportTests.swift @@ -59,6 +59,17 @@ private struct StubError: Error {} let report = await reporter().generate(userNote: " \n") #expect(report.contains("(not provided)")) #expect(!report.contains("## Recent app events")) + #expect(!report.contains("## Live log")) + } + + @Test func liveLogIsEmbeddedVerbatim() async { + let report = await reporter().generate(liveLog: [ + "2026-07-17T10:00:01Z Attempting diskutil mount...", + "--- escalated helper (root) ---", + ]) + #expect(report.contains("## Live log")) + #expect(report.contains("2026-07-17T10:00:01Z Attempting diskutil mount...")) + #expect(report.contains("--- escalated helper (root) ---")) } @Test func failingCommandsNeverAbortTheReport() async { diff --git a/Tests/LifsaverKitTests/EscalatedMountHelperTests.swift b/Tests/LifsaverKitTests/EscalatedMountHelperTests.swift index 8298e4f..87d2b3d 100644 --- a/Tests/LifsaverKitTests/EscalatedMountHelperTests.swift +++ b/Tests/LifsaverKitTests/EscalatedMountHelperTests.swift @@ -129,6 +129,21 @@ private func runHelper( #expect(report.results == MountReport.Counts(ok: 0, fail: 0, skip: 0)) } + @Test func reportCarriesTheLiveConsoleLog() async throws { + // The report's `log` is the only way the root-side play-by-play reaches + // diagnostic reports. + let run = await runHelper(devices: ["disk4s1"]) + let report = try run.decodedReport() + #expect(report.log.contains { $0.contains("Target: /dev/disk4s1") }) + #expect(report.log.contains { $0.contains("SUCCESS via diskutil") }) + } + + @Test func errorReportStillCarriesTheLogGatheredBeforeTheFailure() async throws { + let run = await runHelper(devices: ["disk4s1"], diskutilListSucceeds: false) + let report = try run.decodedReport() + #expect(report.log.contains { $0.contains("CRITICAL") }) + } + @Test func activeFsckSkipsTargetRatherThanMounting() async throws { // A skipped volume is not a failure — nothing was left in a bad state. let run = await runHelper(devices: ["disk4s1"], fsckActive: true) From 03db16eee1cefc658892808e4e7e7f710bbfe73b Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sun, 19 Jul 2026 00:29:45 +0100 Subject: [PATCH 11/14] raise lint warning threshold --- .swiftlint.yml | 5 +++++ Tests/LifsaverKitTests/MounterTests.swift | 2 -- Tests/LifsaverKitTests/ScannerTests.swift | 2 -- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.swiftlint.yml b/.swiftlint.yml index d05f638..2a16c8c 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -6,6 +6,11 @@ included: line_length: warning: 120 ignores_urls: true +# --strict promotes warnings to errors, so raise the warning threshold itself. +file_length: + warning: 1000 +type_body_length: + warning: 350 identifier_name: excluded: [ok, fs] # mount-outcome case/counters; filesystem-type local disabled_rules: diff --git a/Tests/LifsaverKitTests/MounterTests.swift b/Tests/LifsaverKitTests/MounterTests.swift index 2b0c38f..aa12f3d 100644 --- a/Tests/LifsaverKitTests/MounterTests.swift +++ b/Tests/LifsaverKitTests/MounterTests.swift @@ -1,5 +1,3 @@ -// Consolidated one-file-per-subject suite: -// swiftlint:disable file_length import Foundation import Testing import os diff --git a/Tests/LifsaverKitTests/ScannerTests.swift b/Tests/LifsaverKitTests/ScannerTests.swift index b0c9c77..8a8e12f 100644 --- a/Tests/LifsaverKitTests/ScannerTests.swift +++ b/Tests/LifsaverKitTests/ScannerTests.swift @@ -1,5 +1,3 @@ -// Consolidated one-file-per-subject suite: -// swiftlint:disable file_length import Foundation import Testing import os From 74b67b8af76df6d8e0f9aa2421ce998aea5ee4b8 Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sun, 19 Jul 2026 00:30:09 +0100 Subject: [PATCH 12/14] improve UX - user preferences --- Sources/Lifsaver/StatusItemController.swift | 66 ++++++++++++++++-- Sources/LifsaverKit/StatusMenuModel.swift | 20 +++--- .../StatusMenuModelTests.swift | 32 +++++++-- docs/images/lifsaver_demo_animation.gif | Bin 224203 -> 226350 bytes scripts/render/demo_animation.swift | 28 ++++---- 5 files changed, 114 insertions(+), 32 deletions(-) diff --git a/Sources/Lifsaver/StatusItemController.swift b/Sources/Lifsaver/StatusItemController.swift index 5281e09..52e2186 100644 --- a/Sources/Lifsaver/StatusItemController.swift +++ b/Sources/Lifsaver/StatusItemController.swift @@ -29,6 +29,10 @@ private let installerAssetName = "lifsaver_installer_macos.pkg" /// weeks discovering releases, instead of only ever checking at launch. private let updateRecheckInterval: TimeInterval = 6 * 60 * 60 +/// User preferences for auto updates and start at login. +private let automaticUpdatesDefaultsKey = "AutomaticUpdatesEnabled" +private let loginItemDefaultAppliedKey = "DidApplyLoginItemDefault" + /// Owns the status-bar item and its menu. A DiskArbitration watcher rescans /// (read-only) whenever disks appear, disappear, mount, or unmount, so /// stalled cards are flagged proactively: the icon turns orange and a @@ -97,13 +101,20 @@ final class StatusItemController: NSObject, NSMenuDelegate { statusItem.menu = menu refreshIcon() + // Auto updates and start-at-login are both opt-out. + UserDefaults.standard.register(defaults: [automaticUpdatesDefaultsKey: true]) + applyDefaultLoginItemIfNeeded() + Notifier.installClickHandler { [weak self] in self?.startMount() } // Registration replays all present disks, which triggers the first scan. diskWatcher = DiskActivityWatcher { [weak self] in self?.startScan() } - updateChecker.start() + if automaticUpdatesEnabled { + updateChecker.start() + } let checker = updateChecker let timer = Timer(timeInterval: updateRecheckInterval, repeats: true) { _ in + guard UserDefaults.standard.bool(forKey: automaticUpdatesDefaultsKey) else { return } checker.start() } timer.tolerance = updateRecheckInterval / 4 @@ -243,7 +254,8 @@ final class StatusItemController: NSObject, NSMenuDelegate { newerVersion: updateChecker.knownNewerVersion(), isCheckingForUpdates: checkingForUpdates, showLaunchAtLogin: Bundle.main.bundleIdentifier != nil, - launchAtLoginEnabled: launchAtLoginEnabled + launchAtLoginEnabled: launchAtLoginEnabled, + automaticUpdatesEnabled: automaticUpdatesEnabled ) for entry in entries { menu.addItem(menuItem(for: entry)) @@ -340,7 +352,7 @@ final class StatusItemController: NSObject, NSMenuDelegate { NSWorkspace.shared.open(url) } - @objc private func toggleLaunchAtLogin() { + @objc private func toggleLaunchAtLogin(_ sender: NSMenuItem) { do { if SMAppService.mainApp.status == .enabled { try SMAppService.mainApp.unregister() @@ -351,6 +363,38 @@ final class StatusItemController: NSObject, NSMenuDelegate { NSLog("lifsaver: launch-at-login toggle failed: %@", "\(error)") } launchAtLoginEnabled = SMAppService.mainApp.status == .enabled + // Update the checkmark in place; rebuilding would dismiss the submenu. + sender.state = launchAtLoginEnabled ? .on : .off + } + + /// Auto updates are opt-out. + private var automaticUpdatesEnabled: Bool { + UserDefaults.standard.bool(forKey: automaticUpdatesDefaultsKey) + } + + @objc private func toggleAutomaticUpdates(_ sender: NSMenuItem) { + let enabled = !automaticUpdatesEnabled + UserDefaults.standard.set(enabled, forKey: automaticUpdatesDefaultsKey) + // Re-enabling should look now, not wait for the next recheck tick. + if enabled { + updateChecker.start() + } + sender.state = enabled ? .on : .off + } + + /// Start at login: enable on first launch, then leave untouched. + private func applyDefaultLoginItemIfNeeded() { + guard Bundle.main.bundleIdentifier != nil else { return } + let defaults = UserDefaults.standard + guard !defaults.bool(forKey: loginItemDefaultAppliedKey) else { return } + defaults.set(true, forKey: loginItemDefaultAppliedKey) + do { + if SMAppService.mainApp.status != .enabled { + try SMAppService.mainApp.register() + } + } catch { + NSLog("lifsaver: default launch-at-login registration failed: %@", "\(error)") + } } @objc private func quit() { @@ -375,9 +419,19 @@ extension StatusItemController { return actionItem(title: title, action: #selector(checkForUpdatesClicked)) case .updateAvailable(let title): return actionItem(title: title, action: #selector(downloadLatestInstaller)) - case .launchAtLogin(let enabled): - let item = actionItem(title: "Start at Login", action: #selector(toggleLaunchAtLogin)) - item.state = enabled ? .on : .off + case .moreOptions(let showStartAtLogin, let startAtLoginEnabled, let automaticUpdatesEnabled): + let item = NSMenuItem(title: "Settings", action: nil, keyEquivalent: "") + let submenu = NSMenu() + if showStartAtLogin { + let login = actionItem(title: "Start at Login", action: #selector(toggleLaunchAtLogin)) + login.state = startAtLoginEnabled ? .on : .off + submenu.addItem(login) + } + let auto = actionItem( + title: "Automatically Check for Updates", action: #selector(toggleAutomaticUpdates)) + auto.state = automaticUpdatesEnabled ? .on : .off + submenu.addItem(auto) + item.submenu = submenu return item case .saveReport(let title): return actionItem(title: title, action: #selector(saveReportClicked)) diff --git a/Sources/LifsaverKit/StatusMenuModel.swift b/Sources/LifsaverKit/StatusMenuModel.swift index 5bee944..aa3767f 100644 --- a/Sources/LifsaverKit/StatusMenuModel.swift +++ b/Sources/LifsaverKit/StatusMenuModel.swift @@ -58,7 +58,9 @@ public enum StatusMenuModel { case separator case checkForUpdates(title: String) case updateAvailable(title: String) - case launchAtLogin(enabled: Bool) + /// The "Settings" submenu. `showStartAtLogin` is false on unbundled + /// dev runs, where SMAppService has no bundle to register. + case moreOptions(showStartAtLogin: Bool, startAtLoginEnabled: Bool, automaticUpdatesEnabled: Bool) case saveReport(title: String) case quit(title: String) } @@ -68,7 +70,8 @@ public enum StatusMenuModel { newerVersion: String?, isCheckingForUpdates: Bool = false, showLaunchAtLogin: Bool, - launchAtLoginEnabled: Bool + launchAtLoginEnabled: Bool, + automaticUpdatesEnabled: Bool ) -> [Entry] { var entries: [Entry] = [] @@ -86,14 +89,10 @@ public enum StatusMenuModel { entries.append(.separator) - if showLaunchAtLogin { - entries.append(.launchAtLogin(enabled: launchAtLoginEnabled)) - } // Always present — reports are most needed exactly when scans fail. entries.append(.saveReport(title: "Send Diagnostic Report")) - // The update item is always present, kept second-to-last: it opens the - // latest installer once a newer version is known, otherwise it triggers - // a manual check on click. + // The update item is always present: it opens the latest installer once + // a newer version is known, otherwise it triggers a manual check on click. if let newerVersion { entries.append(.updateAvailable(title: "Update to version \(newerVersion)")) } else if isCheckingForUpdates { @@ -101,6 +100,11 @@ public enum StatusMenuModel { } else { entries.append(.checkForUpdates(title: "Check for Updates")) } + entries.append( + .moreOptions( + showStartAtLogin: showLaunchAtLogin, + startAtLoginEnabled: launchAtLoginEnabled, + automaticUpdatesEnabled: automaticUpdatesEnabled)) entries.append(.quit(title: "Quit")) return entries diff --git a/Tests/LifsaverKitTests/StatusMenuModelTests.swift b/Tests/LifsaverKitTests/StatusMenuModelTests.swift index 7e4bf39..e4b4de3 100644 --- a/Tests/LifsaverKitTests/StatusMenuModelTests.swift +++ b/Tests/LifsaverKitTests/StatusMenuModelTests.swift @@ -13,17 +13,23 @@ import Testing newerVersion: String? = nil, isCheckingForUpdates: Bool = false, showLaunchAtLogin: Bool = false, - launchAtLoginEnabled: Bool = false + launchAtLoginEnabled: Bool = false, + automaticUpdatesEnabled: Bool = true ) -> [StatusMenuModel.Entry] { StatusMenuModel.entries( state: state, newerVersion: newerVersion, isCheckingForUpdates: isCheckingForUpdates, showLaunchAtLogin: showLaunchAtLogin, - launchAtLoginEnabled: launchAtLoginEnabled + launchAtLoginEnabled: launchAtLoginEnabled, + automaticUpdatesEnabled: automaticUpdatesEnabled ) } + /// The "Settings" submenu with the test defaults (unbundled, auto-check on). + private let moreOptions = StatusMenuModel.Entry.moreOptions( + showStartAtLogin: false, startAtLoginEnabled: false, automaticUpdatesEnabled: true) + @Test func scanningShowsPlaceholder() { #expect( entries(state: .scanning) == [ @@ -31,6 +37,7 @@ import Testing .separator, .saveReport(title: "Send Diagnostic Report"), .checkForUpdates(title: "Check for Updates"), + moreOptions, .quit(title: "Quit"), ]) } @@ -42,6 +49,7 @@ import Testing .separator, .saveReport(title: "Send Diagnostic Report"), .checkForUpdates(title: "Check for Updates"), + moreOptions, .quit(title: "Quit"), ]) } @@ -53,6 +61,7 @@ import Testing .separator, .saveReport(title: "Send Diagnostic Report"), .checkForUpdates(title: "Check for Updates"), + moreOptions, .quit(title: "Quit"), ]) } @@ -65,6 +74,7 @@ import Testing .separator, .saveReport(title: "Send Diagnostic Report"), .checkForUpdates(title: "Check for Updates"), + moreOptions, .quit(title: "Quit"), ]) } @@ -80,6 +90,7 @@ import Testing .separator, .saveReport(title: "Send Diagnostic Report"), .checkForUpdates(title: "Check for Updates"), + moreOptions, .quit(title: "Quit"), ]) } @@ -104,11 +115,22 @@ import Testing #expect(!result.contains(.disabled("Checking for Updates…"))) } - @Test func launchAtLoginShownOnlyWhenBundled() { - #expect(!entries(state: .scanning).contains(.launchAtLogin(enabled: false))) + @Test func moreOptionsHidesStartAtLoginWhenUnbundled() { + #expect( + entries(state: .scanning).contains( + .moreOptions(showStartAtLogin: false, startAtLoginEnabled: false, automaticUpdatesEnabled: true))) let bundled = entries(state: .scanning, showLaunchAtLogin: true, launchAtLoginEnabled: true) - #expect(bundled.contains(.launchAtLogin(enabled: true))) + #expect( + bundled.contains( + .moreOptions(showStartAtLogin: true, startAtLoginEnabled: true, automaticUpdatesEnabled: true))) + } + + @Test func moreOptionsReflectsAutomaticUpdatesOptOut() { + let optedOut = entries(state: .scanning, automaticUpdatesEnabled: false) + #expect( + optedOut.contains( + .moreOptions(showStartAtLogin: false, startAtLoginEnabled: false, automaticUpdatesEnabled: false))) } /// Reports are most needed exactly when scans fail, so the item must diff --git a/docs/images/lifsaver_demo_animation.gif b/docs/images/lifsaver_demo_animation.gif index d6391da4ea8a4574c60e21947a329e1c9316f476..35f5a8086cf2ea7c4c9e42bf34e479861a77c078 100644 GIT binary patch delta 225338 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 K87;tTwkNb88;m3s88HJYQ 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 uiz`q6dan#ZUN1d&&iByv3 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 delta 223177 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

  • A^R3SuM#X&1Cyd{O0#}q8{r1j{NDL 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%0DD5^%u-0kt##eviyNXsU10IHYMuI04R&NL; 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 J0RII906Q163~&Gd diff --git a/scripts/render/demo_animation.swift b/scripts/render/demo_animation.swift index 8a6b6b5..0a32285 100644 --- a/scripts/render/demo_animation.swift +++ b/scripts/render/demo_animation.swift @@ -119,10 +119,10 @@ let iconSize: CGFloat = 13 // Keep these menu items in sync with StatusMenuModel.entries. let separatorTag = "—separator—" let menuItems = [ - "Mount 2 stalled volumes", separatorTag, "Start at Login", "Send Diagnostic Report", "Check for Updates", "Quit", + "Mount 2 stalled volumes", separatorTag, "Send Diagnostic Report", "Check for Updates", "Settings", "Quit", ] let mountItem = menuItems[0] -let checkedItem = "Start at Login" // shown enabled, with a checkmark +let submenuItem = "Settings" // shown with a right-pointing disclosure arrow let rowHeight: CGFloat = 24 let separatorHeight: CGFloat = 9 let menuInsetX: CGFloat = 13 @@ -251,16 +251,18 @@ func drawBanner(_ frame: Frame) { } /// A small checkmark in the menu's left gutter, `centerY` in top-left coords. -func drawCheckmark(centerY: CGFloat) { - let left = menuLeftX + 2.5 - // Short stroke down to the elbow, long stroke up to the tip. - let points: [(CGFloat, CGFloat)] = [(0, 3.2), (2.6, 6), (7, 0)] +/// The right-pointing chevron macOS draws in the trailing edge of a row that +/// opens a submenu. +func drawSubmenuArrow(centerY: CGFloat) { + let tipX = menuLeftX + menuWidth - menuInsetX + // Up to the tip, down to the base — a ">" pointing right. + let points: [(CGFloat, CGFloat)] = [(-3.4, -3.4), (0, 0), (-3.4, 3.4)] let path = NSBezierPath() for (index, point) in points.enumerated() { - let vertex = NSPoint(x: left + point.0, y: canvasHeight - (centerY - 3 + point.1)) + let vertex = NSPoint(x: tipX + point.0, y: canvasHeight - (centerY + point.1)) if index == 0 { path.move(to: vertex) } else { path.line(to: vertex) } } - path.lineWidth = 1.6 + path.lineWidth = 1.5 path.lineCapStyle = .round path.lineJoinStyle = .round color(hex: 0xffffff, alpha: 0.9).setStroke() @@ -307,11 +309,11 @@ func drawMenu(_ frame: Frame) { } let textColor = (isMount && frame.highlight) ? NSColor.white : color(hex: 0xffffff, alpha: 0.9) let font = isMount ? mountFont : menuFont - // "Start at Login" is enabled in the demo — show the checkmark a real - // macOS menu draws in the left gutter of a checked item. Hand-drawn at - // a fixed size so it stays within the inset, clear of the text. - if item == checkedItem { - drawCheckmark(centerY: rowTop + rowHeight / 2) + // "Settings" opens a submenu — show the disclosure arrow a real + // macOS menu draws in the trailing edge. Hand-drawn at a fixed size so + // it stays within the inset, clear of the text. + if item == submenuItem { + drawSubmenuArrow(centerY: rowTop + rowHeight / 2) } drawText( item, font: font, color: textColor, From 9880e361a109bc7879445d872a26d6f3ee11173a Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sun, 19 Jul 2026 01:47:04 +0100 Subject: [PATCH 13/14] minor fixes + UX improvements --- Sources/Lifsaver/DiagnosticReportFlow.swift | 2 +- Sources/Lifsaver/EscalatedMount.swift | 42 ++- Sources/Lifsaver/StatusItemController.swift | 123 ++++++++- Sources/LifsaverKit/Console.swift | 46 +++- Sources/LifsaverKit/DiagnosticsReport.swift | 255 ++++++++++++++---- Sources/LifsaverKit/StatusMenuModel.swift | 7 +- Sources/LifsaverKit/UpdateChecker.swift | 29 +- .../DiagnosticsReportTests.swift | 77 +++--- .../StatusMenuModelTests.swift | 15 -- .../LifsaverKitTests/UpdateCheckerTests.swift | 22 +- 10 files changed, 472 insertions(+), 146 deletions(-) diff --git a/Sources/Lifsaver/DiagnosticReportFlow.swift b/Sources/Lifsaver/DiagnosticReportFlow.swift index ded3f37..c92a2f7 100644 --- a/Sources/Lifsaver/DiagnosticReportFlow.swift +++ b/Sources/Lifsaver/DiagnosticReportFlow.swift @@ -22,7 +22,7 @@ enum DiagnosticReportFlow { let reporter = DiagnosticsReporter(runner: DefaultProcessRunner()) let report = await reporter.generate(userNote: note, appEvents: appEvents, liveLog: liveLog) do { - try report.write(to: url, atomically: true, encoding: .utf8) + try report.jsonString().write(to: url, atomically: true, encoding: .utf8) NSWorkspace.shared.activateFileViewerSelecting([url]) offerEmail(for: url) } catch { diff --git a/Sources/Lifsaver/EscalatedMount.swift b/Sources/Lifsaver/EscalatedMount.swift index bbee4a8..ffad37e 100644 --- a/Sources/Lifsaver/EscalatedMount.swift +++ b/Sources/Lifsaver/EscalatedMount.swift @@ -85,11 +85,22 @@ enum EscalatedMount { return (.error("refusing to escalate: \(reason)"), []) } + // Capture the helper's stderr to a temp file instead of discarding it: + // a helper that crashes before it can emit its JSON report (dyld + // failure, a TCC denial as root) would otherwise be a black hole — no + // stdout, no stderr — in exactly the privileged path a diagnostic + // report exists to explain. Read on failure, below; always cleaned up. + let stderrPath = (NSTemporaryDirectory() as NSString) + .appendingPathComponent("lifsaver-helper-\(UUID().uuidString).stderr") + defer { try? FileManager.default.removeItem(atPath: stderrPath) } + // Quote for the shell, then escape the whole line for the AppleScript // string literal (backslashes first, then double quotes). let shellQuotedPath = "'" + helperPath.replacingOccurrences(of: "'", with: "'\\''") + "'" + let shellQuotedStderr = "'" + stderrPath.replacingOccurrences(of: "'", with: "'\\''") + "'" let innerCommand = - "\(shellQuotedPath) \(EscalatedMountHelper.helperFlag) 2>/dev/null; printf '\\n\(sentinel)%d' \"$?\"" + "\(shellQuotedPath) \(EscalatedMountHelper.helperFlag) 2>\(shellQuotedStderr); " + + "printf '\\n\(sentinel)%d' \"$?\"" let appleScriptBody = innerCommand .replacingOccurrences(of: "\\", with: "\\\\") @@ -106,15 +117,26 @@ enum EscalatedMount { return (.error("could not launch osascript: \(error)"), []) } + let helperStderr = + (try? String(contentsOfFile: stderrPath, encoding: .utf8))? + .trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + if result.status != 0 { let message = result.stderr.trimmingCharacters(in: .whitespacesAndNewlines) if appleScriptErrorCode(from: message) == userCancelledCode { return (.cancelled, []) } - return (.error(message), []) + return (.error(annotate(message, withStderr: helperStderr)), []) } - return parse(stdout: result.stdoutText) + return parse(stdout: result.stdoutText, helperStderr: helperStderr) + } + + /// Appends the helper's captured stderr to an error message when there is + /// any — the difference between "unreadable helper output" and knowing the + /// helper died on a code-signing or permission error. + private static func annotate(_ message: String, withStderr stderr: String) -> String { + stderr.isEmpty ? message : message + "\n\nhelper stderr:\n" + stderr } /// The numeric code from a trailing "()" in an osascript error @@ -153,9 +175,11 @@ enum EscalatedMount { return nil } - private static func parse(stdout: String) -> (outcome: EscalatedMountOutcome, helperLog: [String]) { + private static func parse( + stdout: String, helperStderr: String + ) -> (outcome: EscalatedMountOutcome, helperLog: [String]) { guard let sentinelRange = stdout.range(of: sentinel, options: .backwards) else { - return (.error("missing exit sentinel in helper output"), []) + return (.error(annotate("missing exit sentinel in helper output", withStderr: helperStderr)), []) } let exitText = stdout[sentinelRange.upperBound...].trimmingCharacters(in: .whitespacesAndNewlines) let payload = String(stdout[.. + /// A recorded line keeps its `Date` rather than a formatted string: the + /// timestamp is rendered only in `snapshot()`, which almost nothing calls + /// (lines surface only when a diagnostic report is saved). A `nil` date + /// marks a line already formatted elsewhere — merged verbatim. + private struct Entry: Sendable { + let timestamp: Date? + let text: String + } + + private let entries: OSAllocatedUnfairLock<[Entry]> private let capacity: Int private let now: @Sendable () -> Date public init(capacity: Int = 400, now: @escaping @Sendable () -> Date = { Date() }) { - self.lines = OSAllocatedUnfairLock(initialState: []) + self.entries = OSAllocatedUnfairLock(initialState: []) self.capacity = capacity self.now = now } - /// Records one line, prefixed with a timestamp. + /// Records one line, stamped with the current time (formatted on read). public func record(_ line: String) { - append(["\(ISO8601DateFormatter().string(from: now())) \(line)"]) + add([Entry(timestamp: now(), text: line)]) } /// Appends already-formatted lines verbatim — for merging a log captured /// elsewhere (the root helper timestamps its own lines). public func append(_ newLines: [String]) { - lines.withLock { - $0.append(contentsOf: newLines) + add(newLines.map { Entry(timestamp: nil, text: $0) }) + } + + private func add(_ newEntries: [Entry]) { + entries.withLock { + $0.append(contentsOf: newEntries) if $0.count > capacity { $0.removeFirst($0.count - capacity) } @@ -56,7 +81,12 @@ public final class ConsoleLog: Sendable { } public func snapshot() -> [String] { - lines.withLock { $0 } + entries.withLock { store in + store.map { entry in + guard let timestamp = entry.timestamp else { return entry.text } + return "\(timestamp.formatted(.iso8601)) \(entry.text)" + } + } } /// A console that records every line here and forwards it to `other`. diff --git a/Sources/LifsaverKit/DiagnosticsReport.swift b/Sources/LifsaverKit/DiagnosticsReport.swift index 04a8675..0bca3fd 100644 --- a/Sources/LifsaverKit/DiagnosticsReport.swift +++ b/Sources/LifsaverKit/DiagnosticsReport.swift @@ -14,6 +14,147 @@ import os /// GitHub pages, or in the shipped binary's string table. public let lifsaverSupportEmail = ["alterluigi", "+", "debug", "@", "gma", "il", ".", "com"].joined() +/// A parsed JSON value, so third-party output that is already structured +/// (`diskutil`'s plists) can be embedded as native, queryable JSON — keeping +/// the whole report one uniform document. +public enum JSONValue: Codable, Sendable { + case string(String) + case number(Double) + case bool(Bool) + case array([JSONValue]) + case object([String: JSONValue]) + case null + + public init(from decoder: Decoder) throws { + let container = try decoder.singleValueContainer() + // Bool before Double: JSON `true` must not be read as a number. + if container.decodeNil() { + self = .null + } else if let bool = try? container.decode(Bool.self) { + self = .bool(bool) + } else if let number = try? container.decode(Double.self) { + self = .number(number) + } else if let string = try? container.decode(String.self) { + self = .string(string) + } else if let array = try? container.decode([JSONValue].self) { + self = .array(array) + } else if let object = try? container.decode([String: JSONValue].self) { + self = .object(object) + } else { + throw DecodingError.dataCorrupted( + .init(codingPath: decoder.codingPath, debugDescription: "unsupported JSON value")) + } + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.singleValueContainer() + switch self { + case .string(let value): try container.encode(value) + case .number(let value): try container.encode(value) + case .bool(let value): try container.encode(value) + case .array(let value): try container.encode(value) + case .object(let value): try container.encode(value) + case .null: try container.encodeNil() + } + } + + public subscript(key: String) -> JSONValue? { + if case .object(let object) = self { return object[key] } + return nil + } + public var stringValue: String? { if case .string(let value) = self { return value } else { return nil } } + public var boolValue: Bool? { if case .bool(let value) = self { return value } else { return nil } } +} + +/// Parses `diskutil`'s plist output into native JSON so the report stays one +/// uniform structured document. Falls back to the raw text (itself valid JSON, +/// as a string) when the output is not a parseable plist — an `unavailable:` +/// marker or malformed output — which is exactly the case where seeing the raw +/// bytes is what you want. +func plistAsJSON(_ text: String) -> JSONValue { + guard + let object = try? PropertyListSerialization.propertyList(from: Data(text.utf8), format: nil), + JSONSerialization.isValidJSONObject(object), + let data = try? JSONSerialization.data(withJSONObject: object), + let value = try? JSONDecoder().decode(JSONValue.self, from: data) + else { + return .string(text) + } + return value +} + +/// Diagnostic report, so a missed or unmountable card can be debugged. The +/// app's own fields (metadata, detected targets, the mount table) and +/// `diskutil`'s plist output alike are native JSON, so every value is directly +/// queryable. The plists are parsed generically, so no keys are dropped. +public struct DiagnosticReport: Codable, Sendable { + public struct Meta: Codable, Sendable { + public var generated: String + public var version: String + public var macOS: String + public var architecture: String + /// What the report contains, so a reader knows what they are sharing. + public var privacyNote: String + } + + /// One detected target and the two facts the mounter branches on. + public struct Target: Codable, Sendable { + public var device: String + public var fsType: String + public var fsckActive: Bool + } + + /// The verbose re-scan run at report time. `consoleOutput` is what the + /// scanner said as it decided; `error` is set instead of `targets` when the + /// scan itself threw. This is sampled *now*, not when the problem occurred — + /// `liveLog` holds what happened then. + public struct ScanTrace: Codable, Sendable { + public var consoleOutput: [String] = [] + public var targets: [Target] = [] + public var error: String? + } + + public struct MountTableEntry: Codable, Sendable { + public var device: String + public var mountPoint: String + } + + public struct DiskInfo: Codable, Sendable { + public var device: String + /// `diskutil info -plist` parsed to native JSON, or an `unavailable:` + /// string when it could not be read. + public var info: JSONValue + } + + public var meta: Meta + /// The reporter's own description of what went wrong; nil when omitted. + public var userNote: String? + /// The app's recent scan/mount outcomes. + public var appEvents: [String] + /// Console output recorded live during those past scans and mount attempts. + public var liveLog: [String] + public var scanTrace: ScanTrace + /// The kernel mount table, or `mountTableError` when it could not be read. + public var mountTable: [MountTableEntry] + public var mountTableError: String? + /// `pgrep -fl fsck` lines; empty means none running. + public var fsckProcesses: [String] + /// `diskutil list -plist` parsed to native JSON, or an `unavailable:` + /// string when it could not be read. + public var diskutilList: JSONValue + public var diskInfo: [DiskInfo] + + /// Pretty-printed, stable-key JSON — the form written to disk and emailed. + public func jsonString() -> String { + let encoder = JSONEncoder() + encoder.outputFormatting = [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes] + guard let data = try? encoder.encode(self) else { + return "{\"error\":\"could not encode diagnostic report\"}" + } + return String(decoding: data, as: UTF8.self) + } +} + /// Pre-addressed mailto: draft for sending a report. mailto cannot attach /// files, so the body asks the sender to attach the saved report themselves. public func lifsaverReportMailtoURL(reportFilename: String) -> URL? { @@ -43,59 +184,55 @@ public struct DiagnosticsReporter: Sendable { self.mountTable = mountTable } - /// "lifsaver-report-20260717-1432.txt" — sortable, filesystem-safe. + /// "lifsaver-report-20260717-1432.json" — sortable, filesystem-safe. public static func suggestedFilename(for date: Date = Date()) -> String { let formatter = DateFormatter() formatter.locale = Locale(identifier: "en_US_POSIX") formatter.dateFormat = "yyyyMMdd-HHmm" - return "lifsaver-report-\(formatter.string(from: date)).txt" + return "lifsaver-report-\(formatter.string(from: date)).json" } /// `userNote` is the reporter's own description of what went wrong; /// `appEvents` are the app's recent scan/mount outcomes; `liveLog` is the /// console output recorded live during those scans and mount attempts. - public func generate(userNote: String = "", appEvents: [String] = [], liveLog: [String] = []) async -> String { + public func generate( + userNote: String = "", appEvents: [String] = [], liveLog: [String] = [] + ) async -> DiagnosticReport { let note = userNote.trimmingCharacters(in: .whitespacesAndNewlines) - var sections: [(String, String)] = [ - ("What happened", note.isEmpty ? "(not provided)" : note) - ] - if !appEvents.isEmpty { - sections.append(("Recent app events", appEvents.joined(separator: "\n"))) - } - if !liveLog.isEmpty { - sections.append(("Live log", liveLog.joined(separator: "\n"))) - } - sections.append(("Scan trace", await scanTrace())) - sections.append(("Mount table", mountTableDump())) - sections.append(("fsck processes", await fsckDump())) + let (mountEntries, mountError) = mountTableDump() // One listing serves both the raw dump and the per-disk enumeration — a // second spawn could disagree with the first mid-report, which is // exactly the inconsistency a diagnostic report exists to rule out. let listing = await rawCommand("diskutil", ["list", "-plist"]) - sections.append(("diskutil list -plist", listing)) - sections.append(("diskutil info -plist, per whole disk", await diskInfoDump(fromListing: listing))) - return header() + "\n\n" - + sections.map { "## \($0.0)\n\n\($0.1)" }.joined(separator: "\n\n") + "\n" + return DiagnosticReport( + meta: meta(), + userNote: note.isEmpty ? nil : note, + appEvents: appEvents, + liveLog: liveLog, + scanTrace: await scanTrace(), + mountTable: mountEntries, + mountTableError: mountError, + fsckProcesses: await fsckDump(), + diskutilList: plistAsJSON(listing), + diskInfo: await diskInfoDump(fromListing: listing) + ) } - private func header() -> String { - """ - # lifsaver diagnostic report - - - generated: \(ISO8601DateFormatter().string(from: Date())) - - version: \(lifsaverVersion) - - macOS: \(ProcessInfo.processInfo.operatingSystemVersionString) - - architecture: \(buildArchitecture) - - This report contains your disk layout, volume names, and mount paths — - no file contents. Review it before sharing. - """ + private func meta() -> DiagnosticReport.Meta { + DiagnosticReport.Meta( + generated: ISO8601DateFormatter().string(from: Date()), + version: lifsaverVersion, + macOS: ProcessInfo.processInfo.operatingSystemVersionString, + architecture: buildArchitecture, + privacyNote: "Contains disk layout, volume names, and mount paths — " + + "no file contents. Review it before sharing." + ) } /// Re-runs the scanner with verbose diagnostics captured, then annotates /// each target with its filesystem type and fsck state. - private func scanTrace() async -> String { + private func scanTrace() async -> DiagnosticReport.ScanTrace { let captured = OSAllocatedUnfairLock(initialState: [String]()) let console = Console( out: { line in captured.withLock { $0.append(line) } }, @@ -103,58 +240,64 @@ public struct DiagnosticsReporter: Sendable { ) let scanner = DiskScanner(runner: runner, mountTable: mountTable, console: console, verbose: true) - var lines: [String] = [] + var targets: [DiagnosticReport.Target] = [] + var scanError: String? do { - let targets = try await scanner.scanTargets() - if targets.isEmpty { - lines.append("targets: (none)") - } - for devId in targets { - let fsType = await scanner.partitionFSType(devId) - let fsck = await scanner.isFsckActive(devId) ? "fsck running" : "fsck idle" - lines.append("target: \(devId) (\(fsType.isEmpty ? "unknown fs" : fsType), \(fsck))") + for devId in try await scanner.scanTargets() { + targets.append( + DiagnosticReport.Target( + device: devId, + fsType: await scanner.partitionFSType(devId), + fsckActive: await scanner.isFsckActive(devId) + )) } } catch { - lines.append("scan failed: \(error)") + scanError = "scan failed: \(error)" } - return (captured.withLock { $0 } + lines).joined(separator: "\n") + return DiagnosticReport.ScanTrace( + consoleOutput: captured.withLock { $0 }, targets: targets, error: scanError) } - private func mountTableDump() -> String { + /// Returns the mount table, or an empty list plus an `unavailable:` error + /// string when it cannot be read. + private func mountTableDump() -> ([DiagnosticReport.MountTableEntry], String?) { do { let entries = try mountTable.entries() - guard !entries.isEmpty else { return "(empty)" } - return entries.map { "\($0.device) → \($0.mountPoint)" }.joined(separator: "\n") + return (entries.map { .init(device: $0.device, mountPoint: $0.mountPoint) }, nil) } catch { - return "unavailable: \(error)" + return ([], "unavailable: \(error)") } } - private func fsckDump() async -> String { + private func fsckDump() async -> [String] { // pgrep exits 1 when nothing matches — not an error. let listing = await rawCommand("pgrep", ["-fl", "fsck"]) - let trimmed = listing.trimmingCharacters(in: .whitespacesAndNewlines) - return trimmed.isEmpty ? "(none running)" : trimmed + return listing.split(separator: "\n").map(String.init) } /// The externality signals (`Internal`, `RemovableMediaOrExternalDevice`) /// exist only in per-disk `info` output, so dump it for every whole disk /// named in the already-captured listing. - private func diskInfoDump(fromListing listing: String) async -> String { + private func diskInfoDump(fromListing listing: String) async -> [DiagnosticReport.DiskInfo] { guard let plist = try? PropertyListSerialization.propertyList(from: Data(listing.utf8), format: nil), let data = plist as? [String: Any] - else { return "unavailable: could not enumerate disks" } + else { + return [ + DiagnosticReport.DiskInfo( + device: "", info: .string("unavailable: could not enumerate disks")) + ] + } let disks = (data["AllDisksAndPartitions"] as? [[String: Any]] ?? []) .compactMap { $0["DeviceIdentifier"] as? String } - guard !disks.isEmpty else { return "(no disks)" } - var chunks: [String] = [] + var infos: [DiagnosticReport.DiskInfo] = [] for disk in disks { - chunks.append("--- \(disk) ---\n" + (await rawCommand("diskutil", ["info", "-plist", disk]))) + infos.append( + .init(device: disk, info: plistAsJSON(await rawCommand("diskutil", ["info", "-plist", disk])))) } - return chunks.joined(separator: "\n") + return infos } private func rawCommand(_ executable: String, _ arguments: [String]) async -> String { diff --git a/Sources/LifsaverKit/StatusMenuModel.swift b/Sources/LifsaverKit/StatusMenuModel.swift index aa3767f..ef5bc77 100644 --- a/Sources/LifsaverKit/StatusMenuModel.swift +++ b/Sources/LifsaverKit/StatusMenuModel.swift @@ -68,7 +68,6 @@ public enum StatusMenuModel { public static func entries( state: ScanState, newerVersion: String?, - isCheckingForUpdates: Bool = false, showLaunchAtLogin: Bool, launchAtLoginEnabled: Bool, automaticUpdatesEnabled: Bool @@ -92,11 +91,11 @@ public enum StatusMenuModel { // Always present — reports are most needed exactly when scans fail. entries.append(.saveReport(title: "Send Diagnostic Report")) // The update item is always present: it opens the latest installer once - // a newer version is known, otherwise it triggers a manual check on click. + // a newer version is known, otherwise it triggers a manual check on + // click. The check's own progress and result are shown in an alert, not + // the menu, which closes the instant the item is clicked. if let newerVersion { entries.append(.updateAvailable(title: "Update to version \(newerVersion)")) - } else if isCheckingForUpdates { - entries.append(.disabled("Checking for Updates…")) } else { entries.append(.checkForUpdates(title: "Check for Updates")) } diff --git a/Sources/LifsaverKit/UpdateChecker.swift b/Sources/LifsaverKit/UpdateChecker.swift index 05cf6c6..1bdbfa2 100644 --- a/Sources/LifsaverKit/UpdateChecker.swift +++ b/Sources/LifsaverKit/UpdateChecker.swift @@ -184,6 +184,17 @@ public struct GitHubReleaseFetcher: LatestReleaseFetching { // Checker // --------------------------------------------------------------------------- +/// Result of a user-initiated "Check for Updates". Unlike the passive launch +/// check, the manual action must always tell the user what happened. +public enum ManualCheckOutcome: Equatable, Sendable { + /// The fetch succeeded and a strictly newer release exists. + case updateAvailable(String) + /// The fetch succeeded and the current version is the newest. + case upToDate + /// The fetch failed (offline, GitHub unreachable, no releases yet, …). + case failed +} + public final class UpdateChecker: Sendable { let package: String let repo: String @@ -243,10 +254,13 @@ public final class UpdateChecker: Sendable { /// Force a fresh check now, ignoring the cache and the version gate that /// only governs the passive launch check — the user asked for this. - /// Refreshes the known version and cache; the result is then reflected by - /// `knownNewerVersion()`. For the GUI "Check for Updates" menu action. - public func checkNow() async { - await refresh() + /// Refreshes the known version and cache and reports the outcome so the GUI + /// can acknowledge the manual "Check for Updates" action; a newer version + /// is also reflected by `knownNewerVersion()`. + public func checkNow() async -> ManualCheckOutcome { + guard await refresh() else { return .failed } + if let newer = knownNewerVersion() { return .updateAvailable(newer) } + return .upToDate } // --- internals --------------------------------------------------------- @@ -254,17 +268,20 @@ public final class UpdateChecker: Sendable { /// Fetch the newest release tag, normalize it, and publish it to both the /// in-memory box and the on-disk cache. Single body shared by the passive /// launch check and the manual menu check so the two can never drift. - private func refresh() async { + /// Returns whether the fetch succeeded; the passive path ignores it. + @discardableResult + private func refresh() async -> Bool { guard let tag = await fetcher.fetchLatestTag( repo: repo, userAgent: "\(package)/\(currentVersion) (update-check)", timeout: 5 ) - else { return } + else { return false } let version = tag.hasPrefix("v") ? String(tag.dropFirst()) : tag latestBox.withLock { $0 = version } writeCache(version) + return true } func readCache() -> String? { diff --git a/Tests/LifsaverKitTests/DiagnosticsReportTests.swift b/Tests/LifsaverKitTests/DiagnosticsReportTests.swift index 7bdf9d7..f17bb16 100644 --- a/Tests/LifsaverKitTests/DiagnosticsReportTests.swift +++ b/Tests/LifsaverKitTests/DiagnosticsReportTests.swift @@ -18,31 +18,31 @@ private struct StubError: Error {} DiagnosticsReporter(runner: runner, mountTable: mountTable) } - @Test func headerCarriesVersionAndPrivacyNote() async { - let report = await reporter().generate() - #expect(report.contains("# lifsaver diagnostic report")) - #expect(report.contains("- version: \(lifsaverVersion)")) - #expect(report.contains("Review it before sharing.")) + @Test func metaCarriesVersionAndPrivacyNote() async { + let meta = await reporter().generate().meta + #expect(meta.version == lifsaverVersion) + #expect(meta.privacyNote.contains("Review it before sharing.")) } @Test func scanTraceListsDetectedTargets() async { - let report = await reporter().generate() - #expect(report.contains("## Scan trace")) - #expect(report.contains("target: disk4s1")) + let trace = await reporter().generate().scanTrace + #expect(trace.error == nil) + #expect(trace.targets.contains { $0.device == "disk4s1" }) } - @Test func rawDiskutilSectionsIncludeListAndPerDiskInfo() async { + @Test func diskutilSectionsAreNativeStructuredJSON() async { let report = await reporter().generate() - #expect(report.contains("## diskutil list -plist")) - #expect(report.contains("AllDisksAndPartitions")) - #expect(report.contains("--- disk4 ---")) - #expect(report.contains("RemovableMediaOrExternalDevice")) + // Parsed to native JSON, not an escaped XML blob: fields are queryable. + #expect(report.diskutilList["AllDisksAndPartitions"] != nil) + let disk4 = report.diskInfo.first { $0.device == "disk4" } + #expect(disk4?.info["RemovableMediaOrExternalDevice"]?.boolValue == true) } - @Test func mountTableEntriesAreRendered() async { + @Test func mountTableEntriesAreCaptured() async { let table = FakeMountTable([MountEntry(device: "/dev/disk4s1", mountPoint: "/Volumes/CARD")]) let report = await reporter(mountTable: table).generate() - #expect(report.contains("/dev/disk4s1 → /Volumes/CARD")) + #expect(report.mountTableError == nil) + #expect(report.mountTable.contains { $0.device == "/dev/disk4s1" && $0.mountPoint == "/Volumes/CARD" }) } @Test func userNoteAndAppEventsAreEmbedded() async { @@ -50,47 +50,56 @@ private struct StubError: Error {} userNote: "Card stayed invisible after inserting.", appEvents: ["2026-07-17T10:00:00Z mount attempt failed: boom"] ) - #expect(report.contains("Card stayed invisible after inserting.")) - #expect(report.contains("## Recent app events")) - #expect(report.contains("mount attempt failed: boom")) + #expect(report.userNote == "Card stayed invisible after inserting.") + #expect(report.appEvents == ["2026-07-17T10:00:00Z mount attempt failed: boom"]) } @Test func missingNoteAndEventsDegradeGracefully() async { let report = await reporter().generate(userNote: " \n") - #expect(report.contains("(not provided)")) - #expect(!report.contains("## Recent app events")) - #expect(!report.contains("## Live log")) + #expect(report.userNote == nil) + #expect(report.appEvents.isEmpty) + #expect(report.liveLog.isEmpty) } @Test func liveLogIsEmbeddedVerbatim() async { - let report = await reporter().generate(liveLog: [ + let lines = [ "2026-07-17T10:00:01Z Attempting diskutil mount...", "--- escalated helper (root) ---", - ]) - #expect(report.contains("## Live log")) - #expect(report.contains("2026-07-17T10:00:01Z Attempting diskutil mount...")) - #expect(report.contains("--- escalated helper (root) ---")) + ] + let report = await reporter().generate(liveLog: lines) + #expect(report.liveLog == lines) } @Test func failingCommandsNeverAbortTheReport() async { let runner = FakeProcessRunner(throwing: StubError()) let report = await reporter(runner: runner, mountTable: FakeMountTable(throwing: StubError())) .generate(userNote: "note") - #expect(report.contains("scan failed:")) - #expect(report.contains("unavailable:")) - #expect(report.contains("note")) + #expect(report.scanTrace.error?.contains("scan failed:") == true) + #expect(report.mountTableError?.contains("unavailable:") == true) + #expect(report.userNote == "note") } - @Test func quietFsckProbeSaysNoneRunning() async { + @Test func quietFsckProbeYieldsNoProcesses() async { let report = await reporter().generate() - #expect(report.contains("(none running)")) + #expect(report.fsckProcesses.isEmpty) + } + + /// The report exists to be machine-parsed: its JSON must round-trip. + @Test func jsonStringIsValidAndRoundTrips() async throws { + let report = await reporter().generate(userNote: "note", appEvents: ["event"], liveLog: ["log"]) + let data = Data(report.jsonString().utf8) + let decoded = try JSONDecoder().decode(DiagnosticReport.self, from: data) + #expect(decoded.userNote == "note") + #expect(decoded.appEvents == ["event"]) + #expect(decoded.meta.version == lifsaverVersion) + #expect(decoded.scanTrace.targets.contains { $0.device == "disk4s1" }) } @Test func suggestedFilenameIsSortableAndSafe() { let date = Date(timeIntervalSince1970: 0) let name = DiagnosticsReporter.suggestedFilename(for: date) #expect(name.hasPrefix("lifsaver-report-")) - #expect(name.hasSuffix(".txt")) + #expect(name.hasSuffix(".json")) #expect(!name.contains(" ")) #expect(!name.contains(":")) } @@ -110,11 +119,11 @@ private struct StubError: Error {} } @Test func mailtoURLIsAddressedAndPrefilled() throws { - let url = try #require(lifsaverReportMailtoURL(reportFilename: "lifsaver-report-x.txt")) + let url = try #require(lifsaverReportMailtoURL(reportFilename: "lifsaver-report-x.json")) #expect(url.scheme == "mailto") let absolute = url.absoluteString #expect(absolute.contains("subject=lifsaver%20diagnostic%20report")) - #expect(absolute.contains("lifsaver-report-x.txt")) + #expect(absolute.contains("lifsaver-report-x.json")) let components = try #require(URLComponents(url: url, resolvingAgainstBaseURL: false)) #expect(components.path == lifsaverSupportEmail) } diff --git a/Tests/LifsaverKitTests/StatusMenuModelTests.swift b/Tests/LifsaverKitTests/StatusMenuModelTests.swift index e4b4de3..add87e5 100644 --- a/Tests/LifsaverKitTests/StatusMenuModelTests.swift +++ b/Tests/LifsaverKitTests/StatusMenuModelTests.swift @@ -11,7 +11,6 @@ import Testing private func entries( state: StatusMenuModel.ScanState, newerVersion: String? = nil, - isCheckingForUpdates: Bool = false, showLaunchAtLogin: Bool = false, launchAtLoginEnabled: Bool = false, automaticUpdatesEnabled: Bool = true @@ -19,7 +18,6 @@ import Testing StatusMenuModel.entries( state: state, newerVersion: newerVersion, - isCheckingForUpdates: isCheckingForUpdates, showLaunchAtLogin: showLaunchAtLogin, launchAtLoginEnabled: launchAtLoginEnabled, automaticUpdatesEnabled: automaticUpdatesEnabled @@ -102,19 +100,6 @@ import Testing #expect(result.last == .quit(title: "Quit")) } - @Test func checkingShowsProgressPlaceholder() { - let result = entries(state: .scanning, isCheckingForUpdates: true) - #expect(result.contains(.disabled("Checking for Updates…"))) - #expect(!result.contains(.checkForUpdates(title: "Check for Updates"))) - } - - @Test func knownUpdateWinsOverCheckingState() { - // A newer version already in hand shows the update item, not progress. - let result = entries(state: .scanning, newerVersion: "2.1.0", isCheckingForUpdates: true) - #expect(result.contains(.updateAvailable(title: "Update to version 2.1.0"))) - #expect(!result.contains(.disabled("Checking for Updates…"))) - } - @Test func moreOptionsHidesStartAtLoginWhenUnbundled() { #expect( entries(state: .scanning).contains( diff --git a/Tests/LifsaverKitTests/UpdateCheckerTests.swift b/Tests/LifsaverKitTests/UpdateCheckerTests.swift index a2814bc..eb3819e 100644 --- a/Tests/LifsaverKitTests/UpdateCheckerTests.swift +++ b/Tests/LifsaverKitTests/UpdateCheckerTests.swift @@ -248,7 +248,27 @@ private func check(_ checker: UpdateChecker) async { let fetcher = FakeReleaseFetcher(tag: "v9.9.9") let checker = makeChecker( currentVersion: "unknown", fetcher: fetcher, cacheDirectory: temporaryDirectory()) - await checker.checkNow() + _ = await checker.checkNow() #expect(fetcher.fetchCount == 1) } + + @Test func checkNowReportsUpdateAvailable() async { + let checker = makeChecker( + fetcher: FakeReleaseFetcher(tag: "v9.9.9"), cacheDirectory: temporaryDirectory()) + #expect(await checker.checkNow() == .updateAvailable("9.9.9")) + } + + @Test func checkNowReportsUpToDate() async { + let checker = makeChecker( + fetcher: FakeReleaseFetcher(tag: "v1.0.0"), cacheDirectory: temporaryDirectory()) + #expect(await checker.checkNow() == .upToDate) + } + + @Test func checkNowReportsFailureWhenFetchFails() async { + // A nil fetch stands for every failure: offline, unreachable, or no + // release published yet. + let checker = makeChecker( + fetcher: FakeReleaseFetcher(tag: nil), cacheDirectory: temporaryDirectory()) + #expect(await checker.checkNow() == .failed) + } } From e22c372a06074155a5e521c723a5ed60b1bcb708 Mon Sep 17 00:00:00 2001 From: Lucuma13 Date: Sun, 19 Jul 2026 01:59:55 +0100 Subject: [PATCH 14/14] UX - checking for updates screen --- Sources/Lifsaver/StatusItemController.swift | 44 ++++++++++++++------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/Sources/Lifsaver/StatusItemController.swift b/Sources/Lifsaver/StatusItemController.swift index b4a6238..293d718 100644 --- a/Sources/Lifsaver/StatusItemController.swift +++ b/Sources/Lifsaver/StatusItemController.swift @@ -502,27 +502,41 @@ extension StatusItemController { } } -/// "Checking for Updates…" window with an indeterminate spinner, shown while a -/// slow manual check is in flight and dismissed the moment it returns. +/// "Checking for Updates…" window shown while a slow manual check is in flight, +/// dismissed the moment it returns. @MainActor final class UpdateProgressWindow { private let window: NSWindow init() { let padding: CGFloat = 20 - let content = NSView(frame: NSRect(x: 0, y: 0, width: 280, height: 84)) - - let spinner = NSProgressIndicator( - frame: NSRect(x: padding, y: 30, width: 24, height: 24)) - spinner.style = .spinning - spinner.startAnimation(nil) - content.addSubview(spinner) - - let label = NSTextField(labelWithString: "Checking for Updates…") - label.frame = NSRect( - x: spinner.frame.maxX + 12, y: 32, width: content.bounds.width - spinner.frame.maxX - 12 - padding, - height: 20) - content.addSubview(label) + let iconSide: CGFloat = 64 + let gap: CGFloat = 16 + let textWidth: CGFloat = 240 + let width = padding + iconSide + gap + textWidth + padding + let height = padding + iconSide + padding + let content = NSView(frame: NSRect(x: 0, y: 0, width: width, height: height)) + + // The same app icon NSAlert draws, so the progress and result screens + // share their branding. + let icon = NSImageView( + frame: NSRect(x: padding, y: height - padding - iconSide, width: iconSide, height: iconSide)) + icon.image = NSApp.applicationIconImage + icon.imageScaling = .scaleProportionallyUpOrDown + content.addSubview(icon) + + let textX = padding + iconSide + gap + let title = NSTextField(labelWithString: "Checking for Updates…") + title.font = .boldSystemFont(ofSize: NSFont.systemFontSize) + title.frame = NSRect(x: textX, y: height - padding - 20, width: textWidth, height: 20) + content.addSubview(title) + + let bar = NSProgressIndicator( + frame: NSRect(x: textX, y: height - padding - 52, width: textWidth, height: 20)) + bar.style = .bar + bar.isIndeterminate = true + bar.startAnimation(nil) + content.addSubview(bar) // No .closable/.miniaturizable: the window has no manual dismissal — // it lives exactly as long as the fetch.