• fix(app-icons): stop icon flapping — deterministic app public_url + AppIcon remembers loaded/failed candidates
    Release / version (push) Canceled after 0s
    Release / frontend (push) Canceled after 0s
    Release / linux (amd64) (push) Canceled after 0s
    Release / linux (arm64) (push) Canceled after 0s
    Release / windows (push) Canceled after 0s
    Release / macos (push) Canceled after 0s
    Release / release (push) Canceled after 0s
    Build and Push Docker Image / build-and-push (push) Canceled after 0s

    LastSkywalker released this 2026-09-02 18:36:10 +03:00 | 71 commits to main since this release

    Traefik routers are read out of a Go map, so with several domains on one
    upstream (localhost / dashboard.example.com / …) the route attached first —
    and with it the app's public_url and the favicon origin the icon falls back
    to — changed on every collection tick. Routes are now attached best-first
    (publicURLRank: real https domain > http > single-label > loopback/.local/IP,
    then lexical) and the app link is picked by the same rank instead of Docker's
    port order, so public_url is identical on every refetch.

    AppIcon re-ran the whole cascade (two 404 slugs, then the
    favicon) on every remount/refetch and whenever public_url changed, which is
    why a loaded icon blinked out and, with the browser cache disabled, stayed
    gone. It now keeps a per-tab set of candidates that loaded / failed, starts
    at the known-good one and skips known 404s, re-picking only when the
    candidate list itself changes.

    Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com

    Downloads