@@ -144,6 +144,42 @@ album to trigger a real arrival, then a capture over a real photo. That means ac
144144before a session does it, and worth deciding whether a separate scratch album is safer than
145145reusing ` framedemo ` .
146146
147+ ### Later same session: a live-capture rig was built, then Jan called it — supersede it next time
148+
149+ Jan pointed at a ** separate, dedicated content album** for this: ` https://frame.kippings.de/s/framecontent `
150+ ("frameContent", reachable from this machine — confirmed with a plain ` curl ` , ` assetCount: 3 ` as
151+ of 2026-09-11). Built against it: ` testCaptureNewPhotosCard ` in ` AppStoreScreenshotUITests.swift `
152+ (onboards through that link, never touches the hero-photo ` demoLink ` ), plus two ** DEBUG-only,
153+ env-var-gated levers** (` OwnFrameApp.swift ` , compiled out of Release entirely) —
154+ ` SCREENSHOT_CAPTURE_NEW_PHOTOS_CARD=1 ` forces the setting on without navigating Settings, and
155+ ` SCREENSHOT_CAPTURE_REFRESH_SECONDS ` shortens FR-310-06's fixed 60-minute interval to a few
156+ seconds. Both are legitimate, harmless scaffolding — kept, not reverted.
157+
158+ ** It didn't work in one live attempt, and the reason is instructive.** The test polled for a
159+ card that never appeared. Checking the album directly (`GET
160+ /api/shared-links/me?slug=framecontent`, the same read-only endpoint the app itself calls, no
161+ credentials needed) showed exactly why: the album has held a static 3 assets since it was
162+ created — nothing changed * during* the test's run, so the refresh had no delta to notice.
163+ ` RotationReconciler ` 's "new" is relative to whatever ` start() ` already saw; a pre-populated,
164+ unchanging album can never look like an arrival, no matter how long a test waits or how short the
165+ refresh interval is. This is real-time-coordination-dependent by construction: someone has to add
166+ an asset * after* the slideshow is already playing and * before* the wait times out — awkward to
167+ choreograph over chat, doubly so across a background task and a live person.
168+
169+ ** Jan's call, to action next session:** stop trying to manufacture a genuine server-side arrival
170+ for the capture. Instead, ** add a debug command that raises the toast directly** — a DEBUG-only
171+ trigger (hidden gesture, or an App Intent alongside the existing Shortcuts support from topic
172+ 800, or similar) that calls straight into a new debug-only ` SlideshowViewModel ` method to publish
173+ a ` NewArrival ` on demand, with no dependency on ` RotationReconciler ` , no live content change, no
174+ polling, no timing coordination. The photo behind the card still has to be real (FR-9010-04) —
175+ so the command fires against the ** already-playing live slideshow** (any real source, e.g.
176+ ` framecontent ` or ` framedemo ` ), forcing only the * card* , never faking the photo. Once that
177+ command exists, capturing slot 5 becomes as deterministic as slots 1/2/6: start the real
178+ slideshow, invoke the command, capture, done — no more of this session's live-arrival dance.
179+ ` testCaptureNewPhotosCard ` and its two env-var levers can stay as a fallback/regression check
180+ against the real refresh contract, but the debug command is what next session should actually use
181+ to generate the picture.
182+
147183---
148184
149185## 2026-09-10 (later) — four questions from Jan, answered empirically
0 commit comments