Files
arr-tui/CHANGELOG.md
T
nilsandClaude Opus 5.5 d2e868293f Terminal background: decide 24-bit color like tcell, and log why
The check only looked at COLORTERM, but tcell also draws 24-bit color for
terminals whose description has it (xterm-ghostty, xterm-kitty), so in
Ghostty on macOS without COLORTERM the background was never used. Use
tcell's rules, and always log which background is used and why.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019reK4DUGYqDUjniWYJvwUW
2026-10-21 11:53:47 +02:00

67 lines
5.0 KiB
Markdown

# Changelog
## Unreleased
- **The terminal's own background:** the panes used color 0 of the terminal's palette ("black"),
which many color themes set to a grey lighter than their background (e.g. Catppuccin), so the
whole program looked washed out and grey text almost disappeared. The terminal is now asked for
its background color at startup and that is used (with 24-bit color and a dark background). The
Log says which background is used and why.
- **Smooth scrolling on huge terminals:** while an arrow key is held, the poster waits until the
selection rests (120 ms). Every poster rewrites all of its cells, which on a terminal zoomed far
out was more output per step than the terminal could draw, so moving through a list lagged.
- **Posters in macOS Terminal:** Terminal.app draws the half and quarter blocks from the font, and
their halves do not meet at the middle of the cell, so posters looked like rows of shifted dots.
`auto` now draws them there as plain colored cells (new `ui.cover_style` value `cells`): coarser,
but even. For real images on macOS use Ghostty or kitty.
- **Real images in Ghostty and kitty on macOS:** the question whether the terminal supports the
Kitty graphics protocol gave up at once on macOS (a terminal device there cannot have a read
timeout in Go), so posters were always drawn with blocks. It now waits with select(2).
- **Real images only when the terminal confirms it:** the terminal is asked whether it supports the
Kitty graphics protocol before real-image posters are used, so terminals that only look like kitty
or Ghostty no longer get graphics commands printed as text. On macOS the sextant blocks are no
longer chosen from fontconfig's fonts.
- **Ctrl+C quits**; `q` no longer does (also not in the help window, which closes with Esc).
- **Series drill-down** shows the series poster and details of the selected season or episode,
including the episode's plot.
- **Posters in WebP and GIF:** Sonarr/Radarr can store WebP data under a `.jpg` name; such posters
(and GIFs) now show instead of failing with "unknown format". When a poster cannot be read, the Log
says what it looks like. If an instance has no copy of a poster, or only answers with its login page, the API key is also tried as a query parameter and then the provider's poster is used.
- **Config (F6):** edit the settings of the config file inside the program (addresses, API keys,
add-form defaults, refresh interval, posters, notifications), test the connections, save, and
have everything take effect immediately. Environment-provided values are never written to the file.
The Log is now on F7.
- **Posters as real images** in kitty and Ghostty (Kitty graphics protocol with Unicode
placeholders), at the terminal's full resolution and with the right aspect ratio. Other terminals
keep the block-character posters, using sextants when fontconfig finds a font with the glyphs
(e.g. GNOME Terminal with Adwaita Mono) and quadrants otherwise. `ui.cover_style` gains `kitty`; `auto` is the default.
- **Calendar (F5):** two weeks of movie releases and airing episodes grouped by day, with poster,
plot, release search and automatic search. The Log moves to F7.
- **Download notifications:** popup and log entry when a SABnzbd download finishes or fails, in the
background (`ui.notify_downloads`, optional `ui.bell`).
- **Remove from the library** (`d`), with separate checkboxes for deleting the files and for the
import exclusion; both off by default.
- On narrow terminals the connection indicators shrink to initials.
## v0.1.0
First release.
- **Movies / Series:** search Radarr and Sonarr as you type, add titles with quality profile, root
folder, monitoring and optional automatic search ("Search now" is turned off when nothing would be
monitored, since Radarr/Sonarr skip unmonitored items).
- **Interactive release search:** list releases with approval/rejection reasons, sort, hide
rejected ones, filter by quality, codec (x265/x264/AV1), HDR/DV, audio format (Atmos, TrueHD, DTS,
DD+, ...) and language, and grab one. Series: pick a season or an episode.
- **Library:** movies and series side by side, each with its own status filter, text filter and
file-property filter (quality, codec, HDR/DV, audio, language). Filter dialog changes apply live
and only offer options that match something. Toggle monitoring, start automatic searches.
- **Series drill-down:** seasons and episodes with monitoring, automatic search and release search.
- **Downloads:** SABnzbd queue and history plus the Radarr and Sonarr queues; pause/resume, delete,
retry, remove and blocklist.
- **Posters:** a thumbnail at the top right of the detail panes with the text flowing around it (quadrant or, on capable terminals, sextant block rendering; `ui.cover_style`).
- **Log (F7) and popups:** feedback appears as fading popups; the log keeps the history.
- Connection indicators for all three services, context-sensitive key hints, a help screen (F9).
- JSON config with environment overrides (`ARR_TUI_*`), `--version`, cross-platform builds
(`make dist`).