Time logs
Route: /org/tasks?id=<task-id> → Time Logs tab
Also reachable from: the Log Time button on a list row or a
Kanban card
1. What a time log is
A record that someone spent a duration on a task on a date, with a description and optionally attachments. Time logs are the raw material for three things: the task's Actual Hours, the person's timesheet, and any resource bill that includes the task.
| Time log | Estimated hours | Remaining hours | |
|---|---|---|---|
| Created by | Logging time | Typed at creation | Typed by a person |
| Changes Actual Hours | Yes — it is the source | No | No |
| Feeds timesheets | Yes | No | No |
| Feeds billing | Yes | No | No |
The modal suggests a new remaining figure — previous remaining minus what you just logged, floored at zero — but it is an editable field. Nothing keeps it consistent afterwards.
Actual Hours is derived and trustworthy. Remaining Hours is a human estimate.
2. How a time log spreads
3. Logging time — step by step
Step 1 · Open the modal
Log Time is available from the detail panel, a list row, or a Kanban card. It is titled Log Time.
Logging is blocked once the task's status is in the Done
category — no permission overrides that.
Step 2 · Choose the date
The date field appears only if the project allows backdating or future logging. When neither is allowed, there is no date control at all and the log is stamped today.
When backdating is allowed, the modal states the limit: "Backdating allowed up to N days", and the date picker's range is set accordingly.
Step 3 · Enter the duration
Separate Hours and Minutes fields. They are combined into total minutes.
As you type, Remaining Hours recalculates to the previous remaining minus what you are logging, never below zero. You can overwrite it.
Step 4 · Describe the work
The placeholder changes with the project's policy:
| Policy | Placeholder |
|---|---|
| Description optional | What did you work on? |
| Description required | Minimum N characters required... |
Step 5 · Attach
Same mechanism as comments — files upload immediately and can be
removed before submitting. Requires the task-attachment document category to exist.
Step 6 · Submit
4. Field reference
The modal
| Field | Control | Required | Notes |
|---|---|---|---|
| Date | Date | — | Hidden entirely unless backdating or future logging is enabled |
| Hours | Number | ✅ | With Minutes, must total more than zero |
| Minutes | Number | ✅ | |
| Remaining Hours | Number | — | Pre-calculated, editable |
| Description | Textarea | Depends on project policy | Minimum length is project policy |
| Attachments | Upload | — | Needs the task-attachment category |
Validation and its messages
| Rule | Message |
|---|---|
| Duration above zero | Please enter a valid duration |
| Description length | Please provide a more detailed description (min N chars) |
| Backdating rejected by the server | Backdating is restricted by project policy |
| Future logging rejected | Future logging is disabled for this project |
| Attachment category missing | Task Attachment category not configured |
| Upload failed | Failed to upload attachment |
The modal hides or limits the date control from the project settings, and the server checks again on submit. The two specific error messages above are the server's rules surfacing — which is why they can appear even when the date picker allowed the value.
The Time Logs tab
| Column | Holds |
|---|---|
| User | Who logged it |
| Date | When the work happened |
| Duration | How long |
| Description | Truncated, full text in the tooltip |
| Attachments | Links |
Empty: No time logs found.
5. The admin contract — project timesheet settings
Everything about the date and description is governed per project, in Project → Timesheet Settings:
| Setting | Effect here |
|---|---|
| Allow backdated entry | Whether the date field exists, and how far back |
| Backdate limit (days) | The lower bound, and the notice text |
| Allow future logging | Whether the date field exists, and the upper bound |
| Require description | Makes description mandatory |
| Description minimum length | The threshold and the message |
Plus the task-attachment document category, for attachments.
6. Downstream
| Consumer | Uses |
|---|---|
| Task Actual Hours | The sum of durations |
| Progress % | Actual ÷ Estimated |
| My Timesheets | The logs, laid out per day |
| Timesheet approvals | What a manager approves |
| Resource Bills | Billable logs become billable hours |
| Timesheet Analytics | Utilisation |
Billing follows the task's is_billable flag, which is inherited from its
category at creation. Time logged against a non-billable task
is real, appears on the timesheet, and is simply not billable.
Fixing it after the fact means changing the task's flag — and then re-generating the bill.
7. Don't confuse this with…
| Thing | Where | Why it is different |
|---|---|---|
| Time log (this page) | Per task | One entry, one duration |
| Timesheet | My Timesheets | The same logs, arranged by day and submitted for approval |
| Actual Hours | The detail panel | The sum of logs |
| Remaining Hours | The detail panel | A typed estimate, not a calculation |
| Estimated Hours | The detail panel | Set at creation |
8. Troubleshooting
| Symptom | Cause |
|---|---|
| No Log Time button | The task is in a Done status |
| No date field in the modal | The project allows neither backdating nor future logging |
Backdating is restricted by project policy | Beyond the backdate limit |
Future logging is disabled for this project | The date is after today and future logging is off |
| A description is refused | It is under the project's minimum length |
| Attachments fail | The task-attachment category is missing |
| Actual Hours did not move | The log failed — check for an error toast |
| Remaining Hours looks wrong | It is editable and not recalculated after the fact |
| Logged time is missing from a bill | The task is not billable |
Related
- Project timesheet settings — every rule above
- My Timesheets · Resource Bills