merge the pql search panel into the unified Search tab

The pql sidebar panel and the find-in-files tab were duplicate search
surfaces. Consolidate into one Search tab with a mode switch: Find
(content grep), Vault (pql ranked search), Query (PQL DSL), Markdown
(the synced markdown-file listing, keeping focus-highlight + live
refresh). SearchPanelView holds both FindInFilesController and
PqlController; the pql body + result rows move into a reusable
PqlSearchBody. The standalone builtin.pql sidebar tab is removed (one
fewer tab — eases the rail); the pql extension keeps the Backlinks
context panel. No D-79 conflict — grep vs ranked search remain distinct
backends, this is UI consolidation.

Adds the pql builtin's first widget/controller tests (it was untested,
so folding it into the tested Search panel required covering the
Vault/Query/Markdown modes + PqlController).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-01 16:45:54 +02:00
co-authored by Claude Opus 4.8
parent eb90ba14bc
commit a02fc754a8
10 changed files with 430 additions and 134 deletions
+2 -11
View File
@@ -1,5 +1,4 @@
import 'package:clide/builtin/pql/src/backlinks_view.dart';
import 'package:clide/builtin/pql/src/pql_panel_view.dart';
import 'package:clide/extension/extension.dart';
import 'package:clide/kernel/kernel.dart';
import 'package:clide/widgets/widgets.dart';
@@ -14,18 +13,10 @@ class PqlExtension extends ClideExtension {
@override
List<String> get dependsOn => const [];
// The pql search/query/markdown surface moved into the unified Search
// tab (T-201); this extension keeps only the Backlinks context panel.
@override
List<ContributionPoint> get contributions => [
TabContribution(
id: 'pql.panel',
slot: Slots.sidebar,
title: 'pql',
titleKey: 'tab.title',
i18nNamespace: id,
icon: PhosphorIcons.magnifyingGlass,
priority: -60,
build: (_) => const PqlPanelView(),
),
TabContribution(
id: 'pql.backlinks',
slot: Slots.contextPanel,