Skip to content

Tasks

A task is the only object in Conatus that carries work. Projects, sections, labels and filters exist to arrange tasks.

Field Limit Notes
Name 1–500 characters, required The one field a task cannot be without.
Description up to 2000 characters Free text, shown under the name in the task view.
Priority P1–P4, default P4 P1 is most urgent. P4 means “no priority set”.
Due date YYYY-MM-DD When you plan to work on it.
Due time HH:mm Requires a due date.
Deadline YYYY-MM-DD Must-finish-by. Independent of the due date.
Duration 1–1440 minutes Estimated length. Sizes the block in Calendar week view.
Repeat a recurrence rule Requires a due date. See Recurring tasks.
Repeat ends YYYY-MM-DD Requires a repeat rule, and cannot be before the due date.
Labels any number Shared across all your projects.
Assignee one project member Only offered in a project with more than one member.
Project required Every task lives in exactly one project.
Section optional A task with no section sits in the unnamed group at the top.
Parent optional Makes it a subtask.

Priority drives the checkbox colour and one of the list sort orders:

Priority Colour Meaning
P1 red Most urgent
P2 orange
P3 blue
P4 grey Default, no priority set

In the filter language, p4 and no priority are the same term.

These are two different columns and Conatus never derives one from the other.

  • Due date is when you intend to work on something. It drives Focus, Upcoming, Calendar and every date term in the filter language.
  • Deadline is when it has to be finished. It shows as a flag chip, turns amber on the day and red once it has passed, and it is otherwise inert. It does not put the task in Focus and no filter term reads it.

A due time requires a due date. Clearing the due date clears the time and the repeat rule with it.

Duration is stored in minutes and displayed as 90m, 2h or 1h 30m. Calendar week view uses it to size the block; everywhere else it renders as a small timer chip. It is independent of the due time, so a task can have an estimate without being scheduled.

Any task can be dragged under another to become a subtask. Nesting is limited to five levels, and the server refuses a move that would exceed it or that would make a task its own ancestor.

  • Dragging a parent takes its whole subtree with it.
  • A parent row shows a chevron to collapse and expand its children.
  • The task view lists subtasks with a done/total counter and has its own add form for new ones.
  • Deleting a parent moves its whole subtree to Trash together; restoring the parent brings the subtree back.

Every add form parses quick-add syntax, so Renew passport tomorrow at 9am p1 #Admin @errand fills in the date, time, priority, project and label in one line.

You can add a task:

  • from New task in the sidebar (or the q shortcut), which lands in Inbox;
  • from the add form at the bottom of any section;
  • from Add task above / Add task below on an existing row, which inserts it at that exact position rather than at the end;
  • from Add subtask on a row, or the add form inside the task view.

Explicit form fields win over parsed tokens. If you type p1 in the text and also pick P3 in the priority select, the task is created as P3.

Every task row carries a menu:

Action What it does
Add task above / below Inserts a sibling at that position
Add subtask Inserts a child
Open Opens the full task view
Set date… Opens the inline date, time, deadline and duration editor
Assign… Only in a shared project
Labels Toggle labels without leaving the list
Quick date Today, Tomorrow, Next week, No date
Quick priority P1–P4
Deadline Inline deadline editor
Reminders Inline reminder editor
Move to… Move the task to another project
Duplicate Copies every field and the labels, inserted right below
Copy link to task A URL that opens the project with the task view already open
Move to Trash Soft delete, recoverable

Clicking a task’s name opens a dialog with the whole record. The left column holds the name, description, subtasks, comments and attachments; the right rail holds project, date, repeat, deadline, duration, priority, labels, assignee and reminders.

  • Name and description are click-to-edit and save on blur.
  • The / buttons in the header step through the list without closing.
  • The menu offers Copy link to task and Move to Trash.
  • Esc closes it. Focus is trapped inside while it is open and returns to where it was when it closes.

Comments are plain text, up to 2000 characters. Everyone with access to the project can read and post; you can only edit and delete your own. Projects have their own comment thread too. See Collaboration.

Attach files from the paperclip in the comment box. Any file type is accepted up to 10 MB. Files are stored in the MinIO bucket, not in PostgreSQL, so back both up together.

Ticking the checkbox completes the task and shows an Undo toast. The write is deferred until the toast expires, so undoing costs nothing.

Recurring tasks are the exception: completing one writes immediately, because the task is not leaving the list, it is advancing to its next occurrence. The undo toast still offers a real inverse, which restores the previous due date.

Completed tasks leave the active lists and appear on Completed. Unticking a completed task brings it back.

Deleting is a soft delete. Tasks and projects move to Trash and stay there until you restore them. Conatus has no permanent-delete action anywhere in the UI or the API. The only ways data leaves the database are deleting your account and dropping the database yourself.

Trash lists root items only. Restoring a task restores its deleted subtree with it, and restoring a subtask whose parent is still deleted is refused with “Restore the parent task first”.

Project options → Select tasks turns on selection mode (Esc exits). Tick any number of rows and a toolbar appears with:

  • Complete
  • Move to Trash
  • Move to another project
  • Set priority
  • Set a due date
  • Add a label

Complete and delete both go through the same undo toast as a single task. The other actions apply immediately.

A project’s list view sorts by Manual, Due date, Priority or Name; the choice is per-project and persists locally. Manual order is drag-and-drop and is the only mode in which dragging is enabled. Under any other sort the drag handles are inactive, because there is no manual position to write.

Dragging works with a mouse (5 px to start) and on touch (hold 250 ms), so a normal swipe still scrolls the page. Horizontal movement while dragging changes nesting depth; it takes about three quarters of an indent to shift one level, so drift while dragging vertically never accidentally nests a task.