Global Search

The Web interface provides a macOS Spotlight-style centered search dialog that searches tasks, drafts, documents, decisions, Wiki pages, and memos in one go. It replaces the earlier sidebar inline search that could only show 5 results.

Opening and Closing

Action Method
Open Press Ctrl+K (Windows/Linux) or Cmd+K (macOS); or click the search trigger button at the top of the sidebar
Close Press Esc, click the × in the upper-right corner of the dialog, click the mask area outside the dialog, or use the browser back button

When the dialog opens, the underlying page stays as-is and scrolling is locked; after closing, you return to the original page without losing filter or sort state.

The search box in the sidebar is now a read-only trigger button showing "Search (⌘K)..."; clicking it opens the dialog. Input and results have moved into the dialog.

Dialog Layout

  • Desktop: horizontally centered, about 12vh from the top, fixed 800px width, max height 75vh, with a dark semi-transparent mask.
  • Narrow screens (width < 640px): automatically fills the full screen; result rows become fixed two-line rows (title on first line, ID and labels on second line).

Search Types

A row of type tabs at the top of the dialog re-searches immediately when a new scope is selected:

Tab Scope
All Tasks, documents, decisions, Wiki, memos
Tasks Only tasks (including drafts)
Documents Only documents
Wiki Only Wiki pages
Decisions Only decision records
Memos Only memos

No results are shown when the input is empty; search runs automatically about 300 milliseconds after typing.

Include Completed Tasks

The dialog provides a "Completed corpus" toggle: when enabled, the search scope expands to historical tasks in the backlog/completed/ directory. Matched completed records carry a Completed badge and open in a read-only popup (no edit actions) when clicked. It is off by default, and default results are identical to before.

Results List

Results are grouped by type (Tasks → Documents → Wiki → Decisions → Memos). Each group has a header showing the count and a collapse arrow:

  • Click the header (or press Enter / Space when focused) to collapse or expand the group; collapsed groups do not participate in scroll positioning.
  • Each row shows: type icon, resource ID, title, and status/priority labels.
  • The entered keyword is highlighted in both titles and resource IDs.
  • There is no result count limit; the list uses virtual scrolling and stays smooth even with thousands of results.

Keyboard Operations

Key Behavior
↑ / ↓ Move selection up/down
Enter Open the selected item
Esc Close the dialog
Ctrl+K / Cmd+K Open (keeps focus if already in the dialog)
  • Tasks: opened as a modal over the current page; after closing, you return to the search dialog with the query, type filter, and scroll position preserved.
  • Documents / Decisions / Wiki: navigate to the corresponding full-page view; use the browser back button to return to the search dialog.
  • Memos: navigate to /memos?date=<day>—memos do not have an independent detail route, so they are opened in the memo page's day view.

Position Memory

After scrolling in the result list and pressing Enter to open an item, returning via Back returns the list to its original position (it records the "first visible row" rather than pixel offset, so it can still restore stably when the result set changes). If the position is no longer valid (for example results have decreased), the list returns to the top.

Closing the dialog with Esc, clicking the mask, or clicking × does not record position—there is no need to remember scroll position when actively abandoning the search.

Sharing and Refreshing

The dialog state is saved in the address bar:

http://localhost:6420/search?q=timezone&type=task
  • q is the keyword; omitted if not entered.
  • type is the type filter (doc is short for document); omitted means "All".
  • Refreshing the page or sending the link to a colleague reopens the dialog with the same query, filter, and results.

results matching ""

    No results matching ""