feat: refine workbench chrome (#761)

* docs: define product and design direction

* style: establish restrained workbench primitives

* refactor: declutter board and task topbars

* style: align dockview panel chrome

* fix: align task topbar vcs control sizing

* refactor: surface integrations navigation

* fix: repair integrations and task creation workflow

* refactor: include linear in integrations navigation

* style: restore familiar workbench tones

* fix: add dockview tab breathing room

* fix: show configured integration shortcuts

* fix: hover open integrations menu

* fix: stabilize integrations hover menu

* fix: align home and dockview topbars

* fix: normalize home topbar controls

* fix: compact home topbar height

* fix: simplify home chrome and split buttons

* fix: move integrations to left chrome

* fix: restore home stats shortcut

* fix: add dockview tab breathing room

* fix: border home stats button

* fix: streamline dockview topbar actions

* fix: align task split button seam

* fix: address review feedback

* fix: restore topbar e2e affordances

* fix: stabilize workflow e2e isolation

* fix: add task topbar action overflow

* fix: address PR review feedback
This commit is contained in:
José Almeida
2026-05-01 21:02:41 +01:00
committed by GitHub
parent c8fcd6c5aa
commit 68c94dfa3a
48 changed files with 2615 additions and 890 deletions
+48 -46
View File
@@ -1,30 +1,23 @@
/* Dockview theme — Mux-inspired pill tabs */
/* Dockview workbench chrome */
.dockview-theme-kandev {
/* Overall dockview bg (visible in gaps between groups) — match card to eliminate visible gaps */
--dv-background-color: var(--card);
/* Each group panel area */
--dv-group-view-background-color: var(--background);
/* Separator / sash */
--dv-separator-border: var(--border);
--dv-active-sash-color: var(--primary);
--dv-paneview-header-border-color: var(--border);
/* Tab bar — #171717 bg, matching panel content */
--dv-tabs-and-actions-container-font-size: 12px;
--dv-tabs-and-actions-container-height: 40px;
--dv-tabs-and-actions-container-background-color: var(--background);
/* Active group, selected tab — #2a2a2a pill */
--dv-activegroup-visiblepanel-tab-background-color: var(--muted);
--dv-activegroup-visiblepanel-tab-color: var(--foreground);
/* Active group, unselected tab — transparent */
--dv-activegroup-hiddenpanel-tab-background-color: transparent;
--dv-activegroup-hiddenpanel-tab-color: var(--muted-foreground);
/* Inactive group tabs — more dimmed */
--dv-inactivegroup-visiblepanel-tab-background-color: color-mix(
in srgb,
var(--muted) 100%,
@@ -42,48 +35,38 @@
transparent
);
/* Close icon */
--dv-tab-close-icon: var(--muted-foreground);
/* Misc */
--dv-tabs-container-scrollbar-color: var(--scrollbar-thumb);
--dv-drag-over-background-color: color-mix(in oklab, var(--primary) 10%, transparent);
--dv-drag-over-border-color: var(--primary);
}
/* ── Inactive group tab bar dimming ── */
.dockview-theme-kandev .inactive-group .dv-tabs-and-actions-container {
/* opacity: 0.6; */
}
/* ── Tab bar container ── */
.dockview-theme-kandev .dv-tabs-and-actions-container {
background: var(--background);
border-bottom: 1px solid var(--border);
min-height: 34px;
height: 34px;
padding: 0 6px;
min-height: 40px;
height: 40px;
padding: 7px 5px 5px;
align-items: center;
}
/* Remove tab divider separators */
.dockview-theme-kandev .dv-tabs-container.dv-horizontal .dv-tab::before {
display: none !important;
}
/* ── Individual tabs — pill style ── */
.dockview-theme-kandev .dv-tab {
padding: 0;
margin: 0 2px;
margin: 0 1px;
font-size: 12px;
font-weight: 500;
min-width: auto;
border-radius: 6px;
border-radius: 5px;
border-bottom: none !important;
outline: none !important;
outline: none;
transition:
background-color 0.15s ease,
color 0.15s ease;
cursor: pointer;
}
.dockview-theme-kandev .dv-tab:hover {
@@ -91,28 +74,38 @@
color: var(--foreground);
}
/* Active tab — filled pill, no underline */
.dockview-theme-kandev .dv-active-tab {
border-bottom: none !important;
}
/* ── Default tab (built-in with close button) ── */
.dockview-theme-kandev .dv-tab:focus-within,
.dockview-theme-kandev .dv-tab:focus-visible {
box-shadow:
inset 0 0 0 1px var(--ring),
0 0 0 1px color-mix(in oklab, var(--ring) 20%, transparent);
}
.dockview-theme-kandev .dv-default-tab {
font-size: 12px;
font-weight: 500;
padding: 2px 6px;
gap: 6px;
padding: 0 7px;
gap: 5px;
height: 24px;
line-height: 1;
}
/* Close button — show on hover and active */
.dockview-theme-kandev .dv-default-tab .dv-default-tab-action {
opacity: 0;
transition: opacity 0.15s ease;
border-radius: 3px;
transition:
opacity 0.15s ease,
background-color 0.15s ease,
color 0.15s ease;
border-radius: 4px;
padding: 2px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
.dockview-theme-kandev .dv-default-tab .dv-default-tab-action .dv-svg {
@@ -122,6 +115,12 @@
.dockview-theme-kandev .dv-default-tab .dv-default-tab-action:hover {
background: color-mix(in srgb, var(--foreground) 12%, transparent);
color: var(--foreground);
}
.dockview-theme-kandev .dv-default-tab .dv-default-tab-action:focus-visible {
outline: 1px solid var(--ring);
outline-offset: 1px;
}
.dockview-theme-kandev .dv-tab:hover .dv-default-tab .dv-default-tab-action,
@@ -129,12 +128,10 @@
opacity: 1;
}
/* ── Panel content ── */
.dockview-theme-kandev .dv-content-container {
background: var(--card);
}
/* Strip all chrome from session panel wrappers inside dockview */
.dockview-theme-kandev .dv-content-container .session-panel-content-wrapper {
border-radius: 0 !important;
box-shadow: none !important;
@@ -147,7 +144,6 @@
margin: 0 !important;
}
/* ── Sash (resize handle) ── */
.dockview-theme-kandev .dv-resize-container > .sash-container .sash {
background: transparent;
transition: background-color 0.15s ease;
@@ -158,43 +154,49 @@
background: var(--primary);
}
/* Hide close button on tabs in locked groups (sidebar) */
.dockview-theme-kandev .dv-locked-groupview .dv-default-tab .dv-default-tab-action {
display: none !important;
}
/* ── Left header actions (after last tab — "+" button) ── */
.dockview-theme-kandev .dv-left-actions-container {
display: flex;
align-items: center;
padding-left: 4px;
padding-left: 3px;
gap: 2px;
}
.dv-tab:focus-within:after,
.dv-tab:focus:after {
.dockview-theme-kandev .dv-tab:focus-within::after,
.dockview-theme-kandev .dv-tab:focus::after {
outline: none !important;
}
/* ── Right header actions ── */
.dockview-theme-kandev .dv-right-actions-container {
display: flex;
align-items: center;
padding-right: 4px;
padding-right: 3px;
gap: 2px;
}
/* ── Void container (spacer between left-actions and right-actions) ── */
.dockview-theme-kandev .dv-left-actions-container button,
.dockview-theme-kandev .dv-right-actions-container button {
border-radius: 5px;
cursor: pointer;
}
.dockview-theme-kandev .dv-left-actions-container button:focus-visible,
.dockview-theme-kandev .dv-right-actions-container button:focus-visible {
outline: 1px solid var(--ring);
outline-offset: 1px;
}
.dockview-theme-kandev .dv-void-container {
flex: 1;
}
/* ── Watermark (empty group) ── */
.dockview-theme-kandev .dv-watermark {
background: transparent;
}
/* ── Drop target overlay ── */
.dockview-theme-kandev .drop-target-dropzone > .drop-target-selection {
border: 2px solid var(--primary);
background: color-mix(in oklab, var(--primary) 8%, transparent);