Symptom
In an extension-provided sidebar panel, pressing `/` correctly activates the search input row (chrome flips into edit mode, cursor appears). Typed characters update `engine.ext_panel_input_text[panel_name]` and the text shows in the input row — but the item list doesn't filter.
Cause (suspected)
The engine doesn't filter items itself. It fires a `panel_input` plugin event (see `src/core/engine/ext_panel.rs` — the `/` handler at line ~242 flips `ext_panel_input_active = true` but no filter pass runs). Plugins are expected to subscribe to `panel_input` and re-emit a filtered item list via `set_items` — but no shipping plugin appears to do that, so user-facing behavior is "typing in the search box is a no-op visually".
Repro
- Open any extension panel (e.g. `git_insights`).
- Press `/`. Input row appears.
- Type a substring of a visible item.
- Item list does not narrow.
What good would look like
Either:
- Plugin-side fix per panel: each panel's plugin subscribes to `panel_input` and filters.
- Engine-side default filter: if the plugin doesn't intercept, the engine could provide a default case-insensitive substring filter over `item.text`. Trivial to add in `ext_panel_visible_indices()` since visibility already runs through there.
The engine-side default is probably better — it gives plugins a reasonable fallback while leaving the override hook in place.
Notes
Surfaced during smoke testing of #476 / PR #482. Migration didn't change the input or filter path; this behavior predates the TreeView migration.
Symptom
In an extension-provided sidebar panel, pressing `/` correctly activates the search input row (chrome flips into edit mode, cursor appears). Typed characters update `engine.ext_panel_input_text[panel_name]` and the text shows in the input row — but the item list doesn't filter.
Cause (suspected)
The engine doesn't filter items itself. It fires a `panel_input` plugin event (see `src/core/engine/ext_panel.rs` — the `/` handler at line ~242 flips `ext_panel_input_active = true` but no filter pass runs). Plugins are expected to subscribe to `panel_input` and re-emit a filtered item list via `set_items` — but no shipping plugin appears to do that, so user-facing behavior is "typing in the search box is a no-op visually".
Repro
What good would look like
Either:
The engine-side default is probably better — it gives plugins a reasonable fallback while leaving the override hook in place.
Notes
Surfaced during smoke testing of #476 / PR #482. Migration didn't change the input or filter path; this behavior predates the TreeView migration.