Enhance session sidebar with PR worktree support (#342)

* feat: refactored sessions sidebar to be workspaces centric

- Add createWorktreeOnly helper and status checks
- Add createWorktreeOnly to create a standalone worktree for the active project
- Show error toasts when no active project or not a Git repository
- Refresh session list and show success toast with created worktree details

* feat: show attention indicator and status marker in SessionSidebar

- Show unread attention indicator for sessions with pending updates
- Display status marker combining streaming and unread indicators in the session row
- Introduce attention diamond pulse animation and associated CSS for the new indicator

* fix(SessionSidebar): reserve header actions space when repo state is known

* chore(doc): add PR status colors to custom themes
This commit is contained in:
Bohdan Triapitsyn
2026-02-07 03:57:46 +02:00
committed by GitHub
parent d5a2e49ae8
commit 7d99aea6cc
46 changed files with 1711 additions and 288 deletions
+12
View File
@@ -49,6 +49,7 @@ export class CSSVariableGenerator {
cssVars.push(...this.generateSurfaceColors(theme.colors.surface));
cssVars.push(...this.generateInteractiveColors(theme.colors.interactive));
cssVars.push(...this.generateStatusColors(theme.colors.status));
cssVars.push(...this.generatePullRequestColors(theme));
cssVars.push(...this.generateSyntaxColors(theme.colors.syntax));
@@ -256,6 +257,17 @@ export class CSSVariableGenerator {
return vars;
}
private generatePullRequestColors(theme: Theme): string[] {
const vars: string[] = [];
const pr = theme.colors.pr;
vars.push(` --pr-open: ${pr?.open || theme.colors.status.success};`);
vars.push(` --pr-draft: ${pr?.draft || theme.colors.surface.mutedForeground};`);
vars.push(` --pr-blocked: ${pr?.blocked || theme.colors.status.warning};`);
vars.push(` --pr-merged: ${pr?.merged || (theme.metadata.variant === 'dark' ? '#8957e5' : '#8250df')};`);
vars.push(` --pr-closed: ${pr?.closed || theme.colors.status.error};`);
return vars;
}
private generateSyntaxColors(syntax: Theme['colors']['syntax']): string[] {
const vars: string[] = [];