Tiny tasks and time tracker
Project description
ttx — Tiny Tasks + Time Tracker
Author: Martin Dahl
tt is a lightweight, terminal-first task & time tracking tool with both a CLI and an interactive TUI.
It’s designed for speed, simplicity, and scriptability — with sensible defaults and flexible time parsing.
✨ Features
- Tasks: add, list, complete, archive.
- Time logs:
- Start/stop timers
- Manual entries (
--start/--end,--minutes,--ago) - Flexible parsing (
09:00,:30,1h15,today,yesterday,now) - Strict ISO mode (optional)
- Reports & exports:
- Summaries by task, tag, or day
- CSV and Markdown export
- Interactive TUI (powered by Textual):
- Task + log views
- Filter indicator bar
- Entry marking, bulk actions, sorting
- Persisted UI state
- Configurable:
- XDG-compliant config (
~/.config/ttx/config.yml) - Rounding rules
- Confirmation prompts for destructive ops
- XDG-compliant config (
- SQLite backend:
- WAL mode enabled
- Auto-created indexes
- Developer-friendly:
- Semantic-release CI (auto changelog + versioning)
- Conventional Commits
- PyPI-ready packaging
📦 Installation
From GitHub (editable dev install)
git clone https://github.com/martindahlswe/ttx-clix-cli.git
cd ttx-cli
pip install -e .
Now you can run:
ttx --help
From GitHub directly (pip)
pip install "git+https://github.com/martindahlswe/ttx-clix-cli.git@main#egg=ttx-cli"
From PyPI (once published)
pip install ttx-cli
🚀 Usage
CLI examples
# Initialize DB
ttx init
# Add a task and list tasks
ttx task add "Finances"
ttx task ls
# Start and stop a timer
ttx start 1
ttx stop
# Add a manual log
ttx log add 1 --start "09:00" --end "10:15"
ttx log add 1 --minutes 30
ttx log add 1 --ago 1h15
# Show logs
ttx log ls --all --week
# Generate a report
ttx report --group day --since week
# Open TUI
ttx tui
TUI keybindings
↑ / ↓ / Tab— navigateEnter— open detailsM— mark entryD— bulk delete marked+ / -— adjust minutes?— help overlayT— toggle theme
⚙️ Configuration
Config file lives at:
- Linux/macOS:
~/.config/ttx/config.yml
Example:
rounding:
minutes: 15
input:
strict_iso: false
confirmations:
bulk_delete: true
🛠 Development
Run tests
pytest
Commit conventions
We use Conventional Commits.
Examples:
feat(cli): add ttx examples command
fix(tui): guard _save_state when widgets are unmounted
feat!: drop pomodoro feature (breaking)
Release flow
- Merge to
mainwith proper commit messages - semantic-release bumps version, updates changelog, creates GitHub Release
📄 License
MIT © Martin Dahl
📌 Links
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ttx_cli-1.0.1.tar.gz.
File metadata
- Download URL: ttx_cli-1.0.1.tar.gz
- Upload date:
- Size: 27.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfbce71d496b0ae923bc240d8762a798d7838802fdba652680db6d5e3f28a44a
|
|
| MD5 |
d609118ee113691a8aaf85ed6fd83020
|
|
| BLAKE2b-256 |
ce0f0943e63f32c20254373e9713252ac0849ae51fa7aeb10d1ebc8c1bf8e4c9
|
Provenance
The following attestation bundles were made for ttx_cli-1.0.1.tar.gz:
Publisher:
release.yml on martindahlswe/ttx-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ttx_cli-1.0.1.tar.gz -
Subject digest:
cfbce71d496b0ae923bc240d8762a798d7838802fdba652680db6d5e3f28a44a - Sigstore transparency entry: 543708758
- Sigstore integration time:
-
Permalink:
martindahlswe/ttx-cli@47bd92e483fed3d5cbc9d9359754d3898f1807a7 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/martindahlswe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47bd92e483fed3d5cbc9d9359754d3898f1807a7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ttx_cli-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ttx_cli-1.0.1-py3-none-any.whl
- Upload date:
- Size: 31.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36c94eb3db483bc46a41664910ca586c896c7c8f80662f25af08a508a45e5263
|
|
| MD5 |
6fc46ad405b6d312be63306498051e17
|
|
| BLAKE2b-256 |
a17331ce7f835d361cc5ee68c14df17deb080d35848627ca1526689bb871d040
|
Provenance
The following attestation bundles were made for ttx_cli-1.0.1-py3-none-any.whl:
Publisher:
release.yml on martindahlswe/ttx-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ttx_cli-1.0.1-py3-none-any.whl -
Subject digest:
36c94eb3db483bc46a41664910ca586c896c7c8f80662f25af08a508a45e5263 - Sigstore transparency entry: 543708761
- Sigstore integration time:
-
Permalink:
martindahlswe/ttx-cli@47bd92e483fed3d5cbc9d9359754d3898f1807a7 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/martindahlswe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47bd92e483fed3d5cbc9d9359754d3898f1807a7 -
Trigger Event:
push
-
Statement type: