Weekly Timesheet
A 7-day grid of everything you worked on this week — review, edit, and submit the whole week with one click.
Weekly Timesheet
The timesheet is your review-and-submit layer on top of the timer. While the timer captures individual sessions as drafts, the timesheet groups them by week and lets you submit the whole week to your manager in one click.
Two access paths:
/time/timer?view=timesheet— the new pivot view that ships with the composer-first timer page. Same dataset as the calendar and list views, just shaped as a grid. Best for at-a-glance "what did I do this week" review./time/timesheet— the dedicated submit-and-status page. Same grid + a status panel + the Submit button. This is what you open at the end of the week.
Both default to the current week.
Screenshot needed — full weekly grid with day columns Mon–Sun, entity rows, daily totals, weekly total + submit button
How the grid works
- Columns = the 7 days of the week. The first column is your workspace's
week_start_day(default: Monday). - Rows = one row per entity you tracked time on this week (task, ticket, deal, candidate, or internal description).
- Cells = total hours for that entity on that day. Click a cell to add or edit hours for that day inline.
- Top header row = daily total (sum across all entities for that day).
- Right column = entity total (sum across all 7 days for that entity).
- Bottom-right = weekly total + billable subtotal.
A separate summary card to the right shows:
- Total hours
- Billable hours
- Status (Draft / Submitted / Approved / Rejected)
- Submit button (only visible when status is
draftand total hours > 0)
Adding entries from the grid
You don't have to use the timer. You can build your week by clicking cells and typing hours directly.
- Click any empty cell.
- Type the hours (decimal:
2.5or HH:MM:2:30). - (Optional) Add a description by clicking the entity-row label.
- Tab away — the entry saves automatically as a
draft.
To add a new entity row mid-week (e.g. you started working on a new task), click + Add row at the bottom of the entity list and pick the entity from the same picker the timer uses.
Switching weeks
Use the date arrows in the top-left of the grid, or pass ?week=YYYY-MM-DD in the URL (must be a Monday — or whatever your week_start_day is set to).
The week navigation lets you fix old timesheets that haven't been submitted yet.
Submitting
When you're happy with the week:
- Click Submit in the summary card.
- The whole week (every entry on this timesheet) transitions from
drafttosubmittedin one operation. - Your manager(s) — anyone with
time:approvepermission, or admins — get a notification in their inbox.
You can edit individual entries any time before submission. After you submit, entries become read-only until either approved (locks them) or rejected (which moves the timesheet back to draft so you can fix it).
What "submitted" looks like
Once submitted:
- A sticky banner appears at the top of the timesheet: "Submitted on Mon Apr 27. Awaiting approval."
- Cell editing is disabled.
- The Submit button is replaced with Status: Awaiting approval.
Lifecycle states
| State | What it means | Editable? | Counts toward billable? |
|---|---|---|---|
| Draft | Default for new entries / new timesheet | Yes | No |
| Submitted | You clicked Submit; awaiting approval | No (locked for the submitter) | No (yet) |
| Approved | An approver accepted the timesheet | No (frozen for everyone) | Yes |
| Rejected | An approver rejected with a reason | Returns to Draft after acknowledgement; rejection reason visible | No |
State transitions are strictly enforced: you can only submit a draft, only approve a submitted timesheet, only reject a submitted timesheet. Trying to re-submit an already-submitted timesheet produces an error.
What if my timesheet is rejected?
You'll see the rejection reason on the timesheet banner. After acknowledging:
- The timesheet returns to draft state.
- You can edit affected entries.
- Re-submit when ready.
The rejection reason is preserved as audit history — visible to both you and the approver.
Auto-submit (optional)
In Settings → General, you can pick an auto-submit day-of-week. On that day, a daily cron will:
- Find every draft timesheet for the previous week with at least one entry.
- Transition them all to
submitted. - Notify approvers.
Useful for teams that habitually forget to submit.
Where this data shows up downstream
- Approval queue (
/time/approvals) — your timesheet appears here as soon as you submit. - Reports (
/time/reports) — utilization, billable %, and project actuals all come from approved timesheets. - Project budgets — a project's actual hours are summed from approved entries scoped to that project.
- Invoice bridge — only
approved && billable && not yet invoicedentries are eligible for the invoice "Pull from time" dialog.