fix(tui): make the skills browser searchable + paginated (1.13.1)#102
Merged
Conversation
With 69 MCP tools the skills browser was one endless list — scrolling forever,
and to the user it read as a hung tool. Rework it into a searchable, paginated
picker:
- Type-ahead filter: start typing to narrow the list. Ranks BM25 hits first
(tools.RankDocs, the same index as find_tools), then a case-insensitive
substring fallback so partial words still match ("task" → tasks_list too).
- Pagination: renders a height-sized window starting at the top, with a
"N–M of T ↓ K more" position indicator instead of dumping everything.
- Keys: letters feed the filter, ↑/↓ move, PgUp/PgDn/Home/End page, Enter
selects, Esc clears the filter then leaves. app.go no longer swallows q/Q/esc
before the browser (letters must reach the filter); it acts on the browser's
skillsBrowserBackMsg instead. Browser is sized at creation so pagination has
a height immediately.
tools/discovery_index.go: RankDocs — BM25 over free-text docs, empty query
returns all in order. render_smoke_test.go snapshots both browser states.
Verified: go test ./cmd/celeste/..., golangci-lint, gofmt clean.
…wser The inline rows still truncate (kept scannable), but the highlighted skill's full description now renders wrapped (up to 2 lines) below the list, so you can read what a tool actually does. Inline description width tracks the terminal width instead of a fixed 60 chars. Harness sample uses realistic per-tool descriptions so the snapshot represents reality rather than one repeated string. Reuses chat.go's wrapText via descLines (line-capped).
This was referenced Jul 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Small usability fix to the
skillsbrowser. With 69 MCP tools it had become one endless list — scrolling forever, and to the user it read as a hung tool.Changes
N–M of T ↓ K moreposition indicator instead of dumping every row.tools.RankDocs, the same index asfind_tools), then a case-insensitive substring fallback so partial words match too (task→task_createandtasks_list).Verification
go test ./cmd/celeste/...,golangci-lint(0 issues),gofmtclean. Both browser states captured in the render harness (skills-browser,skills-browser-search) so they're part ofmake tui-snapshots.Ships as 1.13.1 — a patch fix to an existing view (release-please forced via
Release-Ason merge).🤖 Generated with Claude Code