# Changelog ## v0.5.0 - **arr-tui on the TV:** `webos/` is an app for LG webOS TVs (webOS 5, 2020 models, and newer) with the same views, driven by the remote: Movies and Series with the Trakt lists, Library with its filters and download marks, seasons and episodes, release search and grab, Downloads, Calendar, Settings and Log. It talks to the services directly, is built with your config baked in and installed in the TV's Developer Mode; see `webos/README.md`. (Service addresses must not redirect, e.g. from http to https: browsers do not follow that.) - **`nix develop`:** a Nix flake with every tool the project uses (Go, shellcheck, Node.js, Python, the screenshot tools, Chromium). - **Filter dialog** (Library and release list): Language comes right after Quality, so the two most used filters are at the top. - **Downloading episodes in a series' seasons and episodes:** like the Library, the drill-down marks episodes in Sonarr's download queue with a blue dot and "downloading 45%" as their status (details: "Downloading 45% · 0:01:40 left"), and seasons with such episodes with a blue dot. When an episode has been imported, its status changes to downloaded by itself. - **Moving through lists is quick again with real-image posters:** scaling and encoding a poster for the terminal (about 200 ms since posters are sent at the size of their box) now happens in the background; the poster appears when it is ready, and the selection never waits for it. - **Trakt lists show faster after a restart:** the Radarr/Sonarr lookups of their titles are kept on disk too (3 days, `lookups.json`), so a list takes one request to Trakt and a quick library check per title instead of a lookup (about a second each) per title. Whether a title is in the library is always asked afresh. - **Posters of titles not in the library load faster:** they are fetched from TheMovieDB at the size shown (780 pixels wide for real images) instead of the original Radarr names, which is often 2000×3000 and over 2 MB: about a tenth of the download and a sixth of the decoding time. - **Real-image posters fill their box in every terminal:** they are scaled to the exact pixel size of their cells before they are sent. Ghostty shows an image that is smaller than its place at its own size, so library posters (Radarr's copy is only 333×500, not 500×750 as assumed in 0.4.0) came out smaller than the others. Library titles now also use the original poster for real images. The disk cache keeps posters at the size shown, not as downloaded (in a new folder; posters stored by the previous way are deleted at startup). - **Posters all the same size:** the details pane always shows a poster in a 2:3 box. Images slightly off that shape (some Radarr/Sonarr hand out) fill it, trimmed at the long sides; images far from it (square, landscape) are shown whole and centred. Before, such posters came out smaller than the others in the same list. - **Posters and casts are kept between runs** (in `~/.cache/arr-tui`; posters 30 days and at most 200 MB, casts 7 days), so they show at once after a restart and are not downloaded again. - **Downloading titles in the Library:** the dot before a movie or series turns blue while it is in the Radarr/Sonarr download queue, and its details say how far ("Downloading 45% · 0:06:12 left"). - **After a grab** the release list closes and you are back where the search started. - **Season posters** in the series drill-down: a season and its episodes show the season's poster (from TheTVDB, via Sonarr), the series poster where a season has none or it cannot be loaded. - **Cast in the details pane:** with a Trakt client ID, the details of a movie or series list its director (or creators) and cast with their roles below the plot, in every view. - **Enter adds** a title in Movies and Series; `a` no longer does (the status bar only ever named Enter, and the hint for searching releases of a title not in the library now says Enter too). - **Trending, most watched and anticipated** movies and series from Trakt: with an empty search box, Movies and Series show trending now, most watched this week, anticipated, popular and (movies) the US box office, each title with its number ("1.2k watching", "on 18k lists", "$48M last weekend") right-aligned in grey; `[` `]` switch lists, `r` reloads. Titles in the library are ticked, the others can be added and searched like search results. Needs a free Trakt client ID, set in the new Trakt section of the Config view (`trakt.client_id`, `ARR_TUI_TRAKT_CLIENT_ID`). ## v0.4.1 - The README shows screenshots of every view (a made-up library). No changes to the program. ## v0.4.0 New: - **First start without a config file:** arr-tui creates the file (private, with its directory) and opens the Config view to enter the services, instead of refusing to start. - **Services may be left out:** one without address and key is not used (e.g. no SABnzbd); its indicator stays grey and its lists say "not configured" instead of showing errors. Fixed: - Library posters shown as real images (kitty, Ghostty) were soft: they used Radarr's/Sonarr's 250×375 copy, enlarged to up to 640 pixels. Real images now use the 500×750 copy; block-character posters keep the small one. ## v0.3.0 New: - **Config (F6):** the default quality profile and root folder are picked from the lists Radarr and Sonarr have, loaded with the address and API key in the fields (when the view opens, and again shortly after either is changed, before saving). A configured value the server does not have stays selectable and is marked "(not on the server)". Changed: - **Library:** long titles are cut with "…" to the width of the list, so the movies and series lists never scroll sideways and status and size stay in view; the cut follows the window size. - **Library:** after removing a title the selection stays at its place (on the title that moved up into it, or the new last one) instead of jumping to the top of the list. Fixed: - Help over the Config view: after moving through the fields with the arrow keys, F9 left the field in use focused behind the help, so its cursor showed through the window, the help did not scroll, and closing it returned to the wrong field. - Library titles with square brackets (e.g. "[Rec]") were read as color tags. ## v0.2.0 New: - **Calendar (F5):** two weeks of movie releases and airing episodes grouped by day, with poster and plot; move by weeks with `[` and `]`, include unmonitored items, release search and automatic search. - **Config (F6):** edit the config file inside the program (addresses, API keys, add-form defaults, refresh interval, posters, theme, notifications) in one list you move through with the arrow keys, test the connections, and save; everything takes effect at once. Values from `ARR_TUI_*` environment variables are never written to the file. - **Dark and light themes** with fixed colors that look the same in every terminal, whatever its color theme (`ui.theme`: `auto`, `dark`, `light`; switchable live in the Config view). `auto` asks the terminal for its background color. Before, the panes used the terminal's palette color 0, which many color themes set to a grey that is not their background. - **Posters as real images** in kitty and Ghostty (Kitty graphics protocol with Unicode placeholders) at the terminal's full resolution, used only when the terminal confirms the protocol at startup. Elsewhere the block-character posters remain; `auto` now also picks sextants when fontconfig finds a font with them, and plain colored cells in macOS Terminal, whose half blocks do not line up. `ui.cover_style` gains `kitty` and `cells`. - **Series drill-down** shows the series poster and the details of the selected season or episode, including its plot. - **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. Changed: - Views: F5 Calendar, F6 Config, F7 Log (the Log was F5). - **F9** is the help key; `?` is gone. **Ctrl+C** quits; `q` no longer does. - Space presses buttons (Save, Revert, the buttons of dialogs), as the help says. - On narrow terminals the connection indicators shrink to initials. Fixed: - Posters that Sonarr/Radarr store as WebP (or GIF) under a `.jpg` name failed with "unknown format"; posters from instances behind a login page are fetched with the API key as a query parameter, or from the metadata provider. The Log says why a poster could not be read. - Moving through a list with a held arrow key lagged on very large terminals (zoomed far out): the poster now waits until the selection rests. ## 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`).