Video bitrate probe, loading throbbers, boot spinner, transparent logo

- Video: probe the MP4 header (range request for moov) before downloading
  the whole clip; if the average bitrate overruns the declared H.264 level
  the Vita's decoder enforces, show the "too high" message up front instead
  of downloading then failing at playback. Verdict validated against the
  real demo videos (e.g. e75d495e: Level 3.1 @ 18.8 Mbps -> rejected).
- Error screens: word-wrap title + detail so long messages no longer run
  off the edges; the bitrate message now spells out the server-side fix
  (Immich transcoding policy / bitrate cap).
- Boot: one continuous spinner. A single boot worker thread does sign-in +
  first page + local scan while the main thread animates one logo with a
  never-resetting frame counter, instead of three separate static screens.
- Throbbers: the cloud/server-info page and smart search now fetch on a
  worker thread and animate a throbber instead of freezing the UI.
- Logo: swap the in-app logo for a clean 200x200 transparent PNG (the old
  one was matted from the white-background icon and had fringe); keep the
  launcher icon's white background. Linear-filter the logo + cloud badges
  so they scale/rotate smoothly.
- Drop AgenticLoop.md (and its CLAUDE.md reference).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Sads
2026-06-14 00:48:42 +02:00
co-authored by Claude Opus 4.8
parent 341d913346
commit 351804819b
8 changed files with 442 additions and 185 deletions
+10 -1
View File
@@ -74,10 +74,19 @@ static char g_search_query[128];
static int *g_search_idx;
static int g_search_count;
static int g_search_cap;
/* smart search runs on a worker thread so the grid can animate a throbber
* while the request is in flight; g_search_pending is the query it runs,
* g_search_done/g_search_result report completion + its return value */
static char g_search_pending[128];
static volatile int g_search_done;
static volatile int g_search_result;
/* server info shown on the cloud/backup page; fetched lazily the first time
* the page is opened. g_srv_state: 0 not fetched, 1 ok, -1 failed. */
* the page is opened. g_srv_state: 0 not fetched, 1 ok, -1 failed.
* g_srv_fetching: a worker thread is fetching it now (so the page animates a
* throbber instead of blocking the main thread on the request). */
static int g_srv_state;
static volatile int g_srv_fetching;
static char g_srv_use[40]; /* disk used, human ("1.4 TiB") */
static char g_srv_total[40]; /* disk size, human ("1.8 TiB") */
static int g_srv_pct; /* disk usage percentage */