Files
Cherry WangandCopilot ab8f31f0c0 Editor: Refine connected tabs UI (#337126)
* Editor: stabilize connected tabs across zoom levels

Let bottom-row connected tabs own the strip geometry directly instead of cancelling inherited pill gutters with negative offsets. This keeps their cap and document boundary aligned when Chromium rounds fractional zoom values while preserving upper-row pill spacing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: update connected tab strip geometry

Update the editor-tab layout expectations for direct bottom-row geometry and the intentional one-stroke overlap with the document surface.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: align connected tab actions to the top edge

Top-align the non-wrapping connected strip and give editor actions the same full row height so their controls remain vertically centered with tab labels.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: update component screenshot baseline

Accept the Ubuntu CI hash for the dark responsive model resize fixture after verifying the delta is limited to corner antialiasing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: share modern tab row geometry

Own the non-wrapping row-height formula in the shared Modern UI tab layout so connected editor actions cannot drift from tab density changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: restore stable component screenshot baseline

Restore the original dark responsive model resize hash after CI oscillated back, confirming the alternate corner-antialias hash was nondeterministic.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: isolate connected tab colors and borders

Give connected document tabs their own strip color, restore shared 2026 tab colors for Classic and Agents surfaces, and use the existing strip separator color for connected cap and shoulder outlines.

Refs #336320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: share connected tab left border

Overlap first and wrapped-row-start connected fills by one stroke so their left edge reuses the editor body border instead of drawing an adjacent double border.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: simplify connected tab color ownership

Use a single editorGroupHeader.connectedTabsBackground token and emit its derived styles only under the connected-tabs root marker.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: describe connected tab color as reusable

Document editorGroupHeader.connectedTabsBackground by visual role rather than feature enablement so it remains suitable for any connected tab treatment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: centralize connected tab ownership

Share the connected-tab root marker across editor controls, contribution setup, and theming, and document the dedicated stylesheet scoping invariant.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: define connected tab ownership

Document the reusable connected header color, border ownership, marker lifecycle, and separation between CSS geometry and editor control behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: derive connected action height from the row

Use flex stretch and the existing separator stroke so connected editor actions follow default and compact row heights without a special row-height variable.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: isolate all connected tab palettes

Move every strip background introduced by #335605 to editorGroupHeader.connectedTabsBackground while preserving the original shared tab backgrounds and independent foreground contrast fixes.

Refs #336320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: balance connected tab close spacing

Reserve upper-row pill insets consistently in tab width and close-action positioning, with single, terminal, wrapped, and left-action regression coverage.

Consolidates #336791

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: complete connected tab spacing

Restore the terminal close-action shoulder reservation from the consolidated fix and remove the generic wrapped-row top inset so connected strips meet the header edge directly.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: balance terminal tab actions

Let the external shoulder reservation own terminal geometry so close actions keep the same visible inset as ordinary and wrapped tabs. Add a regression assertion for balanced label- and edge-side action spacing.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: share connected tab frame borders

Classify the outermost connected tab row explicitly so active tabs can reuse the editor frame's top stroke. First-position active tabs also reuse the left stroke, while inner wrapped rows retain pill gutters and balanced close actions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: give frame sole border ownership

Avoid overlapping the connected tab and editor frame strokes. The outermost tab now starts at the frame's inner edge with transparent top and left borders, allowing the editor frame and its clipping radius to be the sole painter at every zoom level.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: center connected tab actions

Center the close glyph in its painted action surface and shift that surface outward by the same inset so label- and shoulder-side spacing remain balanced. Preserve sole editor-frame ownership of the outer border.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: repair connected tab outline regressions

Preserve high contrast outlines where the outer editor frame is transparent. Account for both cap radii when hiding clipped tab slivers, and update stale assertions for centered actions and editor-owned first-tab borders.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: derive close clearance from the tab surface

Share action clearance across row densities and label reservation, accounting for painted borders instead of shoulder width. Keep standard row starts on the editor frame and join top-row side strokes directly to its shared top edge.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: keep compact tab outlines visible under actions

Let the selected tab fill own its surface instead of painting a second opaque action-container background over the trailing cap stroke. Preserve the close target's own hover and keyboard focus treatment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: keep wrapped tab reservation width invariant

Reserve the pill inset and active shoulder before classifying rows, and consume the inset in fill and action positioning rather than changing fit widths through row markers. Exercise wrapping boundary widths in both resize directions and with changing active tabs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: explicitly retain high contrast close indicators

Draw hover and focus outlines on the close action itself while keeping the surrounding action container transparent. Cover focused actions in both high contrast themes and both wrapped rows; account for Electron's hidden test window when checking CSS focus state.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: stabilize connected tab surfaces and close targets

Keep wrapped fills contiguous, round free corners, and reserve close-action stroke clearance independently of selection. Preserve high-contrast target indicators without a second action-container border. Add geometry and selection regressions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: respect disabled connected tab action hover state

Exclude disabled actions without raising hover specificity over keyboard focus. Cover the real Alt-to-Close-Others transition in both high-contrast themes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: consolidate connected tab high-contrast frames

Share the HC editor-group frame without changing close-target geometry, keep shared strip theming separate from the Modern UI editor palette, and update regression coverage and documentation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Editor: ignore unrendered frame color in connected tab tests

All four browser and Electron CI failures asserted black for an absent frame whose unused border color inherits currentColor. Assert the color only for the rendered HC frame, retaining geometry and frame-presence coverage. Seed a non-black foreground so focused runs reproduce the full-suite inheritance.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-23 18:52:05 +00:00
..