← Back to TopTrack

Support

Connection help, worklog questions, and privacy requests.

Contact

Email support@toptrack.app for help, privacy requests or a security report. Include the app version, macOS version, what you expected and the error message. Remove issue names, account information and other workplace data from screenshots.

Never send a password, client secret, access token, refresh token or complete authorization callback URL. Security reports and personal data belong in private email, not public issues.

Connect Jira

  1. Open Settings → Connection in the Mac app. Keep “Use TopTrack’s server” unless you run your own.
  2. In the Jira row, click “Connect in Browser…”. Your browser opens Atlassian’s sign-in; approve access and return to the app.
  3. Choose Worklogs… from the menu bar. It checks your own Jira worklogs for the day as it opens; pick the date if it is not today.
  4. Everything that can post is ticked already. Correct issue keys, lower the time to post where part of a session belongs elsewhere, add comments, untick what should wait, and confirm the count.

A description that comes back every week deserves a rule: Settings → Issue Rules maps a description to an issue so the row arrives assigned. A day's sessions on one issue post as a single worklog; every session keeps its own row, under an issue row that says what Jira will get.

For a custom authorization server, enter its base HTTPS origin in Settings. Do not enter your Jira site or the /oauth/callback address. Each custom server needs a compatible backend and its own Atlassian integration configuration.

Why TopTrack asks for permission

TopTrack reads another app's files and talks to Jira on your behalf. macOS does not let an app do either quietly, and it should not. Each request below is the system making you the one who decides — TopTrack cannot skip them, and you should be suspicious of a version that did.

The folder picker

TopTracker keeps its database in ~/Library/Application Support/TopTracker. The Mac App Store build runs in Apple's sandbox, which forbids reading anything outside the app's own container until you point at it yourself, in the system's file picker. That picker is the permission: choosing the folder is what grants access. TopTrack checks the folder contains a readable TopTracker.db, then stores a security-scoped bookmark so it does not have to ask again.

It asks a second time only if the bookmark stops working — TopTracker moved its data, the folder was renamed or restored from a backup, or macOS revoked the grant after a system update. Settings → TopTracker has “Choose TopTracker folder…” for that case. If the picker appears on every launch, something is wrong; write to us with the app version and macOS version.

The direct download is not sandboxed and finds the folder on its own, so it never shows this picker unless the folder is missing.

The Keychain dialog

Jira tokens live in the macOS Keychain, not in a file TopTrack writes. macOS ties a Keychain item to the app that stored it, identified by its code signature, and asks before another program may read it. You may see this once, when TopTrack first reads the tokens after connecting. Choosing “Always Allow” is safe here: it is TopTrack reading its own entry. Running both the direct download and the App Store build on the same Mac counts as two different apps to the Keychain, so switching between them asks again.

Your browser opens

Connecting Jira hands you to Atlassian's own sign-in page in your default browser. TopTrack never shows a password field and never sees your Atlassian password — it receives an access token from Atlassian after you approve, and nothing before. The page you land on afterwards only tells you to return to the app.

What it never asks for

No Accessibility access, no Screen Recording, no Full Disk Access, no Automation of other apps, no notification permission — the worklog reminders are a small panel of TopTrack's own, not system notifications. If you are ever asked for one of these by something calling itself TopTrack, it is not this app.

What leaves your Mac, and what does not

The app collects nothing about you. There is no account, no analytics, no telemetry, no crash reporter, and no identifier that follows you. The app has four network destinations in total, and each is there to do something you asked for:

  • Your Jira site (api.atlassian.com) — reads your own worklogs for comparison; posts the entries you confirm. The only place task content ever goes, and only when you press Post.
  • The authorization service (auth.toptrack.app) — exchanges Atlassian's sign-in code for tokens and later refreshes them. It holds a pending sign-in in memory for up to ten minutes and stores nothing afterwards; your session history never goes there. Access logging on that service is off.
  • Currency rates (api.frankfurter.dev) — only if you turn on currency conversion, which is off by default. It receives the currency pair and nothing else: not the amount, not the hours, not the rate.
  • This website — the app opens it when you click About or Support, and the direct download checks it for updates if you allow that. The web server keeps ordinary access logs, rotated daily. Google Analytics runs here only after you allow it in the cookie notice; until then the script is not even downloaded. Cookies and analytics has the details.

Everything else stays on your Mac: tracking history, issue assignments, submission receipts, preferences, and the invoice PDFs you drop on the icon, which are read and discarded. Diagnostics are written locally and leave only if you export a file and send it. The Privacy Policy says the same thing in the words a policy has to use.

Missing or short sessions

The app follows activity available locally from TopTracker. Its history may be incomplete and durations are estimates, so compare them with your source records. Settings → Sessions controls whether sessions shorter than one minute are offered to Jira; a short session on an issue you tracked again that day still counts toward that issue's worklog. Zero-second entries cannot be posted.

A submission timed out

Check Jira again (View → Check Jira Again, or ⌘R) before attempting another submission. Some entries in a batch may already have been posted. Do not delete local submission receipts to force a retry: they help identify uncertain or completed submissions.

How Worklogs decides

