Widgets copy their colors when they are created, so they now get role tokens (one unique RGB value per role) instead of colors, and a wrapper around the tcell screen replaces the tokens with the current theme's colors in SetContent. Changing the theme in the Config view swaps that table; the next draw recolors everything. Poster colors that equal a token are nudged off it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019reK4DUGYqDUjniWYJvwUW
5.3 KiB
5.3 KiB
Changelog
Unreleased
- Dark and light themes: fixed colors that look the same in every terminal (
ui.theme:auto,darkorlight, also in the Config view, where a change recolors everything at once). Before, the panes used color 0 of the terminal's palette, which color themes often set to a grey that is not their background (e.g. Catppuccin), so the program looked washed out, and on light themes it was a dark grey slab with white text.autoasks the terminal for its background color and picks light or dark to match; the Log says which and why. - Space presses buttons (Save, Revert, the buttons of dialogs), as the help says; before only Enter did, except for Test.
- 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.
autonow draws them there as plain colored cells (newui.cover_stylevaluecells): 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;
qno 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
.jpgname; 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_stylegainskitty;autois 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, optionalui.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).