From 1cf557a11b32b79f63ac3e65e8dd9f77630ca490 Mon Sep 17 00:00:00 2001 From: arumata Date: Thu, 3 Sep 2026 10:49:06 +0300 Subject: [PATCH] fix(graph): keep the search bar visible during a conflict MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The search bar (and the Jump to HEAD button next to it) was hidden whenever a conflict or a paused rebase was active, because the SearchBar was rendered only when !conflict && !rebasePaused. The conflict banner is a separate top-level banner, so nothing needs to take the search slot here — only bisect still replaces the search bar with its own banner (issue #69). --- webview-ui/src/App.svelte | 2 +- webview-ui/src/__tests__/App.test.ts | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/webview-ui/src/App.svelte b/webview-ui/src/App.svelte index c649320..62691ba 100644 --- a/webview-ui/src/App.svelte +++ b/webview-ui/src/App.svelte @@ -460,7 +460,7 @@ import AmendModal from './components/modals/AmendModal.svelte';
{#if uiStore.viewMode === 'graph'} - {#if !bisectMessage && !conflict && !rebasePaused} + {#if !bisectMessage} { }); }); + it('conflict keeps the search bar visible (issue #69)', async () => { + const { container } = render(App); + await waitFor(() => expect(container.querySelector('.search-input')).not.toBeNull()); + postMsg('conflictData', { + operation: 'rebase', + files: [{ path: 'a.ts', resolved: false }], + }); + await waitFor(() => { + expect(container.querySelector('.conflict-banner')).not.toBeNull(); + expect(container.querySelector('.search-input')).not.toBeNull(); + }); + }); + it('operationPaused with rebase shows the rebase pause banner', async () => { const { container } = render(App); postMsg('operationPaused', { operation: 'rebase' });