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.2.0.tar.gz (33.5 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.2.0-py3-none-any.whl (37.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ttx_cli-1.2.0.tar.gz
  • Upload date:
  • Size: 33.5 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.2.0.tar.gz
Algorithm Hash digest
SHA256 307f5d5941bcd9008ae567962b3d76adb9ab2091bc126844fd20a8b02df11202
MD5 b0dec7bb96c8e649438ca17b9806a6ea
BLAKE2b-256 66095f351965f55d32ad17e06ef3a8026fbde64ab8799ebb3e3093f8d697e9c8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ttx_cli-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 37.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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f575896793807ac77db1c869c12b46c7ec1ab4f689a4ad2a17114d489fea6910
MD5 cd8acbd38ff56c870e9132faa8cb9bb2
BLAKE2b-256 8d3635238fd90ff97723658954a0b3776f4af62f6562fc7122ee433c51e4309c

See more details on using hashes here.

Provenance

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