{{title}} — repartee
Author: outragedevs
Description: repartee — A modern terminal IRC client built with Ratatui, Tokio, and Rust. Scripting, theming, encrypted logging, and more.
Keywords: irc, terminal, tui, client, chat, repartee, ratatui, tokio, rust

# Format Strings

repartee implements a full irssi-compatible format string engine with extensions for 24-bit color.

## Color codes

### 24-bit foreground: `%Z` + RRGGBB

    %Z7aa2f7Hello    → "Hello" in blue (#7aa2f7)

### 24-bit background: `%z` + RRGGBB

    %z1a1b26%Za9b1d6Text    → Light text on dark background

### irssi single-letter codes: `%X`

Code | Color
--- | ---
`%k` / `%K` | Black / Dark gray
`%r` / `%R` | Red / Light red
`%g` / `%G` | Green / Light green
`%y` / `%Y` | Yellow / Light yellow
`%b` / `%B` | Blue / Light blue
`%m` / `%M` | Magenta / Light magenta
`%c` / `%C` | Cyan / Light cyan
`%w` / `%W` | White / Bright white

### Style codes

Code | Effect
--- | ---
`%_` | Bold
`%/` | Italic
`%-` | Strikethrough
`%U` | Underline
`%n` / `%N` | Reset all formatting

## Abstracts: `{name args}`

Abstracts are named templates that expand recursively:

    [abstracts]
    sb_background = "%z24283b"
    timestamp = "%Z565f89$*"
    line_start = "{timestamp $Z}{sb_background}"

Usage in another abstract: `{timestamp 12:34}` expands `$*` to `12:34`.

## Variable substitution

Syntax | Meaning
--- | ---
`$0` – `$9` | Positional argument
`$*` | All arguments joined
`$[N]0` | Argument padded/truncated to N characters

Example: `$[8]0` pads argument 0 to 8 characters (right-aligned by default).

## mIRC control characters

repartee also parses mIRC-style control characters in incoming messages:

Char | Hex | Effect
--- | --- | ---
Bold | `\x02` | Toggle bold
Color | `\x03` | mIRC color code (fg,bg)
Hex color | `\x04` | Hex color code
Reset | `\x0F` | Reset all formatting
Reverse | `\x16` | Swap fg/bg
Italic | `\x1D` | Toggle italic
Strikethrough | `\x1E` | Toggle strikethrough
Underline | `\x1F` | Toggle underline

## Abstraction depth

Abstracts can reference other abstracts up to 10 levels deep to prevent infinite recursion.