aisling 0.3.17

Embeddable terminal text effects and loaders for Rust TUI applications.
Documentation
# 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.