Patches shipped: v1.6.637 → v1.6.643
Posted by Chris
Tom shipped 7 releases since the last note — here is the roll-up in one place. Every box picks them up on its own, or run sudo sparkbox update now. v1.6.643 — Two fixes - Gate update/restart on CIFS media mount to stop Sonarr mass-delete race. - Recent requests shows movie/show title instead of "TMDB <id". v1.6.642 — Nine media-stack fixes from a real-box sweep: Seerr asks for the right quality, stalled downloads get a “Try a different copy” button, Jellyfin finally uses your GPU - Seerr requests now use the curated quality profile (WEB-1080p / HD Bluray + WEB, or the 4K pair when Video quality is 4K) instead of “Any” — which is how a 1080p box could end up pulling 15 GB 4K files. Existing boxes are re-pointed once on their next start; a profile you picked yourself inside Seerr is left alone. Shows added through Seerr now get season folders. - qBittorrent’s stop point (pause at ratio 2 or after 7 days) is now really applied. The step that sets it gave up on the answer the current qBittorrent gives to a login, so finished downloads were seeded forever and never cleaned up — on one box that was 10 GB of leftovers since May. The wiring step read that same answer as “your saved password no longer works” on every start; it doesn’t any more. - The Media pipeline card spots a stalled download (no connections for hours, or the app’s own “stalled” note) instead of counting it as “in progress”, and offers Try a different copy: remove it, block that copy, search again. The same button handles a fake copy that contains a program file. Tom AI gets the matching action — it asks first and confirms through the app’s own history. - Jellyfin now uses your graphics chip. On a box with an Intel, AMD or NVIDIA GPU, SparkBox measures what the chip can do with Jellyfin’s own encoder and switches hardware transcoding on once (plus HDR tone-mapping where the hardware supports it) — before, the GPU was handed to Jellyfin but Jellyfin kept converting video on the processor. A setting you changed yourself is never overridden, and the checkup now reports the real setting instead of “GPU OK”. - Multi-language releases stop starting in the wrong language: Jellyfin users get the box’s language as the preferred audio and subtitle track (only when the box’s language is actually known — nothing is guessed). - Requests stuck on “Processing” now say why on the Home requests row — “Not out yet (digital release ~date)”, “Searching — nothing on your sources yet”, “Not monitored” — and SparkBox quietly re-searches missing Seerr requests a few times a day (at most 10 at a time, each title once a day). Settings → Media → “Keep searching for missing requests” turns it off. - Byparr, the “are you a robot?” helper, no longer fills the box with leftover browser processes. Its health check ran a full browser solve every 30 seconds and never cleaned up, so after about a day the app could not start anything and every protected source went quiet. Now it checks every 15 minutes and reaps properly. - Bazarr starts useful: a default languages profile from the box’s language, embedded subtitles on, assigned to your existing library — only when you haven’t set languages or providers yourself. - SABnzbd accepts your box’s hostname, its .local name, your custom domain and your Tailscale name (it used to answer “Hostname verification failed” for anything but an address). - Sources check: when Prowlarr holds a movie-capable source Radarr never received (or a TV source Sonarr didn’t), the pipeline card says so with an Open Prowlarr button, instead of “shared with both” while one app was missing it. - Leftover downloads: the Storage stage finds finished downloads nothing uses any more (older than a week, not seeding, not referenced by any app) and offers to clean them up — it asks for your dashboard password first, and never counts a hardlinked file as freeable space. - Moved your box to a new network? When the saved LAN address is no longer on any interface, the next start refreshes it so the Open buttons, the Access page and app links stop pointing at a dead address; the checkup flags it too. - Checkup: the RAM warning no longer fires on every healthy 8 GB box; it warns on a real out-of-memory kill in the last 24 hours, runaway leftover processes, or a box working flat out. Any app the system kills for memory now raises one alert (“ran out of its memory allowance and restarted itself — your data is safe”). Radarr renames movies on import like Sonarr already did. The License text in Settings no longer calls overnight auto-updates a Legend perk — they are free for every box. v1.6.641 — Tom AI can now act on stuck downloads, finishes the qBittorrent re-sync properly, and Home Assistant gets a host-network switch - When a finished download is stuck because the app couldn't file it on its own, Tom AI can now do the filing for you ("file 3 finished downloads into your library"), and when the app decided a download wasn't an upgrade on what you already have, Tom AI can clear it from the queue. Both only run when Tom has actually read the reason from the queue, both ask first, and both check afterwards through the app's own history — "filed" is only claimed when the app confirms it. - The qBittorrent password re-sync now fixes both halves — qBittorrent's side and the download apps' side — in one go, and its success check knows the difference. - Tom AI reads your whole box in one step (apps, download queue, media wiring, VPN) before diving into details, so a full diagnosis costs one round instead of four. - The "What Tom checked" card now colours each fix by its own real result — a fix that held is green, one that didn't is red with the app it couldn't recover — instead of guessing from the reply text. - Home Assistant: a proper switch for host networking (needed for Chromecast, HomeKit and Sonos discovery). Turn it on in the Classic dashboard's Home Assistant settings, or from a terminal with two commands — the new guide walks through it, including what to change if you reach Home Assistant through a custom domain. The checkup explains the setting when it's on. - A download blocked because it contains a program file is now named for what it is — a fake copy — with the right fix (remove, blocklist, search again), and Tom AI will never try to file one. v1.6.640 — Tom AI shows its work: a "What Tom checked" card on every answer - Every Tom AI reply that looked at your box now opens with a small card listing what it checked — the checkup, which logs it read, the download queue, the media wiring — each with a tick as it finishes, then the fix it ran and whether it verified. It folds down to one line ("Checked 3 things · ran 1 fix · verified") and expands on click, so you can see the basis for an answer instead of taking it on trust. - If a fix didn't hold, the card says so in red instead of hiding it in the prose; an unverified fix shows amber. - When you're asked to approve a fix, the checks Tom already did now stay on screen instead of vanishing while you decide. - Behind the scenes: the overnight knowledge loop that drafts answers for the questions Tom AI gets asked most — and admits only the drafts that pass the safety evaluation — is now a scheduled job (it switches on once its operator prerequisites are in place). v1.6.639 — Tom AI only runs a fix when the evidence points at it, checks the fix really worked, and files a proper case when it can't help - Tom AI no longer runs the qBittorrent password re-sync or the media-permissions fix unless something it measured on your box points at that exact problem. Running an unrelated fix used to burn one of your fixes and produce a false "Fixed". - After the password re-sync, Tom AI now asks Sonarr and Radarr (and Prowlarr/Lidarr if you have them) to test their qBittorrent login, and only says "fixed" when they all pass. If it can't run that check it says so — "unconfirmed", never "fixed". - When Tom AI can't solve it, it files a support case for a human: what it measured (checkup findings, app health, the download queue, the media wiring) and what it tried. You get a case number to quote. The conversation itself is not sent, and the case is deleted after 90 days. - The media wiring check now includes Sonarr's and Radarr's own health messages — the line that says why a download client is failing — so Tom AI can read the cause instead of guessing it. - Behind the scenes: the fix ledger now records which AI model ran each fix (anonymised, fleet-wide), so "did fixes get better" becomes a number; and a permanent guard makes sure the checkup can never again claim a server fact it can't see from inside the dashboard. v1.6.638 — Two fixes: Ollama finds your Nvidia GPU, and a folder inside your library no longer trips a false alarm - Ollama (the LocalAI module) was running on the CPU even on servers with a working Nvidia card, because its GPU setting shipped switched off. It now gets the same GPU pass-through every other GPU app uses — automatically, when your box has the Nvidia runtime — so local AI answers arrive much faster. - The media checkup was flagging a normal subfolder inside your library (a Kids folder inside TV, say) as a "stray" root folder and telling you to remove it. Subfolders of a library you already have are fine and are no longer reported. v1.6.637 — The Send button is back in Tom AI's chat, and a stuck download finally tells you why - The Send button in the Tom AI chat panel was cut off at the edge and hard to click. A leftover button that was supposed to be hidden was sitting in the row and pushing it off. It's gone, and Send is back where it belongs. - When a finished download won't move into your library, SparkBox now tells you exactly why, in Sonarr or Radarr's own words — and gives you the fix that matches that reason. A permissions problem, a release the app couldn't file on its own, and a copy it decided not to replace are three different problems, and only one of them is fixed by restarting. - Fixed a checkup bug that made Tom AI think your media folder was missing. Whenever Tom AI ran a checkup, it was told the media folder didn't exist — on every box, even perfectly healthy ones. That one wrong fact sent Tom AI chasing problems that weren't there. It now reports what it can actually see, and says so plainly when it can't check something from where it's running. - More of the same class, found by running the checkup two ways on one healthy box and comparing: from inside Tom AI it also claimed the VPN tunnel device was missing (and blamed a Proxmox container that wasn't there), that every port was free, that Portainer wasn't responding, and that a public box was safely behind a home router. All of it was the checkup looking in the wrong place. Each check now reads what it can actually see, and says so when it can't. Tom AI's checkups now match what you'd see running it on the server yourself. Thanks to everyone who reported these — most started as a post here. If one of them is your report and it is not fixed for you, reply and I will pick it up.