For people who track time inTopTrackerand manage the work inJira
Gets your TopTracker time into Jira.
macOS 12.0+ · 0.2.0 · native AppKit app · no Electron, no bundled browser
Tracking · 0:41:18
DEMO-42 · Checkout regression sweep
| Started | Jira issue | Assignment | Description | Duration | Jira submission |
|---|---|---|---|---|---|
| Mar 4, 13:45:02 | DEMO-42 | Captured issue | DEMO-42 Checkout regression sweep | 0:41:18 | |
| Mar 4, 11:02:19 | Unassigned | Sprint planning | 1:04:00 | Ignored for Jira | |
| Mar 4, 09:31:40 | OTHER-7 | Assigned | OTHER-7 Migration follow-up | 1:22:07 |
3 sessions · durations are source intervals, not billed totals · hover for details
Why I built this
I'm a contractor. The company I work for tracks time in TopTracker — their rule, not mine. The actual work lives in Jira.
So every week I'd open TopTracker, copy the sessions into a spreadsheet, clean out the duplicates, add up the hours per ticket, and type the totals into Jira one by one. Then do the invoice on Sunday.
And I kept forgetting to log things. Those hours were just gone.
TopTracker had recorded all of it the whole time. It just never got to Jira. So I built the bit in between.
Konstantin Zotov · Spain
Capture is automatic. Posting is not.
DEMO-42 Checkout sweep maps to DEMO-42. A Jira URL works too. Anything without a key stays Unassigned — never guessed at. Assign it yourself, and make it a rule if that description comes back every week. Recognised keys are shown with the issue's own title, fetched from Jira and cached for a day. Jira · Review worklogs
A preview you can argue with before Jira sees it.
Issue, time and comment are editable in the row. Time you have already logged in Jira is named in the status, for context, and is never subtracted for you.
| Post | Jira Issue | Title | Time | Comment | Jira Status |
|---|---|---|---|---|---|
| DEMO-42 | Checkout fails on an expired card | 41m | New — no worklog of yours today | ||
| OTHER-7 | Migrate billing webhooks | 1h 22m | Retried the failed batch | You already logged 30m — check before posting | |
| Unassigned | — | 1h 4m | Sprint planning | No issue key — not eligible to post |
Short sessions
Anything under a minute stays out of the review list. A setting turns that off; a second one also hides them from the history window.
Only your worklogs
Comparison looks at entries under your own Jira account, nobody else's.
Already logged by hand
Time you entered in Jira yourself can be pinned to that worklog, or the session ignored outright. Both are reversible.
Five-minute freshness
Opening the window compares on its own, reusing a comparison from the last five minutes. Anything older is compared again before it can post.
Grouped by local day
Entries group by session start date in this Mac's timezone. Split overnight work yourself. The date rolls over at midnight while the app stays running.
Asked, not assumed
Optionally, a prompt after a Jira issue switch or a TopTracker stop offers to log that session. Later dismisses it, Skip excludes it. Off until you turn it on.
Never posted twice
Each worklog carries a private Jira property keyed to the session id TopTracker assigns account-wide, so a second Mac recognises what the first already posted without adding text to the comment.
The figure you have to retype somewhere else.
--invoice <file>. Local session history. Clear connections to Jira.
- TopTracker's application.log
- TopTracker.db — read-only, WAL included
- TopTracker authentication tokens
- TopTracker settings
- Screenshots
- Keyboard and mouse counters
~/Library/Application Support/TopTrack. Jira credentials go to the macOS Keychain, never to a file the app writes. What it does not do yet.
Durations are estimates
Displayed time is the interval between source timestamps, not an authoritative billed total.
No mappings out of the box
No company or project rules ship with it. A description carries the key, or you assign the issue yourself — and write your own rule if it repeats.
Jira needs a setup step
First launch walks through the TopTracker folder and Jira, but connecting still needs a registered Atlassian integration and an authorization service — the hosted default, or your own HTTPS origin.
Earnings are an estimate
Hours at your current rate, converted at a cached reference rate. Not an invoice, and not a statement of what anyone owes you.
It cannot track while quit
No tracking while the app is quit or the Mac is asleep. Launch at login is not implemented yet.
A missing stop is not a running timer
Starts recovered after a crash or a log rotation are labelled last-reported, never assumed live.
Tied to TopTracker's shape
Log and schema strings were read on TopTracker 1.7.8. An upgrade there may need an update here.
Stop retyping your week into Jira.
Install it, open the review window on Friday, tick the day, confirm. That is the whole routine.
macOS 12.0 or newer
Apple silicon and Intel
Requires TopTracker installed
1.9 MB · released 11 September 2026