From 9d6eb5f0df1128e1ab9a00216abed7cd16073518 Mon Sep 17 00:00:00 2001 From: Frank Song Date: Sun, 17 May 2026 18:28:43 +0800 Subject: [PATCH] Fix board selector label overlap --- CHANGELOG.md | 5 ++++ docs/images/pr-2458-board-selector-after.png | Bin 0 -> 19621 bytes docs/images/pr-2458-board-selector-before.png | Bin 0 -> 19540 bytes static/style.css | 9 ++++++- tests/test_kanban_ui_static.py | 22 ++++++++++++++++++ 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 docs/images/pr-2458-board-selector-after.png create mode 100644 docs/images/pr-2458-board-selector-before.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e938441..05804203 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- Board selector menu labels no longer overlap board titles when board metadata uses a longer text label in the icon/color slot. + ## [v0.51.89] — 2026-05-18 — Release BM (stage-382 — 6-PR full sweep batch — runtime adapter approval/clarify seam + SOUL.md memory panel + #1855 resolve_model_provider fast-path + PWA sidebar spinner fix + /model active-provider preference + contributor contract docs index) ### Changed @@ -71,6 +75,7 @@ - **PR #2479** by @Michaelyklam (refs #1925) — Route Stop Generation through the default-off `RuntimeAdapter.cancel_run(...)` seam when `HERMES_WEBUI_RUNTIME_ADAPTER=legacy-journal` is enabled. Implements the first code slice of the Slice 3a cancel-control gate accepted in #2469 / v0.51.85. The default `legacy-direct` path still calls `cancel_stream(...)` directly; the adapter branch preserves the existing `{ok, cancelled, stream_id}` JSON response contract. No new cancellation registry, runner, sidecar, approval/clarify, queue/goal, or cached-agent state is introduced — adapter remains a pure protocol translator. + ## [v0.51.85] — 2026-05-17 — Release BI (stage-378 — 3-PR batch — workspace-prefix display leakage fix + release-tag update banner + Slice 3a cancel-control gate RFC) ### Fixed diff --git a/docs/images/pr-2458-board-selector-after.png b/docs/images/pr-2458-board-selector-after.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb0be08f4e54644b2d73f59f4ca2ee596df7eab GIT binary patch literal 19621 zcmc$`^;^^b7w|s=K~h?zq#H!KmG178?v`eoqJRQ|ASp4rLvl3I-JPR*bi=lLzCZW< z{TIGJy{_wdy|$faop_vc_FYq50T25XHUI#?Q&N=G1^^z90RWGlVm(HWM0>@%0{|}o zO0w^D{nHN9F+UMc&-5OrGn(w_1?mJQ;VTmp$^sL23JSk{`*x!#D@URQ!7lvp9%4q= zl%1LV>Eq9pyvPgY^ibFNWkx<&N(0|7rA4(WN?%J<+j5JDi1*HjjiC2=+s;zTT)JZc z1^Ooe?>J*${`ZXfy!zjB=>P9$Wi|bmY*t)==EZ6n9{|utE63FFsP@sjSd0P|z-tr< z=<5?81wfA0GlPEW5#ZZz94=vOW%GCWfSM<(7r*~HL!X3CDNHSR;0XB)_us|%vg;PqxRZo6D0jw&t<3xLGN@qkc&auCr z`2hIjaFX;m7w_@3{Mg@TI3~XDya9kxl0U0`IwoIlr-~&EGppYHeex+dEB(D>MElh1 zr2_SLo1IfH-rHjSn-U2Io3NJwWme+djHM(t!|e1EV{5>t%%`Za>jc6cVz~;}UA&T2 z@^yx!xo7`-pIMk*n-ZkmsbKG)4wC+AB-WbAM)3@Q6-JaSa|+Dwe_UO+K25vyY7Z;m zwnR_wpFAPjZ$cQ7WREQ4WP=4 zPQ&bP_UoJ*Rw>*fLw~}{g`@|fHM8&?@BtAbx1>~A_P}QZE}L`$QP`ZC@&1ce?c4rO z=LMd_2!rasu|P^U~N75>1Gz=QL*_ZxY$e64BKExg!1>ZwH3wiT8c7x zn*YT3^g6JeaK9>c%&F5t-$81hZ{xlm1Ke3F(drX;x;!tzFZ5X-7v{et76oFsWp# zt{&}E^OREXP`Z*DKgi0;N?KYvIJkL?GLB;D1+nOby`3`C+u=t5R(+BaJ$6p_TFV6L zsxfM}n7H4u3CYR2)oxt-O>uE?^`74|#+BN`@S0v660@ks0j~~I;*?H(DSyfR?4%bT zB99n!&1^xN$e9yIh))JF z6{Z?Plaj9DBj~~#5Dtt|+3K08f_|ZFFx)2en zh7!CRbX!ZSB!i{D6WPY{s4%jy zFf$KSg~#@+GKw~P$!LuNJvj)pQoq+fdjbIbz|v-48(P6q%`Y6sRdepE5~|A@A@!+_ z%TqQe4>qbisMgAEP9BVk8nQ-FMMFyhNVKWwbLjU(NGDG;Np-v%dVmmjT(wDUfy-Bj~QMIr$y4k zcT^L(3aXL4AsI+%*Eicz2UGyfrElgQPu2JS?Bd&*vv8zR$CQ@fm;H)MX$a{cp*8tT z3%ZGHw2);Vp8TB>tIDh%tTo;w|Azvtm969+$qGNsCLmnzIL4=n5NgeOX+&C9$7@`b zNCmoC<2eJ(Uq=b%P(@fc=#an01pw$XItc?mX1_#4@aFQSC1RC~zwbA0G#Izfxvk4a zb`VHC$jwwRDcKq|p;)h-a8J{#?tUoMCe&y{ib>}L^F0BY&EMX3WIb&{po1daz%lV zPnf&nm)m_j6<@g@9&=M`F%+1e@hE*IUE)q@q$R5P+uUtBYPyHt9tx)V3OL6vW^2m| z*B=tEzZvl>zr>(l&4T04O4Hz;;sPQB*5rlHUd8U-l7v#k+{LUX(5}1;CtLe-5ym+s z@##Zn77ig^7@s)j&UCVuzXic+ON2s}4@ZvTvLc~WGS5ErNC$wVu z+(%FK=s5|KKUdk5+_&sht7lC@0OzQX3(tS&Ag9W^s@hiW`$scqFPA-sC%yv7qCofy z<4-aYMGdXGCgtI>^}N42+XyP1USdoN16Tz&h4QSnb@)xhXH~j|ARQ!-`!w%VpXOW) zGxX)6&Qkk~Ee8pvK5hK?s&Uy3(=i%rc59*0Nm(veL4;ta*n^=Y+kvH#1|_SH@ySZn zFoYrPQ^ER=-|Tk!q0i^DZgTZ5KF4Y@rS0Wpo($BsDNj?f=~Zab8<+eYtmUg+t~c%1 z5R==iB|&&08hvV=ri%?LwRxrRKj$6BvT4Rb$P_&k1(nvdWu3oQ&x;0hsumWKPKnZc zWmV)vMmLMTa3BP5yPl!XOrc=NEZ@s+D_jd;AAj)C3QBD>5vN-qpea@XvBDXoCI1G3%05`F- z3p2bM``KQh5zMsP$RjRfx6y+KLaI>;YC7wW4x)g_Zt|Wu#CZ5IUeL*B>3|>P_3^eE z$VIwoqElneIX1X=v2*$-sP!M?*pHlOHTv!G?U`Wr+3GZ9{{D;n-OykK*_AuXq#;wj zGoMZ_D7Wo_ol;p)lXnq=RqyTMOsGFs)ZV$>R|VDC;p+^A2A1WZ3sb0@>#UnZ-+Avu z_oh*s8+_WVY4V86sQF|B=@%;gDgxCcm;SmxI6A|{JgbQ12zyJwd~9MP77=ZzpLl+l zqVs#0h=^z~p+ZsKH_`hzqfI%H-7Lp0{jaY$P0X@ej6)N4bw;1+I5AsdwHe3dNf@(c z)HGoyAoE814OCFb?CxaBB?k?DgX3 zvi)@)NG(um#BK(1UwLt)NjblxQB~2ifLt6!4#2M+}CH_>(gnP)FuY$>2{6ZSR-HUW@ zEMD{jGX3K!Oj7ToM1gl?p#kK{)IYU4UwP{_4;v2t1X)*8f_GF}V~x!jU~f$Eu)u-? z+nyY?zu6ZP&s+-3?GY|TcEn7*MZx?XAb*x)0Y$f2jTL^2yCXTuTG@@YAzgXt_cf*L zVYu3K&1x1J@a+g2Ya!h0DR-9eIa(jC`J7azvV^lL$Qs%=$zUz+iiuI?ZbMw(t z;KKpAOE#!SMDSRr$PFiN_H~R{D&j8MrZq8vZ_0f(7cZe`$WA@cw@gprE9JJL%4O2F zmc@dOpdMYQ8_V^EJb1Cr#T@DjZ}f4VDL1>HjfStkw6haErXFi^TMm>Oy2&$bIFors zkb9?Yzr6(8nJU+@pGmvz@9($Q(QbWMukOuwc{#Iq+$wphrwy#$QoxDX!!T^{JfEv-=U(S;!AOx-R#iw{x-*r zFkiSB+F4M$KU!pi1Pkw7_VYB~oRw5Wnbd#C5MFRs4Rr15V`;s)yRUWDZ@U}thY9_@ zY_UXqjNAnJ6y4}(t6%Rvm;>Dy+xYkpt#mOfo};UlG2$(bolbBQ3~ZaG z2%&)jf1hX74;(|_aL>9R6bIU%Dk3Yi3G<-DTFojKf1gdt&}1iB-4T-lFLHlO(^n-l za?OvS0*a>%6#NsM&SMnjqTva~7967xdbn|Cs*f$|aGUY9@wNVy%TH~MYEio)XTOP>trvju(iqFlVE>`xf3!jlL_bMjghA9VFcp0`RqhQ4P^G} zNCqx`{{Xh|cN?19K@I{@ek(sI2=;lneFx_GRLF97&j`*_QZF^ufKf>##a$vV} znWkOi`-Nqv5#Pl1ifKS!OTBE150=R4?deis+?kLU&st!9QE5x~96w-?zQ{&IzpS+x zL11D^U!to*#-TG7vM#ECw5v@u5>7@<&T70+&jmZ#n(wq%;3@4yw z1aB!Pw4liI<2elUslsn={38N>s)hMG-d{U&Op3=Rhk(eztZ*ZBPfHI?E7ECLHDG;p}>*v|+@;_ch zlA9l&1xiC_ip;|6*1c>w631&CU>m23ak>886-3DU{p?zVg>_2RmisZ-B79^SiF96E z{AKPmS^nz;Rcn3FEF#tN2I+c=?5|E2cVT+D-9P$qyuGEkvseNE=#GC(LPb`(AjA8G z`mV1xD%b;}8)!qsOmJjyMdr=4=-IB0Xi1F> z`?xM}T-DbLkumrR%4R~PeYW<+#J4A%@PhZzN)jHcvFr=qR-%<~Dp1AFvu2;xRzI{a zDrjgJy%GkZ8aB_39pp;5f^>u0?cbXlAHl!6r!Ip?6N;UM9vqE&SSi=rxN-2OpD#S- z-TMJGen1gb|@7|YOdqNIx|$BXJdI2+5(E6%4|71xj&+$J*{ch7lbZcIHgF|8K5}x z(rwH5+qKHFq#F{Z`0g4pp+zmPx2(RN30GRs4njl*h7H=M7Nrg@1={KST6D;mLV0Ct z)uDX^&0FdsBjDe;JyMG1nnVT1nxnvq#(T+4#}%{6y6tKd8LCyP!SNW@!7;1V`~6Pk z{x7i8L!-ob%VXjBPQ8(YuAt)rKNr{K`Dngyy3t@FV!T$RH$I-kIW=Mn-2b?)@TxC3RM*fV{r4sT?Pe^1nVdYf?`azrE`+Xu56=TPQNUt>V}h^4~7f>W!xM7EQMZ zmh_n(Af*=lXq9+vLDIWpbqyBTLSVFwGNM+N!6H=n+LRO&6dMrmS@~xIv++#NM{cwJ zL98o%Ii6LNZ)Gcv%y0p$D0)f1sDnOG765u; zDi-jBR5<(hYxO~>K6&Y^U_Bp>BxvFWkt-yo?iYUFz^YV>WzOoOGVWJKLMqvuQ4Hp{ z2pI`?X_G7hkW(U=z#*%SIddQKO`@)G(Y)av-xS}@6O-jcWqO3W{i}%nvvD<}CTPZFI=X zPV&v6=h;xYK9)TcRZV>rSDY~xu;8w_{ivZR$k1) zxe2y}qYu|D#NnA^7~@;8j4i3TXKEj{M89OXnXs!-x*sDx6`Z>UvTyFff)|9v$nGCeqrZvW+M4ySm)w5#jWd+8nJj*ZEO>6gd0(+Nl3RAr#Y;;oHmv{VExeR{DV+%|) zH#OToDcJpHV-0t|_!*ofnq_WW=xd0~WX1ULW%?MOtDfvFAK%70m2WI>1Xa@DmTwa= zF>#rC;H-_Ut>d|3u%em-BqKws)=5wQA@hk`c=xChixt|s+72Y*oP(9MSm8(8gnxVv zW=f-UQ`15GhwEC|w5eATHE~)VN{C6&)3~3)+l;Q3Hxd{C)3`2uk6kIUuM3%wE+X6C zLaxQp{$2Gf#cvrxnc{P4CVSh?SSaPFMAfrn+62$WiovFD~}QQV#+-R=V-KS^KOfUuq;7$!Qbk15~cHT zgy$u@_*m&_IdDs9^T1f$HsAWyoesvN{3C!lwz0>{^jHy*@jF!ur@v*1+5o{H(Qzu( z2ee*Lc)AQumXc)H`-#E~(-_|G);luWn(4JX`ei@UPE}>3;-N7TXk^J zCW`BH6MC?WSC*_R`RW;R|M7*>hp&8SkBV8JFgi0mHXHT4YZ`@Q3jfD}nk`tq?qcQ1 zp>27J;nISsWq^+mJ$*KYFo`v(9Tt%srEL2@>@-Ddj+7k-iTs0skE1L9R{~neLNmq5qa^4FS;*G;ANff?0lYgh#cI!bO0ipr z??%Ck#<%xYm9-N)Y5FgQ0Dw(7m(~nPR{3zosJn?f&0D_UhPCr=@AxWAspD_lzoe84*rlI&H@UM16}d>H3&$-}?j2)>h`F-nxsjadD9;{AOp#0I)p?<6-b`9Jx( z;v;T_@W8~}*b`esmM$k$G*;&IfLtHwMZRITA|cyPuxwu0l(dp^bDFcsFO4#hsr zV=yE4)%tS{pXcB>+e(^^xvZO*&}LKDY`o~ckj(n{eG!h|*1EWnC{9E;UKh244nH3K z6M?HI3*|+YFX4Mm9vO|I03qJp>s~dGLqS0Pb5)W9^T$`2pRYleTS@s+gDHAVc9%H{ z1mpuq@iT}eu?0|X?*1B{Ct+0Ul~*Vu7O==AglXn?7b69_9v1oxG6s$wE$4&VA8uO$ zeOau}A*reSZZF4M$JvFJJ%H8BKaBaECra#Ns28E#cgYWuL05^xspqih!&nA00}G}O zS6=ky{gfuAib(EmCt1cCozb^hnC6C>4^qQ)CG!n&W#vhGFa4X}cy zixX;C?sVjgs_lGw)zhUbC^scCTVHf*E5xRl5A$~{Kp7MWu8&dRbWy*RX4`uU@Nq+{ zMO!N{upmFb=OS4Z!V5%%UEaF)Zk*oSrW>W8s3b~}$Q)#TLEc^2L97I!yUP228^{|P zSfJ$=5H&WUWh%rSkaho1kal!PVsHm6F|W9s{N%)U)ClUI+ZZ7!t`@KbFIzkVHMm<2 z8g+8tpN?eUDA10G+tyW{9%j^e)6jvB<*fA~D{K#hP~t!C_TCdmhJslO8h%Tn~4+07mQ2@84ooTdME)t#Y5Ky16$(B-zV4Z3-zasD=iM= zI6P742(3!h$ufSXgG;C)ldR^d0Ek+iHWL+aoH#j+jj_!wFo7;+$%Lz=3W}zyR~c|x ztmG(+N+og=4jPmjzW4fih;hEN{Bh%QYP;Gx!?VfMY8jo)#-j)Z!;PmgSAs@AKf#o4 z;U=5*Oy&!^+Pd8T@#<1{?`0CPE{umt;3r@8xPG?6CZtc&t!uNCv)FC2r zVZyQ>gUPszZ~m^{(*if8YTS25A+TzDq0soyoOXmm7a>|h)NP? z)>Q@tV(KBl+XBLWn$dKpaNWk|+O6oDj3n-j8BRqEHjA`ria0)aI~(v^n-~;^_tk|0 z(5YH4Y(0-}o^iV;9nh3@ZE+}q*KM)k3B)g0e4Iwg3lZ)eT@EfjZG$*^_11Y~9vj`h znjSi_DKLRtVf{ZA(D+sXC9>7dafjcK%>ztpgB}Rk;SS5YKGf{ka`o0y`O|Z3%}AL` zW&|Yu@1!u|&t%MBx-EwHLaETsNYkzN87igf8mZ^rvq)7@`%0Ioa!DsulF3XOZK~*h z#U70i9f;QAZPlCctF}4z{^V}hPca*2~VSix8AkLqDPqWE4J*90Vj`91He0rl#f!ckR>Ft?JIBu4Y95Bwv zBKT4-GLfrS@*cPLYS)@U?BlNRhrcbv<^cj#-gLN4`emZm_@JAW`|#yE@b#D*^!TIC z=bBLf;I%aNX^(~KFa~D)J}Z|&+fe)?4(8Ye!;ixy0xG)nvnOFf60nD(1t#{%30#dC zN-?`P8|sfLpfp|z@N%1n4ROTeS^}~0GRwpD6#Q1Xi9MkVmD|=5x>EnDgi|@Y3X=`IXK%C0UOA;GbA; zB6=M$iIqRPKfF$v`YZRRMz&b|{xAn3x?9YP;x!YaSOh_;!^jDEsBr&EoBFkWHBCm9 zyZOPH!KRP+d;ui*;ao%N7QwMw?cEc#*EaM}X1*MV_KxrO2YF`8Ocu+5n8p|DDm(^7 z+H!|1z+n7(zt<@(6-^^sUVcYjq_?SpuJWDN%xb^Ck?k8BJ1pfs*HhO}sTePx(U2Oo zxeLW#0UoU6^!DIU{>vmJam*Ha65r(()b3iRc2F`hlW`j>TEI~}Wi?Y;5Z4QgZ zHD(LVbCeT`FWQ8?E)*~K1<>gYy-Mx8eF3MIat0^-}DC9wO2|#3C}?G>R9r$@E>J7deW86 zSx~Ljd1r(0zF-Y-YpjGA#afZV7iw8@Oy{e%ck6;1&a8;>n;3ZMv~Jjr-^qW#2`8X! zT??axP@Et3^~&4Wgk~SOM^SpgZcAUPNgQ-NAV`7eHkT< zrgE+$_Xt1iXZ(&+e_eEji{H#-TFRWpu<0~@L}MQ`!Hr|2Z#(qGk*d`g$Mi18=i8=E zUPJ`%+eeadzqlIQV7WLPpInk{3B1Io5#KeicyPWzk)PA0Z}_}A>aN{NJe6#)qJ)mF%0jl@nz)4 zrsPg^Wm8B8F%`Z4-!DrdDICg*ZS93>kn+Z(VPQ8GFs$2}ZF0QGD(6|AldhV$Ds4+P zkbT|7vmCn%T<2{PeHdMn&ZzM4Eethrz8xjRs`n$Yb?zafJRueA_o06llMGyA zKcb`N2Cf<}o3G+9_e!pad`vVWL3l0v+C3G*u8zr_v=?&A+9)n z;zm)O%p=^m_a!r>)pg+Y8&Akxd$hgVG3pPp?fpYFIDP!Kn1)F?9(P6k>!Munf3CSu zI71`JTWbO{PsFi=xn#1Z*G=Q~-rng@b*j$Q59fg6sFGfF2ayvyuJrcg0RFnkFDYL-h8jjfY0wwLWprFFik=&h;Jn69h2aM(`aCVd5-LXJxasqg7lp7u8F zXdcPcA%T0nU%}(2Qq>aWTP@7Mg*9I7H$PNn zbEm#1gDfSOfyH%238s#wgP%7{aH(KktBVHsEiL-9;xTkM4hsJ3#6+y=r*{Vx5GlW- zzn`B#m$Qc{FM;r(>z8-bkgp%OO3hmC>P*~4e9mkl$+*~zWRyGH!HVgcZ*4F4_23J2 z3~$iUrh4gn@XqlSxre_S`ogQAKC7&zg4 zk!79}=yP`6Sa)6T$pc@iT;B4nFt0uPat%A4sdXkfuB5zM{+W@1>^L8#mhz-$kN}=- zLM0zo5sjDJ75Zhb^iobYVsgDCQ7+gx{uZ~jll7h(Q&TlOk`U#~B%b@6pzCrr`_a2u zA(w$YO(!-628MxidIK@8OYu;l@&iBb_qE?|o&jECV|!1qLJijzx7Jna*udR`Tu133 zhufrk@&pyu_Nl>l`tBl7$T~LKIi?Mejq)E?e2mf+5r=A+_|ubDJLw`w#jp{x-GgV z8@jcp4&}{Qe8@X7P+`~TnL^+crtd(5Yd0RUGJA``@T1&DWcAVV5Buu}4+o=aBZ8Jz z@4$@vltJf!^Rj+S0xE~`W=Ckb0Xlh9YTc_2x;(Fer5(bg2ldNXPsS=`ng$Q1MLgHL zR_`$}-Js4;H?$t*Fe+x87fdZfUl)nMizx3x=#txPE5e(n`OR+YXS{t2b*=EV7;*X; z`0{a0>xP^}XrreMF$o(M{VTChp5I)KOE8e@p_0 z1u`c_YPrrwCEOS7OS#=3{9x*+y@D#+fv(A3HC`0x zZl0O;Cs0v>3?y z!)eiCYmUbC0l8FL*65J?IIE+44yrsi3+}F`_HMV3q0T{VdeyRdsM4V0UYWuE0J;9+1mXehmv--CPAiTc z)^e7;uU7cGmyUMs$)aFai1{@Bs(XFc`}a*K#)wUoxn908U(s~m)MZOhxBMntxH`?Z zX?e{f8I*LVW_8q++qJup>!)uVXk4V7_we9Y0f}6-kXOA~|{!;?qb#Vl|L{rnv5p<4XsV{aF~FvtjlNLJ@g#HQfCI;mpS!u$h^% z#i}$4!3BfBiZOyL(siw>A}IGX_IKxJ2C)|kPsTH1jV=SQ0riY*{Oz&HhS^5d%;VRk zt#ze;Cg*oJnB!+Koh?gMnt}vbYNdmVg6ldTAI7KE__J{(;kM1I)j!OM=;r!J>z ze+bJc$;m4sv;IJ9eGc?lo}vRYY3$=B-LD_lB34qjM)Tc@t(sr);<=Eit4!Qf99 zY^j)%>mhL!ZQ8*U@KC<-R;!!oNX^Ilz4M1#xp51Zqya7lErI%$^1~q_8Gm@RQ=K6v zxd)x48vCD!WIi8HFS&+30=(-YS%G%HwRUS2?9d9TS+|6;n%IB*wFu{5YVyCLxRSH! z6`>M|2yD6&Klmj$-j*TR;rgAJ99>wJ{eppNsGi}Im2gBTFyK3Tj8Jp8q8e$%EdG7R z9DexnR`yVySdwTw(nFYPJpD_@W5B0xtX=Mr)7Y+aT~Cy6*21NvK-gwo-Q6X#$Gfu= zyP$~Dd6%nt|A;TbXXBCpfUK&eyzrE?`2V<>Bw`_6EofH&x@^6evFyuc#H{>2!%lrjR{(zNpRJ>?}wu#1gGN&9ypD_Pb z%sGL+3IhOIn)QVEM+Q{@f`7no>Y>L5AI)$+bu=k=D`GtXaC3WX|3iZ(NBqSWi=)kc zq!TKa+^~Nq;=b+>mv4Wcf&Vd)Ky>U%~62%&OR?_k-MC#hT~Gsjh`XV5;Sd6Y09fEBri?+**z^Tm`d#RRyjF z=LYtkAK0_xW+cX`4E|`^G`)VuEYNzf*oEi4zIZX5Z`ywfyn0Wp^J7^%QlO2oG&w`F zF)sM{hQAGH&c|oD(R{ zsW?rt@{ZALy0~2?(*2@`_KJfIk!Ls+YgiILj-fRWz z?()E(%-H98+3$L9(*9yHXEZ|u%^ALQhDikPjRl{dw+cCDI4ZALSW=WZZ4yf z$5f$~Z!3VfpsvPEM(m)senA+(YZc` zX`r>Ospl;z$?L3wm?RILJajm+FO3>|=r$P)36RIzkp+GHFUU@5m zV?Tyg3fW6rpm2=}L3P}Zrb~Jp{_UArrnOPMhKN>`>9mbQaqn9P@iZp0r>YfjY?}U4 zZhjj)I3Nb3rXYr(qIVY)D+Muxc{k(DEriwfq9+6dB%#q}4dwNi_Lfw+;z zX8gOgQ|w7i*NDBFyW2QM0Y#fb*!pYmj!8PT`-o`3Utf>Z99&T++nR!$eRuC(I2FElIKHwek%bA=vbyFilW*V zzF^)`ZuIBF`x5=KLR+IN%|SlU^MW=QeFJ-5PWU`Y*sJ?caVWhc+vMl&4)y z5U$eNDRH*N$&qK(TxiP`kHab)rC3TBr)MvRWun!bwP1R9HocU~=T&u6;+I$!*wFMo zJWao)s^;eF0#0HP=d6n=o9oQg9VZc$?r=&^xx=rGfry+3tWf^1oPC~w?hIq4LB3uT zI(mg8Ova|Um$gRIlntez5NY!Hl>PFDw?-{dn&Y|yr$E7lz?K;i61S`$RXO59vi?4=1@BL>c~YU*R_R%&QXiVlW+r1& zph??4T6ND|jHHXzg7pni40Gf&Gf1AEhCESMU#@#P=VOBIU;@sxtEm+0CO0baP<@@L zV|m_%@!20IsFD`%`V^D*aTtIX&&Z`cPF_pIiAr$+l z@12oh~2u ztFm{Og8b@QYfSaba%^l*obZ+|`d4meO1t8)^W0gNt9=~B5my0ks?{v)%_~&$&_uwB zHtyH23z^P5QJ;O`bamyLnZa#)<`{`4t(tb5 z=y&|#wcklvb{7j`hMA3=_e~1kXy1D21}xM#R@;xJNCfGhZ*ye?pY<>OGZDXG514m} zcP8&S1UZooi^cBjy3VTYWr#&`8{0HIZK>Y~t@i8sM}UrkPYhIPMrbx316eccLa6k3 zpBF$9TB%CHs6|%}b!~uG@_7px=LJ6V7i$c895W}H$)6A9sl6SRiEIUZAV(pFxyg00Zr_D~ zW*CKoG`tsKBC(CR<4|RhMJ8L7ylPc6#~RJOdL1(XqklQVRXJ4B_$EllGpH1S15!9r|7*= z6j&lr9&#;a(4_`3jEiI5oWCx3wNf~_3p+QUBIP!&h=K*5$jPf(<&)y;z5? zOa=Ln2NcGX363zq*(FuUJOeWA}Hbfd|&`ny+(6=bFPzuF^+@ zjcA_EA$C8`+I*!cDb+M(J)3*nhHh=BD5O(cice2jF_9_g(dBtmx)c*rlGa1ry6%Y>NW)f9pxzwO- z@UUs&Vfm541+ArmZiI>oNr^>r#JZy9M~JPXRne!rTej(2s*Jy7b5zPj5u9T&M7E{M z{XMRyRlTV8qfvyNGxFPsRLtz`;MFKKr`=o%5LxI5{z$ z5Qo(BGdSM&*6HZT&mK#N<6qSaIv7gL`PvJgTBoA#XC3JkcZqPFqf#2r_!4m`dnMNU zWR=bZ@a{A_lP7X|r;3s~@|X{W>{DGrcfpC#3Myd+nX;vFeWvuwTDya^ae1cNXlQbX z#hq1}<%o24swFj~1tp;?J0j(j<=~bigF2CPfy{h=vtkmbC~3XWHhia-dAgliDQ?X^ zQIyVw=??xj)JU32eAVXK7XtwJ@M2MfO1>*0h0VNT`@<3?zU5HObOzqPuyOzd54PJr z)b#WXngswpy_S6~Jhk|$c3F%V3wwq zc;4$Ml`i_{J41BG7F(ZE&QihPn!HBd^;^?wpMq_j8rn`PGRl9FHG;ZR?M?})6LnS& zpT0&nGmBQDn`n*|6+cQYrEYDJ&09u?37=E5{ujm09!o$%YgYBcp+xAOW46CaIi{mm zUZEU4wd|%BYEhUUs#VY~cRy3ju?>_t;(z5esl(f+eaM0uxwK>%>}Qvc0B`y#R>yea ztA`j#mA~8$neOzw>%*$_A|ofa$BiYS(|L)G{34ryXH$FiH^K#cDg;J>J2uaOma=cV zA<&#RB>+GK+bt2*oexJg$3z0=#BzX(=bme)7pm`67g&@3PXa{tL%;z2Yo+;PD0%1K*@2)Yi_1 znZ?xo%3&_&UMF6|4i{!QsOaJ{QPH`fNrGHAaaCSpA$zF4bW z+CfpxkAd#)-2^6J6WD*U@{cm2oEiGgd-wcP2$ilU>a&czX(FX7FaKBqeJY-#K_j)gM63j_H|w?zUhJHnjgb~kPW-fX zqD1x>2+N2olqrIUDUOftExTT^VUd;GGXQI#jg3u)xKG5$?ZpLds?Frj(wMj#x*F;A zeOhSz@84r6RXK)N*Fk6+rrUoE6pqUJ@rP@Jo_E1=<}_yEyfE|)qvdJM)J0cUZneFR zdWNW4`tR{$!~56h3q$U>h=EQ5;gatTOt;Jo|k@3pD>&CbYI0IH+{5;P&O1ncTZC|MEQdU-aSZn| zcZMZ$zkz)G`I{d9F-gXx0`!_CdtfMFxvrU&UvaGu&edNPt{_!r$r6Rbe^SJ;^A*l! zOW#`>r+8h}B>Goo`h%y$fBbIdofMA3;3^eMSj2zgv1fHlvJ)0=LetEP1wZ7sB3+>+ zPIXU|eMl}Ms@Q*{?rj%Au>AHqe5bMPCpEzIj^wW%`(2?THM!>{gE`!rWaQ)Unv`|? z9fud??=Rm4x?@(-n1~q;s^qk$qsj1|(+lIKTaNJXUgL&5A<>8$b&ovy!;VMWzUJ+= z|6HR#{v~pEy>p7HmFuM=@#)tT%J*o?@}hS2%@dj>seXF;sve>Fdv<(6*eVgRlguwl zY(CrYnNQ=*ocg(M!r6p5on(fzFVlOArJnZT6Ymmu6cL>mjR46#kNMnB=ytcP6Gb2$ zfA$7sRIvq`<-f|rJthf1Cc$r8-UK~EcdfmsTwSH}<_Of6J6Pf$&l=ra?Ww^t^Dcb! zB1G_-Hs~cKoDtDquc}8DcCq ztccI5#VyM6AS5`2w6%W>U1Jb@;Q#r!;ZcM{8b(TnV=UFueI_Q$1?Ttw)6TVjL%Htp zcUcm(3>%Ho za@k#!OH9hH+&Z=8)OoG_Uz~M*dY`r4^?cv;e%A9mpYOB2pYP{03;ReR=A9Qid7i^U7cBQr;vDLyN^beGWe_S((k zP*FwRGbdpN6o%5D;vknT0cINo2lih(JU(Qz^?CFlG_9(@^+62Obv1&}$HF=+2{v8- zzR%#!p*@06Iv`q9(!VHY&he7YHsP-v*G=2wS1h=okwL#{&Is`<6+|Yf_gs?PG5co( z-nm(7#Rwg!eM47j6S6Ypu8lqGE4Bcj_c+#EsWVNgPH{vxYHlyy8_pNHcU%f`P!z_xQvR|of{9zq)>2|?d{H3I(hOiF( zm+%fJztWR8f@y{;UG3WxN*W-x&-tS-b)gwstq3e>B$UpT>TMmJ)+3ZQlACF`AAUlxC3PGYjqM(+|t9AMWYi{aZ{ShMY!nF0Xxp zzSxm9nR?9@9Z}uxJ%G1-$O~WU`Y}dylgv?6-k(=ByC8s8+yOpXschvI&60$oSe?eF zT~9OQ{)x=i!Y`H#H?5o$F*{TJ8OT70zt)!9se60>L(!W&YvGkd%Hwtg!LrWCwpgp1BQ{p zR5hrYtZG~UYtPw*;42=AAncI-akZ8A)Sw~h!O~h=_!pyyUQjF-q9%0QYu>9ft{vjX z_%S)IAD9Ma8;DvL!@H?{3TYf=WDBPR8mp~1ZmUr9; zQ_6hiE1Icyzy0d4VG~*BkB0}YC6aorPSift`w|y!xKc@Mf`GDpk`Ek9W4=3E5m92= zBX^yZ*=23@N}R0-f&lpVWujZASE+C_djkAEX(^WYAqcal^1e*cx~rr5W!oTlcvukW%RpJDnKH~m;V z_-!y-jUXK>2ulZmo^Gr5=;!$rTR9XMD%5cN(Qtx5Bq1UJ>!b~s@~bACV2-VkwC1m7 zp&dKy6;8CMq(##`_@Yl7Sq8MVK+{y)WOX^TsGFnoPtUYU|0aef*9g83qM`zQuesFh z-iY(HkIlhm()LZ@ z{`5E5*;`v5-kH^7FP^UVGw;9Zl?YJLHj?Bb%$%#Uh<$-feq>|lXmT5X8PMgOf_q;p z8J)G{NcX8YHpJ^#-VFNb>yNp*q>rcPV)XP4@4}_qn^E!#A`(w#=SEKbnvj#D0>%ET=yO;byE=N$@`w*7ks~$xSGGE62K1ISN`|UO)T zPBa5K#teSBebZtwOsVRBjbtZ~z}a5KpPY>55lsOa;`6^et74j9mSlEo@>f3HSZnkz zMu2Q!Vm?K}0Bv0UP171mt2au& zsvX=hfCRML;g~tWP=$%#c#^tgB>aTrh{4Z&4uBT~_mBm@WjP83x&vh>tbR~hTU#s) zHD9mx1uUrO&+=;L{4aoMv%3S1V0TKzk%BL;d8~tcf)oa*8@k0qfP6(Dw{5sWFn5ve zK;zaC0fWodGXz`<7O<{TP`Pb+?o!~C)* zHAF^=9Z)k5G(v!WD;=Uy%`Wwte*TCqP?C$>-4o3Z#(=(09icY1IIs=}0IZ&kODtGy wQT_kcipx7yTSeUH||9 literal 0 HcmV?d00001 diff --git a/docs/images/pr-2458-board-selector-before.png b/docs/images/pr-2458-board-selector-before.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf642c056094b8d319f700f270f8e2e9cd92752 GIT binary patch literal 19540 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

