Search
⌘K, or Ctrl-K, from anywhere in the application.
It was also the application's first keyboard shortcut. There were none at all, which for a tool people live in all day is less a missing feature than a missing posture.
What it searches
| Issues | Identifier, title, description |
| Projects | Name, description |
| Agents | Name |
| Skills | Name, description |
| Knowledge | Article title, and the words inside the document |
| Pages | Dashboard, Issues, Projects, Inbox, Gantt, Cycles, Timesheets, Knowledge, Whiteboard, Reports, Agents, Settings |
Five of each kind at most — enough to recognise, few enough to scan.
An article's body is matched through search_text, a plain-text copy of the
document kept beside the row. The prose itself is a file, and SQL cannot grep a
filesystem.
Somebody else's draft never appears. Finding half a page through search is worse than not finding it, because whoever found it will act on it.
Typing an issue key goes straight there
ACM-231, acm 231, acm231, or just 231. Somebody who types an identifier
has already decided where they are going, and making them read a list of
near-matches first is a worse outcome than any ranking, so an exact match is
always first and labelled Jump to.
A prefix that is not this workspace's is ignored. ACM-1 and DAC-1 are both
"issue 1", and guessing which one was meant is worse than not guessing.
It also goes places
Most of what somebody wants from a palette is to be somewhere else, so the pages are in it and are offered before anything is typed. A palette that does nothing until you type is a search field with extra steps.
Keys
⌘K / Ctrl-K |
Open, or close if it is open |
↑ ↓ |
Move — it wraps, because stopping at the end is a dead end nobody expects |
↵ |
Open the highlighted result |
esc |
Close |
The shortcut is registered on the window rather than on an input, because the whole point of it is to work when nothing is focused.
What it will not find
Anything in another workspace. Every query is scoped before it runs.
Somebody else's private agent. Through the same visibility rule as the assignee picker — a search that ignored it would be a way to enumerate what you cannot see.
Comment bodies. Deliberately. A palette that searches every comment finds the same issue eleven times and stops being a way to get anywhere.
Not there yet
LIKE '%term%', which cannot use an index. Fine at the sizes this is built for, and honest about being the first thing to change when it is not — a full-text index would be MySQL-only and would make the test suite and production disagree, which this project has been bitten by before.- No fuzzy matching. A typo finds nothing.
- No recent or frequent items. The list does not learn.
- Whiteboards are not searched. The words on a sticky note are not indexed, and a board is reachable from its own page only.
- No search on the API.
GET /issues?q=filters titles and descriptions, which is the same query, but the palette's ranking is not exposed.