Timer Widget
The timer widget is a built-in stopwatch that lets you track time as you work. When you start the timer, it counts up in real-time. When you stop it, a time log entry is automatically created. The timer is visible across all pages in SetGet, so you always know what you are tracking.
Starting the timer
There are two places to start the timer:
From a work item detail panel
- Open any work item.
- Scroll to the Time Tracking section in the detail panel.
- Click the Start Timer button (play icon).
- The timer begins counting immediately.
- The work item is linked to the timer session.
From the time tracking page
- Navigate to Analytics > Time Tracking in the sidebar.
- Click the Start Timer button in the top toolbar.
- A modal appears asking you to select an issue.
- Search for and select the issue you want to track time against.
- Click Start.
- The timer begins counting.
TIP
You can also start the timer using the keyboard shortcut Alt + T from anywhere in SetGet. A quick-select modal appears to choose the issue.
Timer display
Once started, the timer is displayed in two locations:
Sidebar indicator
A persistent timer indicator appears in the bottom-left of the sidebar:
| Element | Description |
|---|---|
| Timer icon | Animated pulsing dot indicating an active timer |
| Elapsed time | HH:MM:SS format, updating every second |
| Issue identifier | Project prefix and issue number (e.g., "PRJ-142") |
| Issue title | Truncated issue title |
Click the sidebar indicator to navigate directly to the linked work item.
Work item detail panel
When viewing the work item linked to the active timer, the Time Tracking section shows:
| Element | Description |
|---|---|
| Live counter | Large HH:MM:SS display with animated seconds |
| Stop button | Red square icon to stop and save |
| Discard button | Trash icon to stop without saving |
| Issue context | Confirms you are timing the correct item |
Header bar indicator
A small timer badge also appears next to your avatar in the global header bar. This ensures the active timer is visible even when the sidebar is collapsed.
Timer behavior
One timer at a time
Each user can have only one active timer at any moment. Starting a new timer automatically handles the previous one:
| Scenario | Behavior |
|---|---|
| Start timer on Issue B while Issue A is running | Issue A timer stops, a time log is created for Issue A, Issue B timer starts |
| Start timer on the same issue that is already running | No effect -- the timer continues |
| Two browser tabs open | Timer state is synchronized via Redis; both tabs show the same timer |
Timer persistence
The timer is not stored in the browser. It is persisted server-side in Redis:
| Aspect | Detail |
|---|---|
| Storage | Redis key: setget:timer:{user_id} |
| Stored data | Issue ID, start timestamp, workspace ID |
| Persistence | Survives browser close, tab close, page refresh, and device switch |
| Expiry | Timer auto-expires after 24 hours to prevent runaway timers |
| Cross-device | Start a timer on your laptop, check it on your phone |
When you open SetGet after closing the browser, the timer resumes from where it was. The elapsed time is calculated as the difference between the stored start timestamp and the current time.
WARNING
If a timer runs for more than 24 hours without being stopped, it is automatically discarded. This safety mechanism prevents accidentally accumulating days of tracked time.
Minimum duration
Time logs shorter than 1 minute are discarded when the timer is stopped. This prevents accidental micro-logs from cluttering the time log table.
Stopping the timer
Stop and save
- Click the Stop button (red square) on the sidebar indicator, the work item detail panel, or the header bar badge.
- The timer stops.
- A time log entry is created with the following values:
| Field | Value |
|---|---|
| Duration | Elapsed time rounded to the nearest minute |
| Date | Today's date |
| Issue | The linked work item |
| Description | Empty (you can edit it afterward) |
| Billable | Inherits the project's default billable setting |
| Created by | The current user |
- A confirmation toast appears: "Time logged: Xh Ym".
Editing after stop
After stopping, the new time log entry appears in the work item's time log table. You can immediately edit it to:
- Adjust the duration (round up or down).
- Add a description of what you worked on.
- Change the billable flag.
- Change the logged date if the work spanned midnight.
Discarding the timer
If you started the timer by mistake or do not want to log the time:
- Click the Discard button (trash icon) on the sidebar indicator or the work item detail panel.
- A confirmation dialog appears: "Discard timer? No time log will be created."
- Click Discard.
- The timer stops and no time log is created.
| Action | Time log created | Timer cleared |
|---|---|---|
| Stop | Yes | Yes |
| Discard | No | Yes |
| 24-hour auto-expiry | No | Yes |
| Start new timer (auto-stop) | Yes (for the previous issue) | Previous cleared, new started |
Timer visibility across pages
The timer indicator is intentionally visible across all SetGet pages to maintain awareness:
| Page | Timer visible |
|---|---|
| Dashboard | Yes (sidebar + header) |
| Issues list | Yes (sidebar + header) |
| Work item detail (same issue) | Yes (inline timer + sidebar + header) |
| Work item detail (different issue) | Yes (sidebar + header, shows which issue is being timed) |
| Cycles | Yes (sidebar + header) |
| Modules | Yes (sidebar + header) |
| Pages / Wiki | Yes (sidebar + header) |
| Settings | Yes (sidebar + header) |
| Time tracking page | Yes (inline timer + sidebar + header) |
Keyboard shortcuts
| Shortcut | Action | Context |
|---|---|---|
Alt + T | Start timer (opens issue picker) | Global |
Alt + S | Stop active timer and save | Global (only when timer is running) |
Alt + D | Discard active timer | Global (only when timer is running) |
Alt + Shift + T | Navigate to the timed issue | Global (only when timer is running) |
TIP
Keyboard shortcuts work from any page. You do not need to navigate to the work item or time tracking page to stop or discard the timer.
Timer and offline behavior
SetGet is a web application and requires an internet connection. Timer behavior during connectivity issues:
| Scenario | Behavior |
|---|---|
| Brief network interruption (< 30s) | Timer display may pause but the server-side timer continues. Reconnection restores the display. |
| Extended offline | Timer display freezes. The server-side timer in Redis continues. When you reconnect, the correct elapsed time is shown. |
| Stop while offline | The stop action is queued and executed when connectivity returns. |
Permissions
| Role | Can start timer | Can stop own timer | Can view others' timers |
|---|---|---|---|
| Owner | Yes | Yes | No (timers are private) |
| Admin | Yes | Yes | No |
| Member | Yes | Yes | No |
| Guest | No | No | No |
Timers are entirely private. No other user can see that you have a running timer or its duration. Only the resulting time log entries are visible to project members.
Best practices
- Start the timer when you begin focused work on an issue. It is the most accurate way to track time.
- Add a description immediately after stopping. The longer you wait, the harder it is to remember what you did.
- Use discard intentionally. If you accidentally started the timer, discard rather than stopping and deleting the log.
- Check the sidebar indicator regularly. It is easy to forget a running timer, especially when switching between issues.
- Do not rely on the 24-hour expiry. Stop or discard your timer at the end of each workday.