Fix the playback HUD showing "/ 0:00": duration is re-polled in the
render loop until sceAvPlayerGetStreamInfo reports it, instead of being
latched once before async parsing finishes.
When a video reaches its end, hold on the last frame with an
"X replay / O back" prompt instead of returning to the detail screen
(which, for server videos, forced a full re-download to watch again).
X replays from the still-local file via re-init; the decoder claim is
held across replays.
Also add the agentic loop tooling/docs: AgenticLoop.md runbook
(build, install, drive Vita3K via kwin-mcp, zero-context-cost frame
capture), controls.MD key map, deploy.sh, .mcp.json, and gitignore
build-native/ and agent-run/.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Scrollable chronological photo grid with full-screen viewer, fetching
previews from an Immich server via its REST API. Thumbnails stream in
on a background thread over a keep-alive connection. JPEG decoding is
done with libjpeg directly (vita2d's loader rejects Immich's
APP2-first JPEGs). JSON parsed with vendored jsmn (the vitasdk jansson
package is built as PIC, which vita-elf-create can't handle).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>