Skip to content

Views

A view is a task list you define yourself. You write a rule for what counts, and matching tasks show up in the view automatically.

Don't want to write the rule yourself?

Send this AI-readable spec to any assistant (ChatGPT, Claude, Gemini, …), describe in plain language what you want to see, and it will write the rule for you — paste the result straight into the Rule field:

https://tasks.hamsterbase.com/view-rules.txt

Use views to keep lists the built-in ones don't cover, for example:

  • Everything tagged work that's already overdue
  • Tasks in the inbox that have no tag and no date
  • Anything in your Reading area you've been ignoring

Where to find it

Views live in the desktop sidebar, in a section called Views. Click the + next to the section heading to add one.

Creating a view

  1. In the sidebar's Views section, click +.
  2. Type a name in the page header.
  3. Open the detail panel on the right and write a rule in the Rule field.
  4. As soon as the rule is valid, matching tasks appear in the list.

If you leave the rule empty, the main area shows a list of starter rules — click any of them to fill the rule in. You don't need to write anything from scratch to get started.

You can drag views in the sidebar to reorder them. To delete a view, use the menu in its detail panel.

Writing rules

A rule describes "what kind of task belongs in this view". Each task is referred to as item, and you write a condition about it.

For example:

js
item.status === 'created' && item.tags.includes('work')

means the task is unfinished and has the work tag.

Fields you can use

FieldWhat it means
item.titleThe task's title
item.notesThe notes / description
item.statusStatus: 'created' unfinished / 'completed' done / 'canceled' cancelled
item.tagsThe list of tags on the task
item.startDateStart date (null if not set)
item.dueDateDue date (null if not set)
item.completionAtWhen the task was completed (null if not completed)
item.createdAtWhen the task was created
item.parentWhere it lives: 'inbox' / 'project' / 'area' / 'heading' / 'task' (sub-task)
item.projectTitleName of the enclosing project
item.areaTitleName of the enclosing area

Keywords you can use

When writing date-based rules, these built-in keywords come in handy:

KeywordMeaning
TODAYToday
DAYThe length of one day — use it to write things like "7 days from now"
SOMEDAY"Someday" — a task you've parked for "some day later"

What you can write

SyntaxWhat it does
===, !==Equal to / not equal to
>, >=, <, <=Compare numbers and dates
&&, ||, !And / or / not
item.tags.includes('x')The tags list contains x
item.title.includes('x')The title contains x
item.tags.lengthHow many tags the task has
... === nullCheck whether a date field is unset

If you'd rather not write a rule from scratch, the starter list in the rule docs panel will fill one in for you — tweak from there.

Starter rules at a glance

What you wantRule
Not yet doneitem.status === 'created'
Completeditem.status === 'completed'
In the inboxitem.parent === 'inbox'
Available now (Anytime)item.status === 'created' && (item.startDate === null || item.startDate <= TODAY)
Parked for Somedayitem.startDate === SOMEDAY
Overdueitem.dueDate !== null && item.dueDate < TODAY
Due in the next 7 daysitem.dueDate !== null && item.dueDate < TODAY + 7 * DAY
Tagged workitem.tags.includes('work')
Inside a projectitem.parent === 'project'

A few practical examples

Work tasks due within 3 days

js
item.tags.includes('work') &&
  item.status === 'created' &&
  item.dueDate !== null &&
  item.dueDate < TODAY + 3 * DAY

Inbox items with no tag and no date — likely needs triage

js
item.parent === 'inbox' && item.tags.length === 0 && item.startDate === null

Everything in the Reading area

js
item.areaTitle === 'Reading'

Completed in the last 30 days

js
item.status === 'completed' &&
  item.completionAt !== null &&
  item.completionAt > TODAY - 30 * DAY

The list "freezes" while you're inside the view

A view's task list is locked the moment you open it, and is only re-matched when you re-open the view or change the rule.

So if you complete a task or change its date while you're in the view — and that makes it no longer match the rule — the task still stays in the list until you leave and come back.

This is intentional: the task you just acted on doesn't vanish out from under you, and the list feels steadier to work in.

When the rule has an error

If your rule has a problem (mismatched brackets, a typo, an unknown field, etc.), the detail panel shows a message under the Rule field telling you what's wrong. The main area falls back to the starter docs until you fix it.

Where views are stored

Views live in the same encrypted database as your tasks. On Pro and Lifetime, views sync between devices along with everything else. On the free (local-only) tier, a view stays on the device where you created it.

Opening a newer view on an older app

Views are versioned. If a view was created with a newer version of the app, an older version will refuse to open or edit it and prompt you to update — this prevents new fields or syntax from being silently dropped.