thymer docs
Documentation/Search and navigation/Live queries

Live queries

A live query is a search inside a page. It shows the matching lines and keeps up as the workspace changes. Use it for a dashboard, a project review, or the list of things waiting on you.

Make one

Run a search and drag the query from the search panel onto a page. Or pick Live Query from the @-menu and type the query. Change query in the block’s menu edits it later. Give the block a heading that says what it shows, such as “Overdue” above @todo @overdue. A block without a query shows @today.

What it shows

  • The results are the real lines, not copies. Edit one or tick a task off, and the change is made in the page it lives on.
  • Up to 100 results: pages first, then lines, not sorted further. Lines that start matching are added at the end.
  • A line that stops matching, such as a task you just ticked off, stays in the block until it loads again, for example when you open the page again.
  • With nothing to show, the block says “No results”. A query that can’t run shows its error in the block.
  • The block folds like any other section.

Pages instead of lines

A query matches lines anywhere in the workspace, so one block can show a task from one page next to a paragraph from another. Add @page to get only pages: each result is a page, matched on its title and properties, not on the lines inside it. That makes a box of related pages, such as on a customer’s page:

@page @linkto="Acme"                   pages with Acme in a Page Link property
@page @Projects.Status="In progress"   active projects
@page @created_at = thisweek           pages created this week

A dashboard page

A team page works well with three or four narrow queries:

@todo @overdue                 overdue work
@due = thisweek                due this week
@todo @waiting                 waiting on others
@discuss                       open questions

Add links to the project board and the handbook, and pin the page. For a table or board of pages from several collections, use a dynamic collection instead.

A collection can show a query at the top of each of its pages, with the page itself as the context. Set it in Collection Settings… → Related. Two variables make it work: $currentpage for the page being viewed, $currentcollection for its collection. They are filled in only here, not in live query blocks.

@task @linkto=$currentpage        tasks that link to this page
@linkto=$currentpage              anything that links to it
@task @linkto=$currentcollection  tasks that link to the collection

With this, a project page lists every action that mentions it, wherever those actions were written. The Journal’s Upcoming section is the same mechanism with a date-aware query.

The Query language reference lists every filter, has dozens of examples, and explains the variables that Related and Upcoming fill in.