HMO;dpa6!!XPSOEh3Q7lHfr0N=-J!wcW1?JfdN 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 KwchPm)_(y5_0skL literal 0 HcmV?d00001 diff --git a/static/style.css b/static/style.css index 7a594b90..7fdbe915 100644 --- a/static/style.css +++ b/static/style.css @@ -3817,7 +3817,14 @@ main.main.showing-insights > #mainInsights{display:flex;overflow-y:auto;} .kanban-board-switcher-item:hover, .kanban-board-switcher-item:focus{background:var(--accent-bg);outline:none;} .kanban-board-switcher-item.is-current{font-weight:650;} -.kanban-board-switcher-item-icon{font-size:14px;line-height:1;flex-shrink:0;width:18px;text-align:center;} +.kanban-board-switcher-item-icon{ + display:block; + font-size:14px;line-height:1.15; + flex:0 1 auto; + min-width:18px;max-width:7.5rem; + overflow:hidden;text-overflow:ellipsis;white-space:nowrap; + text-align:center; +} .kanban-board-switcher-item-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} .kanban-board-switcher-item-count{ flex-shrink:0;font-size:10px;color:var(--muted); diff --git a/tests/test_kanban_ui_static.py b/tests/test_kanban_ui_static.py index b92c074e..bb517c11 100644 --- a/tests/test_kanban_ui_static.py +++ b/tests/test_kanban_ui_static.py @@ -874,6 +874,28 @@ def test_kanban_board_switcher_handlers_in_panels(): assert fn in PANELS, f"Missing handler: {fn}" +def test_kanban_board_switcher_icon_column_clamps_long_labels(): + """Regression for #2458: board metadata may use a short text label in the + icon/color slot. The menu must keep that label inside its own column instead + of letting it overlap the board title and count badge. + """ + rule = re.search( + r"\.kanban-board-switcher-item-icon\{(?P.*?)\}", + STYLE, + flags=re.S, + ) + assert rule, "missing .kanban-board-switcher-item-icon CSS rule" + compact = re.sub(r"\s+", "", rule.group("body")) + for required in ( + "overflow:hidden", + "text-overflow:ellipsis", + "white-space:nowrap", + "max-width:7.5rem", + "min-width:18px", + ): + assert required in compact + + def test_kanban_board_switcher_calls_correct_endpoints(): """The switcher must hit the right REST verbs to round-trip with the bridge's multi-board contract."""