Skip to content

v1.1.0

Choose a tag to compare

@xuesoso xuesoso released this 11 Jun 06:24
· 11 commits to main since this release
c73ae05

Highlights

Zero dependencies by default — the built-in sixel encoder is now the default renderer. External encoders are explicit opt-ins: enable(imgcat="chafa") / "img2sixel" / "magick" (slightly faster, better resampling/dithering), or enable(imgcat="auto") for the previous PATH auto-detection.

Fixed

  • Viewer can no longer crash when its session/pty is torn down (self-pipe event loop, guarded I/O, always exits 0) — eliminates macOS "Python quit unexpectedly" dialogs.
  • Stale/recycled pids are validated before signalling — plotty can never terminate an unrelated process.
  • plotty never injects bytes into the console you type in: single-pane tmux windows get an auto-split plot pane; outside tmux, non-sixel terminals (IDE consoles) get a clear warning instead of escape garbage.

Added

  • Live settings: re-running enable(size=…, bg=…, imgcat=…) updates a running viewer without restart; a new target_pane moves it.
  • Figure history: viewer keys p/k (older), n/j (newer), q (quit); ring size via hist/PLOTTY_HIST.
  • bg/PLOTTY_BG background compositing for dark terminals.
  • status() diagnostics, save(path), show(fig) for non-pyplot figures, disable(close_pane=True), __version__.

Performance

  • Built-in quantizer ~15× faster (distinct-color weighted median-cut; lossless ≤256 colors); figures written once instead of twice.

Breaking

  • Setups that relied on silent chafa/img2sixel auto-detection now use the built-in encoder. Pass imgcat="auto" to restore the old behavior.

🤖 Generated with Claude Code