You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Why this label. Clicking an entry on the dashboard timeline says
what labelled it: the rule (file, number and what it matches), your
tag, or the local model with its share and the title words behind it.
The Inbox shows why it guesses a label under each item instead of in
a tooltip.
Templates.tock setup --template client|own adds the categories
and rules for client work or your own projects that you don't have
yet. It shows the plan first, never touches what is yours, labels from
now on unless --past, and tock undo takes it back. A fresh tock setup asks which to start with.
Rules from a date.since = 2026-11-20T14:05:00 on a rule makes it
label only time from then on, so a new rule need not relabel the past.
Dashboard settings. The gear in the top bar (or ,) turns the
groups and features on and off as tock choice does, sets your work
hours, session lengths and invoice details (with clients, which a
project picks in the Library), edits the apps and sites tock never
records, and picks the theme. config.toml keeps its comments.
Zoom. The dashboard timeline zooms to a quarter of an hour (⌘-scroll,
pinch, double click, shift-drag, or the − + buttons), with a strip of
the whole day to drag. The tock window zooms with ⌘+, ⌘− and ⌘0 and
remembers the size.
Time trackd did not record is shown, with why: a crash, a stop,
an update or config.toml not loading. The TUI's today tab lists it
under the day, the dashboard draws a "Not recording" lane under the
timeline and a line under the week's bars. Sleep, a locked screen, a
logout and a shutdown are not counted; a restart only explains the time
when the OS said the session was ending as trackd stopped, so a stop by
hand before a restart still shows. Time with no Accessibility permission
shows apart as "apps only". None of it is added to tracked or idle time.
Library in the dashboard: categories, projects (with an hourly
rate) and goals, with their time in the last 30 days and when each was
last seen. Add, edit, rename, archive and merge look-alike names there.
Rules in Library: every rule in the order tock checks them, with the
time each labelled lately and which never match. Add, edit or delete a
rule, learned ones too, with a preview of what it would change; every
edit can be undone.
Invoice… in the week's Export menu makes the tock invoice PDF for
a project with a rate, showing hours and total before you save.
trackd keeps a copy of your database every day while you're away, and
tock keeps one before an update changes it. tock restore lists them
and puts one back. [backup] keep sets how many daily copies stay
(default 7).
tock doctor shows the last copy and whether the database checked out; --deep runs a full check. A damaged database shows in tock status
and as a notice.
Changed
trackd asks the browser for the tab's address only when the window or
its title changes, and otherwise every 10 seconds instead of every 2.
Less CPU with a browser in front.
The dashboard answers clicks. Hours, work blocks and lane names zoom
the timeline; kinds, categories and apps pick out their bars; a day in
the week's bars, the score line or the month calendar opens it; Top rows
lead to the Inbox or the Library; the status strip links to the rules.
The date in the top bar steps by day, week or month with the view and
opens a calendar. ? lists every key and gesture.
Billed time says so everywhere. Learning a rule from the inbox (TUI,
CLI or dashboard) now says when it relabels time on an issued invoice,
as tagging does, and the TUI marks billed rows with the invoice number.
Focus, Day routine and Billing are groups you can turn off.tock choice focus off hides sessions, the focus score and every focus
notice in the TUI, the dashboard, the menu bar and the notch, and trackd
stops them; tock choice billing off hides rates and invoices and stops tock invoice issue; tock choice routine off stops the day's notices.
Each is one line in config.toml, and the members keep their own settings
while their group is off. All three are on unless you turn them off, so
nothing changes for you on upgrade. tock choice now lists the switches
by group.
Invoices are issued and kept, and never change after.tock invoice
now previews (a PDF marked DRAFT, nothing stored), and tock invoice issue issues: the next YYYY-NNNN number, stored with its PDF in the
database and in ~/.local/share/tock/invoices/. Later rule edits,
relabels or a new rate change nothing in it; tock invoice check shows
how today's labels differ. Corrections are a void with a reason and a
replacement with --supersedes. tock invoice show prints an issued
invoice; --json gives the stored record byte for byte. Amounts are exact (integer cents), days
can be rounded ([invoice] round), and an invoice can carry your and the
client's tax numbers and one tax rate. Projects can set billable = false and client = "…". The old YYYYMM-project numbers are retired,
and PDFs made before this release are not imported. The dashboard's Invoice… saves a DRAFT preview or issues, with the same checks as
the CLI. Billed time is underlined on the timeline, and relabelling it
says the invoice stays as issued.
Linux updates through the sync folder are off until you turn them
on, and never trust a key by themselves. Before, a Linux machine
trusted the first key it found in the sync folder, so anyone who could
write there first could run code on it. Now: make bootstrap-hint on
the Mac prints the key's fingerprint, tock update trust <fingerprint>
on the Linux machine pins it, and update = true under [sync] turns
updates on. A machine that already pinned a key keeps it, but needs update = true. An update that fails part way puts both binaries back.
The one-time install command now checks both files against sums it
carries itself.
Claude is off until you turn it on. Having Claude Code or ANTHROPIC_API_KEY no longer turns on suggestions, summaries or tock ask. tock choice claude on turns them on and lists what is sent.
If you used them before, run it once; the TUI says so the first time.
trackd records nothing while config.toml does not load, for
example after a typo or with a setting from a newer tock. Before, hidden
apps and sites could be recorded with their titles and URLs in that
state. tock status, tock doctor, the TUI, the dashboard and the menu
bar say why, and recording starts again within seconds of the fix.
trackd upgrades the database in a short-lived child process, so the
safety copy taken before an upgrade no longer leaves trackd about 7 MB
larger until its next restart.
An older trackd keeps running after a newer tock updates the
database, as long as the update only adds to it (all of them so far).
Before, a trackd restarted after brew upgrade but before tock setup
refused the database and stayed down with no word outside tock doctor.
When an update does need a newer trackd, trackd stops, and tock status, tock doctor, the TUI and the menu bar say "trackd is older
than the database" with the command that fixes it for your install.
Failed writes and dropped samples are counted and shown.tock status starts with write failed! or dropped! for 24 hours after
one, and tock doctor says when and how many. Before, both were only in
trackd's log.
tock bug-report writes a file to attach to an issue: doctor's
checks, your config with every text value removed, the end of the logs
without titles or URLs, and when trackd ran. It sends nothing. tock doctor --json prints the checks for scripts.
trackd and the menu bar keep their previous log as trackd.log.1 and tockbar.log.1 when the log passes 10 MB, instead of emptying it.
Fix hints follow how tock was installed: tock setup for Homebrew,
opening tock for the .dmg, make install from source.
tock restore refuses while something else has the database open
and names it, for example a tock web you started by hand. Before, the
copy was put back under it and that process went on using the old file.
Fixed
Private windows in more browsers. Microsoft Edge, Vivaldi, Chromium
and the beta, dev and nightly builds of Chrome, Edge and Brave were
recorded like any app, so an InPrivate or incognito window's titles
were kept. They now get the URL of the front tab, as Chrome does, and
nothing at all from a private window. Firefox forks (Zen, LibreWolf,
Waterfox, Floorp, Developer Edition, Nightly) are handled like Firefox.
Opera, Dia, Orion, Tor Browser, Mullvad Browser and a few others keep
the app only, without titles, because tock cannot tell their private
windows apart. The first time you use one of the newly supported
browsers, macOS asks whether trackd may control it.
Security: the invoice preview and tock report --open wrote to the
shared temp folder under a name anyone could guess, so on a Linux machine
with other users a planted link could make them overwrite one of your
files. They now write to ~/.local/state/tock/drafts and reports.
tock invoice issue refuses while [invoice] name is empty, and the
preview says so: an issued invoice never changes, so one without your
name could only be voided.
tock invoice check shows minutes and seconds when a change is too
small for hundredths of an hour, instead of two equal numbers.
tock project add and set take --rate, --client and --billable,
so billing no longer needs rules.toml edited by hand.
tock <command> --help prints that command's lines and works before
trackd has recorded anything; a mistyped flag shows the command's lines
instead of all of the usage.
Reading a day no longer slows down as history grows: it scanned every
span before the day (8 ms after six months, 2 ms now).
Two tock programs starting at once after an update could both try to
update the database.