Metadata-Version: 2.4
Name: trax-tui
Version: 0.8.0
Summary: TrackingTime TUI
Author-email: Jackson Neal <jacksontneal@gmail.com>
License-Expression: MIT
Project-URL: Repository, https://codeberg.org/jax/trax-tui
Keywords: trackingtime,time-tracking,tui,terminal,cli
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Office/Business :: Scheduling
Classifier: Typing :: Typed
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: httpx>=0.25
Requires-Dist: keyring>=24
Requires-Dist: python-dateutil>=2.8
Requires-Dist: textual>=0.40
Requires-Dist: typer>=0.9
Provides-Extra: dev
Requires-Dist: pyright>=1.1; extra == "dev"
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: ruff>=0.9; extra == "dev"
Requires-Dist: twine>=6; extra == "dev"
Dynamic: license-file

# trax-tui

<p align="center">
  <img src="https://codeberg.org/jax/trax-tui/raw/branch/main/assets/trax_tui_avatar.png" alt="trax-tui" width="200">
  <br>
  A TUI for <a href="https://trackingtime.co">TrackingTime</a>.
</p>

## Installation

```shell
pipx install trax-tui
```

Requires a keyring backend (e.g., GNOME Keyring, macOS Keychain, Windows Credential Manager).

## Setup

```shell
tt login
```

Enter your TrackingTime email and App Password. You can create an App Password in your TrackingTime
settings under Apps & Integrations. Credentials are stored securely in your system keyring.

## Usage

```shell
tt
```

Opens an interactive terminal interface for logging time:

- **Navigation** - `Ctrl+J`/`Ctrl+K` to cycle focus between elements
- **Week calendar** - `h`/`l` (days), `j`/`k` (weeks), `g` (today)
- **Entries list** - `j`/`k` to scroll entries
- **Global** - `h`/`l` (move day), `y` (yank event), `d` (delete event), `p` (submit form), `q` (quit)

Single keys type normally when an input is focused. `Ctrl+J`/`Ctrl+K` always works.

### Duration format

The duration field accepts `2h30m`, `90m`, etc. You can also specify a start time with `@`:

- `2h` — logs 2 hours starting after the last event (or 9am if none)
- `2h@1pm` — logs 2 hours starting at 1:00 PM
- `1h30m@14:30` — logs 1h30m starting at 2:30 PM
