Auto-fetch new photos, stable month jumps, video rotation, throbbers

- new photos on the server appear automatically: the grid polls the
  newest page every ~30 s while settled; dedup_new_assets drops
  already-known ids (and also guards page fetches against server-side
  pagination drift)
- rebuild_keep_view pins the scroll and selection to the same photo
  across every relayout (page fetch, poll, sync), so loads no longer
  move the view
- R/L month jump anchors the landed month's header to the top of the
  screen, and R fetches ahead until the next month is actually loaded
- portrait videos play upright: the asset's exif orientation is kept
  (g_asset_rot) and the player rotates decoded frames (draw_video_frame)
- "loading..." texts replaced by a spinning throbber: centered when an
  item has no preview yet, a small corner one while the full-res loads
  over the thumb (never both)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Sads
2026-06-13 01:16:57 +02:00
co-authored by Claude Fable 5
parent 82061c7377
commit e0de84a755
2 changed files with 229 additions and 29 deletions
+15
View File
@@ -53,3 +53,18 @@ Task list for the current round of work. Checked items are done.
- [x] Verified: repeated 10–12 s held-scroll cycles to photo 1780+ across
multiple pages, zero GPU faults / zero crashes (previous builds died
within ~10 s).
## 6. Open bugs / polish
- [x] R (month jump) lands on the next month, but when more pages load the
view shifts away from the landing spot — fixed: rebuild_keep_view pins
the scroll/selection to the same photo across every rebuild (page
fetch, poll, sync), and R now fetches ahead until the next month is
actually loaded before jumping.
- [x] R scrolls the jumped-to month to the top of the screen, header band
included.
- [x] Portrait videos play sideways — fixed: the asset's exif orientation
is kept (g_asset_rot) and the player rotates decoded frames upright
(draw_video_frame).
- [x] Replaced the "loading..." texts with a spinning throbber: centered
when there is no preview at all, a small corner one while the full-res
loads over the thumb.