# makeup Pretty CLI / TUI interfaces. MSRV 1.67. ## READ ME FIRST makeup is still early-stage!!! Treat it like the alpha project it is. [crates.io](https://crates.io/crates/makeup) ### Usage examples See [`examples/`](https://github.com/queer/makeup/tree/mistress/makeup/examples)! ### Demos `cargo run --example wave` ## Setup Install [pre-commit](https://pre-commit.com/). ```bash pre-commit install pre-commit autoupdate cargo install cargo-audit ``` ## Features - 60fps by default. - Input and render are fully decoupled, ie input can NEVER block rendering. - Message-passing-like architecture - Components are updated and rendered asynchronously. - Components must not reference each other directly, but instead communicate via message passing. - Component updates are just reading the message queue from the mailbox, and updating the component's state accordingly. makeup assumes that **any** potentially-blocking task will be moved out of the update/render loop via `tokio::spawn` or similar, and managed via message-passing. - Render-backend-agnostic. - Render backends are async. - Default backends are memory and UNIX-compatible terminal. - Render backends can be implemented for other protocols! - Provided to the UI on instantiation. - Ideas: WASM + ``? Multiplex over the network?