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.3.tar.gz (29.0 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.3-py3-none-any.whl (32.8 kB view details)

Uploaded Python 3

File details

Details for the file ttx_cli-1.0.3.tar.gz.

File metadata

  • Download URL: ttx_cli-1.0.3.tar.gz
  • Upload date:
  • Size: 29.0 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.3.tar.gz
Algorithm Hash digest
SHA256 d7154368ffde7f5fb79a4d1f309973f293035e80fcaa57e6ac91b0c1690d2483
MD5 188df3dac297597d6a08a764dab8268c
BLAKE2b-256 21833dae65c8741cea2504f962b5a414e1f9af0ea4f6f0e2f2d72571e11e566b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ttx_cli-1.0.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: ttx_cli-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 32.8 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 32b30a1741296f3f6dc2965de1f0a6461b08f7f3d96c7c2ac3b64bb563f535d0
MD5 84cd61e364e9d15407a27ab67ca00aff
BLAKE2b-256 5b6e028c6e3578a5d7f7616d13ef1cdea8758b92fa908bc74912995175ab1717

See more details on using hashes here.

Provenance

The following attestation bundles were made for ttx_cli-1.0.3-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