Elyra
Elyra The coding agent e The native code editor Elyra Grove Native local development environment Askr The real server for Laravel & PHP Elyra Framework Rust + Svelte 5 framework for desktop apps Elyra Conductor Local project conductor Elyra SQL Server MySQL-compatible SQL server in Rust Elyra Félagi Agents as teammates on one board Elyra SQL Client Native desktop SQL workbench Elyra SQL Anywhere Replication-ready SQL engine Elyra Sjá SEO & GEO workspace for macOS Elyra DataGrid Server-driven data grid for Laravel
Start here
Concepts
Elyra

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.