cyber-rain 0.2.0

A smoother, themeable Rust take on cmatrix.
# cyber-rain

[![Crates.io](https://img.shields.io/crates/v/cyber-rain.svg)](https://crates.io/crates/cyber-rain)
[![Docs.rs](https://docs.rs/cyber-rain/badge.svg)](https://docs.rs/cyber-rain)
[![CI](https://github.com/anthony-cervantes/cyber-rain/actions/workflows/ci.yml/badge.svg)](https://github.com/anthony-cervantes/cyber-rain/actions/workflows/ci.yml)
[![Release](https://img.shields.io/github/v/release/anthony-cervantes/cyber-rain)](https://github.com/anthony-cervantes/cyber-rain/releases)

`cyber-rain` is a smoother, themeable Rust terminal digital-rain visualizer: falling glyph streams, raw terminal rendering, hidden messages, deterministic demo runs, and enough controls to make your terminal look like it knows something you do not.

![cyber-rain animated terminal preview](assets/demo.svg)

## Install

With Homebrew:

```sh
brew install anthony-cervantes/tap/cyber-rain
```

From crates.io:

```sh
cargo install cyber-rain
```

From this repository:

```sh
cargo install --path .
```

Or run it directly:

```sh
cargo run --release
```

Quit with `q`, `Esc`, or `Ctrl-C`. Pause with `Space` or `p`.

## Features

- Themeable rain: `green`, `cyan`, `amber`, `crimson`, `ghost`, and `rainbow`.
- Tunable motion with `--fps`, `--speed`, and `--density`.
- Hidden message mode with `--message "follow the white rabbit"`.
- Message files with `--message-file transmissions.txt`.
- Presets with `--preset classic|ghost|cyberpunk|calm|chaos`.
- Deterministic demo mode with `--demo`.
- Auto-exit recording mode with `--duration 10`.
- Clean screensaver output with `--no-status`.
- Shell completions with `--generate-completion zsh`.
- `--ascii` mode for plain terminals.
- `--seed` for reproducible recordings or demos.
- Terminal resize handling.
- Buffered terminal rendering for smoother motion.
- Occasional burst storms, or `--calm` to disable them.
- Live keyboard controls while the rain is running.

## Controls

```text
q / Esc / Ctrl-C  quit
Space / p        pause
Up / Down        speed up or slow down
Left / Right     decrease or increase density
1-6              switch palettes
b                toggle burst storms
m                toggle hidden messages
s                toggle status bar
```

## Examples

```sh
cyber-rain --palette rainbow --message "wake up neo"
cyber-rain --palette amber --density 0.55 --speed 3
cyber-rain --ascii --seed 42
cyber-rain --calm --fps 30 --density 0.4
cyber-rain --preset cyberpunk --message-file transmissions.txt
cyber-rain --demo --duration 10 --no-status
```

For a deterministic demo recording:

```sh
cyber-rain --demo --duration 10
```

Generate shell completions:

```sh
cyber-rain --generate-completion bash > cyber-rain.bash
cyber-rain --generate-completion zsh > _cyber-rain
cyber-rain --generate-completion fish > cyber-rain.fish
```

## Release Checklist

1. Update `CHANGELOG.md`.
2. Run `cargo fmt --all`.
3. Run `cargo test`.
4. Run `cargo clippy -- -D warnings`.
5. Run `cargo package --allow-dirty`.
6. Publish with `cargo publish`.
7. Create a tag like `v0.2.0` and push it to build GitHub release binaries.

## License

Licensed under either of:

- Apache License, Version 2.0
- MIT license

at your option.