From 8badbecd81b4ba1625c4d5f8b005b89153ca5b1b Mon Sep 17 00:00:00 2001 From: Mohammad Abdul Sahil <127765312+abdulsaheel@users.noreply.github.com> Date: Wed, 19 Aug 2026 21:05:47 +0530 Subject: [PATCH 1/3] band name you can edit, live hr, and water you can take back MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the strap name was never persisted — PairedDevice saves the remote id and the serial, not this — so every cold start and every disconnected minute showed the generic "WHOOP band". banked now. the rename option went missing in the rebuild; it's back, enforcing what the band enforces (20 ascii, safe charset, one alnum) and only while connected, because the name is written to the strap. water steps in place on the nutrition tile now, − 1.8 L +. down off the last glass is a logged zero, down again clears it. logwaterscreen is deleted: it was reachable only from the reminder, which is how the tile everyone actually taps stayed add-only. the reminder lands on nutrition. live hr gets a card in the heart screen and a row on the band page. the buffer lives on AppState, not in the widget — a timer in a card reset the trace every time you opened it, and the tokens test is right that an endless .repeat() can't be stopped by reduced motion. the pulse idea is gone with it. the wellness mascot carried ~30% transparent padding where the workout one has none, so it drew a third smaller at the same height. cropped, all three densities regenerated at exact ratios, and sized off the figure rather than the frame. --- assets/images/2.0x/mascot_wellness.png | Bin 9680 -> 50031 bytes assets/images/3.0x/mascot_wellness.png | Bin 16410 -> 35548 bytes assets/images/mascot_wellness.png | Bin 4240 -> 17175 bytes lib/app.dart | 10 +- lib/state/app_state.dart | 44 +++++++- lib/ui2/live_hr.dart | 144 +++++++++++++++++++++++++ lib/ui2/profile/devices.dart | 107 ++++++++++++++++++ lib/ui2/profile/gallery.dart | 6 ++ lib/ui2/screens/log_water.dart | 108 ------------------- lib/ui2/screens/metric_detail.dart | 12 +++ lib/ui2/screens/nutrition_screen.dart | 134 +++++++++++++++++++---- lib/ui2/screens/start_card.dart | 7 +- lib/ui2/screens/wellness_screen.dart | 20 +++- lib/ui2/ui2.dart | 1 + test/ui2_router_test.dart | 7 +- test/ui2_tokens_test.dart | 1 - 16 files changed, 459 insertions(+), 142 deletions(-) create mode 100644 lib/ui2/live_hr.dart delete mode 100644 lib/ui2/screens/log_water.dart diff --git a/assets/images/2.0x/mascot_wellness.png b/assets/images/2.0x/mascot_wellness.png index 9f27cb58a53b9d3207ccbcadaa3520aa24086dc5..5ba7690de26e0e3f5d8d89dad79995dc358f0959 100644 GIT binary patch literal 50031 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�N>)3kb|E}D5k%6ADm92-&*clcSj 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 diff --git a/assets/images/3.0x/mascot_wellness.png b/assets/images/3.0x/mascot_wellness.png index 7a405695255efbfcc4496a9a59af37c6b9bec5a0..f48df93377af4909a913dd4854067278839712dc 100644 GIT binary patch literal 35548 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 v<*RZCz|6 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 y3Z93+U%%4NzUFDG z#lkRW$n7bpgUP1b(LL)zlo)vqAoXr;^jIpkHVJ<3h@4Wpd0cVtY(+}hSsyG0zQ|C% ze#INbe#T}3ybfrQ2DO?H$Km^ad6MNhi0u~yNG4ro4utKz{drS)75Ct)xV5f(^tax> zn0&vx=z6Vs=^{2|eZT1vKj4`K!@)SCjHw@n1qs>Rwjv0|K9P~U_xq!R#Mu8)lmCy% k$^V-OPYrMFWp`Bga7~l diff --git a/assets/images/mascot_wellness.png b/assets/images/mascot_wellness.png index 065546dbf2958ed14e0e1540b3ea1200ca075da9..06b0e95a43ed439ba45add875c2fc365a8db621a 100644 GIT binary patch literal 17175 zcmV(-K-|BHP)&Sb|^Y)h78YqX?Nsm42;X`em3Z|!r=t*fDA8B314 z-|=@pm8wx4s!F&H_J2pozC3<^*XOF84Cg@1kRMm za{`1AM=2#`dv0n{&#k%n=Jbr`-m!zhrcIgw(ah8Kc*RVdwxQ z09u2R3Y1bHmBP=Tw6Fw#P)dPw4vbMCjG@HAXDlnp}(ZGe6{O%%c;X5&jg4(*8oNW*j;y?GVyI}@{5xndlmNr#>^#wW5bl{DmaN2txer-mVecSi^ zPf|+PMo}cvEX&b<01$TW!ZC$%RfknHv+z3GCygP-06Hk9jge6&%A}MHKMX$PIqpO8 z-bdb!*NWF{&EEgX8e|L#=T>F*J=mW}`f+5OO~sl)%mb=@nXD9+2}KV2}@&ZiWp>jI$+be;p@ybwmU(AA<>@2`ID6@)GX z)D_yZXjRW)rCO`i+$2u-5en}PF1u#O3oWDzYT}I9LMxLN?|Jwm)Zza`fLsxE;><== ziwFk=LHz(&5CY+jU2y7og>cIEbQijJ!FzvKy-@4$e69z~^G^TF;s@>ohGvgD{1UCr zJ+n{T|27m33JK2)FTioZz671C4FnD!4zhIm6JD+Mj=0^CxGm2n7&KpmqgyD<)^qs6 zQ|{{2TPw^RYN9oJl{TH5*~2$8*Y#MIB!AGj@@2n|CL7?whvNJ~3TN_(?e!#^{bJB) zysk6f%m^XuG~u9N7_*v!0y@dbpXunDGkjI2A^@!CXVYWK(En7v48I(;$QaNf1JI`Q zRnICY+%ZPVT+{~#|5LR0Q9{Vo|H*9Mj_Y?C4E3VcpswZ|*)^P|;%?vbZtQd-6waA9 z1BSS0zFe>m&7bFZ(YjByt9<@I@)0!spzk&BUX%v;+U_2mZ@D?at!DLElnE zWs5Ej0YIpRIfZbnhS_hkpF`hL{Qn}K?V3AN2t?&zvIIdF+w#ND!{?~;J9O(It*0#dr_HFgJrN89+-piv-l%7#IrAAoIaojTq$HvY8+y(Fg z0M`egtVcTxP{*^c#f4Lz$C}H9Fq`1#>I1;~M}P$N;`drxLEC@?-+T6h;Js!dmyA3A zbM^<{dKC%>krDV|2ncVhNa%`idC@oS*nzu9hfCJ{dD!3gx~LN)%@GR#inXrHaehC+>e=y-|N> zG~djCoIyBvK8(`b9s!*6M_RaZ^ckkoBIo2h2NTg!XqdDXKB@FiXYfG?6`-Ff1b2$S z?D-hb`XHDr1|7GGNRo5VNdiWz#Z9jB*mDMITFPINH@HcHMUvN@1l z814Yz&uHrK&>BdVg2__QQUc8~U>J$X96A3_BvgUhUYj*B~{nx(g|Fv*d2?C#wW6^In+cqs_k( z$^YkeKMZfpb2&$qo;Hk4O2_%vmS5Yp@@L<1#J=~yc0U$<4|%S)F3nO=Vri#*6R~FP zHthnftj8HHa`ox)dV^_0|X;8R4|*%XaI#8q5wDp;`?2# zGN^4f%3}b22)fhOJu(x$XSalomB{J9e%suFB}|xLNiqG)?sz8d55B+FsIQA!?F<%)*lhk$?%d+M#lN_K8a043FzvQs`<^D|(0+i4qX2Vr zV3H1il%UYT<9l)OnFAE_9vj_J>-YgR(?)8QpTnUAm?;DtzH-8)wa_hEj+vtVY zpwc}*_=!(A>+kWR}`FdpmggVfOb^4I*tZ1D!AcZoJ{&&X=iMRD)1B+qZ1t*Z=CT=AHlc2VZA-cDb?%HD$PXs@0M@>L}lF zUS;n8Hpm~jNfC_nPO;fGBEm(f4m3p=H7N!8H@^<>z;{7T93vLcL_Z*vT`-G4I}S+h zfHN`%baWKxz!0eZLBocI2&>h>)Eb~Y4-|K7;82vdsWp!z7XU&SNE3p2kBmCN=Vw6A z&jRgq0HPL{BrbLnehxR0Qa}zo1?K790LxYYTyq1MRjYw91}cdQVJ_m6C_xwJkvMDp zSF>%~D`DqObHSsyO%@CRGBLL7liuN{-_5eNr-5j+FC_4Z>2!EHGn2E~`w1*xN%Wda z0ni-u+(Z|Fw!+asa8VELhwRQzgF3Jez;&%qFiE6AXz0>qgsxm+$ePQ*S+jO+j;o=cWt@La-J#axq9ChI7D|LkkV2Ac3SA==m9dsYzod zju1F{2*~8I!slgK5yBrj2yEgQsF$n<{UbLS>iI;;&Z29jHQIii`$6#X&P!I_(zx~3 zZ=Me=dUkAM%NB|bul+~A^PxH;f1;v9DMF;h)U>8LjzP^#0bFvK(YL;X*buooEd~Zb zQ2akGU=V=W^#o*}{%gpmrjhtzXe}fhcj<Qp2Kz0HOi-eO5RWsP9`-XEh0z64pyQ-0J)mDeEhtQ+T@zgM9yA-NRTz=s zA2fcZ3f$2T;b&YIcoB9J!Fs|Y@97@bubXaGDHOy2;QRTl%f>RKQ#xe5%Updb1k z(0~3%v|gZY{YC3#7X@{T%aUH;d(C#|w};o?@F&~1Z|7$sUY>UWSs`uS%uti?=c(Nf zeQcz!?;}wXXCM_PQzyVo9S3ve#=_Y;jtx;UC?G)y`R-j1-|;s<-ueqFTYYhA9{Rq= zzkMHp{rec{v;j4dHtL1XLZ4)e(LxX-1msFXE(9nkK~QFL&Mof^eT6PkV&gGRG9`^e z8Ntd~FCdpzFR%QD{yWfL9BE_<=Qv=mTw1i&2_Qc!l*@uyi@-jn@IWaT7qT z4&>8+336c2ke9!bn09;7l_La{=Xq|Fr1$n;as8%hW4|y0!u_*#D}kSWMbLH!AN5`D zQX%oKfLfc6CIxpT0-?TNatD;fy2N+ygAW@uEoLqpUb9VKRPP&thTs}BwWb6hZ9k(eS?OCp}8HE1L@V$_yp zy4C3r(P>LQb;8X~oG^TP8uGbW&71Qi(3)V4)$i{EuMq;TH>~-isA*CFeI9t5Yq9}FTB7>L9%n44Y;@N;hm+MKb8wGFu! zUsM@{fj8f2{o>HNm;c@KF>}wUqPk;rv{-RwUWtqs6~ziu%C2C#$0_Ks7l8MVUxD_Q zzf79Uu@)qmor5eFMl4-w(i?72gIBF*%PzT$42+Jk(D#91tp`YfG*}RofX)>tP?mCt zCK0e;ho%m%0^uUdb3FN|aEppI#Jn2#K_7v!WdIvr21+ZEb(*X*an#H`_NbnG><27= z;tADvY?6%(_Jcb-2()hy=mXy>fZG4-4c7NzU}Q1CGaS|rQfhqa-ekdtE$oNhrSsE!E53)5ny>`i-4kN*YW40M_}&1`~gg+5@>Uth)zdEmtL&+ zkKRQ3*I&g)mX1T+buq^&>OSZby6_F0;UY; zT1VKigPu!w#W`zG>Fo6M-tYBkWiA(Jhs`4Or0xY9yU6pKE|_GjqO zD_-f0jx8Z|&W(dnG2X1_7m!fNQ-EGdRnLJ{*z%&z_3}@wl6Qz2_US=Zjx3%bRU7ymA}>!P*t8O12ON7pI~NXjBc&gfN7X%i?GDy`4DT zaVC>k1D$TpC&vgOnDOd!>8^M#Ce9l31`AgUEtcg{;t5ZGm(Au`xp;*K5Oed8M={JS z8P&nh|2!YRWGzF%)H$=I9So6CYbu$TblPyrSM@Nt2Z^v5Zws7#j$N2JgUi$c2OV zmJaygiDdG~6O6$9p!7G~@l_90L={?g0gmGG31~F6xq=l} zzZ7a8?1MwU@oR7?bHKys5g{S;dzh5lzyviBm!#+Zg)zzWq@YfrKREK0=)I> zVeHkfA&v3nSc@;)lL-&<^?=#V1WoomP7sGOJT*&{v5Ei zmjhS^5C$$~Dc)XZ`Rc_X?Tsmky5)P0>wDaxX$R616IpsO`8l@NA8HKNB#fl3ny89*4IY3wD3l$?Td&?3)s!3zV>O4^7G(FXip zd|@jk{_BRPmgG;pj~?q#9gCRR1>y$OaiRC_-RoJBBOx-lXze}j^0luPBL7pLGem(k zrHtvQDODP4?)iV+*|lpNKmD9d94Rg=!4M%tH(g^ERhymsyR!F_ycgo>#ZnpgP zZ<%ek{}u5Z27cgz$0@js*q0yrz;q4=A9+x#Bsw!sugsUuSdcu+VY%pp=%YuEDrBIR z6gG}R^Oj%wTZxcg_ZW2ycCS&&^0}$p?W>Qlk-qm~*nRF%T#*H%0Qgx+MLk^w)y-kd zsk8=+%qb&AY6V`&%EE>AeGfkN$A3n4?s*#C_bb0-)?Kj{`uqD4C{;%$CSd!&eV2Uh z3ty%iuUfB{tX@qJI9;eY0cbRZHrcejSSLkys3}+;U%FzY`S5RknC!Uco95<;iD7ejypd~5AWUsU)=sLre13h)G{07pys2`vH2GwcRj|vqI8|*AOz+Y zmZl4w%97WuiOc_-DD~r5uq4O_)P~CG6Nb3q8~5)0+HL%tLDGjFVrJVm5`$?yXUAM> zjz$<`IKxV6p#)17hexbNwTmE zJ&EY1O*R7Zb+9u|r#i-%8fp=tl!$f<*r2~^)!@c8{MkCNOY8`@i3OgbCm%ReZla<9 z^K2Saf~UoOX^<95qa>5kFm$?MN;%3Yr^-}w4H`n!)jMrP*bXsuQwS6s42 z-g3((vf=vcXs#5^)712um9SnX=tD%BqBF5X5jO}(o}|VQrvOt4fvhku;%aTZmZ4~GrLn_4*axSg$2=CNuOO{a~2bB@;cU|W#X&MWo zbYV+QqSq3jL0M`jX}-kqA)20mnfX@fa~$G2h$0YM9$**@Xbr9(Ky9Gk1`JYUz_H+m z=?j*Raf0fHykaa9IHjFoBQN4H`HjT zfdL1LbtR=qwOcULZdv|7h+KwD06~1NxSNynE3FN89eU~2*UC^-1c3W1A6{HOG3LPs(F`ap;}P}Yo$Jlqvf1u;x+-(DYDzxH>HyEC*{Wc@7zdy+}BLQv}l`#upKl z%yYQ@wXb!q`O%x$%rnmz^bz&3rKC18OhvnGY=BTjc&f~Cuz-j@3VBjWS|4Q#eM(tv z#&b%?0Vc8q@=4`qP}t<;jzBOTu*V((x@RZQG%dIfet-Zl11V-S(lVhNT-K4QH7ArJu19KG*>qr69RRCfIMRn#Y+=Jm!kc_)Hwb}BQuAfQn$ zs0y}^n&9t@k`#+pU9hm+*;YRG#xQ3oKS3F|VGTHEATXLN+tM#c%UW-XgLaV-V&Puy`vviZ5x zq%jArP=Ly4&4OBuA`=F86O#BumMXg|5&G|GTeOW);1$KK@{;gRPQBk2;ZQ@6popP& z)AJ$M8v2j}?KqZzD109pWt$>k^e03?6sb`1DvGjDkS>q`Z9s|wu`D+Fxqzs6QAny6 zHs7+fo)XcnkZRj`hc6`bqp7v$Eu%Nj2YTPX0DbU&P*~{={DS?8*AyoP)^7y0@wy-2 z{@k%+6NOShm2l!?`!Awd{6|@mYU~WfPC(-NhGCQ%#lqz3)A;^EgC-~ILZo-{dTk_& zqSU03gR#GsQr89s-Bjc<6ZySb#{XnE+XZp*R^R1sNo6ifrkO1jSPB#d1a4s#EbXSa z87&16;zGTD5aKvSYEIFbs5L~s4;f|PQ34##fuxbrwCPgly5u?7>ZxrqE-f>fQES3b zOVLS}zpr5bE*Ja^)m}>{E{bh52!J5Px2HmC^PfzfT#Bf)7{7mZ2F!QAWt9rKf0i(b z8ag`*vQ}qu{nduM{BE1OZ<{Kjh6f*X2qAfE_k$xWOTWMf84*h51eF9yEVYL8`Wk-P zj6NPLU$YzC4oXv}lZW5yHR>=AMsFHxDo8;SB~LDClxN1xc*caY3I;HetZG&GS^WRq zPk=r#39Nqr46;;9f2)=(GxQBV!)2}hOzrXSJy<6Bm5RM^MHY z@k2bn^n<_`o%q4l)co(4BWN_5I43=}|Lr=<45*wMk%HDzg?;_5V*Ja_(YZI1>#xtt zWR;_HgTs$M870|-!<}U(5l8T55%iQebi#naP88hD*qfs>U|t9#<166E{=Ig`8~*w6&^Uv>k8xsXf-bo4!8mDh8-GfUI5v`tmDPFf_>3+}w6}-8)ia z)>*B=k7kFTd>bh7rxai;ief=MpV6=nuSfc|(32XT(MrB$$@=w}xY`*LJUe>yVnWPn zj9yHd5S{1fKDiKi(+1NV3W{O<{_yx z0;k@9(PgXP_%r*v@5cp~X$%aVwl#6cD%K{=1f(J-uEW9O+_;=|$%<$WD`ro%*hP<# zJ!vV-Gc;RNBV&55w@Q31PKcy_iF`VR-w8qgV4-Q18e`tA1UZ{cx-kn0^?=fK5Lb15J3MVbd!khwP z%L;u<#;ul2A30!6i`}&d1tF$}c{O(nN6#>f#p0!gOytFA5@vgTi0?SY;S3xk)b}6@ zRYBKSn6l?u7HFp@0ku{r$jQ?h^E)IuTFpd_c96$i6$g7}24QYy-teYEi_xc6RaG$B z_X8&r;(ImeeLp?&)Eg<7UzSPh^?~p4L=pjw0UPds5|TUA<9#ELXZh!wlTZK3=oPPQ zpIY|j23Q+Q=3orQvi1)Jr;MD`wbT{PrcGG!Bd~Ml{jrlj?z`SqnGk5^idC}tQAw|@ zoGSW_s@K$LD~OSmtHE(NOdi??66-qXPfBe<{0kXW#F`hkY_-=m=e4;FR+CX+lwfO! z9qfl`jm7pVhfV<8GT=ZA5KSZsp-PsKcYs==unn@*C_Fc^QT(_RMe~j3Hp7S*0KK!&VMkh$g#clpRD&og;QBwgU|#_36P&SCiZX4qptz%e&^1N8j48r`_TaxI5l_VXcl{}M+25ujvy|mCA1EMM zMt0Rb8jx8E{o^aa3+pg-ct3QI5U30CAx1>DR-+4HYP*9AGs9ee!6a#fh^*Ahe5;7U zifru^e_}5kk^W+n*tD(`riGu3wt-3i*i!I@$BOfyf9p;vDTPx8Joa#vrHU102m?9LuWwiNn+&p&o;F@b}8RFT7VA!t`M-JRbxcQD|u28KxszqkJT8(K# z4kvAS-N5?wvsHpseXydlX25q5&2B8;~Q5Ns8n1p>#7QrK$u zy}UX7?Zzb=CZFr1VO|W{Tl3xI*uFpW2kRfqluVS!+%%3b)L!lP)2~K*_Pm)8ah~x!R?%eQ>wEidVw3lc7FHz9t`d{r;_nEDh}Tj2ltARSH3C2@ZzLf?peQc9Uap< zL4>Erp8k?QJo5Ui*^;W$)S#6K2ZlT$)qW%M_xUR?|60$N5rCZzz%C_@Y+O$q_kJUD zN2AxR7>m8r5>L~h@&ar^i@TmfGBsgyB-LqQLoO9@3^@wXw#6bw=YWGg2qQTQ&=v(b zJF}-mtMPE`IOZZGufE^4E(%-;sp4CoGMWW< zdOAG`lM_cRvTVD#F#yPlor;ZM7Ou4U1}lnk+_4}h<|=mPMJ14uELr%a!YmbgrMwPX zdn&IBO`}CUcvq868Wj*wPaCI2Fe>3x*1^si3N-UPZlpTkty+6&HRh>zqVe-R77&1* zNKG7j`Z{pD4+CX4JH9_ww6@_eh&mDgkjgu!jouGZJxPdu1SqmnXdvUx@30{3GnAwD z5gVdf@U;52aQc!7Z7Y+FZs4WAv(B?K(xNDts*+O3cr6-r!ZG>3;KQ1;pr!p$U%Bb}@IPnV6 z39O)&pTn6wI%-+oT^E0=av=;tTo*(f*~E_rA+{_Lzi$v=U***+XU{=iD=vWLJ6`mxP1o1HPU$B)ez#~pVZu7`$4fHVdz0~@=evCG>! zU@Q|m9_YAJw9}V;rq*#0fcZFu<~#~6243rj!1rOWUMnYr=mL;MA5?a7FWe2H5as;2 z3hwD8y@SVYg6pnR&sRWaBy|A`CkASGU0%ZsMEkHV~F#yi8)j;wb*rVSE`pvIdwx}II==#R>Jsbg}iIA@eUGGMn zi(@2d2kGRoj8Sr9GCuG!J9+YX&XGGS>#m&Gt1#cef9-B4GIUHzbr#1PTCFygBHbj4 z<1|YD^UCpc{X^s9*D%L1hP$?R6&HkEaTUlPJPhVj{{zh3UqU*L-MzHlU+@k}LE({$ z9J}uT{LrE!E_T_KxrY@_H3@6sLdzi*=QxPAoWG60r42;zyGjU3=ZV#7)R=r~65unR z0`k=_+6WW}FB$3psr3`5(XYmaN0~P`a7%dos}5)F)}1(HL$>A>&tpUK>?QWQs;KrWXB6or0n`&{xEv_v7c9ljGDm_ zO_L5YNkUADjul`BJip`LHI)gcIiYstLLBn21c0|pDRQ5$r;an8IiaLMgAf-Re}jVX zSC*&klqp=-C!ern!vah#hmI==aVDTSKSR7mpN*0cP(AIaNGUx6L3F@QAvxOwU+a^K zqMrp=IfG88jkH(LNcqM5CylW{0PxHKPxBuF%0?HC|x0~QBu2ZQCN6(RQA^a+sdws9~&(KtG+cMww~u({SwLVYK!wv8 z?f2XCgXDzfN~F@nZRIJ!Aj|&6yX=}Lw;);MLIerVc3={Q6Mk2{@oj%^vh;I8WNy}J z|FuQE}6%aNUlaIhnm3nUlS-HO7C3tuFgI8{r6<9Q%NN@q??Lc7y} zxYGgby_H!8vsk#xq>;@wm{teGle_WBEFjxWFr8L0E(S@AS&Y-UD3Q5_xWkgxe1~)T zL9{Se79%o$NQ2Fh=4A|7^3?qwK63QL&7vlj_*s^DUJM)u<>94CMRSpn2n=N3yvNi! zEh1%L7pb#qwIp+M9QkKx`xE5DwVNhs&Fj%iF5^mM26u0kX0{AqLu{)h+P0(EF*B$^ zXqKu3wL-OfNgoTP(}mC*g_fsw29N9cCXd=$4-PXVp^8j^YBnLqAfy(O#{4`e;sbx^ z`!IX?u%b8zR-l{CE+StKJX8pxmr5j z?Zoq6iu7GxBH6K2CdpGV^_9ELvTuKjgaiGIbULKHVx{rl{{b>Qx)c+=5=%oC4_d<< z@+5|&)r1&H>{>%u3!xSS3qqlugRr;U9RONA_zf0@X*cd(TDr#p+n&M9>nbq zxRXcT)U)R2Y2HJP}g1e zJs2B15_Y0?Xw0{0zxTBzH{W{v`A)Yw^*ApLo{L@7t{bmk?>3xYmIkhoDi?6+o=#kHSdOG^@m%ihL;S$K@l#%N5m)-a9|LVah z;CzFm)p0&MaEZZTs++srk~WyIKQIPU$De4ZBQy67^!HyQg~(Z0qZW@VnLpO2oNa_u z+=2PyN1-)01D@vt5=N@Bfzw0RtxDKM^Oc5H9NV%&y}!R0n2zW}DbxxeT{OA1{gFAP zM9r{)!Iu)=IArZ`NuW2M|2)I{EshKGB$Nxjylc*}HRgD5r!N zTI>JmW+sfP7&I8YRRhVp6yIcFK+zeJO#=)DmM(`C7p=A&yVm@)b$lCKTIx=d8hK9-ypVEDWxezi+Pwj8*O@52I6jdTOCJbMV{6M(vwj8!?d%>Qw zdSNxFDg-`u-{9d?J)TLqJaAn()TkriT5u8U;3Xti;HxSR6r}=EF=%?)PcTVD-y_@e z@XX#PVQy*?ydc03fM^WK>viZK9EOo4<3-em!3TC6V4)Y!RlqbS6I#mZuZ;>dLW^a1 zUX&&bWC;VMA~57CfAvca*>}G{PleOqqgYgB_4J&IBC`G~?KR~RD|r><`|+!If1bB!?wAYX7z z;ur97oM@ww5J}v7?|udPoit4~=1HA6u?Rt57!(CKnOkB95y9_FnT zR-V~e3Rr_$cIDNu+`>U6l#_Ho#?eBN4dJ0QwF4(C+1?@;>B2zTN<+H?DoUZ1+;5!1 zrSsehCeO1CN6pd6{~ESZD?FQ^g;??Nc0HmMeDkqI#NJ8h?Uug zbew*1CpR@$k5ucW0$0=JE6Q-y^JMwhEx^IKrq(zFHUBHRG5ooK^)G$EzVkdkP~(CK zs5cjy{oL*E3zPW6p42NLi9k(F%K6o6$i$kpKoKJ=;eCq;bH_4vu!A9VT^ll=6uFQx zrzxwQh?)682p;mLyAOFP=)$&*ByM+~T5`s5X(y@UX@6Pha4g$2k!71R2I1~qCOEjC z=<(&u9UOvrl`Aqh^cn3tTZXQC^`Q$TByv83fhV?YtFKI_KGSFPPbnN+p2nFH3E?7R zi85yYhHDAbYnJ0?ABuq=E*UteQJ8=tzZ$z4IJQl)!u(i952bbzNtVR0Y}s;KrNzD) ziyBlN4tWYXY8SzTF*drxZUxj%Ecg|Dpv8ed_mb{0nYFxci+UTx)(}esY$x#J7{-;e?BXq<%ajtsjkASco^`IV(V`%7PaQ6{R@B;e_5uBnC72mUe4vsa1fnT+Hy z&4r{{DvT=ynVp=1`H?ZmH{rxBY6?DF!H%&Rd&SH_?Lrn0zDQ9#!yHF54$WhSE!}G6 zWtSI2Ft8=F=zy>}lCh0vIS8d7N>U5J+A?|RTS#}p5VqZ_l0sY-@Q@ddwZ&3vu&jZ8 zOBxL$-@eZb&rcKkNE^$g!)e17B9gjRcS&C#w2gVw=$qd0)#^EZFCGDvrY-vOKfE){ zledbgsT9cs1(|~YH44%wHY$q9-1IC=`ZXi3*+}Xm!vtL~#U2?;0&xpI0>U^Yneimj zV4lI;!2?hmUj|Fotc8KV1BU*`wnHN8Q(7&+l0XzEkakN8XTHU%>_DpX<9`)OV37zy zviVs<|LxnbsyPkyH5UVEG>XYvwK`~rYbG_q?TQ7VlQkMsZ7GJ4U4>9opfNXiqq51p)EYKA1dkFmucz3B+C9&O_#_nK1VvBaj+wMfBweLXApLhaRW(nuZ#){fg z#tIZ1%N;o{W`(;Rlg(KX8Z{=J^b zb={652cP1B-_f3*6P=^S+gU2yO9uxV&0J_Ceb_QOYC$fr^BikMMB$?ev?_?$N)ah? zLKroSF*`c}&9X#xQt_+>JLO(Ru}r3>O*S>9++!0k+G+EZtCq38r5D@hJ=g*4L9K^L zqyg}mcXmhyqpH<3t{48C*}nawaP!Ss_57tDez{@$cK#b*`MYm}5HIsoE{Iml^2~71 z9ggm|kCZFtyp@kWBX)$CCV3P=CrWiE7dlm1wS**wvs`JzQ#&<-X<20RWTqXN19L5z zNy&cX4X<;Tu3gJbEwmlhCe5(thKTuj9ZgIaoe2U;8t%C0!j#A|8m1YAT8LE~#;`Qs ziBwL(Ft>26oSmosOV9lrn|(T#M8l0-=vY^rFIP=bfY} zP;3M)A0LB)15S(+hA=#8$e8D1M#_s107LMZHvLVl>4r2-i;XutB|{4l@w9h%2>m9L`+NryjN_^##lg z2D$4w1ZR8$V+PwGg;E9|LRchcI5{z0c#5%I1e^&`JQ@c>LX%5vY7HiGF|=*-X0~(d zR_yJ{djiJ`t3mk2f4yl7Pd3al=DIv|9Je0;_74uq4M+FvAhXlgCQ*_zN@z&ICZM)% zW4lobQ-_^%wm^o}%d)=*!)-f?9-q8bF-*(GCt|~1itP%;XVEv|iL#8~dQ=Tm_+E~G z!_Pa+Qo>49prET(Y1IH{?*%WKc`0>KNk%mn>TN!uUy*Z z{?IBmg}xPrIKVtm&!Hnsd5`?g%T8=~|L*U2o_}o?#TKh>BUK<45HJBg`cnIp`@&Hd ztekS9hXq7Sa(k7_Fyu*lg`+z|th2VRbu~A=lO0dG`Y85*=mj(q|KsVUy zqip0Gi}s? zncDC(wAFOE?@N;q-e{080TAIhz~5}y!fIDund3uo&(-`bra@%OmMvuBAO3-jUpMZI zj<2GATqBo+A$uBH^wLHjR$u}jqQE! zb%NEju0ie4!ZzhBL_fv0ll&)X3 ziorMli~HGd7&73pK^?CTW9dF)TuSnh)CtV!laK%UU~~4TT2Y)UOkOn#sazM^EQKA{ z23!;vr?!W)D!&M+0V%#VyGLJTr)ZTpCO%mUGgf@mMm0GLt(bLFMcZQWG{o&>N#s)umn%UoFLW0mn zaY9@%Hul)DE3f}pKuN@qYs6HfGZG1vwdiL;Pb-dBADfYT` zcbVI6JGmQgF%w62+;kHiyX!6k@3{`(Fu?A)IkT*>iVkAq$y~;~ARHh{*}mBn%%Cfk zZ=$*I_`uN9u@pb3C+T{wHOsV;n6+!E3E)#pO4AUReLYyBwnD+*i5%)U2Ge0cvK;Uc zP1bxtQM$(RM7Mfl8M?e`$G0Z3z(EUlgPN&w95Yst6$@H$!A-ydTrt(kexgW7t&pl& zJly4gQw6Y5&<=4b12)td3?3|>*ASE2@EjmaUr8a$^zk@0s0h1Yvj!-60?#5Kv+3S@HEPiKo)ZSf8fJFs zQr%Z?6M%k50JJNF)Q;;~1k7lY5+(?dHEB$Gh9K8wAfJ9oQ1sbllGBBj4_V?+aWaR zxZYkEUGjrE=lGCUj+4Pc$CZ?rK!MLAA<|eSE@?x2IBS9*)<|EcqxVcs8fY|NPrYt7 zt-H&dbC7TwfZnq1E|e+&?1Xi#kU-|aO#cj?T!C_?1~?lc415jFG^l)t_|Ck`>ihZ$ zA#vMDj{<2OZ_Zs@&$9ly5MwT-G^EtvuC@hlTIxqNv!GM}kz(Rm1YJcBFX=v;4u7^n zLtL)h?WkF(0rtrVh@;`IFU^oZE;tI%{y!$O81my_+hSf1BGq_4hv7iK;(>%17~*tf zJEz3LKL9w_#C{GFUIQ$rL0=6S2%N z=9UbyrQb4r?@T>rR}|+ji{eKD7QhhuO$^o0ynj;{eVw%+ba zUm%=-#C{7a*rsY5c9&WgYppZNROaw3@q$TR3-^bkV}~091M@=zjhOpEM*wLWpe;ja z#}Md5B5i6#Ma*)M$E*|0%_Yg8k~7mYa3nn@jvsHxb?erd+itt<6r#j)6i`=C02F=G z8?U|A>BpFP1i*_^(&yF#rbAya>G=kH9Nz9zIYfwQPzA$A+3t>xX!%e zdM)a^^Mt!eu1rP&GGJ6Fqtm9!=4F(NOi7h%5dqVpHKX;i6{#q5p<=+@g@AfcqwwD= z0r)e0E!HnNAC5y7`#$Msspn)o5GLb}QcOC;cPR6y(gAZ_=7DY)tp>EweMXT`|n%xNYmbI4HGu z+q^JX913g`08NI5ENiecyT@^0v`A##&@)0Z3L(cl&0&lwkiJW)LktSf+8mz|(JT&lzNb^d%Ibtt!Ly8{X`1(sj7T_s9GdmI4fRF=^!XCV z3(AY@{SHJXDx&0SILHO8rucXdJkq|FagTHEhAGKl$i64eGJ;qiZ4fR+X7b#3lp_o) z`nb`L*!OYfI9%m9<(y!D9cm7fSfsFlp^JC}1uZ&}mTnE_JcgJ-NttEFZxkTmT-(Ud zOHAws#7Vt;MPHwqZnf}y5*NR*Y=X3pjhm@myUgZu$o|j!;{C9Ws%B!fZ_5_4X~zzl zY}mj$$B&!2*9@Aq$Hv(~3=TRSHc)Syw6A912tZ0H9jMohj$=lfq4F9XGF-2l{QxxW zbj%XW^6Pao-{}zi84sLdgg?9Wx_WGO*1URX$m~MlOiY+#x8JU|ZrNg6o^IQ^)lQ!N eVXjN>@&5sa^xYw|Ypp5(0000TmdifPZxoP}oX9 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 DI0E4V diff --git a/lib/app.dart b/lib/app.dart index bfbc3d50..f4e8fd97 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -27,7 +27,6 @@ import 'ui2/screens/what_changed.dart'; import 'ui2/screens/health_screen.dart'; import 'ui2/screens/home_screen.dart'; import 'ui2/screens/journal_compose.dart'; -import 'ui2/screens/log_water.dart'; import 'ui2/screens/nutrition_screen.dart'; import 'ui2/screens/wellness_screen.dart'; import 'ui2/screens/workout_screen.dart'; @@ -352,9 +351,12 @@ Widget? screenForRoute(String route) => switch (route) { const AiBriefingScreen(period: BriefingPeriod.evening), kRouteJournalCompose => const JournalCompose(), kRouteBreathing => const CalmBreathing(), - // The hydration reminder promises that one more tap logs a glass, so it - // opens the control itself rather than the tab the control is on. - kRouteWater => const LogWaterScreen(), + // The hydration reminder lands on Nutrition, where the water tile carries + // its own − / + and is beside the food it belongs with. There used to be + // a whole screen for this one field; it was reachable ONLY from here, + // which is how the tile that everybody actually used stayed add-only for + // so long — the thing that could clear a value was behind a notification. + kRouteWater => const NutritionScreen(), // Battery, band and sources all live behind this one. kRouteProfile => const ProfileHome(), // The weekly recap used to land on the Health tab and push nothing, diff --git a/lib/state/app_state.dart b/lib/state/app_state.dart index ce62e704..2f7a6a9f 100644 --- a/lib/state/app_state.dart +++ b/lib/state/app_state.dart @@ -3040,7 +3040,36 @@ class AppState extends ChangeNotifier { } } + /// The last readings the live stream delivered, newest last. + /// + /// Lives here rather than in the widget that draws it: `lib/ui2` is + /// presentation, and a `Timer.periodic` inside a card is both a design-system + /// violation (see the ungated-Duration rule) and a trace that resets every + /// time the screen is opened. The engine already pushes state at about 1 Hz + /// while streaming, so appending here is the natural sampling point. + static const int liveHrTraceMax = 90; + final List _liveHrTrace = []; + List get liveHrTrace => List.unmodifiable(_liveHrTrace); + int? _liveHrTraceAt; + void _onEngineState(DeviceState s) { + // One sample per DELIVERED reading. Keyed on the stamp, not the value, or a + // steady 60 bpm would record a single point and the trace would flatline + // for reasons that have nothing to do with the heart. + final hr = s.liveHr, at = s.liveHrAt; + if (hr != null && hr > 0 && at != null && at != _liveHrTraceAt) { + _liveHrTraceAt = at; + _liveHrTrace.add(hr); + if (_liveHrTrace.length > liveHrTraceMax) _liveHrTrace.removeAt(0); + } + // Bank the name the moment the band says it, so it survives the + // disconnect. Written through `cleanDeviceLabel` for the same reason the + // BLE side reads through it: a garbled response must never become the + // remembered name. + final nm = cleanDeviceLabel(s.strapName); + if (nm != null && nm != Prefs.getString(_kStrapName, '')) { + Prefs.setString(_kStrapName, nm); + } // Battery-low / charging OS notifications (edge-triggered + de-duped inside). _deviceAlerts.onDeviceState( batteryPct: s.batteryPct, @@ -3497,7 +3526,20 @@ class AppState extends ChangeNotifier { // clobbering the display (see the parked block in ble_engine._onDecoded). // device.alarmEpoch = this-session optimistic set; _savedAlarm = persisted. int? get alarmEpoch => device.alarmEpoch ?? _savedAlarm; - String? get strapName => device.strapName; + /// The band's advertising name, LAST KNOWN when the link has not answered. + /// + /// `DeviceState.strapName` only exists after a connect and a GET round-trip, + /// and [PairedDevice] persists the remote id and serial but never this — so + /// every cold start, and every minute spent disconnected, showed the generic + /// "WHOOP band" instead of whatever the user named their strap. A name the + /// band told us once does not stop being true while the radio is off. + static const String _kStrapName = 'band.strap_name'; + String? get strapName { + final live = device.strapName; + if (live != null && live.isNotEmpty) return live; + final saved = Prefs.getString(_kStrapName, ''); + return saved.isEmpty ? null : saved; + } int? _savedAlarm; // ── alarm confirmation state machine ──────────────────────────────────────── diff --git a/lib/ui2/live_hr.dart b/lib/ui2/live_hr.dart new file mode 100644 index 00000000..70cd220a --- /dev/null +++ b/lib/ui2/live_hr.dart @@ -0,0 +1,144 @@ +// The heart rate arriving RIGHT NOW. +// +// Live HR is not a workout-only quantity: `openSession()` calls +// `enableLiveStreams()` whenever the app is foregrounded with the band +// connected, so a beat is usually a second old while someone is looking at the +// app. It was simply never surfaced outside the workout screen. +// +// THE RULES THIS FILE HOLDS: +// +// · It OWNS NO TIME. The first version ran a `Timer.periodic` and a heart +// that pulsed at the measured rate off a repeating controller — which the +// design-system tests correctly rejected: an endless loop cannot be stopped +// by the reduced-motion gate, and raw `Duration`s bypass `motion()`. The +// deeper problem was architectural: the trace also died every time the +// screen closed. The buffer lives on [AppState] now and this is a pure +// renderer. +// · The trace is READINGS, not seconds, and says so. Samples arrive when the +// band delivers them, so calling it "the last 90 seconds" would be a claim +// about spacing nothing here guarantees. +// · Absence states its reason and never a number. `AppState.liveHr` returns +// null past [AppState.liveHrMaxAge], so an unworn band, a dropped link and +// a backgrounded HR-only downgrade all arrive as null — and each gets the +// sentence that is true for it. +// · It repaints ALONE. A 1 Hz stream hung off a `watch` in a parent would +// rebuild that whole tree once a second for the life of the connection. + +import 'package:flutter/material.dart'; +import 'package:lucide_icons_flutter/lucide_icons.dart'; +import 'package:provider/provider.dart'; + +import '../state/app_state.dart'; +import 'ui2.dart'; + +/// The live reading as a card: the number, and the recent readings behind it. +class LiveHrCard extends StatelessWidget { + /// The real one: reads the live stream off [AppState]. + const LiveHrCard({super.key}) + : _hr = null, + _trace = null, + _preview = false; + + /// A fixed reading, for the gallery. The gallery has no band, no stream and + /// no Provider above it, and a card that reached for one would either throw + /// there or force every caller to thread state through. This is the same + /// widget with its inputs handed to it. + const LiveHrCard.preview({super.key, required int hr, required List trace}) + : _hr = hr, + _trace = trace, + _preview = true; + + final int? _hr; + final List? _trace; + final bool _preview; + + @override + Widget build(BuildContext c) { + final p = P.of(c); + final hr = _preview ? _hr : c.select((a) => a.liveHr); + if (hr == null) return _absent(c); + + // Length, not contents: the list is rebuilt on every reading and comparing + // it element-wise on each notification would cost more than the repaint. + final List trace; + if (_preview) { + trace = _trace ?? const []; + } else { + final n = c.select((a) => a.liveHrTrace.length); + trace = n > 2 ? c.read().liveHrTrace : const []; + } + + return Surface( + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + // At 3.1x text an n48 number plus a pill does not fit a phone width, so + // the number is allowed to scale down inside the space that is left + // rather than the row overflowing. The pill keeps its size: it is two + // short words and shrinking it is how a label becomes unreadable. + Row(crossAxisAlignment: CrossAxisAlignment.center, children: [ + Icon(LucideIcons.heart, size: 26, color: p.on(C.red)), + const SizedBox(width: S.x3), + Expanded( + child: FittedBox( + fit: BoxFit.scaleDown, + alignment: Alignment.centerLeft, + child: Row( + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + children: [ + Text('$hr', style: F.n48.copyWith(color: p.ink)), + const SizedBox(width: S.x2), + Text('bpm', style: F.body.copyWith(color: p.ink3)), + ], + ), + ), + ), + const SizedBox(width: S.x2), + const Pill('LIVE', C.red, icon: LucideIcons.radio), + ]), + if (trace.length > 2) ...[ + const SizedBox(height: S.x3), + SizedBox( + height: 56, + child: CustomPaint( + painter: LineChart( + [for (final v in trace) v.toDouble()], + C.red, + fill: false, + ), + size: Size.infinite, + ), + ), + const SizedBox(height: S.x2), + Text( + 'The last ${trace.length} readings — ${trace.reduce((a, b) => a < b ? a : b)}' + '–${trace.reduce((a, b) => a > b ? a : b)} bpm. Not stored; this is ' + 'the live stream, not a record of your day.', + style: F.over.copyWith(color: p.ink3), + ), + ], + ]), + ); + } + + /// No live reading. Three different facts, and only the one the app can + /// actually see is stated. + Widget _absent(BuildContext c) { + final app = c.read(); + final (String why, String fix) = !app.isPaired + ? ('No band is paired.', 'Pair one from Profile to read live beats.') + : !app.isConnected + ? ( + 'Your band is not connected.', + 'Live beats need an open link — the app connects when you open ' + 'it with the band in range.' + ) + : ( + 'No beat in the last ${AppState.liveHrMaxAge.inSeconds} ' + 'seconds.', + 'The band streams while it is on your wrist and the app is ' + 'open.' + ); + return StatusCard('No live reading', why, + fix: fix, icon: LucideIcons.heartOff); + } +} diff --git a/lib/ui2/profile/devices.dart b/lib/ui2/profile/devices.dart index 4c36bc5c..c9cab86c 100644 --- a/lib/ui2/profile/devices.dart +++ b/lib/ui2/profile/devices.dart @@ -22,6 +22,7 @@ import 'package:provider/provider.dart'; import '../../ble/ble_state.dart' show BandStatus; import '../../data/db.dart' show LocalDb; import '../../notify/battery_forecast.dart'; +import '../../sync/paired_device.dart' show cleanDeviceLabel; import '../../state/app_state.dart'; import '../onboarding/pairing.dart'; import '../onboarding/profile_setup.dart' show formatDay; @@ -497,11 +498,83 @@ class _DeviceDetailState extends State { health: _health, forecast: _forecast, onFind: app?.buzzBand, + liveHr: s.isBand ? app?.liveHr : null, + onRename: (app != null && app.isConnected) + ? () => _renameBand(c, app, s.name) + : null, onForget: app == null ? null : () => _confirmForget(c, app, s.name), ); } } +/// Rename the strap. +/// +/// This was in the old UI and did not survive the rebuild, which left the +/// advertising name readable and not writable — and it is the one label a user +/// with two straps needs, since both otherwise read "WHOOP band". +/// +/// The band's own limits are the field's limits, checked here so a refusal is +/// immediate instead of a silent truncation 20 characters in: 20 ASCII +/// characters, the charset `cleanDeviceLabel` accepts on the way back, and at +/// least one letter or digit. Anything the strap would reject or mangle is +/// rejected in the sheet, where the user can still fix it. +Future _renameBand(BuildContext c, AppState app, String current) async { + // Captured before the dialog: `c` is not safe to touch after the await. + final messenger = ScaffoldMessenger.maybeOf(c); + final ctl = TextEditingController(text: current); + final err = ValueNotifier(null); + final name = await showDialog( + context: c, + builder: (d) => AlertDialog( + title: const Text('Name this band'), + content: Column(mainAxisSize: MainAxisSize.min, children: [ + ValueListenableBuilder( + valueListenable: err, + builder: (_, e, _) => TextField( + controller: ctl, + autofocus: true, + maxLength: 20, + decoration: InputDecoration( + hintText: 'WHOOP band', + errorText: e, + helperText: "Letters, numbers, space, and ' . _ -", + ), + ), + ), + ]), + actions: [ + TextButton( + onPressed: () => Navigator.of(d).pop(), child: const Text('Cancel')), + TextButton( + onPressed: () { + final v = ctl.text.trim(); + if (v.isEmpty) { + err.value = 'Give it a name'; + } else if (cleanDeviceLabel(v) == null) { + err.value = "Only letters, numbers, space, and ' . _ -"; + } else { + Navigator.of(d).pop(v); + } + }, + child: const Text('Save'), + ), + ], + ), + ); + ctl.dispose(); + err.dispose(); + if (name == null) return; + try { + await app.renameStrap(name); + messenger?.showSnackBar(SnackBar(content: Text('Renamed to $name'))); + } catch (e) { + // The write goes to the strap, so a dropped link loses it. Say that, + // rather than leaving the old name on screen with no explanation. + messenger?.showSnackBar( + SnackBar(content: Text('Could not rename the band: $e'))); + } +} + /// Forgetting a band is destructive — it ends the only connection to the one /// sensor in the app that measures anything continuously — and it used to /// happen on a single tap with no confirmation, leaving this screen still @@ -538,6 +611,16 @@ class DeviceDetailView extends StatelessWidget { final HealthSource s; final VoidCallback? onFind, onForget; + /// The beat arriving right now, or null when nothing fresh is streaming. + /// Passed IN rather than read from a provider here: this view is rendered in + /// tests with no Provider above it, which is the point of it being a view. + final int? liveHr; + + /// Rename the band. Null when there is nothing to rename (the phone) or no + /// link to carry the write — the name lives on the strap, not on the phone, + /// so an offline rename would be a lie the next connect quietly undoes. + final VoidCallback? onRename; + /// The band's own state, from `bandStatusFor`. Null for a non-band source. final BandStatus? status; @@ -554,6 +637,8 @@ class DeviceDetailView extends StatelessWidget { {super.key, this.onFind, this.onForget, + this.onRename, + this.liveHr, this.status, this.health, this.forecast}); @@ -614,6 +699,18 @@ class DeviceDetailView extends StatelessWidget { Surface( pad: const EdgeInsets.symmetric(horizontal: S.x4), child: Column(children: [ + // The name is the band's own advertising name, written + // to the strap — not a phone-side label. So it is only + // editable on a live link, and the row says so rather + // than opening an editor whose save cannot land. + SetRow(LucideIcons.tag, C.blue, 'Name', + value: s.name, + sub: onRename == null + ? 'Connect to the band to change it' + : '', + chevron: onRename != null, + onTap: onRename), + Divider(color: p.line, height: 1), SetRow(LucideIcons.batteryMedium, C.green, 'Battery', value: battery == null ? '' : '${battery.round()}%', // L11 — the band's own charge history, on the row @@ -637,6 +734,16 @@ class DeviceDetailView extends StatelessWidget { ].join(' · '), chevron: false), Divider(color: p.line, height: 1), + // Live, not a stored reading: present only while the + // band is actually streaming, and gone the moment it + // stops. + if (liveHr != null) ...[ + SetRow(LucideIcons.heartPulse, C.red, 'Heart rate', + value: '$liveHr bpm', + sub: 'Right now', + chevron: false), + Divider(color: p.line, height: 1), + ], SetRow(LucideIcons.refreshCw, C.purple, 'Last data', value: last == null ? '' : formatDayTime(last), sub: last == null ? 'Nothing banked yet' : '', diff --git a/lib/ui2/profile/gallery.dart b/lib/ui2/profile/gallery.dart index 79947247..13ade8cc 100644 --- a/lib/ui2/profile/gallery.dart +++ b/lib/ui2/profile/gallery.dart @@ -455,6 +455,12 @@ Map _nutritionAndWellnessCases() { FoodRow(entry: known, trailing: LucideIcons.circlePlus), FoodRow(entry: bare), ])), + // `.preview`, because the gallery has no band and no Provider. The numbers + // are a fixture and are shaped like one — a resting wobble, not a workout. + 'live_hr_card': const LiveHrCard.preview(hr: 68, trace: [ + 64, 65, 65, 66, 67, 66, 65, 66, 68, 69, 70, 69, 68, 67, 66, 66, 67, 68, + 69, 68, 67, 67, 68, 69, 70, 71, 70, 69, 68, 68, + ]), 'mood_picker': MoodPicker(value: 4, onChanged: (_) {}), 'mood_picker_blank': MoodPicker(onChanged: (_) {}), 'field_stepper': Surface( diff --git a/lib/ui2/screens/log_water.dart b/lib/ui2/screens/log_water.dart deleted file mode 100644 index 48721f6f..00000000 --- a/lib/ui2/screens/log_water.dart +++ /dev/null @@ -1,108 +0,0 @@ -// Where the hydration reminder lands. -// -// One screen, one control. The notification says "tap to log a glass", so the -// destination has to be a place where the next tap logs a glass — the Nutrition -// tab is not that, because the water row sits below the day's occasions and -// needs a scroll to reach. -// -// Nothing is re-invented here: the value is the existing `water_ml` journal -// field, written through the same repo call the Nutrition row uses, and the -// stepper is the same `FieldStepper` the journal uses. This screen owns only -// the framing. -// -// Water is a reminder, not a measurement. It may be logged; nothing here — and -// nothing downstream — may ever score it, streak it, or call a number good. - -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; - -import '../../data/day_label.dart'; -import '../../data/journal_fields.dart'; -import '../../state/app_state.dart'; -import '../ui2.dart'; -import 'journal_compose.dart' show FieldStepper; - -class LogWaterScreen extends StatefulWidget { - const LogWaterScreen({super.key}); - - @override - State createState() => _LogWaterScreenState(); -} - -class _LogWaterScreenState extends State { - /// Read on every use: this screen can be opened by a notification at 21:50 - /// and left standing past midnight. - String get _date => todayLabel(); - - static final JournalFieldSpec _spec = kJournalFieldsByKey['water_ml']!; - - double? _ml; - bool _loading = true; - - @override - void initState() { - super.initState(); - _load(); - } - - Future _load() async { - final repo = context.read().repo; - final v = - repo == null ? null : (await repo.getJournalMetrics(_date))['water_ml']; - if (!mounted) return; - setState(() { - _ml = v?.value; - _loading = false; - }); - } - - /// Absent stays absent: a blank field is "did not say", and stepping down - /// from zero returns it there rather than pinning a zero nobody asserted. - Future _set(double? next) async { - final repo = context.read().repo; - if (repo == null) return; - setState(() => _ml = next); - final all = await repo.getJournalMetrics(_date); - // Drop the key rather than just not adding it: `...all` still carries the - // OLD water_ml, so stepping back to blank re-wrote the number it was meant - // to erase. putJournalMetrics clears the day and re-inserts the map it is - // given, so leaving the key out is what "no answer today" looks like on - // disk — same rule the rest of the journal uses. - final fields = {...all}..remove('water_ml'); - if (next != null) fields['water_ml'] = JournalMetricValue(next); - await repo.postJournalMetrics(_date, fields); - } - - @override - Widget build(BuildContext c) { - final p = P.of(c); - return Scaffold( - backgroundColor: p.bg, - body: SafeArea( - child: ListView( - padding: const EdgeInsets.fromLTRB(S.x4, 0, S.x4, S.x16), - children: [ - const NavBar('Water', sub: 'TODAY'), - const SizedBox(height: S.x2), - if (_loading) - const Center(child: CircularProgressIndicator()) - else - Surface( - child: FieldStepper( - spec: _spec, - value: _ml, - onChanged: _set, - ), - ), - const SizedBox(height: S.x3), - Text( - 'A log, not a measurement. The band reads no hydration and ' - 'nothing here is scored.', - style: F.cap.copyWith(color: p.ink3, height: 1.5), - ), - ], - ), - ), - ); - } -} diff --git a/lib/ui2/screens/metric_detail.dart b/lib/ui2/screens/metric_detail.dart index 3092de6e..b1b0d690 100644 --- a/lib/ui2/screens/metric_detail.dart +++ b/lib/ui2/screens/metric_detail.dart @@ -516,6 +516,18 @@ class _MetricDetailState extends State { final vals = [for (final v in series) ?v]; return detailScaffold(c, spec.title, [ + // Resting heart rate is the NIGHT's number; this is what the chest is + // doing this second. Two different quantities, so the live one gets its + // own card above the trend rather than a second figure on the same card, + // where it would read as a correction to the headline. + // `data == null` is the LIVE path: every fixture and golden injects its + // own MetricData, and those render with no Provider above them by design. + // The live card reads AppState, so it belongs only on the real one. + if (widget.metricKey == 'resting_hr' && widget.data == null) ...[ + const SizedBox(height: S.x2), + const LiveHrCard(), + const SizedBox(height: S.x5), + ], if (spec.suppress != null) ...[ const SizedBox(height: S.x2), StatusCard( diff --git a/lib/ui2/screens/nutrition_screen.dart b/lib/ui2/screens/nutrition_screen.dart index 1216ef73..b2babea4 100644 --- a/lib/ui2/screens/nutrition_screen.dart +++ b/lib/ui2/screens/nutrition_screen.dart @@ -20,9 +20,9 @@ import 'package:provider/provider.dart'; import '../../data/db.dart'; import '../../data/day_label.dart'; -import '../../data/journal_fields.dart'; import '../../data/nutrition_store.dart'; import '../../models/metric.dart'; +import '../../data/journal_fields.dart'; import '../../state/app_state.dart'; import '../ui2.dart'; import '../onboarding/profile_setup.dart' show formatDay; @@ -98,18 +98,35 @@ class _NutritionScreenState extends State { } /// One tap's worth of water, from the field spec that performs the tap. - static double get _waterStep => kJournalFieldsByKey['water_ml']!.step; - - Future _addWater() async { + static JournalFieldSpec get _waterSpec => kJournalFieldsByKey['water_ml']!; + + /// Step the day's water up or down, in place. + /// + /// This row used to be add-only: every tap wrote `+250 ml` and nothing on the + /// screen could take one back. Same ladder as the journal's own stepper — a + /// step down off the last glass lands on a logged ZERO ("none today"), and a + /// step down from zero clears the field, because absence and zero are + /// different answers. + Future _stepWater(int dir) async { final repo = context.read().repo; if (repo == null) return; - final spec = kJournalFieldsByKey['water_ml']!; - final next = ((_waterMl ?? 0) + spec.step).clamp(0, spec.max).toDouble(); - final all = await repo.getJournalMetrics(_date); - await repo.postJournalMetrics(_date, { - ...all, - 'water_ml': JournalMetricValue(next), - }); + final spec = _waterSpec; + final v = _waterMl; + double? next; + if (dir > 0) { + next = ((v ?? 0) + spec.step).clamp(0, spec.max).toDouble(); + } else { + final down = (v ?? 0) - spec.step; + next = down <= 0 ? (v == 0 ? null : 0.0) : down; + } + setState(() => _waterMl = next); + // Drop the key rather than omitting it from a spread: `putJournalMetrics` + // clears the day and re-inserts what it is handed, so leaving `water_ml` + // out is what "no answer today" looks like on disk — and spreading the old + // map back in is exactly what made this un-clearable. + final fields = {...await repo.getJournalMetrics(_date)}..remove('water_ml'); + if (next != null) fields['water_ml'] = JournalMetricValue(next); + await repo.postJournalMetrics(_date, fields); await _load(); } @@ -205,16 +222,12 @@ class _NutritionScreenState extends State { onAction: _logFood, ), const SizedBox(height: S.x4), - MetricRow( - LucideIcons.glassWater, - C.blue, - 'Water', - _waterMl == null ? 'Not logged' : (_waterMl! / 1000).toStringAsFixed(1), - unit: _waterMl == null ? '' : 'L', - // The step is the spec's, and `_addWater` already reads it from - // there. Two copies of one constant is one copy too many. - sub: 'TAP TO ADD ${_waterStep.round()} ML', - onTap: _addWater, + _WaterRow( + ml: _waterMl, + onDown: _waterMl == null ? null : () => _stepWater(-1), + onUp: (_waterMl ?? 0) >= _waterSpec.max + ? null + : () => _stepWater(1), ), if (day != null && day.logged && day.kcal.isFloor) ...[ const SizedBox(height: S.x4), @@ -780,3 +793,82 @@ class _Mean extends StatelessWidget { ); } } + +/// Water, with the plus and minus ON the tile — `− 1.8 L +`. +/// +/// A separate widget only because the shared [MetricRow] carries one tap for +/// the whole row, and water needs two targets pointing opposite ways. Nothing +/// else about it departs from that row's shape. +class _WaterRow extends StatelessWidget { + const _WaterRow({required this.ml, this.onDown, this.onUp}); + + /// Null is NOT logged, which is a different answer from a logged zero and + /// reads differently here: "Not logged" against "0.0 L". + final double? ml; + final VoidCallback? onDown, onUp; + + @override + Widget build(BuildContext c) { + final p = P.of(c); + return Surface( + child: Row(children: [ + Icon(LucideIcons.glassWater, size: 18, color: p.on(C.blue)), + const SizedBox(width: S.x3), + Expanded( + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + Text('Water', style: F.body.copyWith(color: p.ink)), + Text( + ml == null ? 'Not logged' : 'Tap − or + to change', + style: F.over.copyWith(color: p.ink3), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ]), + ), + _WaterStep(LucideIcons.minus, onDown), + // Fixed width so the number does not shove the buttons sideways as it + // steps through 0.8 → 1.0 → 1.2. + SizedBox( + width: 78, + child: Text( + // NEVER a bare em-dash. An absent value says the word; a dash is a + // shrug the reader has to interpret, and the suite pins this. + ml == null ? 'None yet' : '${(ml! / 1000).toStringAsFixed(1)} L', + textAlign: TextAlign.center, + style: ml == null + ? F.cap.copyWith(color: p.ink3) + : F.n24.copyWith(color: p.ink), + maxLines: 1, + ), + ), + _WaterStep(LucideIcons.plus, onUp), + ]), + ); + } +} + +class _WaterStep extends StatelessWidget { + const _WaterStep(this.icon, this.onTap); + final IconData icon; + final VoidCallback? onTap; + + @override + Widget build(BuildContext c) { + final p = P.of(c); + final on = onTap != null; + return Pressable( + onTap: onTap, + semanticLabel: icon == LucideIcons.plus ? 'Add water' : 'Remove water', + child: Container( + width: S.tap, + height: S.tap, + alignment: Alignment.center, + decoration: BoxDecoration( + color: on ? p.wash(C.blue) : p.card2, + shape: BoxShape.circle, + ), + child: Icon(icon, size: 18, color: on ? p.on(C.blue) : p.ink3), + ), + ); + } +} diff --git a/lib/ui2/screens/start_card.dart b/lib/ui2/screens/start_card.dart index ea645b8b..ed42fa35 100644 --- a/lib/ui2/screens/start_card.dart +++ b/lib/ui2/screens/start_card.dart @@ -73,8 +73,11 @@ class StartCard extends StatelessWidget { final String sub; - /// Tuned per mascot. The wellness one is wider than it is tall, so at the - /// workout one's height it took enough width to squeeze the copy. + /// The height of the ART, which is only true while the assets are cropped to + /// their own alpha bounds. A mascot exported with transparent padding renders + /// smaller than its sibling at the same value here, and the temptation is to + /// fix that with a bigger number — which scales the padding too and takes the + /// extra width out of the copy. Crop the asset instead. final double mascotHeight; final VoidCallback? onTap; diff --git a/lib/ui2/screens/wellness_screen.dart b/lib/ui2/screens/wellness_screen.dart index c9267e3f..29bd2179 100644 --- a/lib/ui2/screens/wellness_screen.dart +++ b/lib/ui2/screens/wellness_screen.dart @@ -208,9 +208,23 @@ class _WellnessScreenState extends State { asset: 'mascot_wellness.png', accent: C.domMind, deep: C.teal, - // This mascot is WIDER than it is tall — at the workout one's - // height it took enough width to squeeze the copy. - mascotHeight: 118, + // Sized so the CHARACTER matches Workout's, not the frame. + // Two corrections got us here: the asset carried ~30% + // transparent padding (cropped away), and what is left still + // has a soft halo above the head, so the figure is 87% of the + // frame height where the workout mascot is 100% of its own. + // 145 x 0.87 puts the character at ~126, the same as Workout. + // Not cropped tighter than this on purpose — the halo is nearly + // opaque, so trimming it slices a hard arc through the artwork. + // The 118 here was originally compensating for + // ~30% transparent padding baked into the asset, which made + // the art render a third smaller than the workout one at the + // same height. The asset is cropped to its own alpha bounds, + // so the height is the art's height and the two mascots read + // as the same size. Still slightly wider than tall (1.03 vs + // 0.93), and at 126 that is 130 px — narrower than the padded + // asset was, so the copy has more room than before, not less. + mascotHeight: 145, onTap: () async { await Navigator.of(c).push( MaterialPageRoute( diff --git a/lib/ui2/ui2.dart b/lib/ui2/ui2.dart index 4a13f8e3..31742fb2 100644 --- a/lib/ui2/ui2.dart +++ b/lib/ui2/ui2.dart @@ -8,6 +8,7 @@ export 'app_shell.dart'; export 'charts.dart'; export 'grammar.dart'; +export 'live_hr.dart'; export 'paint_activity.dart'; export 'scroll_hint.dart'; export 'theme.dart'; diff --git a/test/ui2_router_test.dart b/test/ui2_router_test.dart index 8456b959..01759882 100644 --- a/test/ui2_router_test.dart +++ b/test/ui2_router_test.dart @@ -27,9 +27,9 @@ import 'package:openstrap_edge/ui2/onboarding/pairing.dart'; import 'package:openstrap_edge/ui2/onboarding/profile_setup.dart'; import 'package:openstrap_edge/ui2/onboarding/welcome.dart' show isEncryptedBackup; +import 'package:openstrap_edge/ui2/screens/nutrition_screen.dart'; import 'package:openstrap_edge/ui2/profile/devices.dart'; import 'package:openstrap_edge/ui2/profile/profile.dart'; -import 'package:openstrap_edge/ui2/screens/log_water.dart'; import 'package:openstrap_edge/ui2/ui2.dart'; /// A viewport tall enough that nothing under test is below the fold. The @@ -148,7 +148,10 @@ void main() { }); // The hydration reminder says "tap to log a glass": it has to open the // control, not the tab the control is buried on. - expect(screenForRoute(kRouteWater), isA()); + // The water reminder lands on Nutrition now — the water tile there + // steps and clears in place, and the single-field screen it used to + // open was reachable from nowhere else. + expect(screenForRoute(kRouteWater), isA()); // Payload routes that predate the five-tab shell, and that // `resolveTapRoute` does not carry yet — the destinations exist here so // they stop landing on Home the moment it does. diff --git a/test/ui2_tokens_test.dart b/test/ui2_tokens_test.dart index 2d0dddb0..465025ee 100644 --- a/test/ui2_tokens_test.dart +++ b/test/ui2_tokens_test.dart @@ -224,7 +224,6 @@ const _notComponents = { // Where the hydration notification lands: a Scaffold route that reads and // writes the day's journal metrics. The one control on it — FieldStepper — // IS in the gallery. - 'LogWaterScreen', // The coach chat and its BYOK setup: Scaffold routes that own an engine, a // 120 s network call and the keychain. `CoachFigure` — the part a gallery can // actually hold — IS in it. From ad35bc3be81344e7a6cd4d629752f2ec555c53c3 Mon Sep 17 00:00:00 2001 From: Mohammad Abdul Sahil <127765312+abdulsaheel@users.noreply.github.com> Date: Wed, 19 Aug 2026 21:17:26 +0530 Subject: [PATCH 2/3] coderabbit was right on all four MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - the absence text was stale: with no reading the card only watched liveHr, which stays null through pairing AND connecting, so it kept saying "no band is paired" after you'd paired one. selects those two now and passes them in. - the trace froze after 90 readings. length is pinned at the cap once the buffer is full, so a select on it stops firing while the numbers keep coming. there's a revision counter now. - two quick water taps could lose one. it reads the day, awaits, writes it back, and post replaces the whole day — same race the wellness screen already guards with _writingField. - the + button was live with no repo, where _stepWater returns on its first line. a control that does nothing is worse than a disabled one. --- lib/state/app_state.dart | 8 ++++++ lib/ui2/live_hr.dart | 27 ++++++++++++------- lib/ui2/screens/nutrition_screen.dart | 39 ++++++++++++++++++++------- 3 files changed, 55 insertions(+), 19 deletions(-) diff --git a/lib/state/app_state.dart b/lib/state/app_state.dart index 2f7a6a9f..64246c8f 100644 --- a/lib/state/app_state.dart +++ b/lib/state/app_state.dart @@ -3052,6 +3052,13 @@ class AppState extends ChangeNotifier { List get liveHrTrace => List.unmodifiable(_liveHrTrace); int? _liveHrTraceAt; + /// Bumped on every appended sample. A `select` on the trace's LENGTH stops + /// firing the moment the buffer is full — length is pinned at + /// [liveHrTraceMax] from then on — so a card watching length would draw the + /// first 90 readings and then freeze while the numbers kept arriving. This is + /// the thing that actually changes. + int liveHrTraceRev = 0; + void _onEngineState(DeviceState s) { // One sample per DELIVERED reading. Keyed on the stamp, not the value, or a // steady 60 bpm would record a single point and the trace would flatline @@ -3061,6 +3068,7 @@ class AppState extends ChangeNotifier { _liveHrTraceAt = at; _liveHrTrace.add(hr); if (_liveHrTrace.length > liveHrTraceMax) _liveHrTrace.removeAt(0); + liveHrTraceRev++; } // Bank the name the moment the band says it, so it survives the // disconnect. Written through `cleanDeviceLabel` for the same reason the diff --git a/lib/ui2/live_hr.dart b/lib/ui2/live_hr.dart index 70cd220a..d018668b 100644 --- a/lib/ui2/live_hr.dart +++ b/lib/ui2/live_hr.dart @@ -56,16 +56,26 @@ class LiveHrCard extends StatelessWidget { Widget build(BuildContext c) { final p = P.of(c); final hr = _preview ? _hr : c.select((a) => a.liveHr); - if (hr == null) return _absent(c); + if (hr == null) { + if (_preview) return _absent(paired: true, connected: true); + // SELECTED, not read: with no reading the only thing this widget watched + // was `liveHr`, which stays null through both pairing and connecting — so + // the card went on saying "No band is paired" after the band was paired + // and connected. These are what change in that state. + return _absent( + paired: c.select((a) => a.isPaired), + connected: c.select((a) => a.isConnected), + ); + } - // Length, not contents: the list is rebuilt on every reading and comparing - // it element-wise on each notification would cost more than the repaint. + // A REVISION, not the length. Length is pinned at the cap once the buffer + // is full, so watching it drew the first 90 readings and then froze. final List trace; if (_preview) { trace = _trace ?? const []; } else { - final n = c.select((a) => a.liveHrTrace.length); - trace = n > 2 ? c.read().liveHrTrace : const []; + c.select((a) => a.liveHrTraceRev); + trace = c.read().liveHrTrace; } return Surface( @@ -122,11 +132,10 @@ class LiveHrCard extends StatelessWidget { /// No live reading. Three different facts, and only the one the app can /// actually see is stated. - Widget _absent(BuildContext c) { - final app = c.read(); - final (String why, String fix) = !app.isPaired + Widget _absent({required bool paired, required bool connected}) { + final (String why, String fix) = !paired ? ('No band is paired.', 'Pair one from Profile to read live beats.') - : !app.isConnected + : !connected ? ( 'Your band is not connected.', 'Live beats need an open link — the app connects when you open ' diff --git a/lib/ui2/screens/nutrition_screen.dart b/lib/ui2/screens/nutrition_screen.dart index b2babea4..17603379 100644 --- a/lib/ui2/screens/nutrition_screen.dart +++ b/lib/ui2/screens/nutrition_screen.dart @@ -107,9 +107,17 @@ class _NutritionScreenState extends State { /// step down off the last glass lands on a logged ZERO ("none today"), and a /// step down from zero clears the field, because absence and zero are /// different answers. + /// One write at a time. `_stepWater` reads the day, then awaits, then writes + /// it back — and `postJournalMetrics` replaces the whole day — so two taps + /// during that await both read the same map and the second write silently + /// eats the first tap. Same guard the wellness screen already uses for its + /// journal fields. + bool _writingWater = false; + Future _stepWater(int dir) async { final repo = context.read().repo; - if (repo == null) return; + if (repo == null || _writingWater) return; + _writingWater = true; final spec = _waterSpec; final v = _waterMl; double? next; @@ -126,8 +134,12 @@ class _NutritionScreenState extends State { // map back in is exactly what made this un-clearable. final fields = {...await repo.getJournalMetrics(_date)}..remove('water_ml'); if (next != null) fields['water_ml'] = JournalMetricValue(next); - await repo.postJournalMetrics(_date, fields); - await _load(); + try { + await repo.postJournalMetrics(_date, fields); + await _load(); + } finally { + if (mounted) setState(() => _writingWater = false); + } } /// Removing a log is destructive and there is no undo, so the entry is named @@ -222,13 +234,20 @@ class _NutritionScreenState extends State { onAction: _logFood, ), const SizedBox(height: S.x4), - _WaterRow( - ml: _waterMl, - onDown: _waterMl == null ? null : () => _stepWater(-1), - onUp: (_waterMl ?? 0) >= _waterSpec.max - ? null - : () => _stepWater(1), - ), + // Gated on the repository too: with no repo `_stepWater` returns at + // its first line, so an enabled + button was a control that did + // nothing — worse than a disabled one, which at least says so. + Builder(builder: (bc) { + final live = bc.select((a) => a.repo != null) && + !_writingWater; + return _WaterRow( + ml: _waterMl, + onDown: (!live || _waterMl == null) ? null : () => _stepWater(-1), + onUp: (!live || (_waterMl ?? 0) >= _waterSpec.max) + ? null + : () => _stepWater(1), + ); + }), if (day != null && day.logged && day.kcal.isFloor) ...[ const SizedBox(height: S.x4), StatusCard( From 4eddeaae795d950cf1ab6edf3f6ac7d5d112c23a Mon Sep 17 00:00:00 2001 From: Mohammad Abdul Sahil <127765312+abdulsaheel@users.noreply.github.com> Date: Wed, 19 Aug 2026 21:36:00 +0530 Subject: [PATCH 3/3] the read can throw too, and it was outside the try MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit my own guard from the last commit: _writingWater went up before the getJournalMetrics await but the try started after it, so a failed read left the flag set and both buttons dead until the screen was rebuilt. read and field build are inside now, and the flag clears unconditionally — gating the assignment on mounted would strand it on the other path. --- lib/ui2/screens/nutrition_screen.dart | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/ui2/screens/nutrition_screen.dart b/lib/ui2/screens/nutrition_screen.dart index 17603379..dcee426c 100644 --- a/lib/ui2/screens/nutrition_screen.dart +++ b/lib/ui2/screens/nutrition_screen.dart @@ -128,17 +128,26 @@ class _NutritionScreenState extends State { next = down <= 0 ? (v == 0 ? null : 0.0) : down; } setState(() => _waterMl = next); - // Drop the key rather than omitting it from a spread: `putJournalMetrics` - // clears the day and re-inserts what it is handed, so leaving `water_ml` - // out is what "no answer today" looks like on disk — and spreading the old - // map back in is exactly what made this un-clearable. - final fields = {...await repo.getJournalMetrics(_date)}..remove('water_ml'); - if (next != null) fields['water_ml'] = JournalMetricValue(next); try { + // Inside the try, not before it: the READ can throw too, and with the + // guard already set that left both buttons dead until the screen was + // rebuilt — the flag outliving the operation it was protecting. + // + // Drop the key rather than omitting it from a spread: `putJournalMetrics` + // clears the day and re-inserts what it is handed, so leaving `water_ml` + // out is what "no answer today" looks like on disk — and spreading the + // old map back in is exactly what made this un-clearable. + final fields = + {...await repo.getJournalMetrics(_date)}..remove('water_ml'); + if (next != null) fields['water_ml'] = JournalMetricValue(next); await repo.postJournalMetrics(_date, fields); await _load(); } finally { - if (mounted) setState(() => _writingWater = false); + // Cleared unconditionally; the setState is only for the repaint. Gating + // the assignment on `mounted` would strand it again on the path where + // the screen goes away mid-write. + _writingWater = false; + if (mounted) setState(() {}); } }