Metadata-Version: 2.4
Name: hrb-app
Version: 0.2.0
Summary: Magogi Foundation Hardware Resource Broker — GUI front-end for the mgf-hrb library.
Project-URL: Homepage, https://codeberg.org/magogi-admin/hrb-app
Project-URL: Issues, https://codeberg.org/magogi-admin/hrb-app/issues
Project-URL: Feedback, https://codeberg.org/magogi-admin/hrb-app/src/branch/main/FEEDBACK.md
Author: Bassam Alsanie, hrb-app contributors
License: MIT
License-File: LICENSE
Requires-Python: >=3.13
Requires-Dist: mgf-brand-qt<0.2,>=0.1.0
Requires-Dist: mgf-common<0.52,>=0.51
Requires-Dist: mgf-hrb<0.2,>=0.1
Requires-Dist: mgf-logship<0.2,>=0.1.6
Requires-Dist: pyside6<7.0,>=6.7
Requires-Dist: qasync<0.28,>=0.27
Provides-Extra: dev
Requires-Dist: hypothesis>=6.100; extra == 'dev'
Requires-Dist: import-linter<3.0,>=2.0; extra == 'dev'
Requires-Dist: mgf-fed[cli]>=0.1; extra == 'dev'
Requires-Dist: mgf-standard<0.2,>=0.1.57; extra == 'dev'
Requires-Dist: mgf-test-supervisor<0.2,>=0.1.20; extra == 'dev'
Requires-Dist: mgf-uitest-desktop<0.2,>=0.1.0; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest-qt>=4.4; extra == 'dev'
Requires-Dist: pytest-timeout>=2.3; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Description-Content-Type: text/markdown

# hrb-app — GUI front-end for `mgf-hrb`

> **Shape.** Magogi Foundation consumer application. Federation pins declared in [`pyproject.toml`](pyproject.toml); pin-bump history in [`docs/inprogress/MGF_ADOPTION.md §4`](docs/inprogress/MGF_ADOPTION.md#4-pin-bump-history).
> **Conformance level.** **L2 — Standard** (declared; per-rule audit in [`docs/inprogress/MGF_STANDARDS_CONFORMANCE.md`](docs/inprogress/MGF_STANDARDS_CONFORMANCE.md)).
> **Status.** `0.2.0` — released (see [`CHANGELOG.md`](CHANGELOG.md)). The GUI runs against a real `mgf-hrb` broker: device tree (fd-driven subscription), capabilities, inspect, doctor, and an all-operators lease pane are all wired. See [`QUICKSTART.md`](QUICKSTART.md) to launch it; [`STARTHERE.md`](STARTHERE.md) for the deeper navigator.

A desktop GUI for the [`mgf-hrb`](../mgf-hrb) Hardware Resource Broker. Renders the broker's device tree, leases, and operator surfaces (the equivalent of `mgf-hrb scan` / `mgf-hrb doctor`) for humans who don't want to drive the CLI.

**Presentation layer:** **PySide6 (Qt 6)** with **qasync** bridging Qt's event loop to asyncio. Multi-operator (multiple humans driving the same broker concurrently) is a day-1 design constraint — the broker is the single source of truth; the GUI is one of N clients. See [`docs/inprogress/PRESENTATION_LAYER_RESEARCH.md`](docs/inprogress/PRESENTATION_LAYER_RESEARCH.md) §0 for the decision and the discipline points that flow from it.

**Roadmap.** (Per-phase status + notes live in [`docs/inprogress/MGF_ADOPTION.md §3`](docs/inprogress/MGF_ADOPTION.md#3-phase-status).)

- ✅ **Phases 0–4** — federation scaffolding, presentation-stack decision (PySide6 + qasync), `mgf.common.bootstrap()` wiring, typed exception tree, structured logging.
- 🔄 **Phase 5+ — feature uptake** (now) — device-tree pane with fd-driven subscription, capabilities, inspect, doctor, all-operators lease pane all wired. Per-device operator actions (`Client.control()` — bind/unbind driver, set_authorized, set_port_power) is the next surface.
- ✅ **CLI absorption** — the embedded CLI from `mgf-hrb`'s `src/mgf/hrb/cli/` now lives here at `src/hrb_app/ui/cli/`, reachable as `hrb-app cli <subcommand>` (scan / info / doctor / explain) or `python -m hrb_app.ui.cli <subcommand>`. `mgf-hrb` ships only a one-cycle deprecation banner pointing here and drops its CLI after 0.1.x, shrinking back to a pure SDK.

---

## Quick start

```bash
git clone https://codeberg.org/magogi-admin/hrb-app.git
cd hrb-app && uv venv && uv pip install -e '.[dev]'
uv run hrb-app --socket /tmp/mgf-hrb.sock
```

Full setup (incl. the broker side, settings, what-you-see, troubleshooting) → [`QUICKSTART.md`](QUICKSTART.md). Developer onboarding + AI-agent setup + federation discipline → [`STARTHERE.md`](STARTHERE.md).

---

## Four green gates

```bash
ruff check src tests
mypy --strict src/
pytest --cov --cov-fail-under=80
lint-imports
```

---

## Federation

This project depends on `mgf-common` and follows the Magogi engineering bar. For AI agents: run **`mgf-fed agents`** for the canonical federation briefing, then [`docs/CLAUDE.md`](docs/CLAUDE.md) for the project-specific Claude reference. (The federation CLI lives in `mgf-fed[cli]`, a `[dev]` extra — `mgf-common` has been a pure library since 0.47.)

- Standards source-of-truth — `mgf-fed standards` (any topic).
- Conformance audit — [`docs/inprogress/MGF_STANDARDS_CONFORMANCE.md`](docs/inprogress/MGF_STANDARDS_CONFORMANCE.md).
- Adoption tracker — [`docs/inprogress/MGF_ADOPTION.md`](docs/inprogress/MGF_ADOPTION.md).
- Friction → [`FEEDBACK.md`](FEEDBACK.md). Sibling-scoped friction (`mgf-hrb`, `mgf-common`) → the sibling's `FEEDBACK.md`.

---

## License

[MIT](LICENSE).
