Documentation Search Palette

A keyboard-first command palette fuzzy-searches every published documentation page and filters results by content doorway.

Overview

Description

The Documentation Search Palette gives every page on the public docs site a fast, keyboard-first discovery layer. Readers open it with Command-K, Control-K, or /, type a partial title, and receive fuzzy-ranked page results grouped by documentation doorway. Matched title characters are highlighted, published pages receive a small ranking advantage over drafts, and a doorway tab row narrows the result set without leaving the dialog.

The palette also acts as a lightweight command surface. Document pages register actions such as copying the page envelope or toggling Agent Lens, while the site always contributes a theme action. Arrow keys move through the unified result list, Enter activates the selection, Escape closes, and focus returns to the reader’s prior position. Counts and result rows are derived from the loaded corpus; loading and failure notices remain explicit.

Selling Points

  • Finds a page from anywhere on the site without forcing readers through nested navigation.
  • Accepts imperfect or abbreviated queries through subsequence scoring, reducing the need to remember exact titles.
  • Groups hits by the site’s learning doorways, preserving context while readers search across the entire corpus.
  • Supports complete keyboard operation and focus restoration, making repeated reference lookups quick and accessible.
  • Combines navigation and page-local actions in one predictable launcher instead of scattering shortcuts across the interface.

User Story

An engineer remembers that the docs contain an MCP connection guide but not its title or doorway. From any page they press Command-K, type mcp conn, and use the arrow keys to select the highlighted result. The palette closes, restores normal page interaction, and routes directly to the matching guide; on that page the same palette can copy the machine-readable Markdown envelope.

Extension Surface

This is fixed core. apps/docs/src/components/palette/scorer.ts hard-codes the fuzzy scoring behavior, and apps/docs/src/components/palette/corpus.ts fixes the doorway filter roster and result caps. Page components can register actions through the internal React context, but there is no public registration contract, stored setting, API, or plugin slot that an external developer can use to replace scoring or add search providers without changing the site code.

Capabilities & Limits

  • Fuzzy-searches exported page titles, highlights matched spans, and ranks non-draft ties ahead of drafts.
  • Filters by all five doorways and groups results with their row ids and draft markers.
  • Runs page actions and site actions through the same accessible listbox interaction.
  • Limit: search is title-only over the in-memory corpus; it does not index body text, summaries, or remote content.
  • Limit: result caps and ranking weights are fixed in code, and no external search-provider extension point ships.

Implementation Map

  • apps/docs/src/components/palette/Palette.tsx
  • apps/docs/src/components/palette/PaletteHost.tsx
  • apps/docs/src/components/palette/scorer.ts
  • apps/docs/src/components/palette/corpus.ts
  • apps/docs/src/components/palette/use-corpus.ts

Properties

Property
Value
product
dots-platform
extensibility
fixed-core
module
Search
packages
apps-docs
status
shipped
surface
ui
summary
A keyboard-first command palette fuzzy-searches every published documentation page and filters results by content doorway.

Connections

Documentation Search Palette · Explore connections

  • requirestoDotabase-Backed Documentation Publishing
  • implemented bytoapps/docs/src/components/palette/use-corpus.ts
  • implemented bytoapps/docs/src/components/palette/Palette.tsx
  • implemented bytoapps/docs/src/components/palette/corpus.ts
  • implemented bytoapps/docs/src/components/palette/scorer.ts
  • implemented bytoapps/docs/src/components/palette/PaletteHost.tsx

Connected Records6

Implemented by
apps/docs/src/components/palette/corpus.ts
apps/docs/src/components/palette/Palette.tsx
apps/docs/src/components/palette/PaletteHost.tsx
apps/docs/src/components/palette/scorer.ts
apps/docs/src/components/palette/use-corpus.ts
Requires
6 connections.