diff --git a/CLAUDE.md b/CLAUDE.md index a43a8da..a8d9fd8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -34,7 +34,7 @@ Build gifted e-ink frames that stay personal and current over time, with no ongo - Atomic image write: display only refreshes after complete confirmed transfer; last good image persists through outages - Deep sleep between pull cycles (see ESP32 deep sleep memory) - Status via border color: yellow = sync fail, red = no WiFi -- 5-second button hold triggers re-provisioning (config wipe + AP mode) +- Holding the BOOT button until the screen starts to flash triggers re-provisioning (config wipe + AP mode). Threshold is 5 s in firmware (RESET_HOLD_MS), but user-facing terminology is "hold until the screen flashes" because total wall-clock time-to-visible-change includes a ~20 s e-ink redraw, and a too-short press just wakes the device into a normal poll cycle. - Two-phase provisioning: AP mode (WiFi credentials) → STA mode (QR to account setup page) - Async image processing: Symfony Messenger (Doctrine transport), `max_retries: 1` - Image storage: `storage/images/{id}/{model}_{orientation}.bin`, relative paths in DB diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue index 48e89b1..6be5d16 100644 --- a/frontend/src/views/HomeView.vue +++ b/frontend/src/views/HomeView.vue @@ -251,6 +251,12 @@ this frame from your account and unlinks it from your photos so the next owner can claim it fresh. This can’t be undone.

+

+ On the frame itself, the new owner can also do a factory reset + by holding the small button on the back until the screen starts + to flash. (If they only tap it briefly, the frame just refreshes + its current image — keep holding until it flashes.) +