New in Breeze: search that actually finds things

Search in Breeze has been rebuilt from the query up. There is now one box that searches everything - tasks, projects, comments, messages, to-dos, to-do lists, files, tags and notes - ranked together, fast enough to use while you type. And there is a second, smaller thing that we suspect you will use more often: a search box on the page you are already on, so a board with four hundred tasks can be narrowed to the six that mention "invoice" without going anywhere.

Both are live now. Nothing about your projects, boards or permissions changed.

The Breeze search overlay open with ranked results across tasks, comments and files

Why search needed the work

The old search was a small dropdown under the magnifier in the top bar. It worked, in the sense that it returned rows. But it was slow enough that you learned not to trust it mid-thought, it showed you a handful of results and then handed you off to a separate results page, and it had no idea what page you were standing on.

That last part is the one that quietly cost the most time. Every board in Breeze can be narrowed by owner, list, tag, status and swimlane, but never by a word. If you knew a task existed and you knew roughly what it was called, your options were to scroll, or to leave the board, search, and come back.

One box, everything in it

Click the magnifier in the top bar and the search opens over the page. On a board you can also just press /, or Cmd+K on a Mac and Ctrl+K on Windows, alongside the rest of the keyboard shortcuts.

Start typing after two characters and results come back ranked in a single list rather than sorted into buckets by type. This matters more than it sounds. Grouped results make you scan nine short lists to find the one good hit; a single ranked list puts the thing you meant at the top, whether it happens to be a task, a comment somebody left on it, or the file attached to it.

Every row shows the matching words highlighted in context, and underneath it, where the thing lives - the project first, then the swimlane and list. So a result is readable without opening it, which is usually enough to tell the right "Website redesign" from the other two.

Arrow keys move through the results and enter opens the highlighted one. Enter with nothing highlighted takes you to the full results page. Escape closes the whole thing. If there are more results than fit, the list keeps loading as you scroll.

Typing a number finds that task

If what you type is just a number, Breeze treats it as a task ID and shows you that task. Handy when a teammate pastes a bare number into chat, or when you are following up on something from a report. It ignores any filters you have set, deliberately - you asked for one specific task, not for a search to be narrowed.

Narrowing without leaving the box

The overlay carries the same filters as the full results page: projects, people, lists, tags, swimlanes, statuses, custom fields, a date range on when things were last updated, and a switch to include archived work. The Filter button shows a count when any of them are on, and clears them all in one click.

The filter panel open inside the Breeze search overlay, listing the project, user, list, tag, swimlane, status, custom field and date filters
The same filters as the results page, without leaving the search box. The type pills across the top narrow by kind.

One change here is worth explaining, because it makes the result count go down. A filter used to be ignored by any result type that could not honour it. Filter by the tag "urgent" and every matching note, message and project still came back, because notes, messages and projects do not have tags - so they were never actually tested against your filter, and they sat in the list looking like they had passed it.

Now a type that cannot honour an active filter drops out instead. Fewer rows, but every row in front of you genuinely matches what you asked for. The results page and the search box also now agree on this, which they did not before.

It is quick enough to type into

The old search ran a separate ranked query per result type, each one ranking every matching row in the table before throwing nearly all of it away. On a database with a couple of million tasks that is exactly as slow as it sounds - a single type that found nothing could take over two seconds.

The new one asks for all nine types in a single query, with the ranking and the limits inside it, so the database can stop as soon as it has enough. In our testing against a full-size database that took a few tens of milliseconds rather than a few hundred to a few thousand. In practice it means results keep up with your typing instead of arriving after you have stopped.

What has not changed

  • Permissions. Search only ever returns what you could already open. Tasks and comments hidden from clients and observers stay hidden from them in search, and nothing crosses between teams.
  • Your boards. No layout moved, no filter was reset, no setting needs turning on. If you never open a search box, your day is identical.
  • The results page. The full search page is still there for when you want room to work through a long list, and enter in the search box still takes you to it.

Try it on the board you know best

The global search is the bigger piece of work, but the page search is the one that changes a habit. Open the busiest board you have, click the magnifier in the toolbar, and type the word you would have scrolled for.

If it saves you the scroll, it will keep saving you the scroll. And if you are the sort of person who keeps a dozen tabs of Breeze open, the slash key is worth learning first.