Publish birdcage-tui to PyPI, document TUI extras
Bumped version to 2026.02.17, added classifiers/keywords/URLs. Documented camera extra (Pillow + astropy) in CLAUDE.md. Added TUI section with uvx usage and extras table.
This commit is contained in:
parent
5a26dce075
commit
3ccec3be10
36
CLAUDE.md
36
CLAUDE.md
@ -768,6 +768,42 @@ This captures 8 SVG + 8 PNG screenshots plus a 2×3 collage:
|
||||
or screen content. The script populates Craft search results and tracking state
|
||||
directly via widget API for deterministic screenshots.
|
||||
|
||||
## TUI
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| PyPI | [`birdcage-tui`](https://pypi.org/project/birdcage-tui/) |
|
||||
| Source | `tui/src/birdcage_tui/` |
|
||||
| Entry point | `birdcage_tui.app:main` |
|
||||
| Framework | [Textual](https://textual.textualize.io/) |
|
||||
| Screens | Dashboard (F1), Control (F2), Signal (F3), System (F4), Console (F5), Camera (F6) |
|
||||
|
||||
### Running
|
||||
|
||||
```bash
|
||||
# Published package (from PyPI) — no clone needed
|
||||
uvx birdcage-tui --demo # demo mode, base install
|
||||
uvx birdcage-tui # hardware mode (needs serial port)
|
||||
|
||||
# With camera capture support (Pillow + astropy)
|
||||
uvx --with 'birdcage-tui[camera]' birdcage-tui --demo
|
||||
|
||||
# Local development
|
||||
uv run --directory tui birdcage-tui --demo
|
||||
```
|
||||
|
||||
### Extras
|
||||
|
||||
| Extra | Install | Packages | Purpose |
|
||||
|-------|---------|----------|---------|
|
||||
| *(base)* | `uvx birdcage-tui` | `winegard-birdcage`, `textual` | Full TUI, all screens, demo mode |
|
||||
| `camera` | `uvx --with 'birdcage-tui[camera]' birdcage-tui` | `Pillow>=10.0`, `astropy>=6.0` | F6 camera overlay: JPEG capture frames with annotated demo images (Pillow), FITS export for radio astronomy pipelines (astropy) |
|
||||
|
||||
**Graceful degradation:** The camera screen (F6) works without the `camera` extra — it
|
||||
falls back to writing minimal JPEG headers directly. Pillow adds annotated demo frames
|
||||
and proper image processing; astropy adds FITS file export for integration with DS9,
|
||||
CASA, and other radio astronomy tools.
|
||||
|
||||
## MCP Server
|
||||
|
||||
| Property | Value |
|
||||
|
||||
@ -4,18 +4,33 @@ build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "birdcage-tui"
|
||||
version = "2026.02.13"
|
||||
description = "Textual TUI for Winegard Carryout G2 satellite dish control"
|
||||
version = "2026.02.17"
|
||||
description = "Textual TUI for Winegard satellite dish control and amateur radio sky tracking"
|
||||
license = "MIT"
|
||||
requires-python = ">=3.11"
|
||||
authors = [{name = "Ryan Malloy", email = "ryan@supported.systems"}]
|
||||
keywords = ["satellite", "antenna", "winegard", "amateur-radio", "ham", "tui", "textual"]
|
||||
classifiers = [
|
||||
"Development Status :: 4 - Beta",
|
||||
"Environment :: Console",
|
||||
"Intended Audience :: Science/Research",
|
||||
"Topic :: Scientific/Engineering",
|
||||
"Topic :: Communications :: Ham Radio",
|
||||
]
|
||||
dependencies = [
|
||||
"winegard-birdcage",
|
||||
"winegard-birdcage>=2026.2.17",
|
||||
"textual>=1.0.0",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
camera = ["Pillow>=10.0", "astropy>=6.0"]
|
||||
camera = [
|
||||
"Pillow>=10.0", # JPEG capture frames, annotated demo images
|
||||
"astropy>=6.0", # FITS file export for radio astronomy pipelines
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
Repository = "https://git.supported.systems/warehack.ing/birdcage"
|
||||
Documentation = "https://birdcage.warehack.ing"
|
||||
|
||||
[project.scripts]
|
||||
birdcage-tui = "birdcage_tui.app:main"
|
||||
|
||||
2
tui/uv.lock
generated
2
tui/uv.lock
generated
@ -36,7 +36,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "birdcage-tui"
|
||||
version = "2026.2.13"
|
||||
version = "2026.2.17"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "textual" },
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user