diff --git a/packages/web-shell/client/components/ChatEditor.test.tsx b/packages/web-shell/client/components/ChatEditor.test.tsx index e9e381913f6..3c7c07d8cd2 100644 --- a/packages/web-shell/client/components/ChatEditor.test.tsx +++ b/packages/web-shell/client/components/ChatEditor.test.tsx @@ -404,7 +404,6 @@ interface ChatEditorRenderProps { builtinAtProviders?: WebShellCustomization['builtinAtProviders']; atProviders?: WebShellCustomization['atProviders']; skills?: Array<{ name: string; description: string }>; - language?: WebShellLanguage; reasoning?: DaemonReasoningControls; onSelectReasoningEffort?: (value: ReasoningSelection) => Promise | void; } @@ -422,7 +421,6 @@ function renderChatEditorInto( language = 'en', renderComposerTagTooltip, onComposerTagClick, - language = 'en', ...chatEditorProps } = props; if (composerTags) { diff --git a/packages/web-shell/client/components/SessionOverviewPanel.test.tsx b/packages/web-shell/client/components/SessionOverviewPanel.test.tsx index 56c4ede4917..7743d6f75cc 100644 --- a/packages/web-shell/client/components/SessionOverviewPanel.test.tsx +++ b/packages/web-shell/client/components/SessionOverviewPanel.test.tsx @@ -1165,7 +1165,7 @@ describe('SessionOverviewPanel', () => { expect(rows()).toHaveLength(50); act(() => click(selectAllCheckbox())); expect(container!.textContent).toContain('60 of 60 row(s) selected.'); - }); + }, 15000); it('lists an other-workspace session as a row with its folder', async () => { connectionState.capabilities = { diff --git a/packages/web-shell/client/components/sidebar/SessionGroupSection.test.tsx b/packages/web-shell/client/components/sidebar/SessionGroupSection.test.tsx index 4e87ce9c785..19717699fd3 100644 --- a/packages/web-shell/client/components/sidebar/SessionGroupSection.test.tsx +++ b/packages/web-shell/client/components/sidebar/SessionGroupSection.test.tsx @@ -9,6 +9,35 @@ import { SessionGroupSection } from './SessionGroupSection'; globalThis.IS_REACT_ACT_ENVIRONMENT = true; describe('SessionGroupSection', () => { + it('renders a supplied source icon instead of a color dot', () => { + const container = document.createElement('div'); + document.body.appendChild(container); + const root = createRoot(container); + act(() => { + root.render( + + } + onToggle={() => {}} + > +
Run 1
+
+
, + ); + }); + + expect( + container.querySelector('[data-testid="scheduled-task-icon"]'), + ).not.toBeNull(); + expect(container.querySelector('[class*="sessionGroupDot"]')).toBeNull(); + act(() => root.unmount()); + container.remove(); + }); + it('shows five sessions and resets Show all after collapsing', () => { const container = document.createElement('div'); document.body.appendChild(container); diff --git a/packages/web-shell/client/components/sidebar/SessionGroupSection.tsx b/packages/web-shell/client/components/sidebar/SessionGroupSection.tsx index 9d2c49d9a2a..bf77c1dd0f9 100644 --- a/packages/web-shell/client/components/sidebar/SessionGroupSection.tsx +++ b/packages/web-shell/client/components/sidebar/SessionGroupSection.tsx @@ -22,6 +22,7 @@ export interface SessionGroupSectionProps { count: number; expanded: boolean; color?: DaemonSessionGroupColor; + icon?: ReactNode; children: ReactNode; onToggle: () => void; onRename?: () => void; @@ -37,6 +38,7 @@ export function SessionGroupSection({ count, expanded, color, + icon, children, onToggle, onRename, @@ -71,11 +73,17 @@ export function SessionGroupSection({ aria-expanded={expanded} onClick={onToggle} > -