From 6f330f777d42adad2648cb5dfd8825c82e7ec8c3 Mon Sep 17 00:00:00 2001 From: Johannes du Plessis Date: Thu, 4 Jun 2026 16:47:35 -0700 Subject: [PATCH] fix: tidy agents home + mobile logo + PWA dev/icon issues (#1419) * fix: tidy agents home, mobile logo, and PWA dev/icon issues - Remove recent-runs cards from the new agent page - Scale the ASCII logo to fit narrow viewports instead of overflowing - Serve manifest in dev and skip SW registration in dev to clear console errors - Use a flat, opaque apple-touch-icon so iOS stops adding a black border - Ignore generated ui/dev-dist * feat: add send button and prevent iOS focus-zoom on chat input - Add a circular send button (accent, spinner while sending) to the prompt bar - Bump textarea to 16px on mobile so iOS doesn't zoom the viewport on focus * fix: polish prompt bar and center logo - Center the ASCII logo at all widths - Prevent iOS focus-zoom via viewport maximum-scale instead of bumping the input to 16px, so mobile text stays the intended size - Give the model picker a chip/chevron treatment to anchor it next to the send button * fix: simplify model picker to plain text + chevron * fix: tighten prompt bar padding and shrink send button --------- Co-authored-by: open-swe[bot] <215916821+open-swe[bot]@users.noreply.github.com> --- ui/.gitignore | 1 + ui/public/apple-touch-icon.png | Bin 22317 -> 14829 bytes ui/src/client.tsx | 7 ++-- ui/src/components/agents/AgentsHome.tsx | 34 +----------------- .../agents/ported/CloudPromptBar.tsx | 26 +++++++++++--- ui/src/components/agents/ported/Logo.tsx | 11 ++++-- ui/src/routes/__root.tsx | 5 ++- ui/vite.config.ts | 3 ++ 8 files changed, 44 insertions(+), 43 deletions(-) diff --git a/ui/.gitignore b/ui/.gitignore index d782054e..fffa2feb 100644 --- a/ui/.gitignore +++ b/ui/.gitignore @@ -10,5 +10,6 @@ count.txt .wrangler .output .vinxi +dev-dist __unconfig* todos.json diff --git a/ui/public/apple-touch-icon.png b/ui/public/apple-touch-icon.png index e3ac9b264d628d10246cc0d0293179d53eb960c6..7622f14b2e1cb651a9b05ac6feb8f29ca934114a 100644 GIT binary patch literal 14829 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 T!JGT=00000NkvXXu0mjf(S3Qq literal 22317 zcmV)RK(oJzP)AqeWqqJA#!A?u1$2RfC%b}tAd6@cJ%`}bOl6R zMGk?SAjlD55nU2c1VKzlLJkrFBqW)$@2>iOzxwyTr>CcTrhBHlXC|3W)xWM+uU@@+ z@71gN_jHVmf5thm3v*yx0e0cVAD_C&xB`qz!7j~#aRu0=mw$Zn;|ee?1G_W_c3}nB zrPqCY@;MHSD?pAB@4D+{mtAJMySrz`6N$O0bn3mSRO*Ayx#O+Pel(lS zo}SKRPRm+*3hItaCez2HlF9cbkZ)fy|r#h*0~#OHhU53K7zUf6$sF8JPd;a z;|fp>^C0Z;cw#Pu@Be19*&D32Pg%_`M2z_y@*g!u-)%+qL|#;lXc;@M zXd_Hv1fIg;OcdUYc(M_9A%y;VC886)~<>~qmP0g=OXT9T!n0LfF5N5yH!7mth1ud%lk|upNSZ=)H=5+o3-Ce zq*8~XgKtE-%Y_P8dZ*zFJQ>wQDtWrgX6|ooZC#PDuQ0 zWAu`iXwypP?0vYNJ>3{VwU`pl<9FIstzu$M zsVI6PcEAPMwEa^$o4MfGXP=D%1(gBG&J~Jhv$HFJZr!qVGW`2Xk9_x0uVeBzL^S8u zYw!9NWJUTEq{OGUpZF{uLFf-#gbQGR37*Ix6y{MZ3Q*Xhn!$_CS`Xw*FK$!fs?`JG zq40^2hykt0&W)PL4M!e%y`ImK$KEsN8^?qvw*T)M+O0sS0|Q>o)r9 z$G!q!)jB#l=47nBr=_`RfiaPHjc&GAt}U2a!=?h^9&{|c*nVeIQ)B_&Hs9Ue-o8`3 zWgfE%prVQuGwD?N%abQhS&509f${*MzD<>jb$#g=E_S>O6sy5Ox)d%IBT$4hrc9Z# zGLubzSw#Fg$Qb=VZpIwtiXB*cVm{&HJe+tW_;=vppp&2hn0)*R<3LuewAqgz{ApH8PT zU$It6oqsSh7UGyu00R@VV@JpSsZ{1Z=zzESIz(1u=g6;3Aqv%8DVOAd2Fw6B2ze+J zgM5fDC`nKsJcFvjd{9&P9Ljru!v0|%J7$>epSqw5?1gLN1iTgFj9C7&)|Z{awBsd# zQRjh4m#T`IplngEQS%?Ebn5=?J9fMcK#Djf!dOrMFw>YsB5~@pX;Yq!M0D71aIuYy ziNzUfMB>`{xZS2r`&}xT#7&WjaN$P#97ekWfQPEtOnP2ZQ}aR**XLzcEj*0ChK=@R z8YX>p?rw5>TW**=qD{>UlBwj^ovL6*F*1rjqnS8;{D1zZIh)PgX(Hwujo=}-_C}1e zD~u71MCaix^3NYzy0nRUFk0t4>J-4Jfz=n&)zvlkgMaf^Pr-tm-EiiOZwobHITrG) zzx?YD{$@u<`yood6OWo8t|5}qr2sf<@yaflO#bzR2@@X|F-O*LuH&difCI4pM@^kP z^~rcV_CXVDu{r`|lpS)^C;%)yY0+3Lc6M`fGlX9n_f>|n>=|$1i!mL>dj#V*beY-Q z((-6`tebyUN~Vq)C7{repb?FV4;h_^#Xp7n{hyC0G2?@K4q!9(Y53q(r*%V@TlQ>i zn{Zbmnf!DPC#!PV`Xz&59t{eh*cnYKk-VU#x#b6Rzj?bu%Yk}v)`^1!Vx7YRH~=8{ zd8t~osVMHDS>bSR%~Sw@fHppT4K9$FI@vc zo!QE|Tz}Hx$3UG0oXyceFa`ZB&CR!@QppQM*jGnf{zjSrLjvF*UKnYP-XPH1iA&!+&PP&6t6vW*RO!JZ$GBBt?lOyhobuNcl2VW3ov@AtDLf0 zct$XW($?0(Kd?ClBdZDmGK~t2Q~<@Kbn|Pk&7C@J>g~wy6u}lKakYYNEm<-)*`Qh* z+QakFWdYCX z5^$MW7rd1s)!uDn=H7emeftk?xuq3-sQ?X;&AJal$#;+sYn}Y-r_Z@nj2wjt`k)XT zA7MpJFC%;#;eBR+hjYUx-{r=|!9*Mh#d!Qayc({72hqtGMby4 zFX`^?J_Y?@L(6SZXsto0rvmu>>%|veJYdR{DK}S3tMR?7?bR6gaiu8FXSzn^TPtsw zIC0|l|M)bhW|4T&nKpZgGyhAx4*m&bk&H+^#eLu+= zht8ezJrNgm&Tv1;H~7{XJt(L(LX}5DoXStEJNEC9=IC+xmJ%7~RGe~tB^rlN<#=ct zLcj4YqmKj8NYio2c=AiC)}IF`Q?;g&!dh#b)Ks(a)mPt(7aZTLHS$XEZA*y!_$4cM zuX56!8o0;!0e4{jRMc8K`_*r_XlwIT8(-VRn?r?rRdac*EkZS_0YTw zC%i*vgmn&X6zeVE7OxfA+~ru54CMZm4kJrmG5I^};=6Z;J{}kkSQtF}2FwF4n(0%? zx;_;RER^CQ=}}c7zXcx!Uy$?(>d;di-gWeyOCO-27PPmcYOat=dRt2890Vr3R0vj$ za8|7CEj34*kM4=ZE=EhlT1(7~C=Nf=iW?*d>=j+{(u%pQ&CTERq=n4zh5A0S;McM@ zMAmio9S7C2s@=*Rt3+ZMlG(R?td$_bLn4{ytk6&l3Bd?=n$XsE)ryrX=R(=Jh${S7 z1Da~00C0R%j7Mc=%{llosqu$aq8v)Us0yp!Bl7z#A{m2D zHR?Gq>)?a0zzz_Bw}2P$So9iD?4@>ic#K--C{gW$^vj7Vl*A??H3r)BZ?sl zMbd%l;`ZT|tyo#QQN#+#7#y2ZE339UT#>?E(n9J6?>i1rUk+5Vg3;#YceJR=!kS4o2$=XYA8EH=i)3BhZ()rLGy7Ofx zv7N*nq8D1t{43?t$iM~bS#In}lc)Uq<(FOFj2(c03OGh2)dwP|z888pT(!}nGyUS{ zzi=_`*Jhx)p&@OZ{D%MeX$7OgYsA%BUp}pGH}VU(L+!~55R4%Z?s8*@+^R^WA%&fr zana{5x)}M$aOXNy1wcP*u>a`Q-?@6)B3H+3c!5p&@#ol zpv(EUFeKp}Xv`H+(>JK75QeoO498T}lJ5c7Cip1kPyP`%ihY9iDGgGn z3b;Hj?pSPf4o<8MeQ(hU31MfQ`DIV=BWG-zS`I; z4b}D(bafIr_tT&LoT$|Kzas5V9GUgIH&s$O=JkiDtR@4&SlywrXtk9zUnW%6tzsx0 zCViy_st3+epbBJ2QENp%hj8MaiBLW-+^4nWlyh5Xsb@h6os7(@z-T@lp-t?r~r zlg|6dvB$UI77XarshWYnOO97{2QdZ)$l(e~fQ@}dz000mGNklQYdvsVyaLn)xwTF<#td$UaHvjOaVXaY^U$!2T7?-!itMc2{mwgYKMyWY1Umq~ zFYOGq1gR{V=thEMPfOC%Skya(sRRLpZMQu>QEA6|z;&ibN^LL~ZxHFM$ZEV@zH5~eYznm* zq(UrOOiYFSc2zJ7t3PAL%zwuGqt4~cS;fLZVMgDcZvB%;5@!Nb)h~=38|ycx8e)cJFN=*0EiJ8ow`}=x zdLzbKPKfd}_omxEE)i)qJ|k%pc(iG$vO@CczkFSm0$>T0zBss;^90Goiq3ERZWBg8&zeG zN+Pfg4rT-+iV!K`Bh#i$J5xsR<3LUVd><|e){@zSV_A=#fPY!mgO_E4Lk|r?mFx}s zlFea$JROV!RD{WsC-Mh&BO)4sau{$EK?eO)#AyqycY&~&RV!8=164SXn4PU?41(4? z<_$y5G51HvR|D(1j4XTw?hq_|e~8-DSmK6q*9P0Jg#{Nf2d((iOMi_4Y0{*LCn7&$!MR?NqeFW2Q9bD< z=PAJw$c8S#!PrW?%psiHarGlq-@`#M>CX?=vr+U6Mn`Sha|=-h*`x_mPCygfAPJWY z#eqYwGz|n7j2nIV6kwN!0m>Nes`@ZbixLuneB#*7(`qQltwxP^y! z##&nF@&@8qVg^R0|LIRFKZq7129l~WsC*9$pt&tXB_bla=ghs1ml61=_L3P|J*8t_ zKuaSRmkY3}!^rQpi2oi@0U3?S!unS`P`H%U_8V>Rg^Ey$wmoO=Ng1WQdZAGRr>GQQ zuFeDH@+A}W=bxWJ1~uB&)`~+$Nw9`g77BSwlQv|`a)a>Iz*BFkyxQS{>$-A)L#z*7 zJ-Rx<)nZ>nSlGT56_*BG@`^EyM!>d-6OI90O^BSR0sm;PP%Iq?RJw(=y5=o?BrqERFCIxG&VmKnfU>o9*OiL{entXE0modl|Vur{F87x>7P!?9Ua7&$iu zUCues17bbA6YD|GX;l#A`-=h4M37RQR_MS?r1y zw5c^vN{i0ep*%i8+2M|zRaOivi34LCnSv_jkyI2k*QX-jS^$Aoq6rcerpk&kv8Ac$ zkbCdF_Yld=y9`*q8XV8(`({-AIM(`AH%A?H)L&UFR9~QxD@|!BPkJ>}RkQfSONC<^ zM*b4T()CWV0lUKLs#4wpsj63`?P-I9wvh**SU-G8<^T=%?@1*@$*zKKfU z+YwmY-r5RtYNRKl^3ryZU#@d<+n=ob1j78gH=S(mc9Jo{5^*OYMn?x4lLMhgFs^q35IuKJzQat)A zjdRl4()vD73I)h7NEwbw9suyYLGfY9h!=jd_}(RRjEU^Ux{;2d1>A44k>)A|LaT%? zo@=4|V{*GdSodZ^-V5NTx`og5W#W;bDvsemUL)2z`kl5+^j$0oPcZGbcVHc9lD{&c?RHsM;w0mpF8KR6orJQ zujE8aDgZVB=M;TZA{Np$ZTD&KmQnVZf-}GYQw74`e_q!1)`9$nQT|3x@EfIl2FwwV zf&=~>EbvcPh`iE{8<{>pgBNmW`T^Q<4gDbdR`BANVo%0SR_g_ zbCw6nhC>yI#9e(@mj^15!NIyjZBT`Sx9~vfLjA*JoCWTnx!?0`(?s@~V8rBRVK8w5 zg(>r-DXIo|sn{wegaulM_XxZVVdP)=t8(hn=M%z%A=qs+7adZ@zVN)eUyXA>qQI?q z3%>UK8;m@M11|K#;|5QC8a_B(1A4--n3~*NNI%$s@xVD~EfzIDhalfOf8q&ohAGEl zWSMxFvTVQyMwWS%`^)vguWJvc1ZCd?gvf~y62T-qY%^bJRPE)d&lQwQ;V_DclxS#a zjvnq@j)@{5+iR{zDFvU>y(ReS16Uiq<(8WdG!ZkYpwFja!2`J3dJ1T>?ni<;=fAN}_&vp`ft9sXHw&{6Cg`YAvGQ+W+4?|%26`?tS+yVa-U z2GRCXqaHfV$zBsnwTw(%B4uSmyZXU-OLgQ7kqJ%MeL{2VTWb5rZN?>$atA5Z5cV-n z#o>Hn#mOw}sQXM-SigQ^A%lMUtlbd$4>~~g0PlX+yD7U|3u%BN);bM!oHa3 z)TvYXx0Wn7EOKiP2h;p67S{Alxds09URIi*u6YL*T=c^JHB~a{5&|2bMVO z8Nmo<^5m&+3$lYe70yi!tX!d+pjz3AAH189!*(}P8T26Ys6q2K{$xuIkAajOzMGZf z4|LMfG%^&H+XZqY${g_TBL_Gs^>#gk8H;IKTibyS{D(A0VEz&M&%zW|Db$5!RV);u zRjVy6E&H;rT%`3d0{C(OHLEX=s7al?Z%-^>Yk8PPw(t+=(^-=rG6MD-1`B(}ER|N; zqg;!{p*EN8mslID7ya{ojYF)!lJ@DzopvthI_Y4M-C99ppVqNom@r|&K9~g;LWP1V zA_gBM`M}0}A(!Fd9gd+tG?=F5rU4Zo*Js3&y(c<3YPyvulwqWa;jd12;w(@|2l+o6 z?=4O}Sn&p%EG}$qT;3K8Jr~!=r_OTzjM6v?8aGmFYs-EZErMv&dU;ml`vlXc6ci%P zdFw-9(-e*D8B~w%r%@yC+1tq5_aNEjX)P3hLa0nI=fbK%^WoPZN&$AH`?FSYyE1Ev z$ca#b2~p4EQe6kEQ_OQffC?HTV9}uv{^Ji+snM5eD;TwUkfCv?cO0W$b}?Ij4N7#( z_W~ei5c9z~zwgpU5Kt#fm}r`sn)b*8l*q6LZxF;;e^*@sq)!!~q-Yn)w=0CO+!ffktI0s{(umY)5BN2F`heJt^JwRnb6t_d5nY3h(l2+24!FvRQ zErXFaG!AX(?&)WqbrwT2&w7(vMX-j&d}KX&&B#j5KLXfU5dITzvYTAuOkyop$P&Dw zsF;%nByykOBk0ekwFNvt)?>#Q9*O|Wl!=&PnHDLz{vH_X$COF5DZ2ZF2^0EUgIZfi z5bzMVFk(Vrkr+|cbI(0*M1J|Xke+Julbelv^dKwyj_}oJA}e_XDx8CZWH&c{b;F!4AX$qhC%&A zi|H~&6(NAa+?YADX6;_oJ|>FOnv9$V;W}XQ$dRkC;Kid;@bh)Bf`@^-XW*u~Sp!oT z#S5u?dts(V`L|=|Id!(ml%^UX90O=(&pvo}C)gXY9xybNZ^k_3#R>qqw*j20>^^-D zc&vHYF_qb^)yPQ)IoWSY?-VhmhRvZlGWbx6b(uBALRpQp!5xB54Bn|q2yQG2+cy^n z@RJV~`22ygRf%TE;0A&><)v3bAb{H9qBFxI+^mX?ZLngMAqed!`KaGdWV7 zz(ueU@4#{G6u2pq@KP$g395E{EjUNaf!p)ZgN;lbHLEB%USp!wPO2LCQ1Zh*idDu^ zsC6X=?o+9~nxW{=7)3g&g60m4)evRW$n+MKQ*bce4=>CH>N^~v5Aik`Ba<;+SgtgU zfa8baOmON!;@=oMEL^313*oSi!h8Nxp!5@?mAPVt{Tr1Bn+6@K1^`ju@a7+Bzfhq$)5=2ok=+g!*&PStkHW(GZ;t{m{~o}O?@l;G@bxjBpJCN+mxYdIMsB0KCMF!~+4VfT$oJ6nxQVeXRg@ zKx3}hFTwjACo1F)2@`x&oDK65(ujH=!iES-79XZNQ}hR8SlE5w7S(HBGg<{ammzayBZ+3FpK`Q%A5}^xVOh4YpU>{ea&xDAT zy?}GDzLm7YWXTcJEY2=Ynse8xro{AN**ur5Nli#C7mzhXe1(^OSTBX@Yg^v}McI&VkSm$h8+< zc%glu&b4kEzWuG9B91wuP2_a!1p5|zcLpw6Y*YGVcb@TJh#tv_F^O2>_1#bJ>iQ zY&N?C_old$U=Zbv3WMZ7DChIlWlF6-=Z=?HV&IB8SS6duY)_^9pXPC&=3u>(%?($q03HBV z+&WyOTD3NjOl}n|2FvvxW}+l%m^f~wtZeGxFUpBzpg4l1(1?-I@hcc! zTx7Iwm9u^>ZS(tS~bF6_H0bivN! zWpAoHw!!(IP5;p!ty~MZ>z_CB(-qdkY)%;IOld_wXIPq|oxe67k8i;&vFGNb8HM5i zds18lHwRjPT5KXlJ3Bi!BM(g}zqoAQ+2WoP;SS+oyjR=6GmAt-KD4)$$<3wt!wvY= zE(kQN`CY55{P!x6``3xA=@RKkJIO*Zibsg@m2Ocb6{ssEvL1IDkFU4#!xx?0zCz`H zUIVUnC;SVvqAnE`)s?2ZqRyinsI#kUv(g`eNOP7B9}|@Gl=o8rRsY6?^;{bF)?063 zL(apC3Y%n?`0O>w_`fIE7l+%z30q2IuHvw%BJZ5hpC<}8XdQ%g2`u}9a7?8me|o^b>75Vn&q#HEW#LfL9w2DOUnK~1MD+cgnSGJGN#(MZ{PkZZp8|B z0C27E6be@^->C5asWDb;cH_oP8~S$HwMu*7W!Y)i3Bucs z(p@_6yEP}ya&4Ew927;e*3eNYo*E^R4XlAb|@7ux$;lq5G z;wH%npfNQg*Ijr0Yng1i_HTs4(Z)zR6E{4k%~qL-mrnfq-4E^WWcKc`+$yl{PTs@| zcm9WTzkc0F9KJfI6)ptxjf`2`EIp6=kDFf4N#ri76S+u;3<wwR-{0Zo=yj{&4iZ&f+tP`rS`izxo}7J0$mE4HcJwMOI> zSbg>~1zcr!ZoEt_76O(C?+DmSkg6!MjBF!};(>rRC#s6Y>_ukq23YXn-!MecMmQA9 zhR(Fe66^%aa8BsPX`K8n28LbCSE*`{M`E1GkBy>8??Y65K}4{_fqw=&oec0XfG5oZ zfYh!DV-XoHZ?Ga_b8GF?Iugz3*dE4S?&fM#jVL}ST1aLV0+89VWh;(YsHq}Y+h?4z zJ(VPtZ7tm}5HoWVF4<8PA`5{F8=VPgbe=b1ZHW|%9M(?9dx9f&bAqM!|0^Vg>z6ns zwc|iq?OdXKeHoXp6SOPf(7r?PA_{r*Ctk)E+6gQ2NAxE?AK$X_0$hr& zl!I+hdFFL1Pi(Z(Ll##!0cW%#NK+x)V92;jSZm~u+eGexO@u@Y)}`up3&T=%r#f|@ zK-2iHUAtxlhRDJoaN0SKh@O{`eFe6-oe9)0`;<0@M?4BC+Ji*+i$faP8C zijjNQ8CkfR{|~PEEq^f<`d-|%FI+9+^C&Ms`@QR&ELvk^(OSTv%sxw2Tl5u~zsAYp zS48g3rAyFv(JCiPa0S46#w8eY5e}Gd#T6>+WcD;QnY*a7T! zuD)hNJQ3e!MuDa~XGCGvN*PF;-a&G2Pz~}KXK~G#D+E>IatNF;xtiXD{%>!oe9nJ? z?qF&7|4_sEm#1prmW|ya3!umyxr6$^&||NaG7yW!wq0}e)i8m^3qP$D)|)#(zX=tu zz9WQlLBfvKdLJsgb?eqY2r8s*pUMz>p@z_wdGT5qk{Uws5A6A#V6b1CsNs;qLj~Km z9&X%&8&o>+eqwmYD(^iUrLBAvTr5C9c5L7NJPaE*14atI!(QOgK%QCW^L!L5K)w#w zpdwDP+yPLTUA1b}@2%Ghltw`)K0vDWweZ6w(N;KFf=zD|;T7pV6UsBFQ36oOyqy|Z zjT@``;6hgNSKsAlRmo_Lh2ajca^6%}WJ z$f`}>ci(-#%Xtj|8Tl}=6y+mCmIcdp!+U}==HNX+i!DpVaFxK?+9|okVy^8Fxobt< zIF_Zmw_#|iU;~e$7fn5Ls&fAW_x~20g78}|22vpf%=eo>IWaiATD1h@vvxQR8>JhG#J++l0PErdsKe5QY21$S)xCyln)MRX`W-;jmopnSZuo6K=s_wJ3lM^60i(jYYEzeE?9`|eXGv{|^=(o#^asDgPsee7^oTt<2EM6}aq8OR{UX!%uzrIjvCj6F^>atDggEhw!tg68Tg+LhhT0gKCXLZkz}wm000mGNkl*=J%Mkk<%hq5qzNtz6gP zS-W-(WK**^b6_UINOysen@UM{p`-$+syJ05a5zA52VmafYBc%y6OTPHd{T#xfiLCW zzPl6tMb_}K)eplA+zOqHGXZ}vs~)3R6@TEaCGJgKM($cI(#`Kz*Aj7^aXt3f^*_TnQlwx_s~UQJm&gO_McRjWFm}1KT2+G%0oZ6D!m(KQ z<_j+P+%vc-gE!~WSb54VV<5|xn?U~og5Le>eGPnnfeXZZR*j~y1MmfU`lT2DNKIpX z$q3)8WPPnG_kds>GL>`e#hkk&>a7?hxtTb#oI1Lb*0hT}$b&JR-(tWrWz}GQWt#g{*P;Smiv019E1q!9rmXd@4=JY6wi-+_P=XSJ zl~(|83%A8Y;*e&Xb!lM9;2@X!>CbL`h=Z!{joKi1^bY-)vDS$tGeCfPKrjYD086D( zRY3@%s8Ewt@BzGtM~p&YP!!OaZGbW8tib!%`wDBYl=(w z9PmY$${-)U2MFgx&}dXdRnZskIxsR&;i-a3Unl&alDIhwQl-kA${uYZr_8o;5Oyx& zg|!mLCicli9Nv5`ia8XHYl`4J5FQ2t5RP+om^<+?5}sr55YPYbz&Nx`Yas(eU+Kjwo`UnzG<=yg9}8Vr&gu0{iKZ1)F(gr$tSzIJ6;Q6`lc13?c1fOWNCVe>dF=QA3wi$ zrbts$X(cGtkCQ1?->5qOgS>~R?2ju_x)64xCA@-(Z@_zkU#>I4ALOb4ydfZ6U0ttz z>QkTm6$Yd5`yBvzYN>I2LNF$U0R&mHgXW>lnCs%&4)=G@W%pqf{ zUB_pZFQ*Jr@EIwa8S7jIrZC)I!?fg}5S^0sg_TZ#4HdM>)Crul9jBi<{fsjgC6k#h zwDk+vB?j39!!9n&3@e?|qVhL55KlA%<0}*Z%Ndm!b)dE~U4~T6zbO0YLE^7Sd0;I> zLLL^D>zR+jqJ{XWjA6bw&18+N>oKwrX9AlOjAEF2mtlnc5b1QfWx^mjQl?k^s`=wv{(rBWF#Iu;D>ZyH17g71%Q~37J6{&*NjG4?B5L4fw0f5{>(Wy%+>aUYB24?`!lv1Y|oCW4*vY8ml z4G-W!zcK%8x|8?sEfS4rpEj!%@k0vDMq$1WvN{x|; z6k1G;DwexH0a087hqdc)MS9 zkdGOpJ!~dYE6!!H{a9-qPS}!g;u5P@uWnzqY#Fzq5EiKwzyza{B5#p_0s)OaxV-d| zRA1HS0VV5G4hnz`GX5DXnD$vH{-0XM>|^9Tdx?KbY>Wp54DZ1S3twABxCsbE)yz#dgY|Nm-ZEi5Q0_sT%o6;Sc9DnivW(@z=z`TRtSXr& zJ@7Jo8zq(*2Vzap{9S&I0nJY>e`>+Xl`ms-NuqyJRr$^u#@W9Jv&A$MZ>bnyE7ek1 z=b&dSa|f{gPt7vU;Yw76gC@^9>&$zS$vBB2)QCrZKj?4v7kST2Cs7a@5>${4tNNr= z+CCK{P}rkc@Cq>@SkO;JPNZm?z8laX;o(d&69ZGP}6v6t+pdSdr;4n3$9~M`*3sBS!oC<}V zU5ywGO6q_B3jgkj#~+{n=9_Qu=Q>jWrV(aJ1>h{nLPj(V9;&0YK2Q@=$!@K_ZjjyP^o!tQU}XS-l3MI^4Zj zYM-N(4q9F5L3&U`6#}$HoSbl=$cGLv zGBrxOqkR;(5;VnEtL#GoW=d8 zkyqBPS$@vB=lse#8+YpB=$JyJ<{40EP1`#DGXuQm_yd{sdMf4n8Hm zG4HaUl*Xc^s~cE58N&0vy`22>JB++%Px1F;Qt&BM0#_|(3h>k;yJwrqiLkn7!{ykg z#R_jBDjlcz#g;;;D(M@_qs7wgH%a6Zhl(8cHj(KqP9ji-N^lGXrq9j<0Sj?ldHEGT zMLq$8mVz}-t2zpQ+T!B?=Nx2G&;p=JL-orXNC{+J;1Te0-6Sy>H8BZ3C2zm&XB!?_ z`smM4H!4E}L{5uXIpF{&pL?guk+>=1ugn!}26?(27P*uQkq2mSrX}ix2jhQ*0)HG< zc&}Cw%Cd^)DN&ox_RFZ6K6TCoWnLKu%L?h?$^t5aXy8sCFd2eB$H~7QVPyZwPFkDL zFpN-jS7;&We(cf5fA+K6Zd+%Jq2;H{@eGg_t?tEF@%RA;ifacdL)(I8lXb#lr10yf zX*j3+1G+eP96#If_UIM+gnMP{@*nb2ayVD1ir>)@bLdBJ|61*fdDUZEif z!d-xK%Hu?a$}|ziVXrnLe>TI)zZ`DlpWn{269z;(gXb+X!;Go{PKCfgs695#&C`)s zUn4>;yz$2CD?WVe-|?0)2_7Zk0>xB#@2|Lt^gq}@Ffy1i*R!$&%UT&=5flewa9+ry)hfs;X2st*LO0-V2xLpKwtA*dZbxImpVf~o=tLx(sium^xX-g5oZ+f~ju*vj9%&B&im zH*(-qC;W=V#3m6cG0c_JTp_}*uN1+?*ORh z78SqtnrmKsbm`KPw?crae=s1e%26m#drg2aK!7L=XU}qS&JiM?f0xL`e=hRXqeQ;` z9)sJYp|GubdMYKKm?uHdXH7HmzL{1&I!olA-frZ)!>wF=BDcvxgTQ;#|MTdhw_khxb^QM+lFm5_ ze{cp6e++^f?$?6y2-D!ZRQ2$^tLl*lhTRuup#mH{E7tNGA@I$-mc|vYrjI@L*t=fc zwCVTxF5{UhI53Q*$&C`a7P(^I1UqHlipok_qdft_ECYQE4A|QB>!1DbhyU&#xI{6O zDf~&yi3Tl7$}OJO)_Yf_v`edaTtxiOhc zb)s%OjB}u34kS{Et_v@^=w|Db0#D&jz^KM73@wnPRTMA3{Govc7*#_H!&3kU5f6Sf z&N^d26wd^Cg88aC{>USbY`*oUKe&^8_h-~hIF;c7ZQ27ud{n_%VTi6?%&;QR|d`y}Q`!G|oF@bF6)i1L+D zXaL%W&8b?bK8bMR&%#1QNMj+XsT6+xu>#Y?F~=Np$Lg0?KLw)4LlFnCofp;YdPSpw zD6U+wV%Y~j_&2wM0}y^g*?|Jsgth+7FMWQ>n1lRdL-6(jphFMAs6+1`_Vh}i&Wakp z8&FGeP{H*mu12w?;cOtu_y5KFZ`ktImbGE0TBhU%@i{0Wv=JK9dNwig4&>w~Sg0Lpy9f_B0O!}cXEsAH?(_F3{DP9t9^$`D^sl`mR$ z!dT#pFXxO`kRRmfu;UK`Qc<&NFqcB$H{W_|?a?1N`g+s>;T9h0C5=bR&j0`r07*na zRIr{<0J=U7*PZ_RW|XN6=H#F(JbjjDC=gT{YNY@o#yGe@p@uR|NpNo)b544!b=}*y zZ|}P3!i%nt$6_5M5cN#z9>K7hjA67UXvUEgalk?uWAS+V7eD`n8+L4O?}i7#18)y> zq#HcP4&W7lGL=P}-vNqH47pf41+cJ>*a4hXiw|9(gyI$ml*KR+XtU6di{EwEU2Ctt z<~!7K=toVI7(WDI1qi4Ck=O^Y8=y!{O(6}1KL&}9t1-!W^S<%i%{SeAtsBBu z3xID(K?VPGNL|M})sX|LMsB?6#%t$Ye)+S`xR@A$up7!u7*lYeAykvY0ytg;dh{#X$F}%8W>|}WSThtv!DIVop;`O3+l(iF3f>De}2c!pFRJxzXl7E zYBhl)MmNlSH_9;xe$qNkJ7>}sW*@r(s%snSp#TDV=bQ!u$ks2YxD(W1pa{fCeL<5GoJfWdpP19S;? z0OTnvaD9XZlo2xJCkmU2)*6Poh=9e1+6rnB{3QID0LSEn2481|0!Yj`jh%hgS@$iu zckyjd@ET650#svJaw?eKpdh9$OF!ta;^kQ6-X-_mdd3;2-zQ>X@CtfhG`qP2Aks*} z?cvuP3=AkmNW|7jKr1_=zK|ELynu)>BSBH%y zK#(6>H_@mo2b?P89d}$_5!C;J1{gvOM|4mE;e=zDY~rjl&%FPR+kf^W&eZV%K-7!N z%{{0Ci_nIER*}LwRj3U`QV^4sH$>C+2a0uYCXi!yHT8OAxG5p7REFV@;EG}WJQ-B*$Rq!5j zv+7Zx#{YGlYEV}6SM;|i!*Yus54Z%M+itz>ho_%$+WjJd0R#wSL1LJDw-|}T4WhTe z=t&Y1jYqwLsTX387ZQw#F>9@LX$(exj+29y`|k`<34FBH;!N;Q5B}iBn{Nm@IL~P2 z>lLwt^+Mf1ysm*`4R5HMZv4S_Klv~J@`$Q|7vR6zjO$L*>8zy;@Bo|=EBv|xCk4wd z&enO6Ad|zJ)L^|K*qn@ym=T2^+nZ&I+aQ;~xxgQap(t@!faH0fJ@3hR^Dg~nDwS%7 z{tSkG$n7L($eqVKR?GooRFcVL$EBBEdevvKwho5QIWO=%K!WI9pakRu?vP|40|2pb zf3S@R)B!;C40Trk5|7;#vX9+e)v59S!A2Tcemx?NhM20-2kcU-J$P%Ixbn)Yp8tnW zeEiC{wryL_{=0I7G}LAKGyqtay5KHE`sSN&uK&b8{KFMjU3Jy(A#5?UVZCwib=nCT zpz(`ij_?S)@TVd2JTE$a09*F}n(97AH~=;?Ov_?Z6T#iCVi(Xj2;do@8#@4*!>usJ z{GtVm)*mu^_PmuVSM>dvl@MD4Qm27W+kl}e8p65JMNfI6v8rfX`O-^IA3A5w*XJ)> zxE^j#!Yc0hMJV*$5dJvklLU)t`5DtNfTH+^uGCK?^$!81bs485QimM?MjyL@`0G*r zhdZ2n(puYv0}!@E;foOXh??l==;%D+h{M0Tbm`J1U|30nB`X`ozLKNYrLu7Tii2rg z2B{HJ2mU|u$fJu6f5$tn@96A=QBxYX9&yeKKZfBtV~rh@z$73O=mFa=fM5VXqe7z< zK(O6$vJMNHL9`&iyF!?73@iv4)P=pG8*K^f7qJh2_``Q!f5Q#eClV>P19b4<2jNN# z4q8`;(JrjDo_stW@4VrLYi~I2xMSz5bAD~H&N%N$7uK^2!p=N)eMw+>;0oii$6C5Q zu!@exvDPFFhz~Rk*j}$j%vvDhn!${-7=*h3W86AR>(HgD-4+pTupTD%h0lLs`AH|8 zbm`hPt6xx5jT-R=AZ4dHXYedbWjlxf?5C!yVa2P2C;55M>&RZbongydWDw@P0m}dZNo8DK1 z#n&EHuN1Mz9((ll*>mQ6`~C+WxQ7VJMiuW#LWv~*L7n(o@gEj7S61~^{T{GjMRf#Z z%vBd;b2a@EX953%`Ttx^Ei|K2eQ&IK&k`SkF5Dk*t69VRQ4!18pQ|7^5;TUB= zN>{UEL5nKp2eKag<%9EQ&z|-F9$UJU|8XMS*dFkYmm8fTiYQ%JXzmCJ5kac3{`_4j zgWfRys2qs^>PKSOU`&T&F>+)8jsP}=GXSjt&jU&4oVOT8T{qx-9(7cV#7QTfxa9ov z&i}@yO`BGs|F8q_4;#m>is1FvUt4wl=PtPH#FI{3C@^4%ba5Cvv9KL5Y+O6u{CL5K zLUYH*I%72*RS-_DjNE5L6(Bcla)MbWR?={Rz#Li#iQyeV4D8__&tNAI+#D!(2e?Gi zbJNW?y?np{`(N?EFCMs?of{Xitl?k<*|5r|Blv)THEi^U9(r*8KKmSSI8b@o-HR~3*u&``gJNW!I0jD>G9g6Eq8o|8+|A{pt5J!UoaN6|$oPZj*Kx7cE zNWBuov6ClYCpwMM4rmIQ+YOkQsKnKnE1KXJoC#hzr6ByL^K`)4k#=~kQ?3; z7Q7#VmshWT=B%^N{_^oB9KQsO2?Ie#8nad@>|N;7jdC{xz6bfFs>`VIi)}*dZ_&mG z1wd|u14M3wDd-)Z3}Lij8vH{glTuhmSPw~9>*5MVTWi~`^KTNnVNH6_A+c!D!dK_c zJ?y&cuf6Vj+uy49f6~!Q@UD;pzs0E$<5af2we{8OuD$kqbLY(Y?t=OA*Q=;^Z>)1Y zPy$$e*Ws*xsTso>#zhsrzW)Vry!Wvd!bSzak_qFeU>|526?6ndSh3dOAD*!Gydg>% z6<8060e~^EED{`$u><%rV7U;fFZ|mV|96j>GrqQ9!TdWDi3F_?x)p}u@_o4d3uzhU z`GTp&WATm!ix%E7bI(1$_Qi`Y{$EheT^YAL{+vcW=c0CN-~w@75;z2>t+g;_VpUBR z4@KVs%qWd;7+newFoO(Yq{Vhf;J!S_h<}>4uia3zTWa1A$^w8pc_uco4XP$A!0}yCjT}nJy z3-H^2ox#HLOKuHZkF%11^-n_Z`CGAs$5khe`+ zoxm$Y9A|(yfan5ss0fvSu?PI^LWgd|*p7~luH%kBe*Phc%>MiX5B_p-BAM(|0Ha@T zpp(^G+GTU#SAOmgUP&d=oew_z@S=kcKIrqupK!v$_KqFgVaf9z?9sT|bRFPjPUyYx z)8f<6#NjPb_-V8<0_Puyf!-k^HwwdORsex~BB(g$$)pmbu|R1!NpUCs>$E%rkojB; zDgpD|VoXdeZXIynym8ZOohP1f!h)I8XIwb{p1bedzHR#(#p{5@?5*lk=&cTN)F8&7 zB&D;tMkGbJ0`TC8)_uM&S#vT`* zc*5}uH*VV0jw!^A;~y|d$Xi-`yx5Wsr~ZnX^>~5lVC}tuqVRLA(Cp>jKl+b7I%>RR zjSf=EQ9&v2t4c;$R;_yBI$R*k zn6cYeKK8M{f1ta&Ck{p@&`7J^jiXt&8trzf?brcmY;YwlJvhp;ojU{90)p={&MLa0 zMPRptHjKs58v_oEUi$KsSqppU98DI5Kdqv$IJhcxF6A75L&ks6szY!?1QGLA3Z1!F zJxF_0gbT%UMEc*p^rdBU<{Wa}>8G9k)yJ1Uc7JC_$6J7bE&+-eL}!5o>CO3*1oB_JU zm`4Tpu!y5yjCT#*6~wSV_iWcQ;I}8l;+21QFa!7%m>SuaUmoB;Fl53VPU;adQPj_c-EP+PA;Bif5 zXdeh#VMh{OSguDNJSmGd5sP*F_UYgL>auxXzh>&x-M)0}hd;7l(c;DYznyVcudwFY z<(%ySf-Y-qmsLwc!bqO*eAR>9HDRrb!M#t2^6$K{27#rw=!YrhwGGA5AI6#jc#c|_ zBW9en8CWI$^$>T33>Gf|8^;)f_ug|;m>Isu3eg3`w=e<9^^2)286ER5`2^s>tz_JwZZrBqVhc5CA7&_s| zkY8+L3I*Zc>>BJ23SO({xvFIfmI4}`##%77Be=1coOtu<84p3{_RDQJjfw;#sNsvV z7z6?bWk>79Yg6tDI|Szh2tWtUiJh=wh{}aeh&cGZlKSR<{KxYj_`qM@K7IQ1uby(+ zsb9JCuDfr4Y2}}uj`j2q2js@cXi);s1xz*!@kD&bOE10j^c}a|ar+r?Z>GH+QBoX9iBHLJ=h77YBZ%H3AHwBtxK!o zb`Ffj__X|tAqitD9kU7$a+zy@yi=@*;w_9QUb!2S#bQw*Xx(EfUcmig1D5B6P7!bQ zI^pMbiSy?N2mCG``b;Jp+q`-6s^!a< zE&bsSfB2&_&OGyLlO|63;yaEw;`^WYzyJ8~!o`a>pkGqOq%Z_|(K~Xg!vFvVrb$FW zR3i{*V{o8#hC&WL2n65mP#$naI?zsQ&)5Ur#6eaHDS1JD(%O?C=#oF+GLJ4}H<+uWs9S|9!7)YHGRQ*yE19_&=_?>bkq{zUR)T zmoI;8&6?GJ*!t$18}SB}0)`=SLCJ26mMdD2>$9j*#lshR9~fWaiDcK7EpNWMdezI% zFI)E1V|U+u_s=iC;)?4&a>5B0H@7sOzu$iQUIo|f_H)iT=ZS?27ryG$q=136BErpq zz&o{FVzd+W6zrVf+fMMQ19kkyCXGXvG5*ai^XMy#z@U-loMkpOuS6<6Hw?Qehkd)MD^-S@A#=9(M7^{xN> zugfpL{D!Z5_20k!nRCwh=IN)M`qd+kJo2LE=H^dMoIL5mz4zRE-l22nUiTM&@qybu z_OXvWc-g#p&n0(QR{461TObRInn4WC z2`>145v+U6sdhs-AS~L2p0t#>ITG#)sFQZUKp9LYR=yn!V>^Wlhem(v6vHSKyg00H z(mC&2Q-~OoS?5yEJ^Soiixw^3@Pk`^`0}^D^{p4aF>l`QzV?-`J@ci1`{L7I{_@37 zf9;Y>pT7LE%YJwDx378e$3Ob<%Ee2TY2@) zL>fsy>4H0FNqd)3-Htx==Q~vl+bHZ*1m-ax+v5yg7^-qEoI}zWTq}#D)ffv!q45BE z2fc?1h>xL8$3ZvyFHA;hl=d5&UJxCws#4Y z+&U40xKl7;a-`QtsLFY~%%uYYUq6tEX@{4O!vQ}}At^5so zm$FtFX%QLW4||Kt@501Xy=CtLItW(Y%2Mb$AZ(#xcwqz#EpC_xj0wv=bbw-i#O(yk`248ANPg=rp6SfBIbeO`oZ zVeAwYDr1L0&|$&pYLNz>3HTB)VVxIpDso!IWHCcj`8o3-Ja!(=8DP717*~Lz^|w}>voMx9LCG~+RcHo;$T&x#qEgUzX3BC3 zE=N+--wHtxgTpN_(K6HZ!21OCDe$o_2G@&l6k;FYgtOhZ!J>z4tYbSf!> z6cm+k9G`SpkjOlhmck8z2bB1o4e}0ZFf(6M!^c=h_5T3?0RR6OZ5QDH000I_L_t&o Y0PpwwW8_D{1^@s607*qoM6N<$f-X;~fdBvi diff --git a/ui/src/client.tsx b/ui/src/client.tsx index 2c1cfd2c..da232592 100644 --- a/ui/src/client.tsx +++ b/ui/src/client.tsx @@ -4,8 +4,11 @@ import { hydrateRoot } from "react-dom/client" import { registerSW } from "virtual:pwa-register" // prompt mode: a new SW installs in the background and takes over on the next -// load, so deploys never reload a tab mid-agent-run. -registerSW() +// load, so deploys never reload a tab mid-agent-run. Skip in dev — the SW +// precaches production-only build artifacts that 404 against the dev server. +if (import.meta.env.PROD) { + registerSW() +} hydrateRoot( document, diff --git a/ui/src/components/agents/AgentsHome.tsx b/ui/src/components/agents/AgentsHome.tsx index f93af9a4..635f209f 100644 --- a/ui/src/components/agents/AgentsHome.tsx +++ b/ui/src/components/agents/AgentsHome.tsx @@ -1,19 +1,15 @@ -import { Link } from "@tanstack/react-router" import { useState } from "react" import type { ModelSelection } from "@/lib/agents/useModelOptions" import { AgentPromptBar } from "@/components/agents/AgentPromptBar" -import { AgentRunCard } from "@/components/agents/AgentRunCard" import { SlackConnectDialog } from "@/components/agents/SlackConnectDialog" import { Logo } from "@/components/agents/ported/Logo" -import { useAgentThreads, useCreateAgentThread } from "@/lib/agents/queries" +import { useCreateAgentThread } from "@/lib/agents/queries" import { useModelOptions } from "@/lib/agents/useModelOptions" import { useProfile, useRepos } from "@/lib/profile" export function AgentsHome() { - const threadsQuery = useAgentThreads() const createThread = useCreateAgentThread() - const recentRuns = (threadsQuery.data ?? []).slice(0, 5) const { models, defaultSelection } = useModelOptions() const [selection, setSelection] = useState(null) const activeSelection = selection ?? defaultSelection @@ -53,35 +49,7 @@ export function AgentsHome() { onRepoChange={setRepoOverride} /> - -
- {threadsQuery.isLoading ? ( -

- Loading agents… -

- ) : recentRuns.length === 0 ? ( - - ) : ( - recentRuns.map((thread) => ( - - )) - )} -
) } - -export function AgentsHomeEmptyState() { - return ( -
-

No agents yet.

- - Start your first agent - -
- ) -} diff --git a/ui/src/components/agents/ported/CloudPromptBar.tsx b/ui/src/components/agents/ported/CloudPromptBar.tsx index 0f549d0f..b22acc21 100644 --- a/ui/src/components/agents/ported/CloudPromptBar.tsx +++ b/ui/src/components/agents/ported/CloudPromptBar.tsx @@ -1,3 +1,4 @@ +import { ArrowUp, ChevronDown, LoaderCircle } from "lucide-react" import { memo, useCallback, @@ -121,7 +122,7 @@ export const CloudPromptBar = memo(function CloudPromptBarComponent({ )}
@@ -134,7 +135,7 @@ export const CloudPromptBar = memo(function CloudPromptBarComponent({ placeholder={busy ? "Send a message to queue next..." : placeholder} disabled={disabled} className={cn( - "w-full min-w-0 resize-none overflow-hidden bg-transparent leading-[1.45] text-[color:var(--ui-text)] outline-none placeholder:text-[color:var(--ui-text-dim)]", + "w-full min-w-0 resize-none overflow-hidden bg-transparent text-[13px] leading-[1.45] text-[color:var(--ui-text)] outline-none placeholder:text-[color:var(--ui-text-dim)]", compact ? "min-h-[36px]" : "min-h-[52px]" )} style={{ maxHeight: PROMPT_TEXTAREA_MAX_HEIGHT }} @@ -146,9 +147,12 @@ export const CloudPromptBar = memo(function CloudPromptBarComponent({ type="button" disabled={pickerDisabled} onClick={() => setModelDropdownOpen((open) => !open)} - className="max-w-[220px] cursor-pointer truncate text-[color:var(--ui-text-muted)] transition-opacity hover:opacity-80 disabled:cursor-default disabled:opacity-60" + className="flex max-w-[220px] cursor-pointer items-center gap-0.5 text-[13px] text-[color:var(--ui-text-muted)] transition-opacity hover:opacity-80 disabled:cursor-default disabled:opacity-60" > - {selectionLabel} + {selectionLabel} + {!pickerDisabled && ( + + )} {modelDropdownOpen && combos.length > 0 && (
@@ -184,6 +188,20 @@ export const CloudPromptBar = memo(function CloudPromptBarComponent({
)}
+ + diff --git a/ui/src/components/agents/ported/Logo.tsx b/ui/src/components/agents/ported/Logo.tsx index 96afd0dc..c154e2ce 100644 --- a/ui/src/components/agents/ported/Logo.tsx +++ b/ui/src/components/agents/ported/Logo.tsx @@ -12,8 +12,13 @@ export function Logo() { ].join("\n"); return ( -
-      {ascii}
-    
+
+
+        {ascii}
+      
+
); } diff --git a/ui/src/routes/__root.tsx b/ui/src/routes/__root.tsx index 22110f4f..92205f66 100644 --- a/ui/src/routes/__root.tsx +++ b/ui/src/routes/__root.tsx @@ -17,7 +17,10 @@ export const Route = createRootRoute({ head: () => ({ meta: [ { charSet: "utf-8" }, - { name: "viewport", content: "width=device-width, initial-scale=1" }, + { + name: "viewport", + content: "width=device-width, initial-scale=1, maximum-scale=1", + }, { name: "theme-color", content: "#000000" }, { title: "open-swe" }, ], diff --git a/ui/vite.config.ts b/ui/vite.config.ts index 3334d38e..4a7948c8 100644 --- a/ui/vite.config.ts +++ b/ui/vite.config.ts @@ -20,6 +20,9 @@ const config = defineConfig({ injectRegister: false, registerType: "prompt", outDir: ".output/public", + devOptions: { + enabled: true, + }, integration: { closeBundleOrder: "pre", },