Metadata-Version: 2.4
Name: arduino-esp32-tft-terminal
Version: 0.1.0
Summary: Python client driving the Arduino ESP32 TFT Terminal gadget over USB.
Project-URL: Homepage, https://github.com/pbauermeister/arduino-esp32-tft-terminal
Project-URL: Issues, https://github.com/pbauermeister/arduino-esp32-tft-terminal/issues
Author-email: Pascal Bauermeister <pascal.bauermeister@gmail.com>
Keywords: arduino,display,esp32,gadget,monitor,tft
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: POSIX :: Linux
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 :: System :: Monitoring
Requires-Python: >=3.11
Requires-Dist: claude-busy-monitor
Requires-Dist: numpy>=1.26.1
Requires-Dist: pyserial>=3.5
Provides-Extra: dev
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Description-Content-Type: text/markdown

# client-py — Python client

The computer-side program of the
[Arduino ESP32 TFT Terminal](../README.md). It owns all application logic and
drives the board over USB, sending command lines and reading answers.

## Requirements

- Python 3.11+ on Linux.
- A flashed board (see [`../server-esp32s3-rtft/`](../server-esp32s3-rtft/)) connected over USB.
- Dependencies: `numpy`, `pyserial`, `claude-busy-monitor`.

## Running

Install the `arduino-esp32-tft-terminal` command (not on PyPI yet — install from this directory; see [`../TODO.md`](../TODO.md)):

```bash
uv tool install .                         # installs the command
arduino-esp32-tft-terminal -h             # list options and apps
arduino-esp32-tft-terminal --demo         # cycle through all apps
arduino-esp32-tft-terminal --only cube    # run a single app
```

For development, use an editable install (`uv pip install -e .` in a venv).

## Layout

Package source lives under `src/arduino_esp32_tft_terminal/`:

- `app/` — one module + class per app (`quix.py` is the template).
- `lib/` — board communication: serial channel, command protocol, `Board`, `Gfx`, CLI args.
- `cli.py` — entry point (`main()`); registers the apps.
- `config.py` — runtime configuration (also exposed as CLI flags).

## Writing a new app

1. Study [`src/arduino_esp32_tft_terminal/app/quix.py`](src/arduino_esp32_tft_terminal/app/quix.py) as a template.
2. Create a new module and class.
3. Register the class in [`src/arduino_esp32_tft_terminal/cli.py`](src/arduino_esp32_tft_terminal/cli.py).

## Development

All `make` targets run from this directory (next to `pyproject.toml`):

- `make help` — list targets.
- `make lint` / `make format` — ruff check + format-check / autofix.
- `make build` / `make install` — build the wheel / install the `arduino-esp32-tft-terminal` command.
- `make publish-quality` then `make publish` — PyPI release (token in keyring first).

See the top-level [README](../README.md) and [`../TODO.md`](../TODO.md) for the wider toolchain.
