Skip to main content

Tiny tasks and time tracker

Project description

ttx — Tiny Tasks + Time Tracker

Release PyPI version PyPI downloads License: MIT

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
  • 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 — navigate
  • Enter — open details
  • M — mark entry
  • D — bulk delete marked
  • + / - — adjust minutes
  • ? — help overlay
  • T — 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 main with 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

ttx_cli-1.0.1.tar.gz (27.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ttx_cli-1.0.1-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

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

Hashes for ttx_cli-1.0.1.tar.gz
Algorithm Hash digest
SHA256 cfbce71d496b0ae923bc240d8762a798d7838802fdba652680db6d5e3f28a44a
MD5 d609118ee113691a8aaf85ed6fd83020
BLAKE2b-256 ce0f0943e63f32c20254373e9713252ac0849ae51fa7aeb10d1ebc8c1bf8e4c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ttx_cli-1.0.1.tar.gz:

Publisher: release.yml on martindahlswe/ttx-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for ttx_cli-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 36c94eb3db483bc46a41664910ca586c896c7c8f80662f25af08a508a45e5263
MD5 6fc46ad405b6d312be63306498051e17
BLAKE2b-256 a17331ce7f835d361cc5ee68c14df17deb080d35848627ca1526689bb871d040

See more details on using hashes here.

Provenance

The following attestation bundles were made for ttx_cli-1.0.1-py3-none-any.whl:

Publisher: release.yml on martindahlswe/ttx-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page