Skip to content

Time Tracking

Use /time from the command palette to open the time tracking interface:

  • Timer mode: Select a task on a board or table, or open its detail page, then press W to start or stop its timer
  • Per-ticket time log modal: Press B (or Cmd+K — “Log time”) on an open ticket to open an in-place dialog (day-grouped entries with a total and inline add row for any date and duration; total updates in real time as you add rows)

Both modes support saving the entry directly from the form.

Enable Settings → General → Time tracking → Show total time on tasks to see each task’s accumulated time without opening it.

  • Board cards show the total as quiet text. An active total turns green and advances live.
  • Table view adds a sortable Time column. Use Configure table columns to hide, show, or reorder it.
  • Concurrent timers all contribute to the live total. Paused timers remain frozen.
  • The setting is board-specific and off by default. Disabling time tracking also hides totals.

The /time view includes the standard app navigation rail, giving you quick access to Board, Calendar, Inbox, AI, and Search from anywhere on the time reports page.

The per-ticket time log modal in the task detail view links to the broader /time view. Click See all time entries (or use the link in the modal header) to open /time?board=<board-id>&task=<ticket> in a new tab. The /time view then:

  • Loads the board and task parameters from the URL
  • Shows the time log for that specific task instead of a filtered list
  • Includes an add/edit entry form with full Hours/Minutes, date, and note fields
  • Displays all existing time entries grouped by date for the selected task

This makes it easy to navigate from a quick check of tracked time on a ticket into a detailed log with bulk actions (add rows, edit, delete).

Time reports render correctly across Light and Dark themes:

  • Reports display with clear borders to distinguish rows and columns.
  • Light mode backdrops use the container background color (white for Light theme) rather than transparent or missing borders, ensuring legibility on typical white backgrounds.
  • Fields like duration, assignee, and note remain fully visible and accessible; related labels and totals are legible without cross-out or missing content.

The /time view aggregates time across your workspace and lets you filter by:

FilterDescription
TeamAll users in your team
BoardSpecific board or project scope
UserIndividual user (use ?user=me to see your own entries)
RangeLast 7 days, month-to-date, or custom date picker
GroupBy task, board, user, or date

Filters are saved per prompt so you can quickly reapply the same view.

Select a date range from the start of the report:

PresetDescription
YesterdayEntries from the previous calendar day
Last weekEntries from the last full 7-day period
Last monthEntries from the previous full month
CustomOpen a date picker with From and To fields

For any filter view that shows a duration:

  • Click a duration to open an in-depth time log modal for that row, with the full entry history and ability to add or edit entries
  • This modal is basically the same view opened from the per-ticket time log on a ticket

When adding or editing time entries, the time report entry form includes:

  • Duration input: Accept HH:MM format, integer minutes, or split hours/minutes. A dedicated Hours and Minutes field makes selecting exact durations easier than combining them.
  • High-precision duration support: Use h:mm:ss format for exact precision (e.g., 0:45:30 for 45 minutes and 30 seconds). The system stores durations at the second level for accurate reporting.
  • Date picker field: Fully clickable date field that opens the calendar popover for quick selection
  • Multi-select filters per entry: Board and User checkboxes toggle per entry; rows can be bulk selected with checkboxes, deleted in bulk, or exported to CSV
  • Entry-level local timestamps: Each manual entry is stored as local-noon timestamps so logs are correctly associated with the logged day, even across time zones

This UX appears in both the per-ticket time log modal and the broader time report when adding rows. Each entry stays on a single line; the person’s name truncates instead of every field wrapping on its own row.

The time log modal also supports quick filters:

FilterDescription
AssigneeFilter entries by who logged them; real assignee filter helps surface who actually worked on a task rather than who merely received it
All datesShow all time entries regardless of date
Today / This weekQuick-finishing filters for common work periods

After applying filters, click Export to download a comma-separated values (CSV) file:

  • Formatted for Excel and Google Sheets with decimal hours
  • No injected formulas or formatting artifacts
  • Includes task number, description, user, duration, date, and note

CSV export supports the same range and group filters as the time report.

Toggle Quiet rows in the view toolbar to hide the time cell for less verbose views. This keeps the table compact while preserving edit/delete access to each entry.

Has a running timer is a filter like any other, so a saved view can hold it permanently instead of relying on the temporary board toggle. It works in table layout as well as on the board.

The filter needs time tracking enabled on the board; with it off, or with nothing running, it matches nothing rather than everything.

On the running-timers overview, Pause freezes a timer in place and Resume continues the same total. The row stays listed while paused, showing Paused where the end time would be, and its elapsed count stops moving everywhere it appears: the overview, the task-detail indicator, and the board card badge.

A paused gap is never billed. Stopping a timer while it is paused ends it at the moment you paused, not at the moment you pressed stop, so a timer left paused overnight charges the work rather than the night. Starting a paused timer again resumes it instead of leaving it frozen.

Pause and resume are available in the app and via the MCP API endpoints /api/time/pause and /api/time/resume. The CLI and MCP surfaces can start, stop, and log time, and their payloads report whether a timer is paused, but they cannot pause or resume one yet.

  • Running timer badge: Appears in the Kanban header (Ctrl+K view) showing the number of active timers on the board
  • Per-board persistence: Timer state is scoped per board — starting a timer on one board doesn’t affect timers on other boards
  • Rail timer icon: When time tracking is enabled, the App shell rail shows a Timer icon that opens the running-timers view
  1. Select a task on the board or table, or open its detail page
  2. Press W — the timer starts automatically
  3. Press W again to stop and save the entry
  1. On an open ticket, press B (or Cmd+K — “Log time”)
  2. Day-grouped time entries appear with rows for each calendar day and a total at the top
  3. Click Add row to create a new entry for any date; type a duration in HH:MM or minutes (e.g., 1:30 or 90m)
  4. Enter separate Hours and Minutes values for precise durations (e.g., 1 hour 30 minutes)
  5. Adjust the date, duration, and optional note per row; the Board and User fields are multi-select checkboxes per entry
  6. Total updates in real time; click Save or press Return to commit all entries
  1. Click the time cell on a board card to open the per-ticket time log modal
  2. Click See all time entries in the modal header to open /time?board=<board-id>&task=<ticket>
  3. The /time view shows the full time log, edit/add forms, and filters for that specific task
  4. Add additional entries directly from the /time view using Hours/Minutes or minutes
  1. Open /time from the command palette
  2. Select filters from the Dropdown panel:
    • Team, Board, User, Range, Group
  3. Click Save filters to prompt-saved states
  4. Quickly re-open saved filters from the left panel
  1. Apply filters you want to export
  2. Click Export CSV
  3. Open in Excel or Google Sheets — times display as decimal hours ready for calculations