Detected setup
@@ -55,7 +55,7 @@ export function DetectedSetupPreview({
onChange={(event) => onSetupChange(event.target.value)}
spellCheck={false}
rows={Math.min(Math.max(setup.split('\n').length, 2), 6)}
- className="setup-script-prompt-command max-h-28 w-full resize-y overflow-auto scrollbar-sleek rounded-md border border-sidebar-border px-2 py-1.5 font-mono text-[11px] leading-5 text-foreground shadow-xs outline-none focus-visible:ring-1 focus-visible:ring-ring"
+ className="setup-script-prompt-command max-h-28 w-full resize-y overflow-auto scrollbar-sleek rounded-md border border-worktree-sidebar-border px-2 py-1.5 font-mono text-[11px] leading-5 text-foreground shadow-xs outline-none focus-visible:ring-1 focus-visible:ring-ring"
/>
{provenance ? (
diff --git a/src/renderer/src/components/sidebar/SidebarNav.tsx b/src/renderer/src/components/sidebar/SidebarNav.tsx
index 297fcc8ae..03f22f76e 100644
--- a/src/renderer/src/components/sidebar/SidebarNav.tsx
+++ b/src/renderer/src/components/sidebar/SidebarNav.tsx
@@ -226,13 +226,16 @@ const SidebarNav = React.memo(function SidebarNav() {
className={cn(
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] font-medium tracking-tight transition-colors',
tasksActive
- ? 'bg-sidebar-accent text-sidebar-accent-foreground'
- : 'text-sidebar-foreground/60 hover:bg-sidebar-foreground/8',
+ ? 'bg-worktree-sidebar-accent text-worktree-sidebar-accent-foreground'
+ : 'text-worktree-sidebar-foreground/60 hover:bg-worktree-sidebar-foreground/8',
!canBrowseTasks && 'cursor-not-allowed opacity-50 hover:bg-transparent'
)}
>
Tasks
@@ -297,14 +300,14 @@ const SidebarNav = React.memo(function SidebarNav() {
className={cn(
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] font-medium tracking-tight transition-colors',
automationsActive
- ? 'bg-sidebar-accent text-sidebar-accent-foreground'
- : 'text-sidebar-foreground/60 hover:bg-sidebar-foreground/8'
+ ? 'bg-worktree-sidebar-accent text-worktree-sidebar-accent-foreground'
+ : 'text-worktree-sidebar-foreground/60 hover:bg-worktree-sidebar-foreground/8'
)}
>
@@ -322,12 +325,15 @@ const SidebarNav = React.memo(function SidebarNav() {
className={cn(
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] font-medium tracking-tight transition-colors',
activityActive
- ? 'bg-sidebar-accent text-sidebar-accent-foreground'
- : 'text-sidebar-foreground/60 hover:bg-sidebar-foreground/8'
+ ? 'bg-worktree-sidebar-accent text-worktree-sidebar-accent-foreground'
+ : 'text-worktree-sidebar-foreground/60 hover:bg-worktree-sidebar-foreground/8'
)}
>
Agents
@@ -351,12 +357,15 @@ const SidebarNav = React.memo(function SidebarNav() {
className={cn(
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] font-medium tracking-tight transition-colors',
mobileActive
- ? 'bg-sidebar-accent text-sidebar-accent-foreground'
- : 'text-sidebar-foreground/60 hover:bg-sidebar-foreground/8'
+ ? 'bg-worktree-sidebar-accent text-worktree-sidebar-accent-foreground'
+ : 'text-worktree-sidebar-foreground/60 hover:bg-worktree-sidebar-foreground/8'
)}
>
Orca Mobile
@@ -374,9 +383,12 @@ const SidebarNav = React.memo(function SidebarNav() {
type="button"
onClick={() => openModal('worktree-palette')}
aria-label="Search worktrees and browser tabs"
- className="group flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] font-medium tracking-tight text-sidebar-foreground/60 transition-colors hover:bg-sidebar-foreground/8"
+ className="group flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] font-medium tracking-tight text-worktree-sidebar-foreground/60 transition-colors hover:bg-worktree-sidebar-foreground/8"
>
-
+
Search
{worktreePaletteShortcut}
diff --git a/src/renderer/src/components/sidebar/SidebarToolbar.tsx b/src/renderer/src/components/sidebar/SidebarToolbar.tsx
index 1535141e2..7bb7936e8 100644
--- a/src/renderer/src/components/sidebar/SidebarToolbar.tsx
+++ b/src/renderer/src/components/sidebar/SidebarToolbar.tsx
@@ -11,7 +11,7 @@ const SidebarToolbar = React.memo(function SidebarToolbar() {
return (
-
+
)
})
diff --git a/src/renderer/src/components/sidebar/WorkspaceKanbanCard.tsx b/src/renderer/src/components/sidebar/WorkspaceKanbanCard.tsx
index d8eb9cd34..c76ade5b7 100644
--- a/src/renderer/src/components/sidebar/WorkspaceKanbanCard.tsx
+++ b/src/renderer/src/components/sidebar/WorkspaceKanbanCard.tsx
@@ -35,7 +35,7 @@ function WorkspaceKanbanCard({
return (
-
+
Workspace board
{selectedCount > 1 ? (
-
+
{selectedCount} selected
) : null}
diff --git a/src/renderer/src/components/sidebar/WorkspaceKanbanPinDropTarget.tsx b/src/renderer/src/components/sidebar/WorkspaceKanbanPinDropTarget.tsx
index 2ae609704..4595108fe 100644
--- a/src/renderer/src/components/sidebar/WorkspaceKanbanPinDropTarget.tsx
+++ b/src/renderer/src/components/sidebar/WorkspaceKanbanPinDropTarget.tsx
@@ -17,9 +17,9 @@ export default function WorkspaceKanbanPinDropTarget({
onDragOver(event, status.id)}
onDragLeave={onDragLeave}
@@ -107,7 +107,7 @@ export default function WorkspaceKanbanStatusLane({
tabIndex={0}
className={cn(
'group absolute right-0 top-0 z-20 h-9 w-2 cursor-col-resize outline-none',
- 'focus-visible:ring-1 focus-visible:ring-sidebar-ring',
+ 'focus-visible:ring-1 focus-visible:ring-worktree-sidebar-ring',
isResizingColumn && 'cursor-col-resize'
)}
onPointerDown={onColumnResizeStart}
@@ -117,8 +117,8 @@ export default function WorkspaceKanbanStatusLane({
diff --git a/src/renderer/src/components/sidebar/WorktreeCard.tsx b/src/renderer/src/components/sidebar/WorktreeCard.tsx
index 5235e5a3b..9cf5663e1 100644
--- a/src/renderer/src/components/sidebar/WorktreeCard.tsx
+++ b/src/renderer/src/components/sidebar/WorktreeCard.tsx
@@ -116,7 +116,7 @@ function RepoIdentityChip({
{children}
@@ -761,9 +761,9 @@ const WorktreeCard = React.memo(function WorktreeCard({
isActiveSurface
? 'bg-black/[0.08] shadow-[0_1px_2px_rgba(0,0,0,0.04)] border border-black/[0.015] dark:bg-white/[0.10] dark:border-border/40 dark:shadow-[0_1px_2px_rgba(0,0,0,0.03)]'
: isMultiSelected
- ? 'border border-sidebar-ring/35 bg-sidebar-accent/70 ring-1 ring-sidebar-ring/30'
+ ? 'border border-worktree-sidebar-ring/35 bg-worktree-sidebar-accent/70 ring-1 ring-worktree-sidebar-ring/30'
: 'border border-transparent worktree-sidebar-card-hover',
- isActiveSurface && isMultiSelected && 'ring-1 ring-sidebar-ring/35',
+ isActiveSurface && isMultiSelected && 'ring-1 ring-worktree-sidebar-ring/35',
revealHighlight && [
'scroll-to-current-workspace-reveal-highlight',
revealHighlightTone === 'ai' && 'scroll-to-current-workspace-reveal-highlight--ai'
@@ -876,7 +876,7 @@ const WorktreeCard = React.memo(function WorktreeCard({
onPointerDown={stopQuickActionPointerPropagation}
onClick={handlePendingFirstAgentMessageRenameInfo}
onDoubleClick={handlePendingFirstAgentMessageRenameInfo}
- className="h-4 shrink-0 gap-0.5 rounded !px-0.5 text-[10px] font-medium leading-none text-muted-foreground border border-sidebar-border/60 bg-sidebar-accent/45 hover:bg-sidebar-accent hover:text-foreground has-[>svg]:!px-0.5"
+ className="h-4 shrink-0 gap-0.5 rounded !px-0.5 text-[10px] font-medium leading-none text-muted-foreground border border-worktree-sidebar-border/60 bg-worktree-sidebar-accent/45 hover:bg-worktree-sidebar-accent hover:text-foreground has-[>svg]:!px-0.5"
aria-label="Will be renamed from first agent message"
>
@@ -1067,7 +1067,9 @@ const WorktreeCard = React.memo(function WorktreeCard({
{showLineageChildChip && (
@@ -1075,7 +1077,7 @@ const WorktreeCard = React.memo(function WorktreeCard({
type="button"
variant="ghost"
size="xs"
- className="relative z-10 h-[18px] max-w-[8rem] gap-1 rounded-md border border-sidebar-border bg-sidebar px-1.5 text-[10px] font-medium leading-none text-muted-foreground shadow-none hover:bg-sidebar-accent hover:text-foreground focus-visible:ring-1 focus-visible:ring-sidebar-ring"
+ className="relative z-10 h-[18px] max-w-[8rem] gap-1 rounded-md border border-worktree-sidebar-border bg-worktree-sidebar px-1.5 text-[10px] font-medium leading-none text-muted-foreground shadow-none hover:bg-worktree-sidebar-accent hover:text-foreground focus-visible:ring-1 focus-visible:ring-worktree-sidebar-ring"
aria-label={`${lineageCollapsed ? 'Show' : 'Hide'} ${childWorkspaceLabel}`}
aria-expanded={!lineageCollapsed}
onClick={onLineageToggle}
diff --git a/src/renderer/src/components/sidebar/WorktreeCardPorts.tsx b/src/renderer/src/components/sidebar/WorktreeCardPorts.tsx
index b0f43c8e0..b1ea869a5 100644
--- a/src/renderer/src/components/sidebar/WorktreeCardPorts.tsx
+++ b/src/renderer/src/components/sidebar/WorktreeCardPorts.tsx
@@ -39,7 +39,7 @@ export function WorktreeCardPortsTrigger({
return (
) : null}
{virtualItems.map((vItem) => {
@@ -2846,7 +2846,9 @@ const VirtualizedWorktreeViewport = React.memo(function VirtualizedWorktreeViewp
// reaches the top (see getActiveStickyHeaderIndexForScroll),
// so the previous repo no longer stays pinned over it.
hasHeaderTopSpacing && !isActiveStickyHeader && 'pt-1',
- isActiveStickyHeader ? 'sticky -top-px z-20 bg-sidebar' : 'absolute top-0'
+ isActiveStickyHeader
+ ? 'sticky -top-px z-20 bg-worktree-sidebar'
+ : 'absolute top-0'
)}
style={
isActiveStickyHeader
@@ -2868,10 +2870,10 @@ const VirtualizedWorktreeViewport = React.memo(function VirtualizedWorktreeViewp
'bg-accent/80 ring-1 ring-ring/40 shadow-md rounded-md scale-[1.01]',
headerWorkspaceStatus &&
dragOverStatus === headerWorkspaceStatus &&
- 'rounded-md bg-sidebar-accent ring-1 ring-sidebar-ring/40',
+ 'rounded-md bg-worktree-sidebar-accent ring-1 ring-worktree-sidebar-ring/40',
isPinnedHeader &&
pinDragOver &&
- 'rounded-md bg-sidebar-accent ring-1 ring-sidebar-ring/40',
+ 'rounded-md bg-worktree-sidebar-accent ring-1 ring-worktree-sidebar-ring/40',
row.repo && 'overflow-hidden'
)}
style={{ paddingLeft: headerPaddingLeft }}
@@ -3426,7 +3428,7 @@ const VirtualizedWorktreeViewport = React.memo(function VirtualizedWorktreeViewp
type="button"
variant="ghost"
size="xs"
- className="h-[18px] max-w-[8rem] gap-1 rounded-md border border-sidebar-border bg-sidebar px-1.5 text-[10px] font-medium leading-none text-muted-foreground shadow-none hover:bg-sidebar-accent hover:text-foreground focus-visible:ring-1 focus-visible:ring-sidebar-ring"
+ className="h-[18px] max-w-[8rem] gap-1 rounded-md border border-worktree-sidebar-border bg-worktree-sidebar px-1.5 text-[10px] font-medium leading-none text-muted-foreground shadow-none hover:bg-worktree-sidebar-accent hover:text-foreground focus-visible:ring-1 focus-visible:ring-worktree-sidebar-ring"
aria-label={`${child.lineageCollapsed ? 'Show' : 'Hide'} ${
child.lineageChildCount
} child ${
diff --git a/src/renderer/src/components/sidebar/WorktreeTitleInlineRename.tsx b/src/renderer/src/components/sidebar/WorktreeTitleInlineRename.tsx
index 2f3cbcad6..d0c1dffcc 100644
--- a/src/renderer/src/components/sidebar/WorktreeTitleInlineRename.tsx
+++ b/src/renderer/src/components/sidebar/WorktreeTitleInlineRename.tsx
@@ -263,7 +263,7 @@ export function WorktreeTitleInlineRename({
key={`title:${titleElementKey}`}
ref={handleRootRef}
className={cn(
- 'block min-w-0 truncate leading-tight text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-sidebar-ring',
+ 'block min-w-0 truncate leading-tight text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-worktree-sidebar-ring',
showUnreadEmphasis ? 'font-semibold' : 'font-normal',
className
)}
diff --git a/src/renderer/src/components/sidebar/index.tsx b/src/renderer/src/components/sidebar/index.tsx
index d42737a0f..d4804f04d 100644
--- a/src/renderer/src/components/sidebar/index.tsx
+++ b/src/renderer/src/components/sidebar/index.tsx
@@ -69,7 +69,7 @@ function Sidebar({
{sidebarOpen && (
@@ -93,8 +93,10 @@ function Sidebar({
{sidebarOpen && affordance.visible ? (
{affordance.tone === 'busy' ? (
diff --git a/src/renderer/src/components/sidebar/worktree-card-compact-agents.tsx b/src/renderer/src/components/sidebar/worktree-card-compact-agents.tsx
index f16909277..4533fee83 100644
--- a/src/renderer/src/components/sidebar/worktree-card-compact-agents.tsx
+++ b/src/renderer/src/components/sidebar/worktree-card-compact-agents.tsx
@@ -166,15 +166,15 @@ export function CompactAgentSummaryButton({
className={cn(
'compact-agent-summary-button group/agent-summary flex h-6 w-full min-w-0 items-center gap-1 rounded-sm',
'px-1 text-left text-[11px] leading-none text-muted-foreground',
- 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-sidebar-ring',
- // Why: sidebar-accent is near-white in light mode and dark in dark
+ 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-worktree-sidebar-ring',
+ // Why: worktree-sidebar-accent is near-white in light mode and dark in dark
// mode, so hover lightening needs a theme-specific token mix.
- 'hover:bg-sidebar-accent/55 dark:hover:bg-sidebar-foreground/[0.035]',
+ 'hover:bg-worktree-sidebar-accent/55 dark:hover:bg-worktree-sidebar-foreground/[0.035]',
// Why: expanded is a tree header inside the card, so only the
// standalone collapsed pill gets a resting surface and border.
expanded
? 'compact-agent-summary-button-expanded'
- : 'border border-sidebar-border/70 bg-sidebar-accent/35'
+ : 'border border-worktree-sidebar-border/70 bg-worktree-sidebar-accent/35'
)}
aria-label={
expanded ? `Collapse ${subjectLabel}` : `Expand ${summary}. ${agentIdentitySummary}`
@@ -199,7 +199,7 @@ export function CompactAgentSummaryButton({
return (
{/* Why: same-state agent identities read as one status cluster;
@@ -208,7 +208,7 @@ export function CompactAgentSummaryButton({
{iconAgents.map((agent) => (
@@ -296,7 +296,7 @@ export const CompactAgentRow = React.memo(function CompactAgentRow({
{hasChildDisclosure ? (