@@ -155,38 +155,23 @@ body {
155155 opacity : 0.4 !important ;
156156}
157157
158- /* Agent playground: the divider between Config and Chat is a hairline in the app's frame colour,
159- so both panels butt straight against it and their headers read as one row. The bar itself stays
160- 1px; the dragger overhangs it to give a comfortable grab zone without widening the seam. */
161- .playground-splitter-agent > .ant-splitter-bar {
162- background : var (--ag-shell-line ) !important ;
163- flex-basis : 1px !important ;
164- width : 1px !important ;
165- overflow : visible !important ;
166- }
167- .playground-splitter-agent .ant-splitter-bar-dragger {
168- position : absolute !important ;
169- left : 50% !important ;
170- right : auto !important ;
171- width : 11px !important ;
172- transform : translateX (-50% ) !important ;
173- background : transparent !important ;
174- }
175- /* Rest: the seam is just the bar. Hover and drag brighten it and float a short grip on it, so the
176- resize affordance shows up exactly when the pointer is there and stays invisible otherwise. */
158+ /* Agent playground: the collapse pill is disabled (Build/Chat switch lives in the header), so the
159+ drag handle is the ONLY resize affordance and must be discoverable on its own. Render a persistent
160+ centered grip on the divider — neutral at rest, then an accent TINT + taller on hover/drag — so it
161+ reads as a draggable handle without turning into a loud bar. Geometry is fully specified so it
162+ doesn't depend on antd's default pseudo-element placement. */
177163.playground-splitter-agent .ant-splitter-bar-dragger ::before {
178164 content : "" !important ;
179165 position : absolute !important ;
180166 top : 0 !important ;
181167 bottom : 0 !important ;
182168 left : 50% !important ;
183169 right : auto !important ;
184- width : 1 px !important ;
170+ width : 2 px !important ;
185171 height : auto !important ;
186172 border-radius : 0 !important ;
187173 transform : translateX (-50% ) !important ;
188- background : transparent !important ;
189- transition : background 150ms ease;
174+ background : var (--ag-colorBorderSecondary ) !important ;
190175}
191176.playground-splitter-agent .ant-splitter-bar-dragger ::after {
192177 content : "" !important ;
@@ -195,16 +180,22 @@ body {
195180 bottom : auto !important ;
196181 left : 50% !important ;
197182 right : auto !important ;
198- width : 3 px !important ;
199- height : 28 px !important ;
183+ width : 4 px !important ;
184+ height : 24 px !important ;
200185 border-radius : 9999px !important ;
201186 transform : translate (-50% , -50% ) !important ;
202187 background : var (--ag-colorTextTertiary ) !important ;
203- opacity : 0 !important ;
204188 transition :
189+ background 150ms ease,
205190 opacity 150ms ease,
206- background 150ms ease;
207- }
191+ height 150ms ease;
192+ }
193+ /* Hover + active: the full-height DIVIDER only strengthens to a neutral border tone — a long line in
194+ the accent colour reads as too loud. The small GRIP takes the accent (`colorPrimary`), softened to a
195+ TINT via opacity so it stays a clear-but-quiet handle in both themes (the tinted-primary border
196+ token blended into the dark divider; the full colour was too strong). `:not(-active)` mirrors the
197+ base `.playground-splitter` hover rule's specificity so we win the tie by source order — otherwise
198+ that base rule would swap the divider to a faint fill on hover (the fade). */
208199.playground-splitter-agent
209200 .ant-splitter-bar-dragger : hover : not (.ant-splitter-bar-dragger-active )::before ,
210201.playground-splitter-agent .ant-splitter-bar-dragger-active ::before {
@@ -213,10 +204,18 @@ body {
213204.playground-splitter-agent
214205 .ant-splitter-bar-dragger : hover : not (.ant-splitter-bar-dragger-active )::after ,
215206.playground-splitter-agent .ant-splitter-bar-dragger-active ::after {
216- opacity : 1 !important ;
217- }
218- .playground-splitter-agent .ant-splitter-bar-dragger-active ::after {
207+ height : 36px !important ;
219208 background : var (--ag-colorPrimary ) !important ;
209+ opacity : 0.7 !important ;
210+ }
211+ /* Agent playground: the divider is the GUTTER between the raised Config panel and the recessed
212+ Chat canvas — a real ~12px channel (not a hairline) that says "two workspaces". Widen the bar and
213+ tint it the near-black/soft-grey gutter tone; the grip pseudo-elements above still read as the
214+ handle. */
215+ .playground-splitter-agent > .ant-splitter-bar {
216+ background : var (--ag-surface-gutter ) !important ;
217+ flex-basis : 12px !important ;
218+ width : 12px !important ;
220219}
221220
222221/* ── Agent Playground surface classes ──────────────────────────────────────────────────────────
@@ -951,45 +950,3 @@ body {
951950 width : calc (100% + var (--ag-scroll-gutter , 0px ));
952951 margin-inline-end : calc (-1 * var (--ag-scroll-gutter , 0px ));
953952}
954-
955- /* Narrow agent config panel. The `config` container is declared on the config pane
956- (`@container/config` in MainLayout), so these rules only fire for the panel and never for
957- the same components elsewhere. Below 320px the panel drops every label it can spare and
958- keeps the icons and the values, so it stays readable while the user drags it small. */
959- .ag-config-title-short {
960- display : none;
961- }
962-
963- @container config (max-width : 320px ) {
964- .ag-config-title-long {
965- display : none;
966- }
967-
968- .ag-config-title-short {
969- display : inline;
970- }
971-
972- /* Section rows keep the leading icon and the right-hand summary (the harness and model
973- stay visible); only the title drops out. */
974- .ag-section-title {
975- display : none;
976- }
977-
978- /* Deploy and Commit become icon buttons. antd renders the label as a bare text node next
979- to the icon span, so zeroing the button's font size is the only way to drop the text
980- without changing every call site. The accessible name stays in the DOM. */
981- .ag-config-actions .ant-btn {
982- gap : 0 ;
983- font-size : 0 ;
984- }
985-
986- .ag-config-actions .ant-btn .ant-btn-icon {
987- font-size : 14px ;
988- }
989-
990- /* List rows (tools, MCP servers) drop their second line and their transport tag, so the
991- name itself survives instead of truncating to two characters. */
992- .ag-row-secondary {
993- display : none;
994- }
995- }
0 commit comments