> ## Documentation Index
> Fetch the complete documentation index at: https://docs.buttons.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> New features and improvements to Buttons.

<Update label="2026-04-18" description="Board themes">
  ## Board themes

  You can now customize the look of the board with built-in color themes.

  ### New features

  * **`BUTTONS_THEME` environment variable** — set `BUTTONS_THEME` to switch the board's color palette. Four themes are available out of the box: `default` (adapts to your terminal's light or dark background), `paper` (light palette), `phosphor` (green-on-black CRT look), and `amber` (warm VT220-style terminal). Unknown values fall back to `default`, so a typo won't break anything. See the [CLI reference](/cli/buttons_board).

  * **Persistent theme choice** — run `buttons config set theme amber` to save your preferred theme so it applies every time you open the board. The resolution order is: `BUTTONS_THEME` environment variable first, then your saved setting, then the default adaptive palette. Use `buttons config unset theme` to revert to the default. Invalid theme names are rejected at set time so your config stays valid.
</Update>

<Update label="2026-04-18" description="Docker release fix">
  ## Docker release fix

  ### Bug fixes

  * **Multi-arch Docker images publish correctly again** — a change in the build toolchain caused multi-architecture Docker image pushes to fail with a manifest verification error. This has been fixed, and Docker images for all supported platforms are publishing as expected.
</Update>

<Update label="2026-04-18" description="Press animation and live elapsed timer">
  ## Press animation and live elapsed timer

  The board now gives you visual feedback the moment you press a button and while it runs.

  ### New features

  * **Press animation** — pressing a button on the board now plays a quick physical-press animation. The button pulses through a keydown, fire, and release sequence before settling into its active state. The effect works with both keyboard and mouse input, so pressing a button feels responsive and tactile.

  * **Live elapsed timer** — buttons that are currently running now display a live elapsed counter. Short presses show tenths of a second (e.g. "3.2s"), longer presses switch to minutes and seconds, and anything over an hour shows a full clock format. The timer clears as soon as the press finishes, so you always know exactly how long a run has been going. See the [CLI reference](/cli/buttons_board).
</Update>

<Update label="2026-04-18" description="Logs pane in the board dashboard">
  ## Logs pane in the board dashboard

  You can now see recent run history for any button without leaving the board.

  ### New features

  * **Inline logs pane** — press `L` while focused on a button in the board to open a logs pane that shows the last five runs. Each row displays the result glyph, timestamp, exit code, duration, and a preview of the output. Press `L` again to hide it. See the [CLI reference](/cli/buttons_board).

  * **At-a-glance results** — successful runs show a green check mark; failures show an orange cross. The output preview is the first line of stdout on success, or stderr on failure, truncated to fit your terminal width so every row stays on a single line.

  * **Helpful empty states** — if no button is focused, the pane tells you to focus one. If the focused button has no runs yet, it prompts you to press it to record one.
</Update>

<Update label="2026-04-18" description="Per-user settings with buttons config">
  ## Per-user settings with `buttons config`

  You can now store personal preferences that apply across all your projects.

  ### New features

  * **`buttons config` command** — read and write per-user defaults stored in `~/.buttons/settings.json`. Run `buttons config` to see current values, `buttons config set` to change them, and `buttons config unset` to revert to built-in defaults. Settings are global by design — personal preferences stay out of your project repos.

  * **Configurable default timeout** — set `default-timeout` to change the timeout used when `buttons create` doesn't include an explicit `--timeout` flag. The resolution order is: explicit `--timeout` flag first, then your `default-timeout` setting, then the built-in 300 seconds. Useful if your workloads consistently need more (or less) time than the default.

  * **Configurable board theme** — set `theme` to persist your preferred board color palette across sessions. Run `buttons config set theme phosphor` to save it, or `buttons config unset theme` to revert to the adaptive default. See [board themes](#board-themes) above for the full list of available themes.
</Update>

<Update label="2026-04-18" description="Next-step hints and CLI polish">
  ## Next-step hints and CLI polish

  The CLI now tells you what to do next after every successful command.

  ### New features

  * **"Next:" hints** — after a successful command, the CLI prints a suggested follow-up. `buttons create` shows the press command, `buttons press` points to history, and `buttons batteries set` reminds you how to reference the variable. Hints appear only in interactive terminals and are suppressed with `--json` or when piping output.

  ### Updates

  * **Common flags in help text** — `buttons create --help` and `buttons press --help` now surface the most-used flags (`--timeout`, `--arg`, `--dry-run`, etc.) at the top, before the full auto-generated list. No new flags — just easier discovery.
</Update>

<Update label="2026-04-18" description="Automatic run history pruning">
  ## Automatic run history pruning

  Run history is now automatically capped so it doesn't grow without limit.

  ### Updates

  * **Auto-prune to 100 runs** — each button's `pressed/` directory is pruned to the most recent 100 runs after every press. Oldest runs are removed first. Non-JSON files and subdirectories are left alone. If pruning fails for any reason, the press still succeeds — cleanup catches up on the next run.
</Update>

<Update label="2026-04-18" description="Higher default press timeout">
  ## Higher default press timeout

  The default timeout for button presses has been raised from 60 seconds to 300 seconds.

  ### Bug fixes

  * **Default timeout raised to 300s** — the previous 60-second default was too tight for realistic workloads like ETL jobs, migrations, and long-running API calls. If your first press on a real pipeline hit the timeout, it looked like the tool was broken. The new 300-second default gives scripts room to finish while still protecting against runaways. You can still shorten it per-button with `--timeout` on [create](/cli/buttons_create) or override per-press with `--timeout` on [press](/cli/buttons_press).
</Update>
