> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timetracker.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Filter and sort tasks

> Narrow a task board by assignee, priority and section, search by title, choose a sort order, and understand how AND, OR and exclude combine in a filter.

Filtering decides **which** tasks you see. Sorting decides **what order** they come in. Grouping decides **which column** they sit in.

## Filter the board

The project **Board** tab has a **Filter** button in its toolbar. Click it to open a popover with three groups of checkboxes.

| Group        | Choices                                |
| ------------ | -------------------------------------- |
| **Assignee** | Every member of the workspace          |
| **Priority** | No priority, Low, Medium, High, Urgent |
| **Section**  | Every section in this project          |

The rules are the same in each group:

* Tick nothing in a group and that group is **not filtering** at all.
* Tick several boxes in a group and they combine with **OR** – a task matching any of them is kept.
* Groups combine with **AND** – a task must satisfy every group that has something ticked.

So ticking *Sarah Lin* and *Jonas Bergman* under Assignee, and *Urgent* under Priority, shows urgent tasks belonging to Sarah **or** Jonas.

### Active filter chips

Every ticked choice also appears as a chip below the toolbar. Click a chip's **X** to drop that one condition without opening the popover.

### Reset filters

The **Reset filters** button at the bottom of the popover clears all three groups at once. It is disabled when nothing is filtering.

### The count badge

When a filter is active, the **Filter** button turns solid and carries a number – the total ticked boxes across all three groups.

## Search

The toolbar's **Search** box matches **task titles**, ignoring letter case. It narrows the card set before grouping, so column counts always match what you can see.

Search and filters combine. A card has to pass both.

<Note>
  Search matches titles only. It does not look inside descriptions, comments or attachments. For that, use the workspace-wide search.
</Note>

## Sort

The **Sort** dropdown sets the card order inside each column.

| Option           | Order                                                      |
| ---------------- | ---------------------------------------------------------- |
| **Manual**       | The order you dragged cards into. This is the stored order |
| **Priority**     | Urgent, High, Medium, Low, No priority                     |
| **Estimate**     | By estimated hours                                         |
| **Alphabetical** | By title                                                   |

Manual order is stored per section, so it survives reloads and is the same for everyone.

## Group

**Group** decides what a column is. It is a different question from filtering, but they work together.

| Grouping     | Columns                                         |
| ------------ | ----------------------------------------------- |
| **Section**  | One per section, in the project's section order |
| **Priority** | One per priority level                          |
| **Assignee** | One per person, plus an **Unassigned** column   |

## Filter conditions in depth

Behind the checkboxes, a filter is a list of conditions. Each condition names a **field**, an **operator** and a **value**. This matters when you save a view, and it is the same shape the report builder uses.

### Operators

| Operator   | Meaning               | On a single value                            | On a list field such as tags        |
| ---------- | --------------------- | -------------------------------------------- | ----------------------------------- |
| `eq`       | Equals                | Exact match                                  | The list contains the value         |
| `neq`      | Does not equal        | Not an exact match                           | The list does not contain the value |
| `in`       | Is one of             | The value is in your list                    | The two lists overlap               |
| `nin`      | Is none of            | The value is not in your list                | The two lists do not overlap        |
| `contains` | Contains              | Text contains your text                      | The list contains the value         |
| `gt`       | Greater than          | Numbers only                                 | –                                   |
| `gte`      | Greater than or equal | Numbers only                                 | –                                   |
| `lt`       | Less than             | Numbers only                                 | –                                   |
| `lte`      | Less than or equal    | Numbers only                                 | –                                   |
| `exists`   | Has a value           | Field is set. Use `false` to mean "is empty" | Field is set                        |

<Info>
  List fields behave the way you would expect. A person in both the Design and Engineering groups still matches "group = Design", and "tag contains Rework" matches a task with Rework among several tags.
</Info>

### AND, OR and exclude

A filter is built from **groups of conditions**:

* Conditions **inside** one group combine with **OR**.
* Groups combine with **AND**.
* Any single condition can be marked **exclude**, which flips that one condition's result before it joins its group.

Read as a sentence: *(this OR that) AND (something else OR another thing)*, with any individual clause optionally negated.

A filter with no conditions matches every task, so an empty saved view is the unfiltered list. A condition the product cannot understand matches nothing rather than breaking the board – a damaged filter shows an empty list, never an error page.

### Fields available on a task filter

The board's own controls cover assignee, priority and section. A saved expression can also name other task fields, including:

| Field                  | Typical operator                                                              |
| ---------------------- | ----------------------------------------------------------------------------- |
| `status`               | `in` – for example `todo`, `in_progress`, `in_review`, `waiting`, `completed` |
| `priority`             | `in` – `none`, `low`, `medium`, `high`, `urgent`                              |
| `assigneeId`           | `eq` or `in`                                                                  |
| `sectionId`            | `eq` or `in`                                                                  |
| `tagIds`               | `contains`                                                                    |
| `dueDate`              | `lt`, `lte`, `gt`, `gte`, `exists`                                            |
| `billable`             | `eq`                                                                          |
| `clientVisible`        | `eq`                                                                          |
| `currentEstimateHours` | `gt`, `lt`, `exists`                                                          |

For reporting across projects and people, use the report builder, which exposes the same operators with a full field picker. See [/reports/report-filters](/reports/report-filters).

## Filter your own task list

The **Tasks** page has two narrowing controls of its own:

| Control         | What it does                                                                  |
| --------------- | ----------------------------------------------------------------------------- |
| **Search**      | Matches task titles in your day list                                          |
| **Whose tasks** | Picks which people's work to show. Only appears if you hold `time.viewOthers` |

Clearing the **Whose tasks** picker returns to your own work, rather than going blank.

## Example

Priya Raman is preparing Monday's stand-up for Bluebird Coffee – **Website Redesign**.

She opens the **Board** tab and sets **Group** to **Section**. In the **Filter** popover she ticks *Sarah Lin* and *Jonas Bergman* under Assignee, and *Urgent* and *High* under Priority. The Filter button shows **4**, and four chips appear below the toolbar.

The board now shows urgent or high work belonging to Sarah or Jonas. She sets **Sort** to **Priority** so the most pressing card is at the top of each column, and turns off **Show recorded time** in **Display** to keep the cards clean.

After the stand-up she clicks **Reset filters** and the whole board comes back.

## Permissions

Filtering and sorting change what **you** see. They never widen what you are allowed to see.

| Rule              | Effect                                                                 |
| ----------------- | ---------------------------------------------------------------------- |
| Project reach     | Tasks in projects you cannot see never appear, whatever you filter for |
| `time.viewOthers` | Needed to point the **Tasks** page at someone else's work              |
| Supervision scope | Decides **whose** work, even when you hold `time.viewOthers`           |

A person who cannot view others has no **Whose tasks** picker at all, and the filter is pinned to them on the server – a hand-built request cannot widen it.

## Common questions

<AccordionGroup>
  <Accordion title="Do my filters affect anyone else?">
    No. Filters, search, sort, grouping and display choices are yours alone.
  </Accordion>

  <Accordion title="Are filters remembered between visits?">
    Board filters and search are for the session you are in. Save a filter you use often as a view – see [/tasks/saved-filters](/tasks/saved-filters).
  </Accordion>

  <Accordion title="Can I filter by tag on the board?">
    The board's Filter popover covers assignee, priority and section. For tag-based questions across projects, use a report – [/reports/report-filters](/reports/report-filters).
  </Accordion>

  <Accordion title="Why did a task with no assignee disappear?">
    Ticking any Assignee box means "one of these people". An unassigned task matches nobody. Untick the assignees, or group by Assignee and look in the Unassigned column.
  </Accordion>

  <Accordion title="Does search look at descriptions?">
    No. Board search matches task titles.
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="The board is empty">
    A filter or search is probably active. Look for the number on the **Filter** button and the chips underneath, then click **Reset filters**.
  </Accordion>

  <Accordion title="Reset filters is greyed out">
    Nothing is filtering. If cards are still missing, clear the **Search** box, which is a separate control.
  </Accordion>

  <Accordion title="A filter I saved shows nothing at all">
    A condition it depends on may no longer exist – a deleted section or a person who has left. Rebuild the filter from the current choices.
  </Accordion>

  <Accordion title="Sorting by estimate puts unestimated tasks in an odd place">
    Tasks with no estimate have no value to sort by. Sort by Manual or Priority when the list is mostly unestimated.
  </Accordion>
</AccordionGroup>

## Related guides

<CardGroup cols={2}>
  <Card title="Saved filters" icon="bookmark" href="/tasks/saved-filters">
    Keep a filter and re-apply it in one click.
  </Card>

  <Card title="Task views" icon="layout" href="/tasks/task-views">
    List, board and the day view.
  </Card>

  <Card title="Report filters" icon="chart-bar" href="/reports/report-filters">
    The same operators, across the whole workspace.
  </Card>

  <Card title="Supervision scope" icon="eye" href="/concepts/supervision-scope">
    Why a filter cannot widen what you see.
  </Card>

  <Card title="Task fields" icon="list" href="/tasks/task-fields">
    The fields you can filter on.
  </Card>
</CardGroup>
