From a59a427d405a1526dfe5e753d372bc9a1de2555d Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Mon, 30 Mar 2026 14:05:14 +0800 Subject: [PATCH 1/2] perf: enhance layout responsiveness and text handling in stats page --- dashboard/src/views/stats/StatsPage.vue | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/dashboard/src/views/stats/StatsPage.vue b/dashboard/src/views/stats/StatsPage.vue index ca6ae1ec97..cb0a358c69 100644 --- a/dashboard/src/views/stats/StatsPage.vue +++ b/dashboard/src/views/stats/StatsPage.vue @@ -814,6 +814,10 @@ onBeforeUnmount(() => { width: 100%; } +.token-side-column > * { + min-width: 0; +} + .stat-card { border: 1px solid var(--stats-border); border-radius: 16px; @@ -917,6 +921,8 @@ onBeforeUnmount(() => { font-size: 19px; font-weight: 650; letter-spacing: -0.02em; + line-height: 1.3; + overflow-wrap: anywhere; } .section-subtitle { @@ -1052,9 +1058,14 @@ onBeforeUnmount(() => { .token-total-value { margin-top: 10px; + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: 8px; font-size: clamp(32px, 3vw, 44px); line-height: 1.02; font-weight: 700; + overflow-wrap: anywhere; } .token-meta-list { @@ -1102,6 +1113,12 @@ onBeforeUnmount(() => { white-space: nowrap; } +.token-total-card .card-label, +.token-total-card .card-note, +.token-side-column .section-subtitle { + overflow-wrap: anywhere; +} + .empty-state { color: var(--stats-muted); font-size: 14px; From e1578f0ed09d4206407355b2fcc53027473a01af Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Mon, 30 Mar 2026 15:02:05 +0800 Subject: [PATCH 2/2] perf: enhance subagent, future task UI - Updated the overall structure of the SubAgentPage component for better readability and maintainability. - Introduced a new dashboard layout with improved header and action buttons. - Replaced the old settings card with a more visually appealing setting card design. - Enhanced the agent list section with a more user-friendly display and added empty state handling. - Implemented unsaved changes notification and confirmation dialogs for better user interaction. - Refactored code for better clarity and organization, including the use of computed properties for state management. --- .../mdi-subset/materialdesignicons-subset.css | 18 +- .../materialdesignicons-webfont-subset.woff | Bin 17424 -> 17748 bytes .../materialdesignicons-webfont-subset.woff2 | Bin 13988 -> 14292 bytes .../locales/en-US/features/conversation.json | 10 +- .../src/i18n/locales/en-US/features/cron.json | 39 +- .../i18n/locales/en-US/features/subagent.json | 25 +- .../locales/ru-RU/features/conversation.json | 10 +- .../src/i18n/locales/ru-RU/features/cron.json | 41 +- .../i18n/locales/ru-RU/features/subagent.json | 27 +- .../i18n/locales/zh-CN/core/navigation.json | 2 +- .../locales/zh-CN/features/conversation.json | 12 +- .../src/i18n/locales/zh-CN/features/cron.json | 43 +- .../i18n/locales/zh-CN/features/subagent.json | 57 +- dashboard/src/styles/dashboard-shell.css | 292 ++++++++ dashboard/src/views/ConversationPage.vue | 172 ++++- dashboard/src/views/CronJobPage.vue | 524 +++++++++++--- dashboard/src/views/SubAgentPage.vue | 651 +++++++++++------- 17 files changed, 1517 insertions(+), 406 deletions(-) create mode 100644 dashboard/src/styles/dashboard-shell.css diff --git a/dashboard/src/assets/mdi-subset/materialdesignicons-subset.css b/dashboard/src/assets/mdi-subset/materialdesignicons-subset.css index bb882203a3..548c0e20e4 100644 --- a/dashboard/src/assets/mdi-subset/materialdesignicons-subset.css +++ b/dashboard/src/assets/mdi-subset/materialdesignicons-subset.css @@ -1,4 +1,4 @@ -/* Auto-generated MDI subset – 252 icons */ +/* Auto-generated MDI subset – 256 icons */ /* Do not edit manually. Run: pnpm run subset-icons */ @font-face { @@ -128,10 +128,22 @@ content: "\F00ED"; } +.mdi-calendar-blank-outline::before { + content: "\F0B66"; +} + +.mdi-calendar-clock-outline::before { + content: "\F16E1"; +} + .mdi-calendar-edit::before { content: "\F08A7"; } +.mdi-calendar-multiple::before { + content: "\F00F1"; +} + .mdi-calendar-plus::before { content: "\F00F3"; } @@ -832,6 +844,10 @@ content: "\F048A"; } +.mdi-send-clock-outline::before { + content: "\F1164"; +} + .mdi-server::before { content: "\F048B"; } diff --git a/dashboard/src/assets/mdi-subset/materialdesignicons-webfont-subset.woff b/dashboard/src/assets/mdi-subset/materialdesignicons-webfont-subset.woff index 6131c0411f8b24523ab607486624ed699a608a29..a5eb156c7904e34e0936d24598581ac5889d6651 100644 GIT binary patch delta 17499 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 C_?2$} literal 13988 zcmV;VHe1PePew8T0RR9105+rm3jhEB0DL?E05($q0RR9100000000000000000000 z0000SC0LI)rlo@NE?*dwrUU?60?=qRKU zlvVsuNWxX)?Ehne93wXNbpZNWB2~~#Xt63aW>uA0b~Cuq>&k5HaLm1B3kw!3*vWJV zTXuc#JpXwF;u(DEY7VvuTUS-_th4$J*%>nQU+mI6Shml>ICchi$1Kl(dwVW+f7 zB`Jg|@Cct6U;ff0|0Q=jR=^3`YOzPv0#|s0SF1HU>>9KousN@N+w_tN^=b}7ku$EbW@`CEj(hG~yNGl`0%^#dggEa0dVg{I{Av-h$;| z5B!OK)2Ni06lIz!_xi&fra@BK5Wn9Ili+f=rJYQJ`E;0#&4bM(xP*?Fd}LVcd|x%| zL+SvsyBs9V#Wdp!ZT5nMZ8c+a-bTsE70Ekr1qdSgH%apu@8v-2O8r52%Dbyv*gL7_@_7~3q`U^V~0I{RAbGb#KK zyRb2ye$N!`7VS30;H%EU7%^@HA2Ra+-@fV+1j*m1UyuBq~e3c5)bY^jt{mftcLMaJcQj&1Z zB86)&bK6y< z8HRENW~x9js#2py9Tuxzqb3czP|?KbD4H2BmKMg#rIqn|X=9u&?To?F!8ltw86OUU z)js#-1zjcZCc#okNM)EJT9z0wbP^=UmL$n^DN^J}m1YJltvuPX)OWeOA!n`x#e)u^!o zgRxSRCLNyhyv}`50lGlpIK5C=3TKS5hArB(vF%dBv%B2z+^#S@zt0$6(4)tT z`t*58zkV<8JBC;GL&K}i8}=GEx1RmdVE2u0FTGcToB7x#Oqd;_MSDY{Bs*znyeVC} zJ_{_cTf269bm*{Gj~@FtIPBl!3UC0FT`9mpP?2ajWV-44wP{1{a)V=67=(St;N15V z;4r8-ayTMWrlb3$;h62VJMNG}P8cxYeuhR{a9%RBU5{|7@gX$i?ONwc^EhDu8Do@$duizvx@0$SIpY2IbzN}_snO0yA@0J zPZi7dH;NVeZ;DmZf@00Is8~1cE*qx3Wz+O_*)n}vY@5CVx{sAJCq;4Y^hi4D}UGMyv>HoOlcm-Z*1K4w1 zM79|jQ^K={IeK6KhuTuGjk6F;^*FE#cU-1hQE^~OahJa z!EuJzICncM?52`iALJnqgr@NjIuZ7?vYp#N9Ynzt17Krp7G{1MA}&OD+>6ANV?YMy zNEi#O0bs-IblOGKL;R{0gdb;NXl#Iqfo7~sw7sMf_}Cg&h-eh3WJ|4w=Wdg>CB z0IiAUA}#nRr(2l@$}{Ea?iN2B|;{d$!Sb=pT8L<=;UREAha9DGdoK+S2IY z4ZAV})k}^yl!!?nyJ_^Q@H62LQ1QR z(pXQ_8P(xJr+zIAUVEl?U4~m7m~W|-Fa#WorzEkX$Y_kHT$VO*)nB9;$HeSgU883Q zjh^&wrqs?Gne^ksjOsls?HL~`)JkQ~;;K@mnL>~~0Qo#*zR|@^dt1T8`ypi~ngqO3 z$?F@a6r|??3{c$kYP$~Rm1TtE%a|Pb2qp%XE@*NO`x?M@>LVs)NFs+(AhpL_(M7KG zQvnw0WhD(6ja8?Iqy#W7SK%sP$FgJ(}3aIJM%uZPY%=p;Ch zEV!{S^ud7QWNB6dp)*xozN0pyWMGVGWnwAX@I139-~~zeFS5eWh$77vRwLXAQHf*d zn(QYOgy&Sa8jcGbR`zN~K#pbsb=6?>NNc2JdosS>)yMnE`fOs-44!m2dON{20(W;o z-a$-rMJ0Vr$HXGO2TQGMR=o3@r-@O*UV|gZb1U?;Z4#yqRa{y>X6VM~#! z9#Dtich^zfC}XR}z)V;(hcN+L71Ey`EVSYw$Xgl^3QAng(@gF=$UzACH^Ea)Q*(x+vR%1R z6Ll|cMCBt?*9s&~Wb(u)#2DoR*@T3jomAwIBW;vP?T8(-YiO2#hVU zF~UwqfxyB{qe|%^fDldP^NE57`J(XZsKQM zUUdZz=3Q|?d{XMeN%7#JEUvtp@7VdE=re0b8C(x!se91{$gcP)fx@ySEybnb={s6CEjDSZ)8%8tdTY^)nE6rb-%rT5iAT9w2PY#_<){aPBv z%sx5tA)c<-7G4y*4Ki|wX-9d6CvGpu>Int-Y%WO%-V)HwB#<4%#e;MSj0ck`D518s z^8OykFY-X>{3|#;_{hvPEW~>WsHuZK1E`t5MSQJGD1U1MM?EHF!+$qI{wri?W`JjO`k5|Aqd zh-DRE>mQcpJ*DK3_Y2nQ<_nO^JPw@-pIJp^>!tZ>yJGDayY{}hr(fpvw@J^?4?mUQ z(Dy$wgtCcA0`c1YBWex(V2JmQxrYTpSkYMivU+)q5%|jEMJ*V5BZT>E_8?QP`^=xq z|D9t&SVqW8L8`MXn%Ng^5<^YK2LMP;g=C#+Uf;L~nC@-8gp!wfkL!d&VSwYxqV?HB zv}ZtQ!?i+CQNp%wUcBIowe=OFE`QFQ<#Hf%#IXd`gS3YcY#AtSlkO3K*$bor%!$w< zlpb|h3i(E0xygIh4ruby;Q70NPD#rf&KxdpMc>f$|UD_Os-Jy9pF*vUYn^B zO%E{_UBu=W{@-0`J&a|6f>BSXD*qd5F${wX^*)Q9St^DYPs#S1Le2LD)$_QY+J)l` z^%=g_%>Cjy9C2K};uw6{ad_&w;;*gzF~h~ImVL8R{MqH2tS2<6;>6hcT18RizRBX` zkMF9;M}3jwZA#?mc(F`lRN3U{Nzv-=?PrKIMa0yuwn1`=9b{TzP%*?zT8 z&(X0%m&cA=9zAl1_^mn4;a0;Ki<6o!`Yo5c@(3Jy^3%oP#W3295`DqU;Dbhr+&zL1 ztg3v-%$hZjYlra>l@G5K7l|A_)gG#GP6v!MTRMb}Q$BXOHBhb6a$GSW*Gdd2nC$IW z=F6>5=|<;DRV$Tc6+v_%RR|^y3`z0$d|qfgmYL#i&A88(Q*a`kQ! zmw=6@n)W%1rrOfkHVAB|00$ zONDL_c@M`f#iA5)1P zAj+>Wa}L+!W}A%Y2cmx$bmmy@B1Xoo_nhG2dx8{#Q-C^<(TVgRW(@KmcEvQ4R$MjY znLgTW!4vh8Yo=N~4Pe4_w+PSOkvDo?%z?{lO!2ere(2a&q(xF3!?k_Wo8E1q-y(M4 z+1uqix3dc?#kAApW^X=!m-VyIp7lGuxo)#9pabme^Q9Y$&kF73Own!et+m@j|G${a zsi^d?2akIxhoc?!(CxdQ-aJpwT}c)E1!4Z<`+MoRJWqIcw%MLv5PhC`<+!L!D#Qse zDOWiIiicCLKKkkBk1zcCi>iiT7Q<<9R0@KS5rQKIVJ@3zIUsmf5z#N=L{T;zb4n5{ zv~M0x0m0o0-i_CJ*QGez;p{2O8kBtSiq!o9`=iPvagQkGPLtS+(ut(1?*h3W*~x_m zu@!3e2YC>MW8I67Mvk;TDM1pK`pXE>HvWn)$cvHe<`1@YhRjb-&PXeDFt2;M8kGYD zuZcR7vO|GXu>ySrL2!5*Q4+8m+R*4RWQY~@d#u4cEzi=pHKjPm0pFc#*Gs;}6=m#Q0BzAoJQtNqI^4fGDe;oC4@sZR8 z@HCbBBTr6i-l%~)5J6ZL`euM@i}yRG_?YC3aSfd9`Gp+GyrS4}+Eo?b=4IC)HYaF& ztIv=W55CbZ{N#9o>iJ?VldXE5$b6swxl=q*=RfS~g4bL5UwxOSuEUknsfz1z#BqdQ znz^HfgSK9KB>j@ATsc%u|Ju8B48QqQ`8iv?ez=zTsXuaDH&vwmf^=5(k2u^xEMpK3 zd%{JBjORU35yX<6a>4icOTKvIamklmezZO0oXbi4%;ntM+{t)>OU;b%1tI4Mr_H5B zNbg8zR4OlKO_k)+e9>^HZkXdWU7Z5IZ)hl-R9AdcsCvIC#B^R0&!C{cXfp&gjP?ko zRq~cvhI#$kuYkKzbnr&_9r!y*j^B!7HT+Fp871okA3sCMLZWPW^6S~1!&KV*9^Pv> zTiMgZ?>JmP4DN$v{$ok%Me|$(IBM#3gq*FLot;ew7jtQ=Lv@ggebX)#wa^TgFW8Vf4@i8%m3xQH5ywWaQAeCm~_u}CkA!woX~nyBAW)k4%@ zPB8|^c#ue869bClx0mo@WCrht~)Qlt78I17f1McSU=~ zh_f$@^&B{H?zX)-Hi99Pt6=29R^b*D98Tj~6#7lwFQ1jB(N}DE$ zXC6K2U&~S!@5{ZbS5j0LSaJp4yU!Q}_l>UPnxmE@5@!n9O{8V(Fg~(THZ`NYTfM3( z=P>CqL9{Z2StH^~!C;66%%xT_zpCRv~9=~-QpAR>D!>TU}WT{mK=O2(}!N+bb=4Py;PV2?(b zd6od3a;s9ROlC^HwUkM@LXiM5<&6aI9A@Xw2g z6wvr0tq<=aGB?ICW5~(VO7W?kSDuW>Z-voje&U7`l`-R{RjGSjGv{>U0N_a!xrCm@ zhM@%RY3E*Yzg`Q=cdljYlk4XnKVJfwqpmTt$KYkx7TH8nd{?Pq!~P6vg@nhrg(Glz zmbx5lWBKH*qO)C{mEuV*l(F{L5GKXkps2j55b&6Fv6MFBfku*W7B&9Ge381O1-K5< z#`7yLDXc>KQ#SN&Dv0X2<75O>=f)i<=tPO{ED$j(^JgUOE?gO95#_(0iGn7tRJd#L<`|I^d;%LA0Jy!=Mb@Ra4j_VG?` zMQc11(XzJth348~X&77KYLDI;u^h^vQfL=ENdJl)R+^~9tbcr*YjDk6GrGhSJH^glYhLLh-QJ52 zJgamkSpn%X1m%s3l}-R}+6gLS^j$I|Q3vGBOZ6x55I!SWiOViTlDF?^Ei39hsn+(`$$lS^rrTt>@T+M%w%!Gr1o{B|+vg6Cbk-3A9F z@I|kBkG8=5PidB`;&!uBk+y^KH;l1a(_6d<${*+d?4wE+ReTH)9gAQ~T;WYTNkVow z)f603S>|xfos+KQJYYysmA~G3m@eGj%iTFSm`2pT0CQ9JSsZjQ!8Ogdbs^Q6k;i_U zf41;uWJW|DHaeXK8xHtGhhG4)S0D9B7@?NbI$XjN#I5Sjt8<@lUfklwhx8B_AAuu1 zLz08r8FsQ9*)Qpa@m`!L|N9>aS*rVRhkX5dqU-<@d=4d=(3e1T3_&$U>!GSdlQSbV zJukODv%DfJqpY-HMC%vQv`wMcq9RI&VzO0^q*ck>k(kAi?$4JHq)W0fp<2AW;Nd4} zpFAvBF0M8vB&Eqsx}xkNo#_~=iW`WlqT{Lt{xN!ab|^Qer6mV6BP((tjJy{2Xpg_b zBObZyNhI0DQ51xyz_+X4Eh&6{h()ZL!w5ra5fl}A`cd*M6TwFWg+<2zb%2JSu64#z zaoYNfwzBE$mWTP>;E<&Mo!8mpL8qah?qO?eY%modRwuH^k8ywl}>Fy5FUE91l zbvD26eQ#3P?1h>)-_$JBmL&rQ7PCBySdPoT!zn%E-%b5)+@s{~a8KH#VrV+QxQHd#qM`!Wo8nP4I+iePCr1k~VXI|e z8u@bu=w*Z%(W?RB`qeZvY$-sGEvGGXdB=AH6T)%uI*3uz-N`rCAN-u7B9Hx%!BTX% z5VWyci<@vc#eNck@UWdm5ui@J0!IV~K) zLrz2sn8g{|yGmmh_R<&9EXD8CLMwp_yT3eV8&#$Ln&ERY(=+9{opA&&5e8sYNf7%Ha7)UF23r zdSSf77B$D6^uc{vl5In?G9(KXGzsHLf%<|~kvWo}=u`Ji)llju$cjV8CC{lOPVM(CRIw9lHI#l&ZUIPf!~cMW`TK>a@oBs;{cn&({rbtKJ9x^Fk7lASLOQp1_7ew9|;RTvQbVzL$M4?na$E3 zr;y~H4hs%Z8f3_DY5-w;@I3H{2XELB7GIIqD2jQ16ypV_IL6v@MSGDwl)}{Cw+1GR zFn?@hIUP<$lX7LWGL#Fn%F~fsv}v$pkv{Puv&BDOZ%3?mc0)jpcinM~ifZWR4Hefc zrKI!Q{S!(IhY$={tt-sz4DhF10xf~t!(8`C$LYE|)8p%NLWmUsLHq8@H|K1AMfK`5 z$Zs8zQy-u6%Yyy4$?X{f z7&^evXQ~V3OJpcSW!o_f0KaP_QW3?3Dn|bVmvo&Z^ni(BrwsLt`tn7iOod7rs5o zkb@*^bi0i(eu8o7(ypI=(t3k!+m$*-r|d@Jbydae&pAvEQZgh6$%D|VL&f)jpOE5M zc(;kg7K_{@$2`un^FH27^lqpX?*;Y`UE;m!q^tmjFq^$mCz$zJNk8d|>U&L1f}0{Z zXO@N%p&we0Z_UW7TDPuBZBrXisXU|F!IA<_Eg}JtRx!`)bdINKOdz#K9HGwN9?eFrme&Ibc;m!QnuY|9+=>E%h|x5^ zwuz?L3IGixkX%PD5SE+deDq6==IiV8v7yAt{W=3O==vuoB58nUnKU-U6$|VULSVfc zxz&OiF*sa#<%%a-DzP2W2-(Z*RA|-#__~8Ceweu6;9O(4v47s|#2>S#byQfw4jAG0 zIuC@cI&i)h_EZ;(PjaQNa3$)OOy+|9`>Tm(HdVeA*9D8s{REbjFPHDhB-9873C;J_S)j>g)ohWbn`=A^cyD^v15u-*N*v~=-ZTmGpO(SWFerj%xH zYHQn+U3&ZvFHmsGkQ>RI0$Ro^`DF%KTU1Ma}NQl`>py?b@l6P zT3%Dh&zc*CbhTxib@6bN%WhZ>Eb8yvEu9vEQ|FvZ3&GAnh2<}PIrZ`Z&eIyqNqoEI!@Wy*$XrF~`V zw$Qv60%WMryb6%wPgKmjz~TZ))5cS=Y(q{fNJ;fH$(-VR9%h93htHSHY3U3AfY8+(E*pMG#V3`*efI*Is5MH zNQQ(3oRW}I%BHYOI+gwUzkgC%Ta!|fT6c=HTi+e78(u!58hsH_enWpI;)|aYrYX5} zTAO<#K|hA|{mMaTL#wl*icUFkLU#}2dGR+f#frBLxAahm%H79!m_&a@UHw!OLmOlD z+s@rUA<8>+_V5wUo%HIO?4~eWzEv#UW8CDo>+G7ayIUGYO%#*F&hlFt+?5Xxi$`OHOJ3Y&V@iaIBvc) z${UJC$E)|EF^i+`z3OQE=;ELC-mG(J@0%^p##m!4w)m^!+A#Drqz+v#>rN@GtmdSy z&TMWTjopYG%8vtUa{Su;sHU}1%69^rD@~+4?;zCU{&!@0=r+X^wcJF^Qq%;#P4CY%D=!NIoJv1W-u#K$xm{Bi=1d2PHQP)J~kHu42IRQ!ShsMSO&O+u; zMByNAYs*3@%MD5@m~3=LU8 zuqB_ekTx>PmNk>$I8QLTSBj)2ft>Hl&lZ!J3oKsI067?f1C=|&1#H#R*U5(9W9qEPdb^jTq37+Cb?vO(vuH$Nj3k}1vE>di*!u1Y@N0?@%SnF4zVC4 zac=3g3BEv+7{N?SX#ojWY33gEZe%a)*x_(w zeZo)M+37ef@uPhmj$K*69@s^D%0>vzi~SEFyJ^MY!?UV9*2U+~gSd=V4L#K(m!+6e zl8tJqXjnv1NGfv^`eh+W%>i#nk;!{bg}w@A-H}ab?uPJ$u(OBo^;PGEN=XH|Ox((-;*Q;ct%wltM#?lfgvTxm-*JI@S@`|NEq zS4XdXYz48(FWMnR2igorw~nL=i__mKXaTXv6%j;fuwc|kIjLX{pYtZO*(SFwS~Lf| zp;DY8yevl8J>o_Pu?&q)Ikb&d=P?kome7&bS5>tIg@^`36l*hmRzqbm(`88XZcvCo z?&^4SIRc5AI(|wDm!a(E`a{&?PCS=G%rW&H9YdoXOHvB!DroEQOSeXLS2LmUY92%5 zia6*qHy=|$R^>dULGp^1n(#mA7aFvX!X`heKQ}WY!7fjK_PA$YVEn@Hcn1Fzz_6l0 zc;%iPvsixb6`|qpUZH>Q3H|wPaYtmy1LDw}h4rN&5+Nnv|8d)ZofP9<3X26>Mv)XV z{wXHkGMzCggEIw{=xR65zsIlFfM@}(sLkWL`Cb%P-_LI{&*U#xF4whiSK>dek3Ks0 zw{BN`m!hkFm+o)Z#~-==N!+!t3#Rv$-Nv^y^qa6T@sUycfws1)e}whT^34wjU_W}d zN@4K1o?!eXJnR=^;-_`reX}OjfB0T?t?qrD@ljY-f4DM66_XW{Nk>+b zq(Ypr`j;8Leo6j*GajwZ5GzQfUKFg47e~JTqZ~i~BtPGrUmjjeRExmkj8SU0Pg}2% z1ZcMvZ8wG*q1W!6J9Rp$Vx1l4!)FKC!DoSppbkO=>suH#>t>}x2y4l_mDKtO?#?fY zfIzbk8Y#_I&Ysm>SJ#W}a|+Yi8#1)BXKUy9QvN}=D}Q`Bp7*EF($iOC7cRWT8jVjs zqb+S-=lN)se#Nb*2WSNJceQL?9mz1$CZ^<+scqZar>aw?wo_Tt?d?Ue$=ZgjOb-#t zZ!iRdc?{PR7sVqU&h#7Dvc+6JF;QlQyQhLGXFldG-S;yD5=TD#u;tH)Sk5nk|KZ)B z$ewMh&t7?M;@s9Ezth*lWi3}8?emco$Sve6gXDlHeAkM5g)rp=>Ej zH-d=6evJu&9})WWUpxG`u|-c)qng<;FLvV*2D#A)je9XT=e)h3wp*=ZfF29jamZPW z(sSn;G}IH`fOZ;(dUih1UD16W-BCl~b{(D3_jGo4aOH$`bJEL=S*>=K6KGnO%M9^& z%#2e8OZ#mDqKIikR6zN`Y{+{(=k+|pEPHB(IZxpn912rdt*fV)c0QhpKcAL%n54+V zX%L*$ie*xgYc(0RN(H@J>PB~5*oDXmB4X^sZU~4OjNZw|k0~y{0^<~6%CIOa8p^~{ zl!;@kATGBhHD}g531tnr$unx-DC_*w=eT$LweW+##;3>3H#xL_NFT*<1Z?k+N%}sI zc)?TXZ;%6wATSjAw|oz*-ey|}F*vak@tBAA=sNe~pEUau@9R2BMGd~)f81Xe28k@vty=NRAS6=`0Q!tjn%!nP?F^_qgaq>=wdSrw& z!d_UUR6;RK5rqJ}j8_{gxUhJ+QclVVTR2f*of%*MSz^EIOILrjUM*zS4dzne%amkp zl1SD$mslKT5D`$U-5Hf;jALVq8$yVNR$zz;Hnhd0PpMBc_ZWg|POH#_e9KHTD`?{^ zFZVqCjFddf&2viVC!XEshJo7y?={*MTF5Iab3**$g}VI2+J(Aib*%BsP8dOQWJMd6 z4tfTcZNOH{U#x2EWGeOe)mV@PVz7O26KkhQ$tQ#fM?L$;hps|QQ;c~?ZgQQ%kmse~ zgMbA!$9$U_Efh2y$8l%RsOfrTl*L!?r#+(zRu)|_nS5ujTbG(jW>}wUgb}Nt7d3;Y zNlk7^o%U9vAdTmw5DZTxNXydb|CJ!o8`#~ZC17q&0I2quu!Av z+H9?y7M+ot5mOc}B15#cSHZN`)X>LkYe#>rs@cjq?w!Vml&+MRp9}_1p<$^!MMpqK z8tP>aJuJa^nrbaL{Z2bmuO*~N7bEI)(LoNo@s+{*qq(R3wVOw1{ubpeVtKUtiu2;W zDHKlEM}%N-4u}|p<0fv*)WTtg8AXjz?2^8}puCotDN_KOyhl1EFK+tV6@i22bo?AS zd5R|6j+fHCJmy<=PRdI$vlY07BmY7eH;oXF!2cF!R|LntG84tzZRnxV(hI{uFPej6 zgr^e}qQ;O=41#zLQuqv{Cy|YPiR_FhLA^dQu=Ab3{F~m(zr{5QyMJ)tA>4#jT>JW) z@^gvlj44x;DX4;#mpXa=J#JlUzvdIr)8T81J9Oqyh2(|$&$epWU;stZJDT3Dz^>tG zOAkXb|NZ+~h%|F~!|b*!R<|ioB@I#k`yWH@iyULx26n6*^!sC`8hZo}Rx?(mC^C9F zIB;ksBHwqgk?p5Uv3r!PH@t&Ehw;G#_@JG^G$*x+OH0MANzKd*t<6zqSFUyH&E?RZ zXA$J&qLqu{!X{8P`?_16TNJbRzY#oCqbwLV(&p?&&<%uK7K@s3o6ksZ>BYUk5n*IUInPaw=#~Xx(spa^ zub0Wzb~?-=7QbB7jVpKe{~9-mAqFg9rqJW9-tuj1T)LDtnLKyt@$@w-Y{49TKfX@ypquT7|_=cmi} zPrpmevkDSaPv%VdFuqeGJeZ<3=--IVZGJP3*^eCq zvOJ63c+W(l@9gO4i4!;uzWwH|(#VB+?B@gVSBUyUON!Mu>wx?11{2PlIe1`TIKjz! zJzjc`XW+ts$N69WVpYQoO?zmXxsY&p;1;;E`D+U&mlsZ6n>8&kT)gbR9Ot+@P77HP z>67%ZH{_RqX^rI}j?6-7vXQVHd0ZU!OK|U_%16DyvXhYBhX>*quVzAXR~FXPov`Jw z{8LE>HX953@-n4)2csgN^OQdwVQsVH+;4mA3rjRzFA4@jnJBvZ3!m3avJM%wCnsr9 z&Om>0Bl(#LRM=Xt0ED=F>Gt}EuT3iRfdPy(Sg`r{P_tZL=E>61G#otlq>nGqt^KwI z=lLjo@T9DY^r>IQWG%-`a}^$SD+BTR*4i^-7_s36|hZ_ap%d3sX&aC~9-{RB@liFE*Ky{RyAp z&reP^rH)_}`(IQ1eY8IoVc8c#e@h^BRM3tmjV2#I*@Vn5g5!yXkAQqlFm4DAWlc^f z{B!YQVNc?NX+H4JSQjg#F9dXYd2sPs-Kj%Aed1fhW`*a7bA?cAygYtoJCQu#YDFcn z!SyroCKL$#QqX11_*W_h_XYHrlLB9jICEl_gYvly&fly4AkS01!v9NBd675wgQo2%ZeK*?Jz@CQTjWuevb<4gwAN!3=`q%2y zVIB(j&5WLD-OSIu3wnL6n-zU5@iN4b0RlZ^Ft6bGwuGIPH*4vSjn z_%r|4pv_g7Z^~Am?*!v2Q-4t?GPa7WGZB}07R9~B@I+i@imWed@@OwM1YrxLrj*x) zN{?V=-k^0(-|&yVdc#m)oQ*N=%I~EP;95ckkmb$w*C%o6O#pIbUCBO+iGMSjE(+M% zWxjXTO%)}t%!l$ag7uDTK4-*T{+@aiCyBVZxrvoy#KNvBfylCIEDl>2i@k?FdzO+o zEtu`Mtphe-WFE2N;>|ZFLvzUG0BorME5Zy zr5wU4-qg*Qif^z{joB2!fc=p>N2w>L_7txn^6k5vWBK-J&*7Ah00nT4_o(q%RyDIyPxVYM&%q8Y^o3N zH!(c;mCtwHa}DyOy#VrK@=eTu&0YrBSu7gz;cMVVXfjAn{}8ob6MoI+-}fPtV4~s= zX9u5;Ak#h-j)!j~IZ^*YAqq3e;(ykZf`fn2t)zr@wzL?3OIHcF5CQ8N?nXtapAN1x z%&2N8cFlZ_9!novFUPum(H8oBb?;_i?Y;!9TX?|*+103~tZMQ&y7zUlJc#YYkLT%l Kz7$L*P6GfPwKY@# diff --git a/dashboard/src/i18n/locales/en-US/features/conversation.json b/dashboard/src/i18n/locales/en-US/features/conversation.json index 3e8cb71284..d6f28706b3 100644 --- a/dashboard/src/i18n/locales/en-US/features/conversation.json +++ b/dashboard/src/i18n/locales/en-US/features/conversation.json @@ -31,6 +31,10 @@ "createdAt": "Created At", "updatedAt": "Updated At", "actions": "Actions" + }, + "umoDisplay": { + "parsed": "Parsed", + "raw": "UMO" } }, "actions": { @@ -97,6 +101,8 @@ "batchDeletePartial": "Delete completed: {deleted} successful, {failed} failed", "exportSuccess": "Export successful", "exportError": "Export failed", - "noItemSelectedForExport": "Please select conversations to export first" + "noItemSelectedForExport": "Please select conversations to export first", + "copySuccess": "Copied", + "copyError": "Copy failed" } -} \ No newline at end of file +} diff --git a/dashboard/src/i18n/locales/en-US/features/cron.json b/dashboard/src/i18n/locales/en-US/features/cron.json index fdb20243ac..6635a6fbe6 100644 --- a/dashboard/src/i18n/locales/en-US/features/cron.json +++ b/dashboard/src/i18n/locales/en-US/features/cron.json @@ -1,10 +1,14 @@ { + "header": { + "eyebrow": "Automation", + "live": "Live Sync" + }, "page": { "title": "Future Task Management", "beta": "Experimental", "subtitle": "See scheduled tasks for AstrBot. AstrBot will wake up, run them, and deliver the results.", "proactive": { - "supported": "Proactive delivery is available on: {platforms}", + "supported": "Proactive delivery is available only on the configured platforms below", "unsupported": "No proactive messaging platforms enabled. Turn them on in Platform settings." } }, @@ -15,8 +19,41 @@ "cancel": "Cancel", "submit": "Create" }, + "overview": { + "totalTasks": "Total Tasks", + "totalTasksNote": "Registered future tasks", + "enabledTasks": "Enabled Tasks", + "enabledTasksNote": "Tasks ready to wake and run", + "oneOffTasks": "One-off Tasks", + "recurringTasksNote": "{count} recurring tasks", + "proactivePlatforms": "Proactive Platforms", + "proactivePlatformsNote": "Platforms able to deliver results proactively" + }, + "section": { + "registered": { + "title": "Task List", + "subtitle": "Review the registered tasks, execution timing, and current state" + }, + "delivery": { + "title": "Delivery Status", + "subtitle": "After a task runs, results are proactively sent back through supported platforms", + "support": "Proactive delivery", + "available": "Available", + "unavailable": "Unavailable", + "enabledPlatforms": "Enabled platforms" + }, + "quickCreate": { + "title": "Quick Create", + "runMode": "Task mode", + "target": "Targeting" + }, + "platforms": { + "title": "Supported Platforms" + } + }, "table": { "title": "Registered Tasks", + "subtitle": "Track cron setup, session target, last run history, and enabled state", "empty": "No tasks yet.", "headers": { "name": "Name", diff --git a/dashboard/src/i18n/locales/en-US/features/subagent.json b/dashboard/src/i18n/locales/en-US/features/subagent.json index 7bfb0b08da..e9ea127f51 100644 --- a/dashboard/src/i18n/locales/en-US/features/subagent.json +++ b/dashboard/src/i18n/locales/en-US/features/subagent.json @@ -1,4 +1,7 @@ { + "header": { + "eyebrow": "Orchestration" + }, "page": { "title": "SubAgent Orchestration", "beta": "Experimental", @@ -8,9 +11,20 @@ "refresh": "Refresh", "save": "Save", "add": "Add SubAgent", + "expand": "Expand", + "collapse": "Collapse", "delete": "Delete", "close": "Close" }, + "overview": { + "totalAgents": "Total SubAgents", + "totalAgentsNote": "Configured delegate agents", + "enabledAgents": "Enabled Agents", + "enabledAgentsNote": "Agents available for handoff", + "mainOrchestration": "Main Orchestration", + "boundPersonas": "Bound Personas", + "boundPersonasNote": "Agents with an attached persona" + }, "switches": { "enable": "Enable SubAgent orchestration", "enableHint": "Enable sub-agent functionality", @@ -23,7 +37,9 @@ }, "section": { "title": "SubAgents", - "globalSettings": "Global Settings" + "subtitle": "Configure delegate agents, personas, and descriptions for the main LLM", + "globalSettings": "Global Settings", + "agentSetup": "Agent Setup" }, "cards": { "statusEnabled": "Enabled", @@ -33,7 +49,9 @@ "switchLabel": "Enable", "previewTitle": "Preview: handoff tool shown to the main LLM", "personaChip": "Persona: {id}", - "personaPreview": "PERSONA PREVIEW" + "personaPreview": "Persona Preview", + "noDescription": "No description yet", + "previewHint": "Review the currently selected persona to verify the handoff target." }, "form": { "nameLabel": "Agent name (used for transfer_to_{name})", @@ -48,6 +66,9 @@ "messages": { "loadConfigFailed": "Failed to load config", "loadPersonaFailed": "Failed to load persona list", + "unsavedChangesNotice": "You have unsaved changes on this page. Save before leaving.", + "unsavedChangesLeaveConfirm": "You have unsaved changes. Leaving will discard them. Continue?", + "unsavedChangesReloadConfirm": "You have unsaved changes. Reloading will discard them. Continue?", "nameMissing": "A SubAgent is missing a name", "nameInvalid": "Invalid SubAgent name: only lowercase letters/numbers/underscores, starting with a letter", "nameDuplicate": "Duplicate SubAgent name: {name}", diff --git a/dashboard/src/i18n/locales/ru-RU/features/conversation.json b/dashboard/src/i18n/locales/ru-RU/features/conversation.json index 33ebefa741..ea29fe1b1e 100644 --- a/dashboard/src/i18n/locales/ru-RU/features/conversation.json +++ b/dashboard/src/i18n/locales/ru-RU/features/conversation.json @@ -31,6 +31,10 @@ "createdAt": "Создан", "updatedAt": "Обновлен", "actions": "Действия" + }, + "umoDisplay": { + "parsed": "Разобрано", + "raw": "UMO" } }, "actions": { @@ -97,6 +101,8 @@ "batchDeletePartial": "Удаление завершено: успешно {deleted}, ошибок {failed}", "exportSuccess": "Экспорт завершен", "exportError": "Ошибка экспорта", - "noItemSelectedForExport": "Сначала выберите диалоги для экспорта" + "noItemSelectedForExport": "Сначала выберите диалоги для экспорта", + "copySuccess": "Скопировано", + "copyError": "Не удалось скопировать" } -} \ No newline at end of file +} diff --git a/dashboard/src/i18n/locales/ru-RU/features/cron.json b/dashboard/src/i18n/locales/ru-RU/features/cron.json index 5bc98ab13c..a7d36864f1 100644 --- a/dashboard/src/i18n/locales/ru-RU/features/cron.json +++ b/dashboard/src/i18n/locales/ru-RU/features/cron.json @@ -1,10 +1,14 @@ { + "header": { + "eyebrow": "Automation", + "live": "Живая синхронизация" + }, "page": { "title": "Запланированные задачи", "beta": "Экспериментальные функции", "subtitle": "Управление будущими задачами AstrBot. Бот автоматически проснется, выполнит задачу и отправит результат. Требуется включить «Проактивные способности» в конфигурации.", "proactive": { - "supported": "Отправка результатов поддерживается на платформах: {platforms}", + "supported": "Отправка результатов поддерживается только на указанных ниже настроенных платформах", "unsupported": "Нет платформ, поддерживающих проактивные сообщения. Включите их в настройках платформ." } }, @@ -15,8 +19,41 @@ "cancel": "Отмена", "submit": "Создать" }, + "overview": { + "totalTasks": "Всего задач", + "totalTasksNote": "Все зарегистрированные будущие задачи", + "enabledTasks": "Активные задачи", + "enabledTasksNote": "Задачи, которые будут автоматически выполнены", + "oneOffTasks": "Разовые задачи", + "recurringTasksNote": "Повторяющихся задач: {count}", + "proactivePlatforms": "Проактивные платформы", + "proactivePlatformsNote": "Платформы, способные отправлять результат сами" + }, + "section": { + "registered": { + "title": "Список задач", + "subtitle": "Просматривайте зарегистрированные задачи, время запуска и состояние" + }, + "delivery": { + "title": "Статус доставки", + "subtitle": "После выполнения задачи результат будет отправлен обратно через поддерживаемые платформы", + "support": "Проактивная доставка", + "available": "Доступна", + "unavailable": "Недоступна", + "enabledPlatforms": "Включенные платформы" + }, + "quickCreate": { + "title": "Быстрое создание", + "runMode": "Режим задачи", + "target": "Целевой контекст" + }, + "platforms": { + "title": "Поддерживаемые платформы" + } + }, "table": { "title": "Список задач", + "subtitle": "Отслеживайте cron, целевую сессию, историю запусков и состояние", "empty": "Задач пока нет.", "headers": { "name": "Имя", @@ -63,4 +100,4 @@ "createSuccess": "Задача создана", "createFailed": "Ошибка создания" } -} \ No newline at end of file +} diff --git a/dashboard/src/i18n/locales/ru-RU/features/subagent.json b/dashboard/src/i18n/locales/ru-RU/features/subagent.json index 368bd20467..4f6b298b4d 100644 --- a/dashboard/src/i18n/locales/ru-RU/features/subagent.json +++ b/dashboard/src/i18n/locales/ru-RU/features/subagent.json @@ -1,4 +1,7 @@ { + "header": { + "eyebrow": "Orchestration" + }, "page": { "title": "Оркестрация SubAgent", "beta": "Экспериментально", @@ -8,9 +11,20 @@ "refresh": "Обновить", "save": "Сохранить", "add": "Добавить SubAgent", + "expand": "Развернуть", + "collapse": "Свернуть", "delete": "Удалить", "close": "Закрыть" }, + "overview": { + "totalAgents": "Всего SubAgent", + "totalAgentsNote": "Количество настроенных под-агентов", + "enabledAgents": "Активные агенты", + "enabledAgentsNote": "Под-агенты, доступные для handoff", + "mainOrchestration": "Основная оркестрация", + "boundPersonas": "Привязанные персонажи", + "boundPersonasNote": "Под-агенты с выбранной персоной" + }, "switches": { "enable": "Включить оркестрацию SubAgent", "enableHint": "Включить функциональность под-агентов", @@ -23,7 +37,9 @@ }, "section": { "title": "Субагенты", - "globalSettings": "Глобальные настройки" + "subtitle": "Настройте делегируемых агентов, персонажей и описания для основного LLM", + "globalSettings": "Глобальные настройки", + "agentSetup": "Настройка агента" }, "cards": { "statusEnabled": "Включено", @@ -33,7 +49,9 @@ "switchLabel": "Включить", "previewTitle": "Предпросмотр: инструмент handoff, видимый основному LLM", "personaChip": "Персонаж: {id}", - "personaPreview": "ПРЕДПРОСМОТР ПЕРСОНАЖА" + "personaPreview": "Предпросмотр персонажа", + "noDescription": "Описание пока не задано", + "previewHint": "Просмотрите выбранную персону, чтобы проверить цель handoff." }, "form": { "nameLabel": "Имя агента (используется для transfer_to_{name})", @@ -48,6 +66,9 @@ "messages": { "loadConfigFailed": "Не удалось загрузить конфигурацию", "loadPersonaFailed": "Не удалось загрузить список персонажей", + "unsavedChangesNotice": "На странице есть несохраненные изменения. Сохраните их перед уходом.", + "unsavedChangesLeaveConfirm": "Есть несохраненные изменения. При уходе со страницы они будут потеряны. Продолжить?", + "unsavedChangesReloadConfirm": "Есть несохраненные изменения. Обновление конфигурации их сбросит. Продолжить?", "nameMissing": "У SubAgent отсутствует имя", "nameInvalid": "Недопустимое имя SubAgent: только строчные латинские буквы/цифры/подчеркивания, должно начинаться с буквы", "nameDuplicate": "Дублирующееся имя SubAgent: {name}", @@ -62,4 +83,4 @@ "subtitle": "Добавьте первого под-агента, чтобы начать", "action": "Создать первого агента" } -} \ No newline at end of file +} diff --git a/dashboard/src/i18n/locales/zh-CN/core/navigation.json b/dashboard/src/i18n/locales/zh-CN/core/navigation.json index 02370bcced..82fd487040 100644 --- a/dashboard/src/i18n/locales/zh-CN/core/navigation.json +++ b/dashboard/src/i18n/locales/zh-CN/core/navigation.json @@ -5,7 +5,7 @@ "providers": "模型提供商", "commands": "指令管理", "persona": "人格设定", - "subagent": "SubAgent 编排", + "subagent": "子代理编排", "toolUse": "MCP", "extension": "插件", "extensionTabs": { diff --git a/dashboard/src/i18n/locales/zh-CN/features/conversation.json b/dashboard/src/i18n/locales/zh-CN/features/conversation.json index 8a5ca6eb54..583c6f44d4 100644 --- a/dashboard/src/i18n/locales/zh-CN/features/conversation.json +++ b/dashboard/src/i18n/locales/zh-CN/features/conversation.json @@ -22,7 +22,7 @@ }, "table": { "headers": { - "title": "对话标题", + "title": "标题", "platform": "机器人 ID", "type": "消息类型", "cid": "对话 ID", @@ -31,6 +31,10 @@ "createdAt": "创建时间", "updatedAt": "更新时间", "actions": "操作" + }, + "umoDisplay": { + "parsed": "解析后", + "raw": "UMO" } }, "actions": { @@ -97,6 +101,8 @@ "batchDeletePartial": "删除完成:成功 {deleted} 个,失败 {failed} 个", "exportSuccess": "导出成功", "exportError": "导出失败", - "noItemSelectedForExport": "请先选择要导出的对话" + "noItemSelectedForExport": "请先选择要导出的对话", + "copySuccess": "复制成功", + "copyError": "复制失败" } -} \ No newline at end of file +} diff --git a/dashboard/src/i18n/locales/zh-CN/features/cron.json b/dashboard/src/i18n/locales/zh-CN/features/cron.json index 05df8aa637..5e8b4b5726 100644 --- a/dashboard/src/i18n/locales/zh-CN/features/cron.json +++ b/dashboard/src/i18n/locales/zh-CN/features/cron.json @@ -1,22 +1,59 @@ { + "header": { + "eyebrow": "Automation", + "live": "实时同步" + }, "page": { "title": "未来任务管理", "beta": "实验性", - "subtitle": "查看给 AstrBot 布置的未来任务。AstrBot 将会被自动唤醒、执行任务,然后将结果告知任务布置方。需要先在配置文件中启用“主动型能力”。", + "subtitle": "AstrBot 可以被自动唤醒然后执行任务,并将结果告知任务布置方。需要先在配置文件中启用“主动型能力”。", "proactive": { - "supported": "主动发送结果仅支持以下您已配置的平台:{platforms}", + "supported": "主动发送结果仅支持以下您已配置的平台", "unsupported": "暂无支持主动消息的平台,请在平台设置中开启。" } }, "actions": { - "create": "新建任务", + "create": "新建", "refresh": "刷新", "delete": "删除", "cancel": "取消", "submit": "创建" }, + "overview": { + "totalTasks": "任务总数", + "totalTasksNote": "当前已注册的未来任务", + "enabledTasks": "启用任务", + "enabledTasksNote": "执行器会按计划唤醒并运行", + "oneOffTasks": "一次性任务", + "recurringTasksNote": "循环任务 {count} 个", + "proactivePlatforms": "主动平台", + "proactivePlatformsNote": "已开启主动消息的平台数量" + }, + "section": { + "registered": { + "title": "任务列表", + "subtitle": "集中查看当前注册任务、执行时间与启用状态" + }, + "delivery": { + "title": "投递状态", + "subtitle": "未来任务执行后的结果,会通过支持主动消息的平台回传", + "support": "主动投递", + "available": "可用", + "unavailable": "不可用", + "enabledPlatforms": "已启用平台" + }, + "quickCreate": { + "title": "快速创建", + "runMode": "任务模式", + "target": "目标定位" + }, + "platforms": { + "title": "适用平台" + } + }, "table": { "title": "已注册任务", + "subtitle": "支持查看 cron、会话、最近执行记录与启用状态", "empty": "暂无任务。", "headers": { "name": "名称", diff --git a/dashboard/src/i18n/locales/zh-CN/features/subagent.json b/dashboard/src/i18n/locales/zh-CN/features/subagent.json index 9c7a43d7f2..cd49ae432d 100644 --- a/dashboard/src/i18n/locales/zh-CN/features/subagent.json +++ b/dashboard/src/i18n/locales/zh-CN/features/subagent.json @@ -1,39 +1,57 @@ { + "header": { + "eyebrow": "Subagent Orchestration" + }, "page": { - "title": "SubAgent 编排", + "title": "子代理编排", "beta": "实验性", - "subtitle": "主 LLM 可直接使用自身工具,也可通过 handoff 分派给各个 SubAgent。" + "subtitle": "主代理可直接使用自身工具,也可将部分任务委派给各个子代理,完成更复杂的任务,避免主代理上下文过长。" }, "actions": { "refresh": "刷新", "save": "保存", - "add": "新增 SubAgent", + "add": "新增子代理", + "expand": "展开设置", + "collapse": "收起设置", "delete": "删除", "close": "关闭" }, + "overview": { + "totalAgents": "子代理总数", + "totalAgentsNote": "当前已配置的子代理数量", + "enabledAgents": "启用中的 Agent", + "enabledAgentsNote": "会参与 handoff 编排的子代理", + "mainOrchestration": "主编排状态", + "boundPersonas": "已绑定 Persona", + "boundPersonasNote": "完成角色绑定的子代理数量" + }, "switches": { - "enable": "启用 SubAgent 编排", + "enable": "启用子代理编排", "enableHint": "启用子代理功能", - "dedupe": "主 LLM 去重重复工具(与 SubAgent 重叠的工具将被隐藏)", - "dedupeHint": "从主代理中移除重复工具" + "dedupe": "主 LLM 去重重复工具(与子代理重叠的工具将被隐藏)", + "dedupeHint": "从主代理中移除与子代理重复的工具" }, "description": { - "disabled": "不启动:SubAgent 关闭;主 LLM 按 persona 规则挂载工具(默认全部),并直接调用。", - "enabled": "启动:主 LLM 会保留自身工具并挂载 transfer_to_* 委派工具。若开启“去重重复工具”,与 SubAgent 指定的工具重叠部分会从主 LLM 工具集中移除。" + "disabled": "未启动子代理编排功能。", + "enabled": "子代理将作为工具放在主代理的工具集中,主代理会在适当的时机调用子代理完成任务。" }, "section": { - "title": "SubAgents 配置", - "globalSettings": "全局设置" + "title": "子代理配置", + "subtitle": "为主代理配置可委派的子代理、人格与描述信息", + "globalSettings": "全局设置", + "agentSetup": "Agent 设置" }, "cards": { "statusEnabled": "启用", "statusDisabled": "停用", - "unnamed": "未命名 SubAgent", + "unnamed": "未命名子代理", "transferPrefix": "transfer_to_{name}", "switchLabel": "启用", "previewTitle": "预览:主 LLM 将看到的 handoff 工具", "personaChip": "Persona: {id}", - "noDescription": "暂无描述" + "noDescription": "暂无描述", + "personaPreview": "人格预览", + "previewHint": "这里展示当前所选 Persona 的预览,便于确认 handoff 目标。" }, "form": { "nameLabel": "Agent 名称(用于 transfer_to_{name})", @@ -41,7 +59,7 @@ "providerLabel": "Chat Provider(可选)", "providerHint": "留空表示跟随全局默认 provider。", "personaLabel": "选择人格设定", - "personaHint": "SubAgent 将直接继承所选 Persona 的系统设定与工具。在人格设定页管理和新建人格。", + "personaHint": "子代理 将直接继承所选 Persona 的系统设定与工具。在人格设定页管理和新建人格。", "personaPreview": "人格预览", "descriptionLabel": "对主 LLM 的描述(用于决定是否 handoff)", "descriptionHint": "这段会作为 transfer_to_* 工具的描述给主 LLM 看,建议简短明确。" @@ -49,17 +67,20 @@ "messages": { "loadConfigFailed": "获取配置失败", "loadPersonaFailed": "获取 Persona 列表失败", - "nameMissing": "存在未填写名称的 SubAgent", - "nameInvalid": "SubAgent 名称不合法:仅允许英文小写字母/数字/下划线,且需以字母开头", - "nameDuplicate": "SubAgent 名称重复:{name}", - "personaMissing": "SubAgent {name} 未选择 Persona", + "unsavedChangesNotice": "当前页面有未保存修改,请在离开前保存。", + "unsavedChangesLeaveConfirm": "当前页面有未保存修改,离开后将丢失这些更改。是否继续离开?", + "unsavedChangesReloadConfirm": "当前页面有未保存修改,刷新配置会丢失这些更改。是否继续刷新?", + "nameMissing": "存在未填写名称的子代理", + "nameInvalid": "子代理名称不合法:仅允许英文小写字母/数字/下划线,且需以字母开头", + "nameDuplicate": "子代理名称重复:{name}", + "personaMissing": "子代理 {name} 未选择 Persona", "saveSuccess": "保存成功", "saveFailed": "保存失败", "nameRequired": "名称必填", "namePattern": "仅支持小写字母、数字和下划线" }, "empty": { - "title": "未配置 SubAgent", + "title": "未配置子代理", "subtitle": "添加一个新的子代理以开始", "action": "创建第一个 Agent" } diff --git a/dashboard/src/styles/dashboard-shell.css b/dashboard/src/styles/dashboard-shell.css new file mode 100644 index 0000000000..83a4bd31e6 --- /dev/null +++ b/dashboard/src/styles/dashboard-shell.css @@ -0,0 +1,292 @@ +.dashboard-page { + --dashboard-bg: rgb(var(--v-theme-background)); + --dashboard-surface: rgb(var(--v-theme-surface)); + --dashboard-text: rgb(var(--v-theme-on-surface)); + --dashboard-muted: rgba(var(--v-theme-on-surface), 0.68); + --dashboard-subtle: rgba(var(--v-theme-on-surface), 0.56); + --dashboard-border: rgba(var(--v-theme-on-surface), 0.1); + --dashboard-border-strong: rgba(var(--v-theme-on-surface), 0.14); + --dashboard-soft: rgba(var(--v-theme-primary), 0.08); + --dashboard-soft-strong: rgba(var(--v-theme-primary), 0.14); + min-height: 100%; + background: var(--dashboard-bg); +} + +.dashboard-page.is-dark { + --dashboard-border: rgba(var(--v-theme-on-surface), 0.14); + --dashboard-border-strong: rgba(var(--v-theme-on-surface), 0.18); + --dashboard-soft: rgba(var(--v-theme-primary), 0.12); + --dashboard-soft-strong: rgba(var(--v-theme-primary), 0.18); +} + +.dashboard-shell { + max-width: 1560px; + margin: 0 auto; + color: var(--dashboard-text); + font-family: "SF Pro Display", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; +} + +.dashboard-header { + display: flex; + justify-content: space-between; + align-items: flex-end; + gap: 24px; + margin-bottom: 24px; +} + +.dashboard-header-main { + min-width: 0; +} + +.dashboard-eyebrow { + margin-bottom: 8px; + color: var(--dashboard-subtle); + font-size: 12px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.dashboard-title { + margin: 0; + font-size: clamp(32px, 4vw, 44px); + line-height: 1.04; + font-weight: 700; + letter-spacing: -0.04em; +} + +.dashboard-subtitle { + margin: 10px 0 0; + color: var(--dashboard-muted); + font-size: 15px; + line-height: 1.6; + max-width: 860px; +} + +.dashboard-header-meta, +.dashboard-header-actions { + display: flex; + align-items: center; + gap: 10px; + flex-wrap: wrap; +} + +.dashboard-pill { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 10px 14px; + border: 1px solid var(--dashboard-border); + border-radius: 999px; + background: var(--dashboard-surface); + color: var(--dashboard-muted); + font-size: 13px; +} + +.dashboard-overview-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 16px; + margin-bottom: 20px; +} + +.dashboard-card { + border: 1px solid var(--dashboard-border); + border-radius: 16px; + background: var(--dashboard-surface); +} + +.dashboard-card--padded { + padding: 22px; +} + +.dashboard-overview-card { + padding: 20px 20px 18px; +} + +.dashboard-card-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 34px; + height: 34px; + border-radius: 12px; + background: var(--dashboard-soft); + color: rgb(var(--v-theme-primary)); +} + +.dashboard-card-label { + margin-top: 12px; + color: var(--dashboard-muted); + font-size: 13px; + font-weight: 500; +} + +.dashboard-card-value { + margin-top: 8px; + font-size: clamp(24px, 2vw, 34px); + line-height: 1.1; + font-weight: 700; + letter-spacing: -0.03em; + overflow-wrap: anywhere; +} + +.dashboard-card-note { + margin-top: 8px; + color: var(--dashboard-subtle); + font-size: 12px; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.dashboard-section-head { + display: flex; + justify-content: space-between; + align-items: flex-end; + gap: 16px; + margin-bottom: 16px; +} + +.dashboard-section-title { + font-size: 19px; + font-weight: 650; + letter-spacing: -0.02em; + line-height: 1.3; + overflow-wrap: anywhere; +} + +.dashboard-section-subtitle { + margin-top: 6px; + color: var(--dashboard-muted); + font-size: 13px; + line-height: 1.6; +} + +.dashboard-section-actions { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 10px; + flex-wrap: wrap; +} + +.dashboard-split-grid { + display: grid; + grid-template-columns: 1.6fr 0.9fr; + gap: 20px; + align-items: stretch; +} + +.dashboard-split-grid > * { + min-width: 0; + width: 100%; +} + +.dashboard-side-column { + display: grid; + gap: 20px; + align-content: start; + min-width: 0; +} + +.dashboard-meta-list { + display: grid; + gap: 10px; + margin-top: 18px; + padding-top: 14px; + border-top: 1px solid var(--dashboard-border); +} + +.dashboard-meta-row, +.dashboard-list-row { + display: flex; + justify-content: space-between; + align-items: center; + gap: 12px; + min-width: 0; +} + +.dashboard-meta-row { + color: var(--dashboard-muted); + font-size: 14px; +} + +.dashboard-list { + display: grid; + gap: 12px; +} + +.dashboard-list-row { + padding: 12px 0; + border-bottom: 1px solid var(--dashboard-border); + font-size: 14px; +} + +.dashboard-list-row:last-child { + border-bottom: 0; +} + +.dashboard-list-label { + color: var(--dashboard-text); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dashboard-empty { + color: var(--dashboard-muted); + font-size: 14px; +} + +.dashboard-scrollable { + max-height: 360px; + overflow-y: auto; + padding-right: 6px; +} + +.dashboard-form-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 16px; +} + +.dashboard-form-grid--single { + grid-template-columns: 1fr; +} + +.dashboard-dialog-card { + border: 1px solid var(--dashboard-border); + border-radius: 18px; +} + +@media (max-width: 1280px) { + .dashboard-overview-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +@media (max-width: 1080px) { + .dashboard-split-grid, + .dashboard-form-grid { + grid-template-columns: 1fr; + } +} + +@media (max-width: 900px) { + .dashboard-header, + .dashboard-section-head { + flex-direction: column; + align-items: flex-start; + } +} + +@media (max-width: 640px) { + .dashboard-overview-grid { + grid-template-columns: 1fr; + } + + .dashboard-card--padded, + .dashboard-overview-card { + padding: 18px; + } +} diff --git a/dashboard/src/views/ConversationPage.vue b/dashboard/src/views/ConversationPage.vue index 111a822026..c2430b25af 100644 --- a/dashboard/src/views/ConversationPage.vue +++ b/dashboard/src/views/ConversationPage.vue @@ -71,30 +71,60 @@ class="elevation-0" :items-per-page="pagination.page_size" :items-per-page-options="pageSizeOptions" show-select return-object :disabled="loading" @update:options="handleTableOptions"> -