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.2.tar.gz (28.8 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.2-py3-none-any.whl (32.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ttx_cli-1.0.2.tar.gz
  • Upload date:
  • Size: 28.8 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.2.tar.gz
Algorithm Hash digest
SHA256 5a4ef8bccc8b182d6d00e6aeecaea39b534e7d77dc87e49b75e30715e06953d5
MD5 7f9d5ddaed56b898c81e4c29bd1696c1
BLAKE2b-256 8344ac47f3f98a066a9607e9b4efd680a915c44ee3cac42c582e76f474a764eb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ttx_cli-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 32.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8b2d805093a92e6ecb1589ddf3c94a9e1e3e9b4029a5dfe89cfee56cd175b7d5
MD5 6da9698b8443a889a55f3ba57202f27a
BLAKE2b-256 9c34f787f44a06e7434a6dbf44c687a6dce69907185fd2fe3794cd3cc7d7c2ea

See more details on using hashes here.

Provenance

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