tt — a Charm-native front-end for tock
tt makes it easy to review, edit, and backfill time tracked with the
tock CLI. tock stays the source of truth;
tt only reads and writes through it.
Install
make install # builds bin/tt, symlinks it into ~/.local/bin
Once published to the tap:
brew install humdrum/tap/tt
Requirements
tockon PATH.ttowns no storage — every read and write shells out to your installedtock. Tested against tock v1.9.8; older versions may predate thereport --json/add -s/-econtractttrelies on.- tock's sqlite backend is strongly recommended.
ttworks on any backend for reading and adding, but editing an entry is a remove-then-re-add, and on the file/markdown backend tock'sreport --jsoncan omit tags/notes — so an edit could silently drop them. On sqlite the full row round-trips intact. sqlite3CLI (optional). Used only to pull history for autocomplete when the sqlite backend is active. Missing it just falls back totock last; nothing breaks.- Building from source needs Go ≥ 1.26. The Homebrew formula is a source build and pulls the Go toolchain automatically.
tt menu's full-screen actions (watch/list/analyze) hand the terminal over to
tock.
Commands
tt timeline [date|today|yesterday]— spatial day grid: fixed slot rows, range-select to add an entry, edit/delete logged sessions, per-project colors. (Alias:tt tui.)tt day [date|today|yesterday]— list view with per-project totals and Enter-to-edit.←/→change day.tt menu— guided menu over tock: start, stop, current, continue, note, tag, report, list, last, watch, analyze.
In the add/edit form, project, description, and tags autocomplete
from your tock history (Ctrl+E accepts a suggestion). Values stay free text.
History comes from the tock sqlite DB when that backend is active, otherwise
from tock last.
Config
~/.config/ticktock/config.json (all optional):
| key | default | meaning |
|---|---|---|
slot_minutes |
30 |
grid row height in minutes (min 5) |
grid_start |
07:00 |
earliest grid hour (auto-expands to data) |
grid_end |
21:00 |
latest grid hour (auto-expands to data) |
project |
"" |
default project for a new entry |
Build & test
make build # -> bin/tt
make test
make vet
Release
Releases ship through custard to the
self-hosted Homebrew tap. Config lives in .custard.yaml (source build,
depends_on "go"). To cut a release, push a release/vX.Y.Z bookmark:
jj bookmark create release/v0.1.0 -r @-
jj git push --bookmark release/v0.1.0
custard runs the CI checks, archives the ref, renders Formula/tt.rb, and
commits it to the tap. Install requirements (tock, sqlite) live under
Requirements — the auto-formula does not repeat them.
License
AGPL-3.0-or-later. See LICENSE.