Skip to content

Commit de36008

Browse files
committed
docs(store): record the live-capture attempt and Jan's debug-command call
testCaptureNewPhotosCard timed out against a static, unchanging framecontent album - RotationReconciler's "new" is relative to what start() already saw, so a pre-populated album can never look like an arrival no matter how long the test waits. Jan's call: next session adds a debug command that raises the toast directly against the already-playing live slideshow, no live content change or timing coordination required. Claude-Session: https://claude.ai/code/session_01FSMU2G3JXpeRqF61zHdjwS
1 parent cc98daf commit de36008

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

‎docs/handover-store-slots.md‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,42 @@ album to trigger a real arrival, then a capture over a real photo. That means ac
144144
before a session does it, and worth deciding whether a separate scratch album is safer than
145145
reusing `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

Comments
 (0)