# Agent Guide: Aisling
Aisling is a Rust crate for embeddable terminal text effects and loader animations. It does not own the terminal or run an event loop. Your app pulls `Frame` values and renders their `Cell`s into a TUI, ANSI output, tests, logs, or another backend.
## Install
```toml
[dependencies]
aisling = "0.3.17"
```
## Text Effects
```rust
use aisling::{Effect, EffectConfig, EffectKind};
let effect = Effect::with_config(
EffectKind::Matrix,
"Hello from Aisling",
EffectConfig::default().with_duration(80).with_seed(42),
);
for frame in effect.iter() {
// Render frame.cells() into your TUI buffer.
}
```
Use `EffectKind::all()` to list effects. Parse names with `EffectKind::from_str("laseretch")`.
## Loaders
```rust
use aisling::{Loader, LoaderConfig, LoaderKind, LoaderProgress};
let loader = Loader::with_config(
LoaderKind::Tqdm,
LoaderConfig::default()
.with_width(64)
.with_label("download")
.with_unit("B")
.with_fraction(true),
);
let frame = loader.frame(tick, LoaderProgress::from_counts(downloaded, total));
```
Use `LoaderKind::all()` to list loaders. Use `Loader::line(tick, progress)` for a plain status string. Multi-row loaders such as `burn`, `decrypt`, `thunderstorm`, `rings`, `swarm`, `ember`, `cipher`, `glitch`, `vortex`, `stormflicker`, `lasersweep`, `cascade`, and `gridpulse` look best with at least five rows.
## Rendering
```rust
for y in 0..frame.height() {
for x in 0..frame.width() {
let cell = frame.cell(x, y).unwrap();
let ch = cell.ch;
let fg = cell.colors.fg;
let bg = cell.colors.bg;
// Map ch/fg/bg/style into your renderer.
}
}
```
Helpers: `frame.to_plain_string()` and `frame.to_ansi_string()`.
## Local Demos
```bash
./run.sh wipe "Hello"
./run.sh showcase
./run.sh loaders --seconds 20 --fps 6
./run.sh new-loaders --seconds 24
./test.sh -loaders
./loaders.sh
./story.sh
./text_effects.sh
```
`loaders.sh` shows every loader in a command-deck layout. `story.sh` mixes text effects, fake downloads, and loader animations in a TUI-style narrative demo. `text_effects.sh` runs the baseline text effect catalog with full-terminal Knott Dynamics story text.