• 1.6.5 0cca48adb1

    john-okeefe released this 2026-09-03 19:15:11 -04:00 | 0 commits to main since this release

    Search Reliability Release

    What changed

    Search used to fail silently: when the AniList API hiccuped, the header
    search box would just sit there (or never open) with no explanation.
    This release makes every search outcome visible and stops the UI from
    ever spinning forever.

    Fixed

    • Search errors are now shown, not swallowed. Failures display a
      Search failed panel in the dropdown with the reason and a
      Retry search button.
    • Empty results have their own message. A search with no matches now
      says No results found for "x". Try a different title. instead of
      showing a blank dropdown.
    • No more indefinite spinner. The search button disables while a
      request is in flight, stale late responses are ignored, and the
      dropdown uses explicit open/close (plus Escape and outside-click to
      dismiss) instead of a blind toggle.
    • Backend no longer panics on transport failures. AniListQuery
      returns early with user-safe messages on encode/request/network
      errors and guards against nil responses and bodies.

    Slow AniList days

    • Backend request timeout set to 20s.
    • The UI shows Searching AniList... normally, flips to
      AniList is slow today, still trying... at 8s, and only fails
      with AniList is taking too long to respond. Please try again. at
      30s — so a slow-but-alive API still succeeds instead of
      false-failing.
    • Going offline fails immediately with You appear to be offline.
      instead of waiting out the timeout.
    • Rate limits (429) and outages (5xx) now surface plain-language
      messages, and GraphQL errors[] are reported even on HTTP 200.

    Commits

    • fcbcda7 — fix(anilist): harden AniList query transport and search errors
    • d2f2f8a — fix(ui): make header search states explicit with slow-day timeouts

    To verify

    1. Normal search → results list, selecting an entry navigates and closes.
    2. Offline search → immediate offline message, Retry once back online.
    3. Slow API → slow notice at ~8s, results still land if the API answers.
    4. Hung API → error with Retry at ~30s, never an endless spinner.
    Downloads