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
|
or screen content. The script populates Craft search results and tracking state
|
||||||
directly via widget API for deterministic screenshots.
|
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
|
## MCP Server
|
||||||
|
|
||||||
| Property | Value |
|
| Property | Value |
|
||||||
|
|||||||
@ -4,18 +4,33 @@ build-backend = "hatchling.build"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "birdcage-tui"
|
name = "birdcage-tui"
|
||||||
version = "2026.02.13"
|
version = "2026.02.17"
|
||||||
description = "Textual TUI for Winegard Carryout G2 satellite dish control"
|
description = "Textual TUI for Winegard satellite dish control and amateur radio sky tracking"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
authors = [{name = "Ryan Malloy", email = "ryan@supported.systems"}]
|
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 = [
|
dependencies = [
|
||||||
"winegard-birdcage",
|
"winegard-birdcage>=2026.2.17",
|
||||||
"textual>=1.0.0",
|
"textual>=1.0.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
[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]
|
[project.scripts]
|
||||||
birdcage-tui = "birdcage_tui.app:main"
|
birdcage-tui = "birdcage_tui.app:main"
|
||||||
|
|||||||
2
tui/uv.lock
generated
2
tui/uv.lock
generated
@ -36,7 +36,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "birdcage-tui"
|
name = "birdcage-tui"
|
||||||
version = "2026.2.13"
|
version = "2026.2.17"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "textual" },
|
{ name = "textual" },
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user