The home page gives the rules in one line each. This is the longer version. Worklogs has three periods: Day shows worklog drafts you can check and post; Last 7 Days and Custom Range show the captured sessions as a record, with posting off, because a Jira worklog carries a single date.

What it checks

  • Only your worklogs, only that day. Checking asks Jira for worklogs under your own account started on the day you are reviewing, nobody else's.
  • Checks by itself. Worklogs checks Jira when it opens, when the day changes, after an edit, and when you come back to it more than a minute after the last check. Post checks again first if the last check is over five minutes old. View → Check Jira Again (⌘R) checks right now, and Try Again appears beside Post after a failure. When nothing else needs saying, the line beside Post reads “Checked 2 minutes ago · ⌘R to check again”. What you ticked survives every check.
  • Remembered between checks. Results and your receipts are cached, so reopening asks Jira only about new or changed rows.
  • Shows its work. While checking or posting, each row shows its own progress — waiting, checking, checked, posted or failed — and the line beside Post names the issue and page. A request that hangs times out with an error rather than leaving the window busy.

What it posts

  • One row per session. An issue tracked once is a single row. An issue tracked more than once that day becomes a group: its row says what Jira will get (“Posts as 1 worklog · 17m”) and each ticked session under it says which worklog it merges into. The issue's checkbox ticks every postable session under it and reads all, some or none.
  • One issue, one worklog a day. Switching to the same issue five times is one piece of work to Jira, not five, so 4m, 3m and 10m on DEMO-42 post as one 17m worklog, rounded once. The worklog's private Jira property records every session it covers, so another Mac sees each of them as posted. Settings → Sessions → Post a day's sessions on one issue as a single worklog turns combining off.
  • Selected for you, posted by you. Everything that can post is ticked when the window opens, and you can tick while a check is still running. Drag down the Post column to sweep a selection on or off. Post names what it sends (“Post 3 Worklogs · 2h 8m…”), and nothing writes until you confirm the count. A ticked session Jira refuses is unticked, with a line beside Post saying how many.
  • Part of a day. To Post can be lower than what is not logged yet. The uncovered time stays in the list for another issue, or another day.
  • Estimates untouched by default. Each issue shows its Jira estimate and the remaining estimate Jira holds, refreshed with every check; an issue without an estimate reads as unknown, not zero. Posting leaves both alone unless you turn on Settings → Sessions → Reduce the Jira estimate by the time posted, which works like Jira's own Log work dialog. Other people plan against that figure, and the app cannot undo the change.
  • Asked, not assumed. Optionally, a popover under the menu-bar icon offers the whole day on an issue after a Jira issue switch or a TopTracker stop: “Log 17m to DEMO-42?”. Log now posts it as one worklog; Later writes nothing and leaves it in Worklogs. Off until you turn on Ask to log completed work when switching or stopping in Settings → Sessions.
  • A reminder at the end of the day. With Remind me at the end of the working day and your working hours set in Settings → Sessions, TopTrack names what the day tracked but never sent to Jira, including everything put off with Later. It opens Worklogs rather than posting, asks once a day, and never while tracking is still running.

What it holds back

  • 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.
  • Already logged by hand. Time you entered in Jira yourself can be pinned to that worklog with Mark as Already Logged in Jira…. The pin covers only the matched minutes; anything beyond stays available. Or choose Ignore for Jira. Both are reversible from the row's context menu.
  • Rows that cannot post say why. A session that cannot be posted for a lasting reason — already complete, still tracking, excluded, or refused by the check — has no checkbox and reads faint, and Jira Status stays at full strength with the reason. Status icons separate done from to-do: a grey check for finished, an accent arrow for ready, an orange mark for anything that needs a look.
  • Short sessions. A session under a minute never posts on its own. On an issue you tracked again that day it counts toward that issue's worklog, so 40 seconds and 50 seconds beside 3 minutes post as 5 minutes. A setting keeps short sessions away from Jira altogether, and a second one hides them from the record views.

Columns

Right-click any column header, or use View → Columns, to show or hide columns. Post, Jira Issue and Jira Status always show. Not logged and Comment start hidden. Order and widths are remembered, and Reset Columns brings back the defaults.

Updating

The direct download updates itself. Settings → About shows the installed version and when it last checked; Check for Updates… asks toptrack.app now. Automatic checks stay off until you agree the first time the app asks, and can be turned off there again. An update is downloaded over HTTPS, verified against the signature built into the app, and installed in place; if a Jira submission is in progress, the install waits for it to finish before the app relaunches. The Mac App Store build has no checker of its own and updates through the App Store.

Disconnect or remove data

Settings → Connection → Disconnect clears the app’s Jira credentials. To revoke access at Atlassian too, remove the integration from your account’s connected apps. These actions do not remove existing Jira worklogs.

Direct-build history remains in ~/Library/Application Support/TopTrack. Mac App Store history is under ~/Library/Containers/app.toptrack.mac/Data/Library/Application Support/TopTrack. Export needed records first with File → Export History… (⇧⌘E), and ask for help if you have uncertain submissions. Uninstalling the app alone may leave history and Keychain items behind.

For information held by us, email a privacy request. You do not need to attach your local tracking database. See the Privacy Policy for more detail.