rtb-app 0.7.1

Application context, tool metadata, runtime features, and the Command plugin trait. Part of the phpboyscout Rust toolkit.
Documentation
# rtb-app

> Part of the [phpboyscout Rust toolkit]https://rust.phpboyscout.uk> small, framework-free crates extracted from
> [rust-tool-base]https://gitlab.com/phpboyscout/rust-tool-base.

A two-crate family workspace sharing one version line:

- **`rtb-app`** — the application context (`App`), tool metadata,
  runtime features, and the `Command` plugin trait with its
  `BUILTIN_COMMANDS` link-time registry. The structural heart of the
  framework: typed `Arc`-wrapped fields, no DI container, no
  `Box<dyn Any>` bag.
- **`rtb-test-support`** — the promoted test-side `App` constructor
  (`TestAppBuilder` behind a sealed `TestWitness`), consumed from
  `[dev-dependencies]` by downstream crates.

```rust
use rtb_app::{Feature, Features};

let features = Features::builder().disable(Feature::Init).build();
assert!(!features.is_enabled(Feature::Init));
assert!(features.is_enabled(Feature::Version));
```

- **Docs:** <https://app.rust.phpboyscout.uk>
- **API reference:** <https://docs.rs/rtb-app> ·
  <https://docs.rs/rtb-test-support>
- **Crates:** <https://crates.io/crates/rtb-app> ·
  <https://crates.io/crates/rtb-test-support>

## Development

`just ci` runs the full local gate (fmt, clippy, nextest, doc, deny).
Tests include a cucumber BDD suite (`crates/rtb-app/tests/bdd.rs`) and
trybuild compile-fail fixtures (run isolated — see
`.config/nextest.toml`; nextest is required). Releases are cut by
release-plz from Conventional Commits — do not tag manually.

## License

MIT