Metadata-Version: 2.4
Name: hamtask
Version: 0.1.0
Summary: A vim-style Taskwarrior TUI built with Textual.
Project-URL: Homepage, https://github.com/lordhamster/hamtask
Project-URL: Repository, https://github.com/lordhamster/hamtask
Project-URL: Issues, https://github.com/lordhamster/hamtask/issues
License-Expression: MIT
License-File: LICENSE
Keywords: productivity,task,taskwarrior,textual,tui
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Office/Business :: Scheduling
Classifier: Topic :: Terminals
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Requires-Dist: pydantic>=2.0
Requires-Dist: textual>=0.80
Description-Content-Type: text/markdown

# hamtask

`hamtask` is a vim-style Taskwarrior TUI built with Python and Textual.

## Goals

- List-first, keyboard-only interface.
- Use Taskwarrior's native filters and raw command arguments.
- Read `report.next.filter`, `report.next.columns`, `report.next.labels`, and `report.next.sort` from `~/.taskrc` or `~/.config/task/taskrc`.
- Mutate tasks by invoking the `task` command, never by editing Taskwarrior data files directly.

## Requirements

- Python 3.11+
- Taskwarrior's `task` command must be installed and configured

## Install from PyPI

After `hamtask` is published to PyPI, users can install it as a `uv tool`:

```bash
uv tool install hamtask
```

Then run:

```bash
hamtask
```

Update an installed PyPI version with:

```bash
uv tool upgrade hamtask
```

## Run during development

```bash
uv run hamtask
```

## Local installation

Install the current checkout as a `uv tool`:

```bash
uv tool install .
```

Then run:

```bash
hamtask
```

If your shell cannot find `hamtask`, run:

```bash
uv tool update-shell
```

Then restart your terminal or reload your shell config.

## Update local installation

After changing the local source code, reinstall with:

```bash
uv tool install . --force
```

## Uninstall

```bash
uv tool uninstall hamtask
```

## Publish to PyPI

Before publishing, verify the project:

```bash
uv run ruff check .
uv run pytest
uv build
```

This creates distribution files in `dist/`.

For a first test release, publish to TestPyPI:

```bash
uv publish --publish-url https://test.pypi.org/legacy/ --token <test-pypi-token>
```

Install from TestPyPI with PyPI as the fallback index for dependencies:

```bash
uv tool install \
  --index-url https://test.pypi.org/simple/ \
  --extra-index-url https://pypi.org/simple \
  hamtask
```

Publish to PyPI:

```bash
uv publish --token <pypi-token>
```

For later releases:

1. Bump `version` in `pyproject.toml`.
2. Run checks and build again.
3. Publish with `uv publish --token <pypi-token>`.

## Key bindings

- `j` / `k`: move down/up
- `g`: go to top
- `G`: go to bottom
- `r`: refresh
- `q`: quit
- `enter`: toggle bottom task details
- `/`: apply Taskwarrior filter
- `:`: command mode
- `a`: `task add ...`
- `m`: `task <uuid> modify ...`
- `e`: `task <uuid> edit`
- `A`: `task <uuid> annotate ...`
- `d`: `task <uuid> done`
- `u`: `task undo`
- `x`: delete with confirmation
- `?`: show all shortcuts

## Command mode

Supported commands:

```text
:q
:quit
:r
:refresh
:f <filter>
:filter <filter>
:add <raw task args>
:mod <raw task args>
:modify <raw task args>
:done
:undo
:delete
:annotate <text>
```
