From e9d6d74b9bee77d8e28f5f49d1816d12415d9966 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Thu, 30 Apr 2026 19:48:16 -0700 Subject: [PATCH] mixed: recap jeffrey-photos pipeline, slab stop/ambient refinements, knot pin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - recap: new audiences (general 48h, jeffrey-24h) and bin/jeffrey-photos.mjs (gpt-image-2 + platter SHOOT/SELFIE refs, cached per segment); pipeline.fish grows to 7 stages; build-filter parks subs at the bottom over the waveform; slides.mjs gives puppeteer a 60s setContent timeout - papers/jeffrey-platter: document `jeffreys/gens/` bucket convention + manifest entry shape; sync give-page jeffreys-manifest.json - slab: claude-stop now flips active→awaiting (active stays for menubar bars), janitors dead claude_pids, recomputes "working" excluding awaiting; lid-ambient detects all three shapes of "claude is running" - knot/deploy: pin past v1.13.0-alpha to master SHA 3ff418d (no v1.14 tag yet) - reports: 2026-04-29 knot master rebuild log Co-Authored-By: Claude Opus 4.7 (1M context) --- at/knot/deployment/deploy.sh | 5 +- papers/jeffrey-platter/README.md | 30 + papers/jeffrey-platter/manifest.json | 2748 ++++++++++++++++- recap/SCORE.md | 34 +- recap/audience/general.mjs | 259 ++ recap/audience/jeffrey-24h.mjs | 298 ++ recap/bin/build-filter.mjs | 14 +- recap/bin/jeffrey-photos.mjs | 200 ++ recap/bin/slides.mjs | 2 +- recap/pipeline.fish | 13 +- reports/2026-04-29-knot-master-rebuild.md | 67 + slab/bin/claude-stop.sh | 51 +- slab/bin/lid-ambient.sh | 10 +- .../jeffreys-manifest.json | 2748 ++++++++++++++++- 14 files changed, 6193 insertions(+), 286 deletions(-) create mode 100644 recap/audience/general.mjs create mode 100644 recap/audience/jeffrey-24h.mjs create mode 100755 recap/bin/jeffrey-photos.mjs create mode 100644 reports/2026-04-29-knot-master-rebuild.md diff --git a/at/knot/deployment/deploy.sh b/at/knot/deployment/deploy.sh index 0eb2ed608..ad4b5cb93 100755 --- a/at/knot/deployment/deploy.sh +++ b/at/knot/deployment/deploy.sh @@ -21,8 +21,9 @@ KNOT_DOMAIN="knot.aesthetic.computer" KNOT_PUBLIC_PORT=5555 KNOT_INTERNAL_PORT=5444 APPVIEW_ENDPOINT="https://tangled.org" -# Tag from https://tangled.org/@tangled.org/core (empty = build master HEAD) -KNOT_VERSION="${KNOT_VERSION:-v1.13.0-alpha}" +# Tag or commit SHA from https://tangled.org/@tangled.org/core (empty = build master HEAD). +# Currently pinned to a master SHA past v1.13.0-alpha — no v1.14 tag exists yet. +KNOT_VERSION="${KNOT_VERSION:-3ff418dad639a9755b9ef7509ed948578d89be8b}" # PDS droplet — knot co-hosts here PDS_DEPLOY_DIR="$SCRIPT_DIR/../../pds/deployment/digitalocean" diff --git a/papers/jeffrey-platter/README.md b/papers/jeffrey-platter/README.md index b2adb1a77..072d3ac00 100644 --- a/papers/jeffrey-platter/README.md +++ b/papers/jeffrey-platter/README.md @@ -98,6 +98,36 @@ POI types: `f` = face, `b` = body, `h` = hand. Aspects vary (0.562 / 0.563 / 0.6 TBD: locate the script that generated the existing focal/POI values (OpenCV DNN + Haar cascades, per the give-page comment) and check it in to `portraits/jeffrey/bin/`. The manifest carries the *output* of that pipeline; the pipeline itself isn't in the repo yet. +#### `jeffreys/gens/` — Generated images (gpt-image-2 + platter-grounded identity) + +Output bucket for any pipeline that synthesizes a new jeffrey-image conditioned on the platter refs (typically `SHOOT_REFS` + `SELFIE_REFS` from [`portraits/jeffrey/bin/generate-neo.py`](../../portraits/jeffrey/bin/generate-neo.py)). One PNG per successful gen, dated, never overwritten. + +**Filename convention:** `--.png` — e.g. `recap-jeffrey-24h-02_menuband-2026-04-29T1630.png`. `context` says where the gen came from (e.g. `recap-jeffrey-24h`); `segment` is whatever locally-meaningful subdivision the producer cares about; the timestamp keeps regens distinct so we never lose a previous take. + +**Producers:** +- [`recap/bin/jeffrey-photos.mjs`](../../recap/bin/jeffrey-photos.mjs) — auto-archives every gen here as part of the recap pipeline. Tone defaults to real+goofy candid (per memory). +- [`portraits/jeffrey/bin/generate-neo.py`](../../portraits/jeffrey/bin/generate-neo.py) — currently writes one-offs to `~/Desktop`; promote to this bucket when a take is worth keeping. + +**Manifest entry shape** (under `buckets.gens.items[]`): + +```json +{ + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": ["portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", "..."], + "context": "recap-jeffrey-24h", + "segment": "02_menuband", + "generated": "2026-04-29T16:30:00.000Z", + "bytes": 2520266, + "prompt": "" +} +``` + +The full prompt is kept inline so a year from now we can answer "what was the metaphor that produced this take?" without cross-referencing the source audience config (which has likely drifted by then). + +**Push to CDN:** `npm run assets:sync:up` after a batch of gens. The bucket is under the standard `system/public/assets/*` gitignore — git tracks the manifest entry, not the PNG bytes. + ### Social silos (canonical public faces) - **Instagram (jeffrey solo, post-2023)** — https://www.instagram.com/whistlegraph/ diff --git a/papers/jeffrey-platter/manifest.json b/papers/jeffrey-platter/manifest.json index 64236365f..f449e1b8f 100644 --- a/papers/jeffrey-platter/manifest.json +++ b/papers/jeffrey-platter/manifest.json @@ -11,61 +11,1161 @@ "audited": "2026-04-28: aws s3 ls confirmed 55 contiguous --01..--55", "tiers": "master (>10MB, --01..--10), mid (1–10MB, --11..--35), web (<1MB, --36..--55)", "items": { - "jeffery-av--01.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":24579271,"tier":"master"}, - "jeffery-av--02.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":23031131,"tier":"master"}, - "jeffery-av--03.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":23782694,"tier":"master"}, - "jeffery-av--04.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":20180498,"tier":"master"}, - "jeffery-av--05.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":21157608,"tier":"master"}, - "jeffery-av--06.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":23912884,"tier":"master"}, - "jeffery-av--07.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":26175514,"tier":"master"}, - "jeffery-av--08.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":25539600,"tier":"master"}, - "jeffery-av--09.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":24963289,"tier":"master"}, - "jeffery-av--10.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":25466226,"tier":"master"}, - "jeffery-av--11.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3442326,"tier":"mid"}, - "jeffery-av--12.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4923364,"tier":"mid"}, - "jeffery-av--13.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4916244,"tier":"mid"}, - "jeffery-av--14.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4650693,"tier":"mid"}, - "jeffery-av--15.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4516921,"tier":"mid"}, - "jeffery-av--16.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4489196,"tier":"mid"}, - "jeffery-av--17.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3292944,"tier":"mid"}, - "jeffery-av--18.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":1672328,"tier":"mid"}, - "jeffery-av--19.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3705244,"tier":"mid"}, - "jeffery-av--20.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4236846,"tier":"mid"}, - "jeffery-av--21.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4263089,"tier":"mid"}, - "jeffery-av--22.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4233171,"tier":"mid"}, - "jeffery-av--23.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3663425,"tier":"mid"}, - "jeffery-av--24.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4192960,"tier":"mid"}, - "jeffery-av--25.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3794618,"tier":"mid"}, - "jeffery-av--26.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3676864,"tier":"mid"}, - "jeffery-av--27.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4195383,"tier":"mid"}, - "jeffery-av--28.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4090050,"tier":"mid"}, - "jeffery-av--29.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4130648,"tier":"mid"}, - "jeffery-av--30.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4933430,"tier":"mid"}, - "jeffery-av--31.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":5068198,"tier":"mid"}, - "jeffery-av--32.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":5205568,"tier":"mid"}, - "jeffery-av--33.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":5294940,"tier":"mid"}, - "jeffery-av--34.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":5283671,"tier":"mid"}, - "jeffery-av--35.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4789782,"tier":"mid"}, - "jeffery-av--36.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":272541,"tier":"web"}, - "jeffery-av--37.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":268923,"tier":"web"}, - "jeffery-av--38.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":296328,"tier":"web"}, - "jeffery-av--39.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":305648,"tier":"web"}, - "jeffery-av--40.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":226963,"tier":"web"}, - "jeffery-av--41.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":225962,"tier":"web"}, - "jeffery-av--42.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":223762,"tier":"web"}, - "jeffery-av--43.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":224105,"tier":"web"}, - "jeffery-av--44.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":304325,"tier":"web"}, - "jeffery-av--45.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":340465,"tier":"web"}, - "jeffery-av--46.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":338624,"tier":"web"}, - "jeffery-av--47.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":339362,"tier":"web"}, - "jeffery-av--48.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":345660,"tier":"web"}, - "jeffery-av--49.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":242741,"tier":"web"}, - "jeffery-av--50.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":244176,"tier":"web"}, - "jeffery-av--51.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":251330,"tier":"web"}, - "jeffery-av--52.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":254304,"tier":"web"}, - "jeffery-av--53.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":283319,"tier":"web"}, - "jeffery-av--54.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":246485,"tier":"web"}, - "jeffery-av--55.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":248833,"tier":"web"} + "jeffery-av--01.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 24579271, + "tier": "master" + }, + "jeffery-av--02.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 23031131, + "tier": "master" + }, + "jeffery-av--03.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 23782694, + "tier": "master" + }, + "jeffery-av--04.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 20180498, + "tier": "master" + }, + "jeffery-av--05.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 21157608, + "tier": "master" + }, + "jeffery-av--06.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 23912884, + "tier": "master" + }, + "jeffery-av--07.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 26175514, + "tier": "master" + }, + "jeffery-av--08.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 25539600, + "tier": "master" + }, + "jeffery-av--09.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 24963289, + "tier": "master" + }, + "jeffery-av--10.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 25466226, + "tier": "master" + }, + "jeffery-av--11.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3442326, + "tier": "mid" + }, + "jeffery-av--12.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4923364, + "tier": "mid" + }, + "jeffery-av--13.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4916244, + "tier": "mid" + }, + "jeffery-av--14.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4650693, + "tier": "mid" + }, + "jeffery-av--15.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4516921, + "tier": "mid" + }, + "jeffery-av--16.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4489196, + "tier": "mid" + }, + "jeffery-av--17.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3292944, + "tier": "mid" + }, + "jeffery-av--18.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 1672328, + "tier": "mid" + }, + "jeffery-av--19.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3705244, + "tier": "mid" + }, + "jeffery-av--20.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4236846, + "tier": "mid" + }, + "jeffery-av--21.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4263089, + "tier": "mid" + }, + "jeffery-av--22.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4233171, + "tier": "mid" + }, + "jeffery-av--23.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3663425, + "tier": "mid" + }, + "jeffery-av--24.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4192960, + "tier": "mid" + }, + "jeffery-av--25.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3794618, + "tier": "mid" + }, + "jeffery-av--26.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3676864, + "tier": "mid" + }, + "jeffery-av--27.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4195383, + "tier": "mid" + }, + "jeffery-av--28.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4090050, + "tier": "mid" + }, + "jeffery-av--29.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4130648, + "tier": "mid" + }, + "jeffery-av--30.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4933430, + "tier": "mid" + }, + "jeffery-av--31.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 5068198, + "tier": "mid" + }, + "jeffery-av--32.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 5205568, + "tier": "mid" + }, + "jeffery-av--33.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 5294940, + "tier": "mid" + }, + "jeffery-av--34.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 5283671, + "tier": "mid" + }, + "jeffery-av--35.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4789782, + "tier": "mid" + }, + "jeffery-av--36.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 272541, + "tier": "web" + }, + "jeffery-av--37.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 268923, + "tier": "web" + }, + "jeffery-av--38.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 296328, + "tier": "web" + }, + "jeffery-av--39.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 305648, + "tier": "web" + }, + "jeffery-av--40.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 226963, + "tier": "web" + }, + "jeffery-av--41.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 225962, + "tier": "web" + }, + "jeffery-av--42.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 223762, + "tier": "web" + }, + "jeffery-av--43.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 224105, + "tier": "web" + }, + "jeffery-av--44.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 304325, + "tier": "web" + }, + "jeffery-av--45.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 340465, + "tier": "web" + }, + "jeffery-av--46.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 338624, + "tier": "web" + }, + "jeffery-av--47.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 339362, + "tier": "web" + }, + "jeffery-av--48.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 345660, + "tier": "web" + }, + "jeffery-av--49.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 242741, + "tier": "web" + }, + "jeffery-av--50.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 244176, + "tier": "web" + }, + "jeffery-av--51.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 251330, + "tier": "web" + }, + "jeffery-av--52.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 254304, + "tier": "web" + }, + "jeffery-av--53.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 283319, + "tier": "web" + }, + "jeffery-av--54.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 246485, + "tier": "web" + }, + "jeffery-av--55.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 248833, + "tier": "web" + } } }, "masters": { @@ -74,44 +1174,158 @@ "key_includes_extension": true, "audited": "2026-04-28: aws s3 ls assets-aesthetic-computer/jeffreys/ — 38 masters found, 1:1 with candids/", "items": { - "FullSizeRender.heic": {"candid_key":"FullSizeRender","size":516985}, - "IMG_0260.heic": {"candid_key":"IMG_0260","size":1978771}, - "IMG_0675.JPEG": {"candid_key":"IMG_0675","size":4743995}, - "IMG_0686.heic": {"candid_key":"IMG_0686","size":1063196}, - "IMG_0688.heic": {"candid_key":"IMG_0688","size":954060}, - "IMG_0798.jpeg": {"candid_key":"IMG_0798","size":2332501}, - "IMG_1111.heic": {"candid_key":"IMG_1111","size":1818360}, - "IMG_1577.heic": {"candid_key":"IMG_1577","size":3453048}, - "IMG_1616.heic": {"candid_key":"IMG_1616","size":2838527}, - "IMG_1737.heic": {"candid_key":"IMG_1737","size":1830876}, - "IMG_1809.heic": {"candid_key":"IMG_1809","size":4224096}, - "IMG_2124.jpeg": {"candid_key":"IMG_2124","size":1332909}, - "IMG_2208.heic": {"candid_key":"IMG_2208","size":1569939}, - "IMG_2280.heic": {"candid_key":"IMG_2280","size":876871}, - "IMG_2498.heic": {"candid_key":"IMG_2498","size":2148839}, - "IMG_2630.HEIC": {"candid_key":"IMG_2630","size":1490103}, - "IMG_2658.HEIC": {"candid_key":"IMG_2658","size":1608793}, - "IMG_2668.heic": {"candid_key":"IMG_2668","size":1195972}, - "IMG_2905.heic": {"candid_key":"IMG_2905","size":2304901}, - "IMG_2913.heic": {"candid_key":"IMG_2913","size":803125}, - "IMG_3017.heic": {"candid_key":"IMG_3017","size":2562824}, - "IMG_3234.heic": {"candid_key":"IMG_3234","size":806715}, - "IMG_4281.jpeg": {"candid_key":"IMG_4281","size":2303766}, - "IMG_4312.jpeg": {"candid_key":"IMG_4312","size":2657700}, - "IMG_4606.heic": {"candid_key":"IMG_4606","size":970231}, - "IMG_4894.heic": {"candid_key":"IMG_4894","size":1428189}, - "IMG_4997.heic": {"candid_key":"IMG_4997","size":1804730}, - "IMG_5043.HEIC": {"candid_key":"IMG_5043","size":1156692}, - "IMG_5050.heic": {"candid_key":"IMG_5050","size":1131254}, - "IMG_5272.jpeg": {"candid_key":"IMG_5272","size":1978886}, - "IMG_5644.heic": {"candid_key":"IMG_5644","size":1366318}, - "IMG_6342.jpeg": {"candid_key":"IMG_6342","size":1844946}, - "IMG_6367.HEIC": {"candid_key":"IMG_6367","size":1528443}, - "IMG_6435.HEIC": {"candid_key":"IMG_6435","size":2105174}, - "IMG_8080.HEIC": {"candid_key":"IMG_8080","size":1420859}, - "IMG_8188.heic": {"candid_key":"IMG_8188","size":903213}, - "IMG_8989.HEIC": {"candid_key":"IMG_8989","size":2106687}, - "IMG_9795.heic": {"candid_key":"IMG_9795","size":2240240} + "FullSizeRender.heic": { + "candid_key": "FullSizeRender", + "size": 516985 + }, + "IMG_0260.heic": { + "candid_key": "IMG_0260", + "size": 1978771 + }, + "IMG_0675.JPEG": { + "candid_key": "IMG_0675", + "size": 4743995 + }, + "IMG_0686.heic": { + "candid_key": "IMG_0686", + "size": 1063196 + }, + "IMG_0688.heic": { + "candid_key": "IMG_0688", + "size": 954060 + }, + "IMG_0798.jpeg": { + "candid_key": "IMG_0798", + "size": 2332501 + }, + "IMG_1111.heic": { + "candid_key": "IMG_1111", + "size": 1818360 + }, + "IMG_1577.heic": { + "candid_key": "IMG_1577", + "size": 3453048 + }, + "IMG_1616.heic": { + "candid_key": "IMG_1616", + "size": 2838527 + }, + "IMG_1737.heic": { + "candid_key": "IMG_1737", + "size": 1830876 + }, + "IMG_1809.heic": { + "candid_key": "IMG_1809", + "size": 4224096 + }, + "IMG_2124.jpeg": { + "candid_key": "IMG_2124", + "size": 1332909 + }, + "IMG_2208.heic": { + "candid_key": "IMG_2208", + "size": 1569939 + }, + "IMG_2280.heic": { + "candid_key": "IMG_2280", + "size": 876871 + }, + "IMG_2498.heic": { + "candid_key": "IMG_2498", + "size": 2148839 + }, + "IMG_2630.HEIC": { + "candid_key": "IMG_2630", + "size": 1490103 + }, + "IMG_2658.HEIC": { + "candid_key": "IMG_2658", + "size": 1608793 + }, + "IMG_2668.heic": { + "candid_key": "IMG_2668", + "size": 1195972 + }, + "IMG_2905.heic": { + "candid_key": "IMG_2905", + "size": 2304901 + }, + "IMG_2913.heic": { + "candid_key": "IMG_2913", + "size": 803125 + }, + "IMG_3017.heic": { + "candid_key": "IMG_3017", + "size": 2562824 + }, + "IMG_3234.heic": { + "candid_key": "IMG_3234", + "size": 806715 + }, + "IMG_4281.jpeg": { + "candid_key": "IMG_4281", + "size": 2303766 + }, + "IMG_4312.jpeg": { + "candid_key": "IMG_4312", + "size": 2657700 + }, + "IMG_4606.heic": { + "candid_key": "IMG_4606", + "size": 970231 + }, + "IMG_4894.heic": { + "candid_key": "IMG_4894", + "size": 1428189 + }, + "IMG_4997.heic": { + "candid_key": "IMG_4997", + "size": 1804730 + }, + "IMG_5043.HEIC": { + "candid_key": "IMG_5043", + "size": 1156692 + }, + "IMG_5050.heic": { + "candid_key": "IMG_5050", + "size": 1131254 + }, + "IMG_5272.jpeg": { + "candid_key": "IMG_5272", + "size": 1978886 + }, + "IMG_5644.heic": { + "candid_key": "IMG_5644", + "size": 1366318 + }, + "IMG_6342.jpeg": { + "candid_key": "IMG_6342", + "size": 1844946 + }, + "IMG_6367.HEIC": { + "candid_key": "IMG_6367", + "size": 1528443 + }, + "IMG_6435.HEIC": { + "candid_key": "IMG_6435", + "size": 2105174 + }, + "IMG_8080.HEIC": { + "candid_key": "IMG_8080", + "size": 1420859 + }, + "IMG_8188.heic": { + "candid_key": "IMG_8188", + "size": 903213 + }, + "IMG_8989.HEIC": { + "candid_key": "IMG_8989", + "size": 2106687 + }, + "IMG_9795.heic": { + "candid_key": "IMG_9795", + "size": 2240240 + } } }, "candids": { @@ -120,44 +1334,1316 @@ "key_includes_extension": false, "audited": "2026-04-28: aws s3 ls confirmed all 38 entries match bucket; no orphans, no uncataloged. All have HEIC/JPEG masters at jeffreys/{name}. — see masters bucket.", "items": { - "FullSizeRender": {"focal":[38.5,34.8],"pois":[{"t":"f","box":[33.8,30,9.5,9.7]},{"t":"b","box":[59.5,63.9,20.2,12.4]},{"t":"b","box":[87.6,89.3,8.4,5.2]}],"aspect":0.75,"size":829094,"master":"FullSizeRender.heic","master_size":516985}, - "IMG_0260": {"focal":[41,38.1],"pois":[{"t":"f","box":[32.3,29.3,17.4,17.5]},{"t":"b","box":[15.9,50,5.9,3.6]}],"aspect":0.75,"size":1492041,"master":"IMG_0260.heic","master_size":1978771}, - "IMG_0675": {"focal":[54,37.2],"pois":[{"t":"f","box":[47.8,31.8,12.3,10.9]}],"aspect":0.667,"size":4743995,"master":"IMG_0675.JPEG","master_size":4743995}, - "IMG_0686": {"focal":[57.4,25.4],"pois":[{"t":"b","box":[53.6,23.1,7.5,4.6]},{"t":"b","box":[54.1,47.2,6.9,4.2]}],"aspect":0.75,"size":1145284,"master":"IMG_0686.heic","master_size":1063196}, - "IMG_0688": {"focal":[72.3,63],"pois":[{"t":"b","box":[69.1,59.3,6.5,7.4]},{"t":"b","box":[39.4,46.8,4.1,4.6]}],"aspect":0.563,"size":1035484,"master":"IMG_0688.heic","master_size":954060}, - "IMG_0798": {"focal":[46.6,6.4],"pois":[{"t":"b","box":[44.8,5.3,3.7,2.3]}],"aspect":0.75,"size":2332501,"master":"IMG_0798.jpeg","master_size":2332501}, - "IMG_1111": {"focal":[50,50],"pois":[],"aspect":0.562,"size":1412575,"master":"IMG_1111.heic","master_size":1818360}, - "IMG_1577": {"focal":[37,70.6],"pois":[{"t":"b","box":[35.5,69.7,2.8,1.7]}],"aspect":0.75,"size":3285470,"master":"IMG_1577.heic","master_size":3453048}, - "IMG_1616": {"focal":[47.8,51.7],"pois":[{"t":"f","box":[42.5,45.2,10.7,13]},{"t":"b","box":[14.1,68,12.4,7.6]}],"aspect":0.75,"size":2863682,"master":"IMG_1616.heic","master_size":2838527}, - "IMG_1737": {"focal":[50,50],"pois":[],"aspect":0.75,"size":1539214,"master":"IMG_1737.heic","master_size":1830876}, - "IMG_1809": {"focal":[48,53.2],"pois":[{"t":"b","box":[45,51.4,6.1,3.7]}],"aspect":0.75,"size":3742829,"master":"IMG_1809.heic","master_size":4224096}, - "IMG_2124": {"focal":[54.8,35.8],"pois":[{"t":"f","box":[49.7,31.8,10.1,7.9]},{"t":"b","box":[3.1,48.8,32,14.8]}],"aspect":0.563,"size":1332909,"master":"IMG_2124.jpeg","master_size":1332909}, - "IMG_2208": {"focal":[40,21.8],"pois":[{"t":"f","box":[33.6,14.5,12.8,14.6]},{"t":"b","box":[23.4,5.1,10.6,6.5]}],"aspect":0.75,"size":1788410,"master":"IMG_2208.heic","master_size":1569939}, - "IMG_2280": {"focal":[57.4,33.4],"pois":[{"t":"f","box":[42.5,16.4,29.8,34]}],"aspect":0.8,"size":1016167,"master":"IMG_2280.heic","master_size":876871}, - "IMG_2498": {"focal":[21.8,61.4],"pois":[{"t":"b","box":[12.6,55.8,18.3,11.2]}],"aspect":0.75,"size":1710740,"master":"IMG_2498.heic","master_size":2148839}, - "IMG_2630": {"focal":[20.3,59.6],"pois":[{"t":"b","box":[6.8,44.8,27,29.4]},{"t":"b","box":[30.7,44,8.6,22.9]}],"aspect":1.333,"size":1452701,"master":"IMG_2630.HEIC","master_size":1490103}, - "IMG_2658": {"focal":[46.6,43.7],"pois":[{"t":"f","box":[39.2,34.5,14.8,18.4]},{"t":"b","box":[58.5,68.9,8.4,5.2]}],"aspect":0.75,"size":1992798,"master":"IMG_2658.HEIC","master_size":1608793}, - "IMG_2668": {"focal":[39.4,24.5],"pois":[{"t":"b","box":[30.4,19,18,11]},{"t":"b","box":[40.7,68.8,8.6,5.3]}],"aspect":0.75,"size":1365145,"master":"IMG_2668.heic","master_size":1195972}, - "IMG_2905": {"focal":[47.5,40.1],"pois":[{"t":"b","box":[28.3,28.4,38.3,23.5]}],"aspect":0.75,"size":2497398,"master":"IMG_2905.heic","master_size":2304901}, - "IMG_2913": {"focal":[69.9,19.9],"pois":[{"t":"b","box":[67.7,18.5,4.5,2.7]},{"t":"b","box":[87,36.8,4.1,2.5]}],"aspect":0.75,"size":1042326,"master":"IMG_2913.heic","master_size":803125}, - "IMG_3017": {"focal":[37.6,81.5],"pois":[{"t":"b","box":[31.7,77.9,11.8,7.3]}],"aspect":0.75,"size":2446374,"master":"IMG_3017.heic","master_size":2562824}, - "IMG_3234": {"focal":[42.4,48.8],"pois":[{"t":"f","box":[36.9,43.2,11.1,11.3]},{"t":"b","box":[27.1,34.8,15.4,9.4]}],"aspect":0.75,"size":1015178,"master":"IMG_3234.heic","master_size":806715}, - "IMG_4281": {"focal":[50.2,38.1],"pois":[{"t":"f","box":[44.5,31.3,11.4,13.6]},{"t":"b","box":[70.5,59.8,8.4,12.6]}],"aspect":0.75,"size":2303766,"master":"IMG_4281.jpeg","master_size":2303766}, - "IMG_4312": {"focal":[4.1,28.1],"pois":[{"t":"f","box":[0,18.6,8.2,19]},{"t":"b","box":[32.5,63.2,3.2,2]}],"aspect":0.75,"size":2657700,"master":"IMG_4312.jpeg","master_size":2657700}, - "IMG_4606": {"focal":[53.1,56.5],"pois":[{"t":"f","box":[28.6,31.6,48.9,49.8]}],"aspect":0.75,"size":1044546,"master":"IMG_4606.heic","master_size":970231}, - "IMG_4894": {"focal":[48,73.6],"pois":[{"t":"b","box":[44.4,71.4,7.2,4.4]},{"t":"b","box":[71.8,49.7,4.6,6.8]}],"aspect":0.75,"size":1564246,"master":"IMG_4894.heic","master_size":1428189}, - "IMG_4997": {"focal":[54,55.8],"pois":[{"t":"b","box":[52.3,53.2,3.4,5.1]}],"aspect":0.75,"size":2173587,"master":"IMG_4997.heic","master_size":1804730}, - "IMG_5043": {"focal":[40.8,43.4],"pois":[{"t":"f","box":[30.8,32.3,20.1,22.1]},{"t":"b","box":[31.9,69.9,4.8,3]}],"aspect":0.75,"size":1239460,"master":"IMG_5043.HEIC","master_size":1156692}, - "IMG_5050": {"focal":[65.6,53.7],"pois":[{"t":"f","box":[60.1,48.3,10.9,10.8]},{"t":"b","box":[21.9,43,16.5,10.1]}],"aspect":0.75,"size":1515666,"master":"IMG_5050.heic","master_size":1131254}, - "IMG_5272": {"focal":[62.3,53.4],"pois":[{"t":"b","box":[61,51.3,2.7,4.1]}],"aspect":0.75,"size":1978886,"master":"IMG_5272.jpeg","master_size":1978886}, - "IMG_5644": {"focal":[49,17.8],"pois":[{"t":"f","box":[44.1,13.9,9.8,8]},{"t":"b","box":[32.7,19.9,11,5.1]}],"aspect":0.563,"size":1380329,"master":"IMG_5644.heic","master_size":1366318}, - "IMG_6342": {"focal":[62.3,28],"pois":[{"t":"f","box":[55.1,18.5,14.5,18.9]},{"t":"b","box":[10.7,69.4,23.7,14.6]}],"aspect":0.75,"size":1844946,"master":"IMG_6342.jpeg","master_size":1844946}, - "IMG_6367": {"focal":[44.1,34.3],"pois":[{"t":"f","box":[37.8,28.7,12.7,11.1]},{"t":"b","box":[60.4,4.8,3.6,2.2]}],"aspect":0.75,"size":1416580,"master":"IMG_6367.HEIC","master_size":1528443}, - "IMG_6435": {"focal":[48,37.8],"pois":[{"t":"f","box":[37.9,27.2,20.2,21.1]},{"t":"b","box":[35.9,86,4.8,2.9]}],"aspect":0.75,"size":1604594,"master":"IMG_6435.HEIC","master_size":2105174}, - "IMG_8080": {"focal":[42.6,27.7],"pois":[{"t":"f","box":[36,20.8,13.1,13.9]},{"t":"b","box":[15.9,8.3,66.6,40.9]}],"aspect":0.75,"size":1580558,"master":"IMG_8080.HEIC","master_size":1420859}, - "IMG_8188": {"focal":[48.9,33.9],"pois":[{"t":"f","box":[37.9,24,21.8,19.9]},{"t":"b","box":[35,88.1,9.8,6]}],"aspect":0.75,"size":968035,"master":"IMG_8188.heic","master_size":903213}, - "IMG_8989": {"focal":[79.2,86.1],"pois":[{"t":"b","box":[76.7,84.6,5,3.1]}],"aspect":0.75,"size":1830983,"master":"IMG_8989.HEIC","master_size":2106687}, - "IMG_9795": {"focal":[31.2,22],"pois":[{"t":"f","box":[23.8,15.6,14.8,12.9]},{"t":"b","box":[21.3,51.5,4.3,2]}],"aspect":0.562,"size":2033875,"master":"IMG_9795.heic","master_size":2240240} + "FullSizeRender": { + "focal": [ + 38.5, + 34.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 33.8, + 30, + 9.5, + 9.7 + ] + }, + { + "t": "b", + "box": [ + 59.5, + 63.9, + 20.2, + 12.4 + ] + }, + { + "t": "b", + "box": [ + 87.6, + 89.3, + 8.4, + 5.2 + ] + } + ], + "aspect": 0.75, + "size": 829094, + "master": "FullSizeRender.heic", + "master_size": 516985 + }, + "IMG_0260": { + "focal": [ + 41, + 38.1 + ], + "pois": [ + { + "t": "f", + "box": [ + 32.3, + 29.3, + 17.4, + 17.5 + ] + }, + { + "t": "b", + "box": [ + 15.9, + 50, + 5.9, + 3.6 + ] + } + ], + "aspect": 0.75, + "size": 1492041, + "master": "IMG_0260.heic", + "master_size": 1978771 + }, + "IMG_0675": { + "focal": [ + 54, + 37.2 + ], + "pois": [ + { + "t": "f", + "box": [ + 47.8, + 31.8, + 12.3, + 10.9 + ] + } + ], + "aspect": 0.667, + "size": 4743995, + "master": "IMG_0675.JPEG", + "master_size": 4743995 + }, + "IMG_0686": { + "focal": [ + 57.4, + 25.4 + ], + "pois": [ + { + "t": "b", + "box": [ + 53.6, + 23.1, + 7.5, + 4.6 + ] + }, + { + "t": "b", + "box": [ + 54.1, + 47.2, + 6.9, + 4.2 + ] + } + ], + "aspect": 0.75, + "size": 1145284, + "master": "IMG_0686.heic", + "master_size": 1063196 + }, + "IMG_0688": { + "focal": [ + 72.3, + 63 + ], + "pois": [ + { + "t": "b", + "box": [ + 69.1, + 59.3, + 6.5, + 7.4 + ] + }, + { + "t": "b", + "box": [ + 39.4, + 46.8, + 4.1, + 4.6 + ] + } + ], + "aspect": 0.563, + "size": 1035484, + "master": "IMG_0688.heic", + "master_size": 954060 + }, + "IMG_0798": { + "focal": [ + 46.6, + 6.4 + ], + "pois": [ + { + "t": "b", + "box": [ + 44.8, + 5.3, + 3.7, + 2.3 + ] + } + ], + "aspect": 0.75, + "size": 2332501, + "master": "IMG_0798.jpeg", + "master_size": 2332501 + }, + "IMG_1111": { + "focal": [ + 50, + 50 + ], + "pois": [], + "aspect": 0.562, + "size": 1412575, + "master": "IMG_1111.heic", + "master_size": 1818360 + }, + "IMG_1577": { + "focal": [ + 37, + 70.6 + ], + "pois": [ + { + "t": "b", + "box": [ + 35.5, + 69.7, + 2.8, + 1.7 + ] + } + ], + "aspect": 0.75, + "size": 3285470, + "master": "IMG_1577.heic", + "master_size": 3453048 + }, + "IMG_1616": { + "focal": [ + 47.8, + 51.7 + ], + "pois": [ + { + "t": "f", + "box": [ + 42.5, + 45.2, + 10.7, + 13 + ] + }, + { + "t": "b", + "box": [ + 14.1, + 68, + 12.4, + 7.6 + ] + } + ], + "aspect": 0.75, + "size": 2863682, + "master": "IMG_1616.heic", + "master_size": 2838527 + }, + "IMG_1737": { + "focal": [ + 50, + 50 + ], + "pois": [], + "aspect": 0.75, + "size": 1539214, + "master": "IMG_1737.heic", + "master_size": 1830876 + }, + "IMG_1809": { + "focal": [ + 48, + 53.2 + ], + "pois": [ + { + "t": "b", + "box": [ + 45, + 51.4, + 6.1, + 3.7 + ] + } + ], + "aspect": 0.75, + "size": 3742829, + "master": "IMG_1809.heic", + "master_size": 4224096 + }, + "IMG_2124": { + "focal": [ + 54.8, + 35.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 49.7, + 31.8, + 10.1, + 7.9 + ] + }, + { + "t": "b", + "box": [ + 3.1, + 48.8, + 32, + 14.8 + ] + } + ], + "aspect": 0.563, + "size": 1332909, + "master": "IMG_2124.jpeg", + "master_size": 1332909 + }, + "IMG_2208": { + "focal": [ + 40, + 21.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 33.6, + 14.5, + 12.8, + 14.6 + ] + }, + { + "t": "b", + "box": [ + 23.4, + 5.1, + 10.6, + 6.5 + ] + } + ], + "aspect": 0.75, + "size": 1788410, + "master": "IMG_2208.heic", + "master_size": 1569939 + }, + "IMG_2280": { + "focal": [ + 57.4, + 33.4 + ], + "pois": [ + { + "t": "f", + "box": [ + 42.5, + 16.4, + 29.8, + 34 + ] + } + ], + "aspect": 0.8, + "size": 1016167, + "master": "IMG_2280.heic", + "master_size": 876871 + }, + "IMG_2498": { + "focal": [ + 21.8, + 61.4 + ], + "pois": [ + { + "t": "b", + "box": [ + 12.6, + 55.8, + 18.3, + 11.2 + ] + } + ], + "aspect": 0.75, + "size": 1710740, + "master": "IMG_2498.heic", + "master_size": 2148839 + }, + "IMG_2630": { + "focal": [ + 20.3, + 59.6 + ], + "pois": [ + { + "t": "b", + "box": [ + 6.8, + 44.8, + 27, + 29.4 + ] + }, + { + "t": "b", + "box": [ + 30.7, + 44, + 8.6, + 22.9 + ] + } + ], + "aspect": 1.333, + "size": 1452701, + "master": "IMG_2630.HEIC", + "master_size": 1490103 + }, + "IMG_2658": { + "focal": [ + 46.6, + 43.7 + ], + "pois": [ + { + "t": "f", + "box": [ + 39.2, + 34.5, + 14.8, + 18.4 + ] + }, + { + "t": "b", + "box": [ + 58.5, + 68.9, + 8.4, + 5.2 + ] + } + ], + "aspect": 0.75, + "size": 1992798, + "master": "IMG_2658.HEIC", + "master_size": 1608793 + }, + "IMG_2668": { + "focal": [ + 39.4, + 24.5 + ], + "pois": [ + { + "t": "b", + "box": [ + 30.4, + 19, + 18, + 11 + ] + }, + { + "t": "b", + "box": [ + 40.7, + 68.8, + 8.6, + 5.3 + ] + } + ], + "aspect": 0.75, + "size": 1365145, + "master": "IMG_2668.heic", + "master_size": 1195972 + }, + "IMG_2905": { + "focal": [ + 47.5, + 40.1 + ], + "pois": [ + { + "t": "b", + "box": [ + 28.3, + 28.4, + 38.3, + 23.5 + ] + } + ], + "aspect": 0.75, + "size": 2497398, + "master": "IMG_2905.heic", + "master_size": 2304901 + }, + "IMG_2913": { + "focal": [ + 69.9, + 19.9 + ], + "pois": [ + { + "t": "b", + "box": [ + 67.7, + 18.5, + 4.5, + 2.7 + ] + }, + { + "t": "b", + "box": [ + 87, + 36.8, + 4.1, + 2.5 + ] + } + ], + "aspect": 0.75, + "size": 1042326, + "master": "IMG_2913.heic", + "master_size": 803125 + }, + "IMG_3017": { + "focal": [ + 37.6, + 81.5 + ], + "pois": [ + { + "t": "b", + "box": [ + 31.7, + 77.9, + 11.8, + 7.3 + ] + } + ], + "aspect": 0.75, + "size": 2446374, + "master": "IMG_3017.heic", + "master_size": 2562824 + }, + "IMG_3234": { + "focal": [ + 42.4, + 48.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 36.9, + 43.2, + 11.1, + 11.3 + ] + }, + { + "t": "b", + "box": [ + 27.1, + 34.8, + 15.4, + 9.4 + ] + } + ], + "aspect": 0.75, + "size": 1015178, + "master": "IMG_3234.heic", + "master_size": 806715 + }, + "IMG_4281": { + "focal": [ + 50.2, + 38.1 + ], + "pois": [ + { + "t": "f", + "box": [ + 44.5, + 31.3, + 11.4, + 13.6 + ] + }, + { + "t": "b", + "box": [ + 70.5, + 59.8, + 8.4, + 12.6 + ] + } + ], + "aspect": 0.75, + "size": 2303766, + "master": "IMG_4281.jpeg", + "master_size": 2303766 + }, + "IMG_4312": { + "focal": [ + 4.1, + 28.1 + ], + "pois": [ + { + "t": "f", + "box": [ + 0, + 18.6, + 8.2, + 19 + ] + }, + { + "t": "b", + "box": [ + 32.5, + 63.2, + 3.2, + 2 + ] + } + ], + "aspect": 0.75, + "size": 2657700, + "master": "IMG_4312.jpeg", + "master_size": 2657700 + }, + "IMG_4606": { + "focal": [ + 53.1, + 56.5 + ], + "pois": [ + { + "t": "f", + "box": [ + 28.6, + 31.6, + 48.9, + 49.8 + ] + } + ], + "aspect": 0.75, + "size": 1044546, + "master": "IMG_4606.heic", + "master_size": 970231 + }, + "IMG_4894": { + "focal": [ + 48, + 73.6 + ], + "pois": [ + { + "t": "b", + "box": [ + 44.4, + 71.4, + 7.2, + 4.4 + ] + }, + { + "t": "b", + "box": [ + 71.8, + 49.7, + 4.6, + 6.8 + ] + } + ], + "aspect": 0.75, + "size": 1564246, + "master": "IMG_4894.heic", + "master_size": 1428189 + }, + "IMG_4997": { + "focal": [ + 54, + 55.8 + ], + "pois": [ + { + "t": "b", + "box": [ + 52.3, + 53.2, + 3.4, + 5.1 + ] + } + ], + "aspect": 0.75, + "size": 2173587, + "master": "IMG_4997.heic", + "master_size": 1804730 + }, + "IMG_5043": { + "focal": [ + 40.8, + 43.4 + ], + "pois": [ + { + "t": "f", + "box": [ + 30.8, + 32.3, + 20.1, + 22.1 + ] + }, + { + "t": "b", + "box": [ + 31.9, + 69.9, + 4.8, + 3 + ] + } + ], + "aspect": 0.75, + "size": 1239460, + "master": "IMG_5043.HEIC", + "master_size": 1156692 + }, + "IMG_5050": { + "focal": [ + 65.6, + 53.7 + ], + "pois": [ + { + "t": "f", + "box": [ + 60.1, + 48.3, + 10.9, + 10.8 + ] + }, + { + "t": "b", + "box": [ + 21.9, + 43, + 16.5, + 10.1 + ] + } + ], + "aspect": 0.75, + "size": 1515666, + "master": "IMG_5050.heic", + "master_size": 1131254 + }, + "IMG_5272": { + "focal": [ + 62.3, + 53.4 + ], + "pois": [ + { + "t": "b", + "box": [ + 61, + 51.3, + 2.7, + 4.1 + ] + } + ], + "aspect": 0.75, + "size": 1978886, + "master": "IMG_5272.jpeg", + "master_size": 1978886 + }, + "IMG_5644": { + "focal": [ + 49, + 17.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 44.1, + 13.9, + 9.8, + 8 + ] + }, + { + "t": "b", + "box": [ + 32.7, + 19.9, + 11, + 5.1 + ] + } + ], + "aspect": 0.563, + "size": 1380329, + "master": "IMG_5644.heic", + "master_size": 1366318 + }, + "IMG_6342": { + "focal": [ + 62.3, + 28 + ], + "pois": [ + { + "t": "f", + "box": [ + 55.1, + 18.5, + 14.5, + 18.9 + ] + }, + { + "t": "b", + "box": [ + 10.7, + 69.4, + 23.7, + 14.6 + ] + } + ], + "aspect": 0.75, + "size": 1844946, + "master": "IMG_6342.jpeg", + "master_size": 1844946 + }, + "IMG_6367": { + "focal": [ + 44.1, + 34.3 + ], + "pois": [ + { + "t": "f", + "box": [ + 37.8, + 28.7, + 12.7, + 11.1 + ] + }, + { + "t": "b", + "box": [ + 60.4, + 4.8, + 3.6, + 2.2 + ] + } + ], + "aspect": 0.75, + "size": 1416580, + "master": "IMG_6367.HEIC", + "master_size": 1528443 + }, + "IMG_6435": { + "focal": [ + 48, + 37.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 37.9, + 27.2, + 20.2, + 21.1 + ] + }, + { + "t": "b", + "box": [ + 35.9, + 86, + 4.8, + 2.9 + ] + } + ], + "aspect": 0.75, + "size": 1604594, + "master": "IMG_6435.HEIC", + "master_size": 2105174 + }, + "IMG_8080": { + "focal": [ + 42.6, + 27.7 + ], + "pois": [ + { + "t": "f", + "box": [ + 36, + 20.8, + 13.1, + 13.9 + ] + }, + { + "t": "b", + "box": [ + 15.9, + 8.3, + 66.6, + 40.9 + ] + } + ], + "aspect": 0.75, + "size": 1580558, + "master": "IMG_8080.HEIC", + "master_size": 1420859 + }, + "IMG_8188": { + "focal": [ + 48.9, + 33.9 + ], + "pois": [ + { + "t": "f", + "box": [ + 37.9, + 24, + 21.8, + 19.9 + ] + }, + { + "t": "b", + "box": [ + 35, + 88.1, + 9.8, + 6 + ] + } + ], + "aspect": 0.75, + "size": 968035, + "master": "IMG_8188.heic", + "master_size": 903213 + }, + "IMG_8989": { + "focal": [ + 79.2, + 86.1 + ], + "pois": [ + { + "t": "b", + "box": [ + 76.7, + 84.6, + 5, + 3.1 + ] + } + ], + "aspect": 0.75, + "size": 1830983, + "master": "IMG_8989.HEIC", + "master_size": 2106687 + }, + "IMG_9795": { + "focal": [ + 31.2, + 22 + ], + "pois": [ + { + "t": "f", + "box": [ + 23.8, + 15.6, + 14.8, + 12.9 + ] + }, + { + "t": "b", + "box": [ + 21.3, + 51.5, + 4.3, + 2 + ] + } + ], + "aspect": 0.562, + "size": 2033875, + "master": "IMG_9795.heic", + "master_size": 2240240 + } + } + }, + "gens": { + "label": "Generated images — gpt-image-2 with platter-grounded identity (real+goofy default tone). One PNG per successful gen, dated. Synced to assets CDN via `npm run assets:sync:up`.", + "url_pattern": "https://assets.aesthetic.computer/jeffreys/gens/{name}", + "key_includes_extension": true, + "items": { + "recap-jeffrey-24h-01_title-2026-04-29T1625.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "01_title", + "generated": "2026-04-29T23:25:30.487Z", + "bytes": 2401086, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is sitting at a wooden home desk in a wrinkled t-shirt, holding up a single sheet of plain white printer paper next to his face. The paper has \"24 HRS\" hand-drawn on it in thick black sharpie, slightly crooked letters. He is giving a deadpan grin with one slightly raised eyebrow, mid-laugh, eye-contact with the camera. An open silver MacBook on the desk in the background shows a calendar app with a single highlighted day. Soft afternoon light from a window on the right, warm white balance. A hot-pink (#ff6b9d) coffee mug sits on the desk — the only pop of accent color. Wide shot, his whole upper body and the desk visible. Vertical, 1024x1536." + }, + "recap-jeffrey-24h-02_menuband-2026-04-29T1628.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "02_menuband", + "generated": "2026-04-29T23:28:27.056Z", + "bytes": 2481496, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is hunched over a silver MacBook on a kitchen table, leaning very close to the screen with one finger pointing dramatically at the upper-right corner of the display where a small popover window has appeared in the macOS menu bar. The popover on screen clearly shows: tiny illustrated piano keys at the bottom, a horizontal row of small square sample pads above the keys, and a thin audio visualizer with vertical cyan (#4ecdc4) and hot-pink (#ff6b9d) bars dancing. His other hand is hovering above the laptop keyboard miming a tiny piano-playing gesture, comically exaggerated. He is wearing a hoodie, slightly bedheaded. Bright midday natural light from a window. A real coffee mug sits next to the laptop. Real candid energy, slightly absurd, deadpan focus." + }, + "recap-jeffrey-24h-02_menuband-2026-04-29T1630.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "02_menuband", + "generated": "2026-04-29T23:30:09.003Z", + "bytes": 2520266, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is hunched over a silver MacBook on a kitchen table, leaning very close to the screen with one finger pointing dramatically at the upper-right corner of the display where a small popover window has appeared in the macOS menu bar. The popover on screen clearly shows: tiny illustrated piano keys at the bottom, a horizontal row of small square sample pads above the keys, and a thin audio visualizer with vertical cyan (#4ecdc4) and hot-pink (#ff6b9d) bars dancing. His other hand is hovering above the laptop keyboard miming a tiny piano-playing gesture, comically exaggerated. He is wearing a hoodie, slightly bedheaded. Bright midday natural light from a window. A real coffee mug sits next to the laptop. Real candid energy, slightly absurd, deadpan focus." + }, + "recap-jeffrey-24h-03_landing-2026-04-29T1631.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "03_landing", + "generated": "2026-04-29T23:31:22.601Z", + "bytes": 2568114, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is sitting on the floor of a bright apartment living room, legs crossed, with his silver MacBook perched on the seat of an armchair in front of him — an absurd ergonomic situation he is clearly content with. The laptop screen shows a web browser open to a website: a thin titlebar reading \"menuband\" in lowercase, a tiled wallpaper of small repeating musical-note glyphs in cream and pale yellow, and a tagline line of text beneath. He is leaning forward, scrolling with one finger on the trackpad, looking quietly pleased with himself. Soft warm lamp light from a floor lamp. A house plant in the corner. Wood floor, a rug. Real iPhone candid energy." + }, + "recap-jeffrey-24h-03_landing-2026-04-29T1633.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "03_landing", + "generated": "2026-04-29T23:33:01.366Z", + "bytes": 2277889, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is sitting on the floor of a bright apartment living room, legs crossed, with his silver MacBook perched on the seat of an armchair in front of him — an absurd ergonomic situation he is clearly content with. The laptop screen shows a web browser open to a website: a thin titlebar reading \"menuband\" in lowercase, a tiled wallpaper of small repeating musical-note glyphs in cream and pale yellow, and a tagline line of text beneath. He is leaning forward, scrolling with one finger on the trackpad, looking quietly pleased with himself. Soft warm lamp light from a floor lamp. A house plant in the corner. Wood floor, a rug. Real iPhone candid energy." + }, + "recap-jeffrey-24h-04_platter-2026-04-29T1634.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "04_platter", + "generated": "2026-04-29T23:34:20.266Z", + "bytes": 2420285, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at a home desk, his silver MacBook screen filled with a tight grid of small thumbnail portrait photos — dozens of headshots and selfies that are clearly all of HIM, the same man, across many years and outfits. He is holding a small printed 4x6 photograph of himself up beside the laptop screen, comparing the printed photo to one of the on-screen thumbnails with an exaggerated mock-puzzled expression — eyebrows together, lips pursed, mock-serious investigation. Soft afternoon light from a window. A normal bedroom or studio behind him, slightly cluttered. Real candid, slightly absurd recursion gag, deadpan." + }, + "recap-jeffrey-24h-04_platter-2026-04-29T1636.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "04_platter", + "generated": "2026-04-29T23:36:09.677Z", + "bytes": 2791024, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at a home desk, his silver MacBook screen filled with a tight grid of small thumbnail portrait photos — dozens of headshots and selfies that are clearly all of HIM, the same man, across many years and outfits. He is holding a small printed 4x6 photograph of himself up beside the laptop screen, comparing the printed photo to one of the on-screen thumbnails with an exaggerated mock-puzzled expression — eyebrows together, lips pursed, mock-serious investigation. Soft afternoon light from a window. A normal bedroom or studio behind him, slightly cluttered. Real candid, slightly absurd recursion gag, deadpan." + }, + "recap-jeffrey-24h-05_lith-2026-04-29T1637.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "05_lith", + "generated": "2026-04-29T23:37:26.043Z", + "bytes": 2598490, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is crouched on the floor underneath his home desk, surrounded by a real tangle of black ethernet and power cables, with a silver laptop balanced precariously on his knees. The laptop screen shows a terminal window with \"Caddyfile\" config text — multiple lines of routing rules — and one specific \"try_files\" line highlighted in orange (#ff8a3d). Bright yellow sticky notes are stuck to the underside of the desk above him reading \"CADDY\" and \"WEBHOOK\" in black sharpie. He is holding a coffee mug in his free hand, deadpan, looking up directly at the camera with mock weariness. Slightly dim under-the-desk light from the laptop glow plus one warm lamp peeking in from beyond the desk. Real, deadpan, very \"him\"." + }, + "recap-jeffrey-24h-05_lith-2026-04-29T1639.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "05_lith", + "generated": "2026-04-29T23:39:21.239Z", + "bytes": 2094673, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is crouched on the floor underneath his home desk, surrounded by a real tangle of black ethernet and power cables, with a silver laptop balanced precariously on his knees. The laptop screen shows a terminal window with \"Caddyfile\" config text — multiple lines of routing rules — and one specific \"try_files\" line highlighted in orange (#ff8a3d). Bright yellow sticky notes are stuck to the underside of the desk above him reading \"CADDY\" and \"WEBHOOK\" in black sharpie. He is holding a coffee mug in his free hand, deadpan, looking up directly at the camera with mock weariness. Slightly dim under-the-desk light from the laptop glow plus one warm lamp peeking in from beyond the desk. Real, deadpan, very \"him\"." + }, + "recap-jeffrey-24h-06_say-2026-04-29T1640.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "06_say", + "generated": "2026-04-29T23:40:24.091Z", + "bytes": 2594245, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at his home desk, the silver MacBook screen showing a scrolling list of text snippets — each row a short hand-written-style phrase next to a tiny green-on-black audio waveform thumbnail. Stacks of old microcassette tapes and one chunky USB cassette reader are piled on the desk around the laptop. He is holding a single cassette tape up to the laptop's built-in microphone in a mock-serious \"recording in progress\" pose, eyes wide deadpan, mouth slightly open as if to whisper into the tape. The wall behind him has five or six small sticky notes, each with a hand-written quoted phrase in sharpie. Warm afternoon light. Real, very absurd, very \"jeffrey\"." + }, + "recap-jeffrey-24h-06_say-2026-04-29T1642.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "06_say", + "generated": "2026-04-29T23:42:26.333Z", + "bytes": 2666505, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at his home desk, the silver MacBook screen showing a scrolling list of text snippets — each row a short hand-written-style phrase next to a tiny green-on-black audio waveform thumbnail. Stacks of old microcassette tapes and one chunky USB cassette reader are piled on the desk around the laptop. He is holding a single cassette tape up to the laptop's built-in microphone in a mock-serious \"recording in progress\" pose, eyes wide deadpan, mouth slightly open as if to whisper into the tape. The wall behind him has five or six small sticky notes, each with a hand-written quoted phrase in sharpie. Warm afternoon light. Real, very absurd, very \"jeffrey\"." + }, + "recap-jeffrey-24h-07_oven-2026-04-29T1643.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "07_oven", + "generated": "2026-04-29T23:43:27.519Z", + "bytes": 2322736, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at his home desk wearing a pair of bright red kitchen oven mitts, lifting a thick stack of warm printed paper out of an open cardboard moving box on the desk. The box has \"PDF\" written on the side in chunky black marker. The silver laptop next to the box on the desk shows a terminal log scrolling with repeating lines like \"[papers] oven auto-build: 6 PDFs updated\". He is giving a deadpan flat expression to the camera, mouth straight. Behind him on a low shelf, more stacks of warm-looking paper sit on a wire metal cooling rack like baked goods cooling. Late golden-hour window light. Real candid, deadpan, slightly absurd." + }, + "recap-jeffrey-24h-07_oven-2026-04-29T1645.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "07_oven", + "generated": "2026-04-29T23:45:43.835Z", + "bytes": 2688064, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at his home desk wearing a pair of bright red kitchen oven mitts, lifting a thick stack of warm printed paper out of an open cardboard moving box on the desk. The box has \"PDF\" written on the side in chunky black marker. The silver laptop next to the box on the desk shows a terminal log scrolling with repeating lines like \"[papers] oven auto-build: 6 PDFs updated\". He is giving a deadpan flat expression to the camera, mouth straight. Behind him on a low shelf, more stacks of warm-looking paper sit on a wire metal cooling rack like baked goods cooling. Late golden-hour window light. Real candid, deadpan, slightly absurd." + }, + "recap-jeffrey-24h-08_outro-2026-04-29T1646.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "08_outro", + "generated": "2026-04-29T23:46:25.982Z", + "bytes": 2370509, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is leaning back in his desk chair holding a coffee mug, giving a small exaggerated wave to the camera with his free hand. The silver laptop in front of him on the desk shows a screen reading \"thanks for watching\" in a calm cream-on-dark text layout with a thin cyan and pink underline. He is giving a small relaxed smile, real eye contact with the camera. Comfortable home setting — desk lamp on, evening softness, warm white balance. Wood desk, a houseplant or two visible. Real iPhone candid snapshot energy." + }, + "recap-jeffrey-24h-08_outro-2026-04-29T1649.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "08_outro", + "generated": "2026-04-29T23:49:09.690Z", + "bytes": 2284526, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is leaning back in his desk chair holding a coffee mug, giving a small exaggerated wave to the camera with his free hand. The silver laptop in front of him on the desk shows a screen reading \"thanks for watching\" in a calm cream-on-dark text layout with a thin cyan and pink underline. He is giving a small relaxed smile, real eye contact with the camera. Comfortable home setting — desk lamp on, evening softness, warm white balance. Wood desk, a houseplant or two visible. Real iPhone candid snapshot energy." + } } } } diff --git a/recap/SCORE.md b/recap/SCORE.md index 259523cb2..ce6634103 100644 --- a/recap/SCORE.md +++ b/recap/SCORE.md @@ -12,7 +12,8 @@ production. ## Pipeline ``` -audience/.mjs (narration + segment markers + slide HTML/queries + voice + transcriptFixes) +audience/.mjs (narration + segment markers + slide HTML/queries + voice + transcriptFixes + + optional per-slide `metaphor` for jeffrey-photos) │ ▼ bin/tts.mjs out/recap.mp3 (jeffrey-pvc TTS via /api/say) @@ -22,6 +23,9 @@ out/words.json ([{text, fromMs, toMs}, ...]) │ ▼ bin/align.mjs (matches audience.segments[].marker) out/segments.json ([{name, startSec, endSec, durationSec}, ...]) + │ + ▼ bin/jeffrey-photos.mjs (optional; OpenAI gpt-image-2 + platter SHOOT+SELFIE refs) +out/jeffrey-photos/.png (cached per segment; --force regenerates; failures are soft) │ ▼ bin/scout.mjs (resolves per-slide content queries; pdftoppm for PDFs) out/assets.json (slide-name → {queryName: dataUrl|commits|paths}) @@ -164,15 +168,18 @@ Then `./pipeline.fish `. | File | Role | | ------------------------ | ------------------------------------------------------------- | | `audience/fia.mjs` | narration, markers, slide HTML/queries, palette, fixes | +| `audience/general.mjs` | 48-hour public-facing recap (HTML slides, no jeffrey-photos) | +| `audience/jeffrey-24h.mjs` | 24-hour jeffrey-as-protagonist recap (full-bleed photos) | | `bin/tts.mjs` | POST narration → `/api/say` → `out/recap.mp3` | | `bin/transcribe.mjs` | `whisper-cli` → `out/words.json` | | `bin/align.mjs` | match markers in transcript → `out/segments.json` | +| `bin/jeffrey-photos.mjs` | gpt-image-2 + platter refs → `out/jeffrey-photos/.png` | | `bin/scout.mjs` | resolve per-slide content queries → `out/assets.json` | | `bin/slides.mjs` | puppeteer-render slide PNGs (consume assets) + `concat.txt` | | `bin/subtitles.mjs` | chunk words into pills (apply transcriptFixes) → `subs.json` | | `bin/build-filter.mjs` | emit ffmpeg filter graph for compose (one overlay per sub) | | `bin/compose.fish` | ffmpeg compose final mp4 | -| `pipeline.fish` | runs all six stages | +| `pipeline.fish` | runs all seven stages | | `models/ggml-base.en.bin`| whisper model (gitignored, downloaded on first run) | | `out/` | all generated artifacts (gitignored) | @@ -184,3 +191,26 @@ Then `./pipeline.fish `. - `node` (uses `oven/node_modules/puppeteer` to avoid extra installs) - Google Chrome at `/Applications/Google Chrome.app` (puppeteer driver) - Network access to `aesthetic.computer/api/say` (jeffrey-pvc TTS) +- `OPENAI_API_KEY` (for `jeffrey-photos.mjs`; read from env or + `aesthetic-computer-vault/.devcontainer/envs/devcontainer.env`); only required + for audiences that declare per-slide `metaphor` prompts. + +## Jeffrey photos (optional per-audience) + +An audience can opt into full-bleed gpt-image-2 photos by adding a `metaphor` +field to each content slide and a `queries.photo: { glob: ... }` that points to +`recap/out/jeffrey-photos/.png`. `bin/jeffrey-photos.mjs` reads the +metaphor strings, calls `images.edit` with `gpt-image-2` and the platter +SHOOT_REFS + SELFIE_REFS for identity grounding, and writes one PNG per segment. + +```fish +# regen all photos for an audience +node bin/jeffrey-photos.mjs jeffrey-24h --force + +# regen one segment only +node bin/jeffrey-photos.mjs jeffrey-24h --only 04_platter --force +``` + +Cost ~$0.30 per high-quality 1024x1536 generation; ~$2-4 per full recap. +Failures are soft — slides fall back to a dark `${PALETTE.bg}` placeholder when +the photo glob matches nothing, so the pipeline still produces a runnable mp4. diff --git a/recap/audience/general.mjs b/recap/audience/general.mjs new file mode 100644 index 000000000..5a29d164b --- /dev/null +++ b/recap/audience/general.mjs @@ -0,0 +1,259 @@ +// Audience config: general (public-facing 48-hour recap). +// Voice: jeffrey-pvc (default in /api/say). Style: lowercase, calm, +// descriptive. No nicknames, no rhyme — accessible to anyone who has +// never heard of aesthetic computer. +// +// `narration` is the verbatim text POSTed to /api/say. Markers in +// `segments` are matched (case-insensitive, punctuation-stripped) +// against whisper's word-level transcript, so each marker phrase must +// appear verbatim in the narration. + +export const PALETTE = { + bg: "#0c1430", + accent: "#ff8a3d", + cyan: "#70f0e0", + lime: "#a0f070", + magenta: "#ff70d0", + yellow: "#ffd860", + cream: "#fcf7c5", + off: "#ffffffcc", + dim: "#7886b0", +}; + +export const audience = { + name: "general", + handle: "@everyone", + voice: { provider: "jeffrey", voice: "neutral:0" }, + + narration: `hey everybody, here's a quick window into the last two days at aesthetic computer. the headline this round is yergersnap — a tiny mac menubar app that snaps an iphone screen into a paintable canvas, with percussion sounds on every click and an icon painted by julia yerger. on the keyboard side, notepat picked up two new bandmates — piano man and sample sally — characters with eye-tracking pupils that follow whichever notes you play. underneath the hood, the whole audio engine moved off karplus-strong synthesis onto a salamander grand piano sample bank, so chords actually breathe now. on the native side, ac-os gained bootpics — webcam snapshots taken at boot and shutdown, a tiny diary of every session. the say piece now logs every utterance to a database, so we can replay what the computer has said over time. a new papers pipeline grew around penrose, a constraint-based diagram language for academic figures. through it all, the oven kept compiling pdfs in the background. that's the week — thanks for watching.`, + + // Whisper renders these dictionary-style; rewrite the displayed subtitles. + // Order matters — longer/multi-word fixes first so they win before + // single-word fixes can rewrite a substring. + transcriptFixes: { + "carpless strong synthesis": "karplus-strong synthesis", + "carpless strong": "karplus-strong", + "saypiece": "say piece", + "paper's pipeline": "papers pipeline", + "Yerger Snap": "yergersnap", + "Yergersnap": "yergersnap", + "bootpicks": "bootpics", + "boot pics": "bootpics", + "BootPics": "bootpics", + "Notepad": "notepat", + "ACOs": "ac-os", + "ACOS": "ac-os", + "AC OS": "ac-os", + "menu bar": "menubar", + "Sample Sally": "sample sally", + "Piano Man": "piano man", + }, + + segments: [ + { name: "01_title", marker: "hey everybody" }, + { name: "02_yergersnap", marker: "the headline this round" }, + { name: "03_notepat", marker: "on the keyboard side" }, + { name: "04_audio", marker: "underneath the hood" }, + { name: "05_native", marker: "on the native side" }, + // Whisper merges "say piece" into one word "saypiece" — anchor on + // the next clean phrase. The displayed subtitle is fixed back to + // "say piece" via transcriptFixes. + { name: "06_say", marker: "logs every utterance" }, + // Whisper hears "paper's pipeline"; the apostrophe splits the token, + // so anchor on the next clean phrase instead. + { name: "07_papers", marker: "grew around penrose" }, + { name: "08_oven", marker: "through it all" }, + { name: "09_outro", marker: "thanks for watching" }, + { name: "10_end", marker: "__END__", trailingSilenceSec: 3 }, + ], + + slides: { + "01_title": ` +
+
+
+
aesthetic computer
+
recap
+
the last 48 hours
+
+
2026·04·26 → 2026·04·28
+
`, + + "02_yergersnap": { + queries: { + icon: { glob: "slab/yergersnap/icon.iconset/icon_512x512.png" }, + commits: { commits: "yergersnap|MirrorTap|iphone-mirror-tap", since: "48 hours ago", limit: 5 }, + }, + body: ({ icon, commits }) => ` +
+
01 / 08 · yergersnap
+
+ ${icon ? `` : ""} +
yergersnap
+
+
+ a mac menubar app that snaps your
+ iphone screen into a paintable canvas. +
+
+ ${(commits || []).map((c) => `
${c.hash.slice(0, 4)}${(c.subject.split(":").slice(1).join(":").trim() || c.subject).slice(0, 60)}
`).join("")} +
+
"icon painted by julia yerger."
+
`, + }, + + "03_notepat": { + queries: { + icon: { glob: "ac-electron/build/icon.png" }, + paper: { glob: "system/public/papers.aesthetic.computer/notepat-26-arxiv-cards.pdf", pdfPage: 1, pdfWidth: 600 }, + commits: { commits: "^notepat|Piano Man|Sample Sally|piano-man|sample-sally", since: "48 hours ago", limit: 5 }, + }, + body: ({ icon, paper, commits }) => ` +
+
02 / 08 · notepat
+
+ ${icon ? `` : ""} +
two new bandmates
+
+
+ piano man and sample sally —
+ eye-tracking pupils follow your notes. +
+
+
+ ${(commits || []).map((c) => `
${c.hash.slice(0, 4)}${(c.subject.split(":").slice(1).join(":").trim() || c.subject).slice(0, 56)}
`).join("")} +
+ ${paper ? `` : ""} +
+
`, + }, + + "04_audio": { + queries: { + commits: { commits: "Salamander|Karplus|piano sample|piano:|^audio:|piano rewrite", since: "48 hours ago", limit: 5 }, + }, + body: ({ commits }) => ` +
+
03 / 08 · audio
+
chords that breathe
+
+ karplus-strong synthesis →
+ salamander grand piano sample bank. +
+
+ ${(commits || []).map((c) => `
${c.hash.slice(0, 4)}${(c.subject.split(":").slice(1).join(":").trim() || c.subject).slice(0, 60)}
`).join("")} +
+
`, + }, + + "05_native": { + queries: { + commits: { commits: "bootpics|^ac-native|^fedac/native|^ac-os|ac-device|ac-inscribe", since: "48 hours ago", limit: 6 }, + }, + body: ({ commits }) => ` +
+
04 / 08 · ac-os
+
bootpics
+
+ webcam snapshots at boot + shutdown —
+ a tiny diary of every session. +
+
+ ${(commits || []).map((c) => `
${c.hash.slice(0, 4)}${(c.subject.split(":").slice(1).join(":").trim() || c.subject).slice(0, 60)}
`).join("")} +
+
`, + }, + + "06_say": { + queries: { + commits: { commits: "say:|sayings|backfill-sayings|^system/say", since: "48 hours ago", limit: 5 }, + }, + body: ({ commits }) => ` +
+
05 / 08 · say
+
every utterance, logged
+
+ the say piece now writes each line
+ to a mongo collection — replayable. +
+
+ ${(commits || []).map((c) => `
${c.hash.slice(0, 4)}${(c.subject.split(":").slice(1).join(":").trim() || c.subject).slice(0, 60)}
`).join("")} +
+
`, + }, + + "07_papers": { + queries: { + commits: { commits: "penrose|arxiv-penrose", since: "48 hours ago", limit: 4 }, + }, + body: ({ commits }) => ` +
+
06 / 08 · papers
+
penrose pipeline
+
+ constraint-based diagrams,
+ compiled into academic figures. +
+
+
arxiv-penrose
+
declarative figure pipeline
+
tex · references · ac-paper-layout
+
+
+ ${(commits || []).map((c) => `
${c.hash.slice(0, 4)}${(c.subject.split(":").slice(1).join(":").trim() || c.subject).slice(0, 60)}
`).join("")} +
+
`, + }, + + "08_oven": { + queries: { + ovenCommits: { commits: "oven", since: "48 hours ago", limit: 6 }, + recentPdfs: { files: "system/public/papers.aesthetic.computer/*.pdf", sinceHours: 48, limit: 60 }, + }, + body: ({ ovenCommits, recentPdfs }) => { + const stems = new Set(); + for (const p of recentPdfs || []) { + stems.add(p.split("/").pop().replace(/-26-arxiv(-cards|-da|-es|-zh|-ja)?\.pdf$/, "")); + } + const distinct = [...stems]; + return ` +
+
07 / 08 · oven
+
papers, baking
+
+ ${distinct.length} distinct papers refreshed,
+ ${(recentPdfs || []).length} files in 48 hrs. +
+
+ ${(ovenCommits || []).slice(0, 4).map((c) => `
${c.hash.slice(0, 4)} ${c.subject.replace(/^\[?papers\]?[\s:]*/i, "").slice(0, 60)}
`).join("")} +
+
+ ${distinct.slice(0, 12).map((s) => `
${s.replace(/-/g, " ")}
`).join("")} +
+
`; + }, + }, + + "09_outro": ` +
+
08 / 08 · outro
+
+
that's the week.
+
thanks for watching.
+
+
+ aesthetic.computer +
+
`, + + "10_end": ` +
+
+
aesthetic·computer
+
narrated by jeffrey-pvc · @jeffrey
+
2026·04·28
+
`, + }, +}; + +export default audience; diff --git a/recap/audience/jeffrey-24h.mjs b/recap/audience/jeffrey-24h.mjs new file mode 100644 index 000000000..4de200b41 --- /dev/null +++ b/recap/audience/jeffrey-24h.mjs @@ -0,0 +1,298 @@ +// Audience config: jeffrey-24h (last 24 hours, photographic / jeffrey-as-protagonist). +// Voice: jeffrey-pvc. Style: lowercase, calm, descriptive. +// +// Each content slide is a full-bleed gpt-image-2 photo (jeffrey at a real home +// desk, using the imagined feature on his laptop) with a bottom-third gradient +// overlay carrying chapter / title / caption text. Photos are pre-baked by +// `bin/jeffrey-photos.mjs` into recap/out/jeffrey-photos/.png and +// loaded via the standard scout `glob:` query. +// +// `metaphor` on each slide is the prompt fed to gpt-image-2 (with the platter +// SHOOT_REFS + SELFIE_REFS for identity grounding). It is ignored by slides.mjs. + +export const PALETTE = { + bg: "#0c1430", + accent: "#ff8a3d", + cyan: "#70f0e0", + lime: "#a0f070", + magenta: "#ff70d0", + yellow: "#ffd860", + cream: "#fcf7c5", + off: "#ffffffcc", + dim: "#7886b0", +}; + +// Shared identity + tone preamble. Real iphone-snapshot energy, NOT cinematic. +const REAL = `\ +Photographic candid lifestyle photo of the man in the reference photos. Real \ +photograph, photo-realistic, the kind of casual iPhone snapshot a friend would \ +take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT \ +magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center \ +framing, real natural room light. Identity: same face, same medium-length brown \ +hair, same actual features as the references — recognizably him across the \ +various refs. Keep real skin texture; do NOT smooth or prettify. He is at a \ +real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). \ +Real, deadpan, very "him". Vertical 1024x1536 portrait orientation.`; + +export const audience = { + name: "jeffrey-24h", + handle: "@jeffrey", + voice: { provider: "jeffrey", voice: "neutral:0" }, + + narration: `hey everybody, here's a quick window into the last twenty-four hours at aesthetic computer. the headline this round is menuband — version 0.3 of the mac menubar app shipped with a real audio synth, sample pads, a metal-rendered visualizer, and click sounds on every key. the landing page got a fresh polish too — a thinner window, a wackier note pattern, and a tagline that quietly digs at garageband. on the visual side, jeffrey-platter went public — a dashboard of every confirmed jeffrey portrait now lives at papers dot aesthetic dot computer slash jeffrey. underneath the hood, lith got new caddy plumbing — an install-before-reload webhook, an explicit redirect, and a try-files chain that finally serves the platter cleanly. on the backend, the say piece grew a little time machine — a rehydrate script pulls every old utterance back from cache into the database. through it all, the oven kept its rhythm, baking three hundred plus pdf updates in the background. that's the day. thanks for watching, and i'll be back tomorrow with the next twenty-four.`, + + // Whisper renders these dictionary-style; rewrite the displayed subtitles. + // Order matters: longer/multi-word fixes first. + transcriptFixes: { + "a static computer": "aesthetic computer", + "static computer": "aesthetic computer", + "papers.aesthetic.com/jeffrey": "papers.aesthetic.computer/jeffrey", + "Jeffrey-Platter": "jeffrey-platter", + "Jeffrey Platter": "jeffrey-platter", + "jeffrey platter": "jeffrey-platter", + "Menu Band": "menuband", + "menu band": "menuband", + "Menuband": "menuband", + "Menu Bar": "menubar", + "menu bar": "menubar", + "Garage Band": "garageband", + "garage band": "garageband", + "GarageBand": "garageband", + "tri-files": "try-files", + "Lyth": "lith", + "Lith": "lith", + "Caddy": "caddy", + "TTS": "tts", + "MongoDB": "mongo", + "Mac": "mac", + "MacBook": "macbook", + "Jeffrey": "jeffrey", + }, + + segments: [ + { name: "01_title", marker: "hey everybody" }, + { name: "02_menuband", marker: "the headline this round" }, + { name: "03_landing", marker: "the landing page" }, + { name: "04_platter", marker: "went public" }, + { name: "05_lith", marker: "got new caddy plumbing" }, + { name: "06_say", marker: "grew a little time machine" }, + { name: "07_oven", marker: "through it all" }, + { name: "08_outro", marker: "thanks for watching" }, + { name: "09_end", marker: "__END__", trailingSilenceSec: 3 }, + ], + + slides: { + "01_title": { + metaphor: `${REAL} + +Scene: he is sitting at a wooden home desk in a wrinkled t-shirt, holding up a \ +single sheet of plain white printer paper next to his face. The paper has \ +"24 HRS" hand-drawn on it in thick black sharpie, slightly crooked letters. He \ +is giving a deadpan grin with one slightly raised eyebrow, mid-laugh, \ +eye-contact with the camera. An open silver MacBook on the desk in the \ +background shows a calendar app with a single highlighted day. Soft afternoon \ +light from a window on the right, warm white balance. A hot-pink (#ff6b9d) \ +coffee mug sits on the desk — the only pop of accent color. Wide shot, his \ +whole upper body and the desk visible. Vertical, 1024x1536.`, + queries: { photo: { glob: "recap/out/jeffrey-photos/01_title.png" } }, + body: ({ photo }) => photoSlide({ + photo, + chapter: "00 / 08 · the last 24 hours", + title: "aesthetic computer", + cap: "2026·04·29", + titleColor: PALETTE.cream, + chapterColor: PALETTE.cyan, + }), + }, + + "02_menuband": { + metaphor: `${REAL} + +Scene: he is hunched over a silver MacBook on a kitchen table, leaning very \ +close to the screen with one finger pointing dramatically at the upper-right \ +corner of the display where a small popover window has appeared in the macOS \ +menu bar. The popover on screen clearly shows: tiny illustrated piano keys at \ +the bottom, a horizontal row of small square sample pads above the keys, and a \ +thin audio visualizer with vertical cyan (#4ecdc4) and hot-pink (#ff6b9d) bars \ +dancing. His other hand is hovering above the laptop keyboard miming a tiny \ +piano-playing gesture, comically exaggerated. He is wearing a hoodie, slightly \ +bedheaded. Bright midday natural light from a window. A real coffee mug sits \ +next to the laptop. Real candid energy, slightly absurd, deadpan focus.`, + queries: { photo: { glob: "recap/out/jeffrey-photos/02_menuband.png" } }, + body: ({ photo }) => photoSlide({ + photo, + chapter: "01 / 07 · menuband", + title: "menuband 0.3", + cap: "synth · sample pads · metal visualizer · click sounds", + titleColor: PALETTE.accent, + chapterColor: PALETTE.cyan, + }), + }, + + "03_landing": { + metaphor: `${REAL} + +Scene: he is sitting on the floor of a bright apartment living room, legs \ +crossed, with his silver MacBook perched on the seat of an armchair in front \ +of him — an absurd ergonomic situation he is clearly content with. The laptop \ +screen shows a web browser open to a website: a thin titlebar reading \ +"menuband" in lowercase, a tiled wallpaper of small repeating musical-note \ +glyphs in cream and pale yellow, and a tagline line of text beneath. He is \ +leaning forward, scrolling with one finger on the trackpad, looking quietly \ +pleased with himself. Soft warm lamp light from a floor lamp. A house plant in \ +the corner. Wood floor, a rug. Real iPhone candid energy.`, + queries: { photo: { glob: "recap/out/jeffrey-photos/03_landing.png" } }, + body: ({ photo }) => photoSlide({ + photo, + chapter: "02 / 07 · landing page", + title: "thinner window,\nwackier notes", + cap: "menuband.aesthetic.computer", + titleColor: PALETTE.yellow, + chapterColor: PALETTE.cyan, + }), + }, + + "04_platter": { + metaphor: `${REAL} + +Scene: he is at a home desk, his silver MacBook screen filled with a tight \ +grid of small thumbnail portrait photos — dozens of headshots and selfies that \ +are clearly all of HIM, the same man, across many years and outfits. He is \ +holding a small printed 4x6 photograph of himself up beside the laptop screen, \ +comparing the printed photo to one of the on-screen thumbnails with an \ +exaggerated mock-puzzled expression — eyebrows together, lips pursed, \ +mock-serious investigation. Soft afternoon light from a window. A normal \ +bedroom or studio behind him, slightly cluttered. Real candid, slightly \ +absurd recursion gag, deadpan.`, + queries: { photo: { glob: "recap/out/jeffrey-photos/04_platter.png" } }, + body: ({ photo }) => photoSlide({ + photo, + chapter: "03 / 07 · jeffrey-platter", + title: "the dashboard,\npublic now", + cap: "papers.aesthetic.computer/jeffrey/", + titleColor: PALETTE.magenta, + chapterColor: PALETTE.cyan, + }), + }, + + "05_lith": { + metaphor: `${REAL} + +Scene: he is crouched on the floor underneath his home desk, surrounded by a \ +real tangle of black ethernet and power cables, with a silver laptop balanced \ +precariously on his knees. The laptop screen shows a terminal window with \ +"Caddyfile" config text — multiple lines of routing rules — and one specific \ +"try_files" line highlighted in orange (#ff8a3d). Bright yellow sticky notes \ +are stuck to the underside of the desk above him reading "CADDY" and \ +"WEBHOOK" in black sharpie. He is holding a coffee mug in his free hand, \ +deadpan, looking up directly at the camera with mock weariness. Slightly dim \ +under-the-desk light from the laptop glow plus one warm lamp peeking in from \ +beyond the desk. Real, deadpan, very "him".`, + queries: { photo: { glob: "recap/out/jeffrey-photos/05_lith.png" } }, + body: ({ photo }) => photoSlide({ + photo, + chapter: "04 / 07 · lith caddy", + title: "install before\nreload", + cap: "webhook · redirect · try_files", + titleColor: PALETTE.accent, + chapterColor: PALETTE.cyan, + }), + }, + + "06_say": { + metaphor: `${REAL} + +Scene: he is at his home desk, the silver MacBook screen showing a scrolling \ +list of text snippets — each row a short hand-written-style phrase next to a \ +tiny green-on-black audio waveform thumbnail. Stacks of old microcassette \ +tapes and one chunky USB cassette reader are piled on the desk around the \ +laptop. He is holding a single cassette tape up to the laptop's built-in \ +microphone in a mock-serious "recording in progress" pose, eyes wide deadpan, \ +mouth slightly open as if to whisper into the tape. The wall behind him has \ +five or six small sticky notes, each with a hand-written quoted phrase in \ +sharpie. Warm afternoon light. Real, very absurd, very "jeffrey".`, + queries: { photo: { glob: "recap/out/jeffrey-photos/06_say.png" } }, + body: ({ photo }) => photoSlide({ + photo, + chapter: "05 / 07 · say", + title: "every utterance,\nrehydrated", + cap: "tts-cache → mongo · backfill-sayings", + titleColor: PALETTE.lime, + chapterColor: PALETTE.cyan, + }), + }, + + "07_oven": { + metaphor: `${REAL} + +Scene: he is at his home desk wearing a pair of bright red kitchen oven mitts, \ +lifting a thick stack of warm printed paper out of an open cardboard moving \ +box on the desk. The box has "PDF" written on the side in chunky black \ +marker. The silver laptop next to the box on the desk shows a terminal log \ +scrolling with repeating lines like "[papers] oven auto-build: 6 PDFs \ +updated". He is giving a deadpan flat expression to the camera, mouth \ +straight. Behind him on a low shelf, more stacks of warm-looking paper sit on \ +a wire metal cooling rack like baked goods cooling. Late golden-hour window \ +light. Real candid, deadpan, slightly absurd.`, + queries: { photo: { glob: "recap/out/jeffrey-photos/07_oven.png" } }, + body: ({ photo }) => photoSlide({ + photo, + chapter: "06 / 07 · oven", + title: "papers, baking", + cap: "305 auto-builds in 24 hours", + titleColor: PALETTE.yellow, + chapterColor: PALETTE.cyan, + }), + }, + + "08_outro": { + metaphor: `${REAL} + +Scene: he is leaning back in his desk chair holding a coffee mug, giving a \ +small exaggerated wave to the camera with his free hand. The silver laptop in \ +front of him on the desk shows a screen reading "thanks for watching" in a \ +calm cream-on-dark text layout with a thin cyan and pink underline. He is \ +giving a small relaxed smile, real eye contact with the camera. Comfortable \ +home setting — desk lamp on, evening softness, warm white balance. Wood desk, \ +a houseplant or two visible. Real iPhone candid snapshot energy.`, + queries: { photo: { glob: "recap/out/jeffrey-photos/08_outro.png" } }, + body: ({ photo }) => photoSlide({ + photo, + chapter: "07 / 07 · outro", + title: "thanks for\nwatching", + cap: "aesthetic.computer · @jeffrey", + titleColor: PALETTE.cream, + chapterColor: PALETTE.cyan, + }), + }, + + "09_end": ` +
+
+
aesthetic·computer
+
narrated by jeffrey-pvc · @jeffrey
+
2026·04·29
+
`, + }, +}; + +// Renders a full-bleed photo slide with a TOP gradient overlay carrying the +// chapter / title / caption text. Top padding leaves room for Instagram-stories +// progress chips and other top-of-frame UI. `position: fixed` ignores the +// body's 80px / 70px padding so the photo genuinely fills 1080x1920. +function photoSlide({ photo, chapter, title, cap, titleColor, chapterColor }) { + const titleHtml = title.split("\n").map((l) => `
${l}
`).join(""); + return ` +
+ ${photo + ? `` + : `
`} +
+
${chapter}
+
${titleHtml}
+
${cap}
+
+
`; +} + +export default audience; diff --git a/recap/bin/build-filter.mjs b/recap/bin/build-filter.mjs index 2f123900d..fd6fa4dd2 100755 --- a/recap/bin/build-filter.mjs +++ b/recap/bin/build-filter.mjs @@ -2,7 +2,9 @@ // build-filter.mjs — emit the ffmpeg filter_complex graph for compose.fish. // Reads out/subs.json and stitches one overlay per subtitle chunk into the // video chain so each chunk appears only between its [startSec, endSec]. -// Subs sit in the lower-middle, above the waveform, with a translucent pill. +// Subs sit at the top of the frame so they don't collide with the slide's +// bottom-third title overlay; the waveform sits at the same y, layered behind +// the pill so it animates "through" the subtitle. // Usage: node bin/build-filter.mjs (writes graph to stdout) import { readFileSync } from "node:fs"; @@ -19,15 +21,19 @@ if (!TOTAL) { const subs = JSON.parse(readFileSync(`${ROOT}/out/subs.json`, "utf8")); -// Subtitle band sits at y=1180 (just above the waveform at y=1720). +// Subtitle band lives just above the progress bar at the bottom of the frame, +// below the slide's title overlay. Sub PNGs are 1080×220 with the pill centered. +// Waveform is parked at the same vertical area so the pill sits in front of +// the dancing line. // Centered horizontally — sub PNGs are 1080×220 so x=0. -const SUB_Y = 1180; +const SUB_Y = 1690; +const WAVE_Y = 1752; // 1080×96 waveform centered behind the sub pill (~y 1752–1848) const lines = []; lines.push(`[0:v]format=yuv420p,fps=30,scale=1080:1920,setsar=1[bg]`); lines.push(`[1:a]apad=whole_dur=${TOTAL},asplit=2[a1][a2]`); lines.push(`[a2]showwaves=s=1080x96:colors=0xff70d0|0x70f0e0:mode=cline:rate=30,format=rgba,colorchannelmixer=aa=0.55[wave]`); -lines.push(`[bg][wave]overlay=x=0:y=1920-200:format=auto[bg2]`); +lines.push(`[bg][wave]overlay=x=0:y=${WAVE_Y}:format=auto[bg2]`); lines.push(`[bg2]drawbox=x=0:y=1912:w='iw*t/${TOTAL}':h=8:color=0xff69b4:t=fill[v0]`); let prev = "v0"; diff --git a/recap/bin/jeffrey-photos.mjs b/recap/bin/jeffrey-photos.mjs new file mode 100755 index 000000000..8d981918e --- /dev/null +++ b/recap/bin/jeffrey-photos.mjs @@ -0,0 +1,200 @@ +#!/usr/bin/env node +// jeffrey-photos.mjs — pre-pipeline step. For each segment in the audience +// config that has a `metaphor` field, call OpenAI gpt-image-2 (images.edit) +// with the platter SHOOT_REFS + SELFIE_REFS for identity grounding and save +// the result to recap/out/jeffrey-photos/.png. +// +// Each successful generation is also archived into the jeffrey platter as a +// new entry in the `gens` bucket: a dated copy of the PNG goes to +// system/public/assets/jeffreys/gens/--.png (synced to +// the CDN by `npm run assets:sync:up`), and an item with full provenance +// (model, refs, prompt, context, segment, timestamp) is appended to +// papers/jeffrey-platter/manifest.json under buckets.gens.items. +// +// Caching: skip if the working pipeline cache already exists; pass --force to +// regen. Run a single segment by name: --only 02_menuband. +// +// Usage: +// node bin/jeffrey-photos.mjs jeffrey-24h +// node bin/jeffrey-photos.mjs jeffrey-24h --force +// node bin/jeffrey-photos.mjs jeffrey-24h --only 04_platter + +import { readFileSync, writeFileSync, mkdirSync, existsSync, statSync } from "node:fs"; +import { resolve, dirname } from "node:path"; +import { fileURLToPath } from "node:url"; + +const HERE = dirname(fileURLToPath(import.meta.url)); +const ROOT = resolve(HERE, ".."); +const REPO = resolve(ROOT, ".."); + +const audienceName = process.argv[2] || "jeffrey-24h"; +const force = process.argv.includes("--force"); +const onlyIdx = process.argv.indexOf("--only"); +const only = onlyIdx >= 0 ? process.argv[onlyIdx + 1] : null; + +const { audience } = await import(`${ROOT}/audience/${audienceName}.mjs`); + +const PHOTOS_DIR = `${ROOT}/out/jeffrey-photos`; +mkdirSync(PHOTOS_DIR, { recursive: true }); + +// Platter archive — a copy of every successful gen goes here, plus a manifest +// entry. The dir is synced to assets.aesthetic.computer/jeffreys/gens/ via +// `npm run assets:sync:up`. +const PLATTER_GENS_DIR = `${REPO}/system/public/assets/jeffreys/gens`; +const PLATTER_MANIFEST = `${REPO}/papers/jeffrey-platter/manifest.json`; +mkdirSync(PLATTER_GENS_DIR, { recursive: true }); + +// Mirrors generate-neo.py refs. +const SHOOT_DIR = `${REPO}/portraits/jeffrey/corpus/shoot`; +const ARCHIVE_DIR = `${REPO}/portraits/jeffrey/ig-archive/whistlegraph`; +const SHOOT_REFS = [ + `${SHOOT_DIR}/jeffery-av--07.jpg`, + `${SHOOT_DIR}/jeffery-av--01.jpg`, + `${SHOOT_DIR}/jeffery-av--04.jpg`, +]; +const SELFIE_REFS = [ + `${ARCHIVE_DIR}/2018-12-02_Bq4ckGFFNtW.jpg`, + `${ARCHIVE_DIR}/2020-09-02_CEpxlO2FOvD.jpg`, + `${ARCHIVE_DIR}/2021-07-10_CRI095Vl7AO_1.jpg`, + `${ARCHIVE_DIR}/2025-01-25_DFQ2lHPzN_W.jpg`, + `${ARCHIVE_DIR}/2017-04-10_BStid5yjTHq.jpg`, +]; +const REFS = [...SHOOT_REFS, ...SELFIE_REFS].filter((p) => { + if (existsSync(p)) return true; + console.warn(` ⚠ ref missing, dropping: ${p}`); + return false; +}); + +function loadOpenAIKey() { + if (process.env.OPENAI_API_KEY) return process.env.OPENAI_API_KEY; + const vault = `${REPO}/aesthetic-computer-vault/.devcontainer/envs/devcontainer.env`; + if (existsSync(vault)) { + for (const line of readFileSync(vault, "utf8").split("\n")) { + if (line.startsWith("OPENAI_API_KEY=")) { + return line.slice("OPENAI_API_KEY=".length).trim().replace(/^['"]|['"]$/g, ""); + } + } + } + throw new Error("OPENAI_API_KEY not set and not found in vault devcontainer.env"); +} + +const apiKey = loadOpenAIKey(); + +const MODEL = "gpt-image-2"; +const SIZE = "1024x1536"; +const QUALITY = "high"; + +async function generate(metaphor, outPath) { + const fd = new FormData(); + fd.append("model", MODEL); + fd.append("prompt", metaphor); + fd.append("size", SIZE); + fd.append("quality", QUALITY); + fd.append("n", "1"); + for (const ref of REFS) { + const buf = readFileSync(ref); + const ext = ref.toLowerCase().endsWith(".png") ? "png" : "jpeg"; + fd.append("image[]", new Blob([buf], { type: `image/${ext}` }), ref.split("/").pop()); + } + const res = await fetch("https://api.openai.com/v1/images/edits", { + method: "POST", + headers: { Authorization: `Bearer ${apiKey}` }, + body: fd, + }); + if (!res.ok) { + const err = await res.text(); + throw new Error(`OpenAI ${res.status}: ${err.slice(0, 500)}`); + } + const json = await res.json(); + const b64 = json.data?.[0]?.b64_json; + if (!b64) throw new Error(`no image returned: ${JSON.stringify(json).slice(0, 200)}`); + writeFileSync(outPath, Buffer.from(b64, "base64")); + const usage = json.usage || {}; + return { tokens_in: usage.input_tokens, tokens_out: usage.output_tokens }; +} + +function isoStamp() { + const d = new Date(); + const pad = (n) => String(n).padStart(2, "0"); + return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}${pad(d.getMinutes())}`; +} + +// Archive a successful gen into the platter: copy PNG to the assets/gens dir +// + append a metadata entry to papers/jeffrey-platter/manifest.json. Lazy- +// initializes the `gens` bucket if it doesn't exist yet. +function archiveToPlatter({ segName, metaphor, sourcePath, context }) { + const stamp = isoStamp(); + const archiveName = `${context}-${segName}-${stamp}.png`; + const archivePath = `${PLATTER_GENS_DIR}/${archiveName}`; + writeFileSync(archivePath, readFileSync(sourcePath)); + + const manifest = JSON.parse(readFileSync(PLATTER_MANIFEST, "utf8")); + manifest.buckets.gens ??= { + label: "Generated images — gpt-image-2 with platter-grounded identity (real+goofy default tone). One PNG per successful gen, dated. Synced to assets CDN via `npm run assets:sync:up`.", + url_pattern: "https://assets.aesthetic.computer/jeffreys/gens/{name}", + key_includes_extension: true, + items: {}, + }; + manifest.buckets.gens.items[archiveName] = { + model: MODEL, + size: SIZE, + quality: QUALITY, + refs: REFS.map((r) => r.replace(REPO + "/", "")), + context, + segment: segName, + generated: new Date().toISOString(), + bytes: statSync(archivePath).size, + prompt: metaphor, + }; + writeFileSync(PLATTER_MANIFEST, JSON.stringify(manifest, null, 2) + "\n"); + return { archiveName, archivePath }; +} + +const context = `recap-${audienceName}`; + +console.log(`refs: ${REFS.length} (${REFS.length} found)`); +console.log(`out: ${PHOTOS_DIR}`); +console.log(`platter archive: ${PLATTER_GENS_DIR.replace(REPO + "/", "")}`); + +let generated = 0, cached = 0, failed = 0; +for (const seg of audience.segments) { + if (only && seg.name !== only) continue; + const slide = audience.slides[seg.name]; + const metaphor = slide && typeof slide === "object" ? slide.metaphor : null; + if (!metaphor) { + console.log(` · ${seg.name}: no metaphor, skipping`); + continue; + } + const outPath = `${PHOTOS_DIR}/${seg.name}.png`; + if (existsSync(outPath) && !force) { + console.log(` ✓ ${seg.name}.png (cached)`); + cached++; + continue; + } + process.stdout.write(`▸ ${seg.name}… `); + const t0 = Date.now(); + try { + const usage = await generate(metaphor, outPath); + const archive = archiveToPlatter({ segName: seg.name, metaphor, sourcePath: outPath, context }); + const elapsed = ((Date.now() - t0) / 1000).toFixed(1); + const tok = usage.tokens_in + ? ` · tokens in=${usage.tokens_in} out=${usage.tokens_out}` + : ""; + console.log(`✓ ${elapsed}s${tok} → ${archive.archiveName}`); + generated++; + } catch (e) { + console.log(`✗`); + console.error(` ${e.message}`); + failed++; + } +} + +console.log(`✓ photos: ${generated} new, ${cached} cached, ${failed} failed`); +if (generated > 0) { + console.log(` · platter manifest updated: papers/jeffrey-platter/manifest.json`); + console.log(` · run \`node papers/jeffrey-platter/sync.mjs\` to refresh consumer copy`); + console.log(` · run \`npm run assets:sync:up\` to push gens/ to the CDN`); +} +// Don't fail the pipeline on per-segment gen failures — slides fall back to a +// dark-bg placeholder when the glob matches nothing. Re-run later to retry +// just the missing photos. diff --git a/recap/bin/slides.mjs b/recap/bin/slides.mjs index 2dc901b77..daff5ae11 100755 --- a/recap/bin/slides.mjs +++ b/recap/bin/slides.mjs @@ -130,7 +130,7 @@ for (const name of slidesOrder) { ${showBug(name) ? `
` : ""} ${showBug(name) ? `
aesthetic·computer · for ${audience.handle || audience.name}
` : ""} `; - await page.setContent(html, { waitUntil: "networkidle0" }); + await page.setContent(html, { waitUntil: "networkidle0", timeout: 60000 }); await new Promise((r) => setTimeout(r, 200)); const png = await page.screenshot({ type: "png", omitBackground: false }); writeFileSync(`${SLIDE_DIR}/${name}.png`, png); diff --git a/recap/pipeline.fish b/recap/pipeline.fish index cd6e79360..f89632761 100755 --- a/recap/pipeline.fish +++ b/recap/pipeline.fish @@ -20,20 +20,23 @@ else echo "▸ 1/6 tts (skipped — reusing out/recap.mp3)" end -echo "▸ 2/6 transcribe + align" +echo "▸ 2/7 transcribe + align" node bin/transcribe.mjs; or exit 1 node bin/align.mjs $AUDIENCE; or exit 1 -echo "▸ 3/6 scout (resolve per-slide content queries)" +echo "▸ 3/7 jeffrey-photos (gpt-image-2, cached per segment)" +node bin/jeffrey-photos.mjs $AUDIENCE; or exit 1 + +echo "▸ 4/7 scout (resolve per-slide content queries)" node bin/scout.mjs $AUDIENCE; or exit 1 -echo "▸ 4/6 slides" +echo "▸ 5/7 slides" node bin/slides.mjs $AUDIENCE; or exit 1 -echo "▸ 5/6 subtitles" +echo "▸ 6/7 subtitles" node bin/subtitles.mjs $AUDIENCE; or exit 1 -echo "▸ 6/6 compose" +echo "▸ 7/7 compose" fish bin/compose.fish; or exit 1 echo "━━━ done · $ROOT/out/recap.mp4 ━━━" diff --git a/reports/2026-04-29-knot-master-rebuild.md b/reports/2026-04-29-knot-master-rebuild.md new file mode 100644 index 000000000..a56d00eba --- /dev/null +++ b/reports/2026-04-29-knot-master-rebuild.md @@ -0,0 +1,67 @@ +# Knot rebuild — 2026-04-29 + +Rebuilt self-hosted Tangled knot on `knot.aesthetic.computer` from master HEAD. No new tag has shipped since the 2026-04-17 v1.13.0-alpha cutover (see `2026-04-17-knot-spindle-upgrade.md`); this picks up post-tag commits on master. + +## Summary + +| | before | after | +|---|---|---| +| Knot source | `v1.13.0-alpha` tag (`c3f60dc1`), built 2026-04-17, rebuilt 2026-04-23 | master HEAD `3ff418dad639a9755b9ef7509ed948578d89be8b` ("blog: templatize topbar, add link to go to blog index") | +| Binary sha256 | `1c7b842e2c3223a142b2343d39353f7bd1d80eebf12da6b3b3a4e9b869dc9c6a` | `63c1a9ec3e8c6f036c35e36c6e9a1a0b66e8ccd9d31ac69fec1930db958a34c5` | +| Binary size | 52,224,872 B | 52,246,384 B (+21,512 B) | +| Service downtime | — | ~3 s (`systemctl stop` → install → `systemctl start`) | +| Schema migrations | — | none ran (no DB delta between v1.13.0-alpha tag and master HEAD) | +| `repo_keys` rows | 1 | 1 (unchanged) | +| Repo on disk | `did:plc:fjfqgw6uxfpfzsojsxwaug6k/` | unchanged | + +## Why master, not a tag + +`git ls-remote --tags https://tangled.org/@tangled.org/core` shows `v1.13.0-alpha` is still the newest tag. The migration doc only covers v1.13+, which we're already past. User asked for an upgrade; chose master HEAD over a no-op rebuild of the same tag. + +## Run log + +1. **Pre-flight** — captured SHA, service uptime (Apr 23 22:52 UTC, 6 days), DB sizes, `repo_keys` count, `git ls-remote` (HEAD `daac06cf...`). No errors in journalctl tail. +2. **Backup** → `/root/knot-upgrade-backup-20260429-235704/` on droplet: + - `knot.bin.prev` (52 MB) + `knot.bin.prev.sha256` + - `.knot.env` (preserved perms 600 git:git) + - `knotserver.service` + - `knotserver.db.bak` (via `sqlite3 .backup`, WAL-consistent) +3. **Build** — on droplet, fresh clone: + ``` + cd /tmp && git clone https://tangled.org/@tangled.org/core tangled-core-upgrade + cd tangled-core-upgrade && git checkout 3ff418dad639a9755b9ef7509ed948578d89be8b + CGO_ENABLED=1 go build -o /tmp/knot-new ./cmd/knot + ``` + Build clean, no warnings. New binary 52,246,384 B. +4. **Cutover** — `systemctl stop knotserver` → `cp -a /usr/local/bin/knot /usr/local/bin/knot.prev.20260429-235759` → `install -m 0755 /tmp/knot-new /usr/local/bin/knot` → `systemctl start knotserver`. Service active on PID 31507 within 3 s. +5. **Verify** — + - `curl -sI http://localhost:5555/` → 405 (expected; knot has no `GET /`) + - `curl -sI https://knot.aesthetic.computer/` → 405 (Caddy + knot still wired) + - `git ls-remote git@knot.aesthetic.computer:aesthetic.computer/core` → `main daac06cf...` (refs preserved, SSH AuthorizedKeysCommand still works, motd "aesthetic computer knot" prints) + - `SELECT COUNT(*) FROM repo_keys` → 1 (unchanged) + - `tail -100 /home/git/log/knot.log` → file does not exist (knot logs to stderr → journalctl); `journalctl -u knotserver` clean +6. **Cleanup** — `rm -rf /tmp/tangled-core-upgrade /tmp/knot-new`. + +## deploy.sh change + +[at/knot/deployment/deploy.sh](../at/knot/deployment/deploy.sh): + +- `KNOT_VERSION` default bumped from `v1.13.0-alpha` to the SHA `3ff418dad639a9755b9ef7509ed948578d89be8b` so a future reinstall reproduces what's running. When v1.14 tags, switch back to a tag string. + +## Rollback + +On droplet: +``` +systemctl stop knotserver +cp /usr/local/bin/knot.prev.20260429-235759 /usr/local/bin/knot +systemctl start knotserver +``` +No DB rollback needed (no schema changes were applied this round). Older `knot.v1.12.prev` is still there too if a pre-DID rollback is ever required (it would need the `repo_keys` row removed and the on-disk repo path restored — see Apr 17 report). + +## Binaries on disk + +``` +/usr/local/bin/knot 52,246,384 master 3ff418da (current) +/usr/local/bin/knot.prev.20260429-235759 52,224,872 v1.13.0-alpha (Apr 29 rollback) +/usr/local/bin/knot.v1.12.prev 51,829,032 v1.12.0-alpha (pre-DID-migration) +``` diff --git a/slab/bin/claude-stop.sh b/slab/bin/claude-stop.sh index 787897b72..791268e74 100755 --- a/slab/bin/claude-stop.sh +++ b/slab/bin/claude-stop.sh @@ -1,8 +1,15 @@ #!/bin/bash -# Claude Stop hook. Active work is tracked in two dirs under $SLAB_HOME/state/: -# active-prompts/ — UserPromptSubmit → Stop +# Claude Stop hook. State under $SLAB_HOME/state/: +# active-prompts/ — one per live claude session; lives until +# the claude_pid dies (janitored here). +# awaiting-prompts/ — paused (turn complete OR awaiting +# permission). Written here + by +# claude-notify.sh; cleared by next +# UserPromptSubmit. # active-subagents/-.. — PreToolUse(Task) → SubagentStop -# This script removes its own prompt marker and counts whatever remains. +# Claude Code's Stop fires after every assistant turn — NOT only at session +# end — so we keep the active marker around (so the menubar can still draw a +# bar for the live thread) and just flip its state to awaiting. # others > 0 → N distinct ascending pentatonic beeps (capped at 8). # others = 0 → "all done" chime (lid open) OR TTS "i'm tired" with fade-out # tail → `pmset sleepnow` (lid closed: stops ambient first, so @@ -22,17 +29,47 @@ pkill -f claude-sleep-schedule.sh 2>/dev/null input=$(cat) session_id=$(echo "$input" | jq -r '.session_id // empty' 2>/dev/null) + +# Mark this session as awaiting (turn complete). The active marker stays so +# the menubar can keep a bar for this thread; the awaiting marker flips its +# render to rainbow-pulse. Cleared on next UserPromptSubmit. if [[ -n "$session_id" ]]; then - rm -f "$ACTIVE_DIR/$session_id" "$AWAITING_DIR/$session_id" + printf 'turn complete\n' > "$AWAITING_DIR/$session_id" 2>/dev/null fi +# Janitor: drop active-prompts whose claude_pid is dead (terminal closed), +# and any awaiting-prompts orphans (no matching active). Keeps disk state in +# sync with reality without leaking on terminal close. shopt -s nullglob -prompts=("$ACTIVE_DIR"/*) +for f in "$ACTIVE_DIR"/*; do + [[ -f "$f" ]] || continue + pid=$(jq -r '.claude_pid // 0' "$f" 2>/dev/null) + [[ -z "$pid" || "$pid" == "0" ]] && continue + if ! kill -0 "$pid" 2>/dev/null; then + sid=$(basename "$f") + rm -f "$f" "$AWAITING_DIR/$sid" + fi +done +for f in "$AWAITING_DIR"/*; do + [[ -f "$f" ]] || continue + sid=$(basename "$f") + [[ -e "$ACTIVE_DIR/$sid" ]] || rm -f "$f" +done + +# "Working" = active sessions that aren't awaiting. That's what the chime / +# sleep logic cares about: how many threads are still doing work. +working=0 +for f in "$ACTIVE_DIR"/*; do + [[ -f "$f" ]] || continue + sid=$(basename "$f") + [[ -e "$AWAITING_DIR/$sid" ]] && continue + working=$((working + 1)) +done subagents=("$SUBAGENT_DIR"/*) -others=$((${#prompts[@]} + ${#subagents[@]})) +others=$((working + ${#subagents[@]})) shopt -u nullglob -echo "$(date '+%Y-%m-%d %H:%M:%S') Stop: session=${session_id:-?} prompts=${#prompts[@]} subagents=${#subagents[@]} others=$others" >> "$LOG" +echo "$(date '+%Y-%m-%d %H:%M:%S') Stop: session=${session_id:-?} working=$working subagents=${#subagents[@]} others=$others" >> "$LOG" stop_ambient() { # Ambient is owned by lid-reactive.py now. Fade gracefully via SIGTERM; diff --git a/slab/bin/lid-ambient.sh b/slab/bin/lid-ambient.sh index 5561c53f0..9fe84c72c 100755 --- a/slab/bin/lid-ambient.sh +++ b/slab/bin/lid-ambient.sh @@ -114,9 +114,13 @@ stop_monitor() { } claude_running() { - # Matches both the desktop-app-embedded CLI (.../claude.app/Contents/MacOS/claude) - # and the terminal CLI (node .../@anthropic-ai/claude-code/cli.js). - ps -eo command | grep -qE 'claude\.app/Contents/MacOS/claude |@anthropic-ai/claude-code/.*cli\.js' + # Three shapes of "claude is running": + # 1. compiled bundled CLI — process name is literally "claude" + # 2. legacy node-based CLI — node .../@anthropic-ai/claude-code/cli.js + # 3. desktop-app embed — .../claude.app/Contents/MacOS/claude + # pgrep -x catches (1) cheaply; the regex catches (2) and (3). + pgrep -x claude >/dev/null 2>&1 \ + || ps -eo command 2>/dev/null | grep -qE 'claude\.app/Contents/MacOS/claude |@anthropic-ai/claude-code/.*cli\.js' } active_work_count() { diff --git a/system/public/give.aesthetic.computer/jeffreys-manifest.json b/system/public/give.aesthetic.computer/jeffreys-manifest.json index 64236365f..f449e1b8f 100644 --- a/system/public/give.aesthetic.computer/jeffreys-manifest.json +++ b/system/public/give.aesthetic.computer/jeffreys-manifest.json @@ -11,61 +11,1161 @@ "audited": "2026-04-28: aws s3 ls confirmed 55 contiguous --01..--55", "tiers": "master (>10MB, --01..--10), mid (1–10MB, --11..--35), web (<1MB, --36..--55)", "items": { - "jeffery-av--01.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":24579271,"tier":"master"}, - "jeffery-av--02.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":23031131,"tier":"master"}, - "jeffery-av--03.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":23782694,"tier":"master"}, - "jeffery-av--04.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":20180498,"tier":"master"}, - "jeffery-av--05.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":21157608,"tier":"master"}, - "jeffery-av--06.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":23912884,"tier":"master"}, - "jeffery-av--07.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":26175514,"tier":"master"}, - "jeffery-av--08.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":25539600,"tier":"master"}, - "jeffery-av--09.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":24963289,"tier":"master"}, - "jeffery-av--10.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":25466226,"tier":"master"}, - "jeffery-av--11.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3442326,"tier":"mid"}, - "jeffery-av--12.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4923364,"tier":"mid"}, - "jeffery-av--13.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4916244,"tier":"mid"}, - "jeffery-av--14.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4650693,"tier":"mid"}, - "jeffery-av--15.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4516921,"tier":"mid"}, - "jeffery-av--16.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4489196,"tier":"mid"}, - "jeffery-av--17.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3292944,"tier":"mid"}, - "jeffery-av--18.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":1672328,"tier":"mid"}, - "jeffery-av--19.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3705244,"tier":"mid"}, - "jeffery-av--20.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4236846,"tier":"mid"}, - "jeffery-av--21.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4263089,"tier":"mid"}, - "jeffery-av--22.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4233171,"tier":"mid"}, - "jeffery-av--23.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3663425,"tier":"mid"}, - "jeffery-av--24.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4192960,"tier":"mid"}, - "jeffery-av--25.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3794618,"tier":"mid"}, - "jeffery-av--26.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":3676864,"tier":"mid"}, - "jeffery-av--27.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4195383,"tier":"mid"}, - "jeffery-av--28.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4090050,"tier":"mid"}, - "jeffery-av--29.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4130648,"tier":"mid"}, - "jeffery-av--30.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4933430,"tier":"mid"}, - "jeffery-av--31.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":5068198,"tier":"mid"}, - "jeffery-av--32.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":5205568,"tier":"mid"}, - "jeffery-av--33.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":5294940,"tier":"mid"}, - "jeffery-av--34.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":5283671,"tier":"mid"}, - "jeffery-av--35.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":4789782,"tier":"mid"}, - "jeffery-av--36.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":272541,"tier":"web"}, - "jeffery-av--37.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":268923,"tier":"web"}, - "jeffery-av--38.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":296328,"tier":"web"}, - "jeffery-av--39.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":305648,"tier":"web"}, - "jeffery-av--40.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":226963,"tier":"web"}, - "jeffery-av--41.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":225962,"tier":"web"}, - "jeffery-av--42.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":223762,"tier":"web"}, - "jeffery-av--43.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":224105,"tier":"web"}, - "jeffery-av--44.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":304325,"tier":"web"}, - "jeffery-av--45.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":340465,"tier":"web"}, - "jeffery-av--46.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":338624,"tier":"web"}, - "jeffery-av--47.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":339362,"tier":"web"}, - "jeffery-av--48.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":345660,"tier":"web"}, - "jeffery-av--49.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":242741,"tier":"web"}, - "jeffery-av--50.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":244176,"tier":"web"}, - "jeffery-av--51.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":251330,"tier":"web"}, - "jeffery-av--52.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":254304,"tier":"web"}, - "jeffery-av--53.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":283319,"tier":"web"}, - "jeffery-av--54.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":246485,"tier":"web"}, - "jeffery-av--55.jpg": {"focal":[50,35],"pois":[{"t":"f","box":[30,15,40,40]}],"aspect":0.667,"src":"headshots","size":248833,"tier":"web"} + "jeffery-av--01.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 24579271, + "tier": "master" + }, + "jeffery-av--02.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 23031131, + "tier": "master" + }, + "jeffery-av--03.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 23782694, + "tier": "master" + }, + "jeffery-av--04.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 20180498, + "tier": "master" + }, + "jeffery-av--05.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 21157608, + "tier": "master" + }, + "jeffery-av--06.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 23912884, + "tier": "master" + }, + "jeffery-av--07.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 26175514, + "tier": "master" + }, + "jeffery-av--08.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 25539600, + "tier": "master" + }, + "jeffery-av--09.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 24963289, + "tier": "master" + }, + "jeffery-av--10.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 25466226, + "tier": "master" + }, + "jeffery-av--11.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3442326, + "tier": "mid" + }, + "jeffery-av--12.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4923364, + "tier": "mid" + }, + "jeffery-av--13.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4916244, + "tier": "mid" + }, + "jeffery-av--14.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4650693, + "tier": "mid" + }, + "jeffery-av--15.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4516921, + "tier": "mid" + }, + "jeffery-av--16.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4489196, + "tier": "mid" + }, + "jeffery-av--17.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3292944, + "tier": "mid" + }, + "jeffery-av--18.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 1672328, + "tier": "mid" + }, + "jeffery-av--19.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3705244, + "tier": "mid" + }, + "jeffery-av--20.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4236846, + "tier": "mid" + }, + "jeffery-av--21.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4263089, + "tier": "mid" + }, + "jeffery-av--22.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4233171, + "tier": "mid" + }, + "jeffery-av--23.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3663425, + "tier": "mid" + }, + "jeffery-av--24.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4192960, + "tier": "mid" + }, + "jeffery-av--25.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3794618, + "tier": "mid" + }, + "jeffery-av--26.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 3676864, + "tier": "mid" + }, + "jeffery-av--27.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4195383, + "tier": "mid" + }, + "jeffery-av--28.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4090050, + "tier": "mid" + }, + "jeffery-av--29.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4130648, + "tier": "mid" + }, + "jeffery-av--30.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4933430, + "tier": "mid" + }, + "jeffery-av--31.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 5068198, + "tier": "mid" + }, + "jeffery-av--32.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 5205568, + "tier": "mid" + }, + "jeffery-av--33.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 5294940, + "tier": "mid" + }, + "jeffery-av--34.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 5283671, + "tier": "mid" + }, + "jeffery-av--35.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 4789782, + "tier": "mid" + }, + "jeffery-av--36.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 272541, + "tier": "web" + }, + "jeffery-av--37.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 268923, + "tier": "web" + }, + "jeffery-av--38.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 296328, + "tier": "web" + }, + "jeffery-av--39.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 305648, + "tier": "web" + }, + "jeffery-av--40.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 226963, + "tier": "web" + }, + "jeffery-av--41.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 225962, + "tier": "web" + }, + "jeffery-av--42.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 223762, + "tier": "web" + }, + "jeffery-av--43.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 224105, + "tier": "web" + }, + "jeffery-av--44.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 304325, + "tier": "web" + }, + "jeffery-av--45.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 340465, + "tier": "web" + }, + "jeffery-av--46.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 338624, + "tier": "web" + }, + "jeffery-av--47.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 339362, + "tier": "web" + }, + "jeffery-av--48.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 345660, + "tier": "web" + }, + "jeffery-av--49.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 242741, + "tier": "web" + }, + "jeffery-av--50.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 244176, + "tier": "web" + }, + "jeffery-av--51.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 251330, + "tier": "web" + }, + "jeffery-av--52.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 254304, + "tier": "web" + }, + "jeffery-av--53.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 283319, + "tier": "web" + }, + "jeffery-av--54.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 246485, + "tier": "web" + }, + "jeffery-av--55.jpg": { + "focal": [ + 50, + 35 + ], + "pois": [ + { + "t": "f", + "box": [ + 30, + 15, + 40, + 40 + ] + } + ], + "aspect": 0.667, + "src": "headshots", + "size": 248833, + "tier": "web" + } } }, "masters": { @@ -74,44 +1174,158 @@ "key_includes_extension": true, "audited": "2026-04-28: aws s3 ls assets-aesthetic-computer/jeffreys/ — 38 masters found, 1:1 with candids/", "items": { - "FullSizeRender.heic": {"candid_key":"FullSizeRender","size":516985}, - "IMG_0260.heic": {"candid_key":"IMG_0260","size":1978771}, - "IMG_0675.JPEG": {"candid_key":"IMG_0675","size":4743995}, - "IMG_0686.heic": {"candid_key":"IMG_0686","size":1063196}, - "IMG_0688.heic": {"candid_key":"IMG_0688","size":954060}, - "IMG_0798.jpeg": {"candid_key":"IMG_0798","size":2332501}, - "IMG_1111.heic": {"candid_key":"IMG_1111","size":1818360}, - "IMG_1577.heic": {"candid_key":"IMG_1577","size":3453048}, - "IMG_1616.heic": {"candid_key":"IMG_1616","size":2838527}, - "IMG_1737.heic": {"candid_key":"IMG_1737","size":1830876}, - "IMG_1809.heic": {"candid_key":"IMG_1809","size":4224096}, - "IMG_2124.jpeg": {"candid_key":"IMG_2124","size":1332909}, - "IMG_2208.heic": {"candid_key":"IMG_2208","size":1569939}, - "IMG_2280.heic": {"candid_key":"IMG_2280","size":876871}, - "IMG_2498.heic": {"candid_key":"IMG_2498","size":2148839}, - "IMG_2630.HEIC": {"candid_key":"IMG_2630","size":1490103}, - "IMG_2658.HEIC": {"candid_key":"IMG_2658","size":1608793}, - "IMG_2668.heic": {"candid_key":"IMG_2668","size":1195972}, - "IMG_2905.heic": {"candid_key":"IMG_2905","size":2304901}, - "IMG_2913.heic": {"candid_key":"IMG_2913","size":803125}, - "IMG_3017.heic": {"candid_key":"IMG_3017","size":2562824}, - "IMG_3234.heic": {"candid_key":"IMG_3234","size":806715}, - "IMG_4281.jpeg": {"candid_key":"IMG_4281","size":2303766}, - "IMG_4312.jpeg": {"candid_key":"IMG_4312","size":2657700}, - "IMG_4606.heic": {"candid_key":"IMG_4606","size":970231}, - "IMG_4894.heic": {"candid_key":"IMG_4894","size":1428189}, - "IMG_4997.heic": {"candid_key":"IMG_4997","size":1804730}, - "IMG_5043.HEIC": {"candid_key":"IMG_5043","size":1156692}, - "IMG_5050.heic": {"candid_key":"IMG_5050","size":1131254}, - "IMG_5272.jpeg": {"candid_key":"IMG_5272","size":1978886}, - "IMG_5644.heic": {"candid_key":"IMG_5644","size":1366318}, - "IMG_6342.jpeg": {"candid_key":"IMG_6342","size":1844946}, - "IMG_6367.HEIC": {"candid_key":"IMG_6367","size":1528443}, - "IMG_6435.HEIC": {"candid_key":"IMG_6435","size":2105174}, - "IMG_8080.HEIC": {"candid_key":"IMG_8080","size":1420859}, - "IMG_8188.heic": {"candid_key":"IMG_8188","size":903213}, - "IMG_8989.HEIC": {"candid_key":"IMG_8989","size":2106687}, - "IMG_9795.heic": {"candid_key":"IMG_9795","size":2240240} + "FullSizeRender.heic": { + "candid_key": "FullSizeRender", + "size": 516985 + }, + "IMG_0260.heic": { + "candid_key": "IMG_0260", + "size": 1978771 + }, + "IMG_0675.JPEG": { + "candid_key": "IMG_0675", + "size": 4743995 + }, + "IMG_0686.heic": { + "candid_key": "IMG_0686", + "size": 1063196 + }, + "IMG_0688.heic": { + "candid_key": "IMG_0688", + "size": 954060 + }, + "IMG_0798.jpeg": { + "candid_key": "IMG_0798", + "size": 2332501 + }, + "IMG_1111.heic": { + "candid_key": "IMG_1111", + "size": 1818360 + }, + "IMG_1577.heic": { + "candid_key": "IMG_1577", + "size": 3453048 + }, + "IMG_1616.heic": { + "candid_key": "IMG_1616", + "size": 2838527 + }, + "IMG_1737.heic": { + "candid_key": "IMG_1737", + "size": 1830876 + }, + "IMG_1809.heic": { + "candid_key": "IMG_1809", + "size": 4224096 + }, + "IMG_2124.jpeg": { + "candid_key": "IMG_2124", + "size": 1332909 + }, + "IMG_2208.heic": { + "candid_key": "IMG_2208", + "size": 1569939 + }, + "IMG_2280.heic": { + "candid_key": "IMG_2280", + "size": 876871 + }, + "IMG_2498.heic": { + "candid_key": "IMG_2498", + "size": 2148839 + }, + "IMG_2630.HEIC": { + "candid_key": "IMG_2630", + "size": 1490103 + }, + "IMG_2658.HEIC": { + "candid_key": "IMG_2658", + "size": 1608793 + }, + "IMG_2668.heic": { + "candid_key": "IMG_2668", + "size": 1195972 + }, + "IMG_2905.heic": { + "candid_key": "IMG_2905", + "size": 2304901 + }, + "IMG_2913.heic": { + "candid_key": "IMG_2913", + "size": 803125 + }, + "IMG_3017.heic": { + "candid_key": "IMG_3017", + "size": 2562824 + }, + "IMG_3234.heic": { + "candid_key": "IMG_3234", + "size": 806715 + }, + "IMG_4281.jpeg": { + "candid_key": "IMG_4281", + "size": 2303766 + }, + "IMG_4312.jpeg": { + "candid_key": "IMG_4312", + "size": 2657700 + }, + "IMG_4606.heic": { + "candid_key": "IMG_4606", + "size": 970231 + }, + "IMG_4894.heic": { + "candid_key": "IMG_4894", + "size": 1428189 + }, + "IMG_4997.heic": { + "candid_key": "IMG_4997", + "size": 1804730 + }, + "IMG_5043.HEIC": { + "candid_key": "IMG_5043", + "size": 1156692 + }, + "IMG_5050.heic": { + "candid_key": "IMG_5050", + "size": 1131254 + }, + "IMG_5272.jpeg": { + "candid_key": "IMG_5272", + "size": 1978886 + }, + "IMG_5644.heic": { + "candid_key": "IMG_5644", + "size": 1366318 + }, + "IMG_6342.jpeg": { + "candid_key": "IMG_6342", + "size": 1844946 + }, + "IMG_6367.HEIC": { + "candid_key": "IMG_6367", + "size": 1528443 + }, + "IMG_6435.HEIC": { + "candid_key": "IMG_6435", + "size": 2105174 + }, + "IMG_8080.HEIC": { + "candid_key": "IMG_8080", + "size": 1420859 + }, + "IMG_8188.heic": { + "candid_key": "IMG_8188", + "size": 903213 + }, + "IMG_8989.HEIC": { + "candid_key": "IMG_8989", + "size": 2106687 + }, + "IMG_9795.heic": { + "candid_key": "IMG_9795", + "size": 2240240 + } } }, "candids": { @@ -120,44 +1334,1316 @@ "key_includes_extension": false, "audited": "2026-04-28: aws s3 ls confirmed all 38 entries match bucket; no orphans, no uncataloged. All have HEIC/JPEG masters at jeffreys/{name}. — see masters bucket.", "items": { - "FullSizeRender": {"focal":[38.5,34.8],"pois":[{"t":"f","box":[33.8,30,9.5,9.7]},{"t":"b","box":[59.5,63.9,20.2,12.4]},{"t":"b","box":[87.6,89.3,8.4,5.2]}],"aspect":0.75,"size":829094,"master":"FullSizeRender.heic","master_size":516985}, - "IMG_0260": {"focal":[41,38.1],"pois":[{"t":"f","box":[32.3,29.3,17.4,17.5]},{"t":"b","box":[15.9,50,5.9,3.6]}],"aspect":0.75,"size":1492041,"master":"IMG_0260.heic","master_size":1978771}, - "IMG_0675": {"focal":[54,37.2],"pois":[{"t":"f","box":[47.8,31.8,12.3,10.9]}],"aspect":0.667,"size":4743995,"master":"IMG_0675.JPEG","master_size":4743995}, - "IMG_0686": {"focal":[57.4,25.4],"pois":[{"t":"b","box":[53.6,23.1,7.5,4.6]},{"t":"b","box":[54.1,47.2,6.9,4.2]}],"aspect":0.75,"size":1145284,"master":"IMG_0686.heic","master_size":1063196}, - "IMG_0688": {"focal":[72.3,63],"pois":[{"t":"b","box":[69.1,59.3,6.5,7.4]},{"t":"b","box":[39.4,46.8,4.1,4.6]}],"aspect":0.563,"size":1035484,"master":"IMG_0688.heic","master_size":954060}, - "IMG_0798": {"focal":[46.6,6.4],"pois":[{"t":"b","box":[44.8,5.3,3.7,2.3]}],"aspect":0.75,"size":2332501,"master":"IMG_0798.jpeg","master_size":2332501}, - "IMG_1111": {"focal":[50,50],"pois":[],"aspect":0.562,"size":1412575,"master":"IMG_1111.heic","master_size":1818360}, - "IMG_1577": {"focal":[37,70.6],"pois":[{"t":"b","box":[35.5,69.7,2.8,1.7]}],"aspect":0.75,"size":3285470,"master":"IMG_1577.heic","master_size":3453048}, - "IMG_1616": {"focal":[47.8,51.7],"pois":[{"t":"f","box":[42.5,45.2,10.7,13]},{"t":"b","box":[14.1,68,12.4,7.6]}],"aspect":0.75,"size":2863682,"master":"IMG_1616.heic","master_size":2838527}, - "IMG_1737": {"focal":[50,50],"pois":[],"aspect":0.75,"size":1539214,"master":"IMG_1737.heic","master_size":1830876}, - "IMG_1809": {"focal":[48,53.2],"pois":[{"t":"b","box":[45,51.4,6.1,3.7]}],"aspect":0.75,"size":3742829,"master":"IMG_1809.heic","master_size":4224096}, - "IMG_2124": {"focal":[54.8,35.8],"pois":[{"t":"f","box":[49.7,31.8,10.1,7.9]},{"t":"b","box":[3.1,48.8,32,14.8]}],"aspect":0.563,"size":1332909,"master":"IMG_2124.jpeg","master_size":1332909}, - "IMG_2208": {"focal":[40,21.8],"pois":[{"t":"f","box":[33.6,14.5,12.8,14.6]},{"t":"b","box":[23.4,5.1,10.6,6.5]}],"aspect":0.75,"size":1788410,"master":"IMG_2208.heic","master_size":1569939}, - "IMG_2280": {"focal":[57.4,33.4],"pois":[{"t":"f","box":[42.5,16.4,29.8,34]}],"aspect":0.8,"size":1016167,"master":"IMG_2280.heic","master_size":876871}, - "IMG_2498": {"focal":[21.8,61.4],"pois":[{"t":"b","box":[12.6,55.8,18.3,11.2]}],"aspect":0.75,"size":1710740,"master":"IMG_2498.heic","master_size":2148839}, - "IMG_2630": {"focal":[20.3,59.6],"pois":[{"t":"b","box":[6.8,44.8,27,29.4]},{"t":"b","box":[30.7,44,8.6,22.9]}],"aspect":1.333,"size":1452701,"master":"IMG_2630.HEIC","master_size":1490103}, - "IMG_2658": {"focal":[46.6,43.7],"pois":[{"t":"f","box":[39.2,34.5,14.8,18.4]},{"t":"b","box":[58.5,68.9,8.4,5.2]}],"aspect":0.75,"size":1992798,"master":"IMG_2658.HEIC","master_size":1608793}, - "IMG_2668": {"focal":[39.4,24.5],"pois":[{"t":"b","box":[30.4,19,18,11]},{"t":"b","box":[40.7,68.8,8.6,5.3]}],"aspect":0.75,"size":1365145,"master":"IMG_2668.heic","master_size":1195972}, - "IMG_2905": {"focal":[47.5,40.1],"pois":[{"t":"b","box":[28.3,28.4,38.3,23.5]}],"aspect":0.75,"size":2497398,"master":"IMG_2905.heic","master_size":2304901}, - "IMG_2913": {"focal":[69.9,19.9],"pois":[{"t":"b","box":[67.7,18.5,4.5,2.7]},{"t":"b","box":[87,36.8,4.1,2.5]}],"aspect":0.75,"size":1042326,"master":"IMG_2913.heic","master_size":803125}, - "IMG_3017": {"focal":[37.6,81.5],"pois":[{"t":"b","box":[31.7,77.9,11.8,7.3]}],"aspect":0.75,"size":2446374,"master":"IMG_3017.heic","master_size":2562824}, - "IMG_3234": {"focal":[42.4,48.8],"pois":[{"t":"f","box":[36.9,43.2,11.1,11.3]},{"t":"b","box":[27.1,34.8,15.4,9.4]}],"aspect":0.75,"size":1015178,"master":"IMG_3234.heic","master_size":806715}, - "IMG_4281": {"focal":[50.2,38.1],"pois":[{"t":"f","box":[44.5,31.3,11.4,13.6]},{"t":"b","box":[70.5,59.8,8.4,12.6]}],"aspect":0.75,"size":2303766,"master":"IMG_4281.jpeg","master_size":2303766}, - "IMG_4312": {"focal":[4.1,28.1],"pois":[{"t":"f","box":[0,18.6,8.2,19]},{"t":"b","box":[32.5,63.2,3.2,2]}],"aspect":0.75,"size":2657700,"master":"IMG_4312.jpeg","master_size":2657700}, - "IMG_4606": {"focal":[53.1,56.5],"pois":[{"t":"f","box":[28.6,31.6,48.9,49.8]}],"aspect":0.75,"size":1044546,"master":"IMG_4606.heic","master_size":970231}, - "IMG_4894": {"focal":[48,73.6],"pois":[{"t":"b","box":[44.4,71.4,7.2,4.4]},{"t":"b","box":[71.8,49.7,4.6,6.8]}],"aspect":0.75,"size":1564246,"master":"IMG_4894.heic","master_size":1428189}, - "IMG_4997": {"focal":[54,55.8],"pois":[{"t":"b","box":[52.3,53.2,3.4,5.1]}],"aspect":0.75,"size":2173587,"master":"IMG_4997.heic","master_size":1804730}, - "IMG_5043": {"focal":[40.8,43.4],"pois":[{"t":"f","box":[30.8,32.3,20.1,22.1]},{"t":"b","box":[31.9,69.9,4.8,3]}],"aspect":0.75,"size":1239460,"master":"IMG_5043.HEIC","master_size":1156692}, - "IMG_5050": {"focal":[65.6,53.7],"pois":[{"t":"f","box":[60.1,48.3,10.9,10.8]},{"t":"b","box":[21.9,43,16.5,10.1]}],"aspect":0.75,"size":1515666,"master":"IMG_5050.heic","master_size":1131254}, - "IMG_5272": {"focal":[62.3,53.4],"pois":[{"t":"b","box":[61,51.3,2.7,4.1]}],"aspect":0.75,"size":1978886,"master":"IMG_5272.jpeg","master_size":1978886}, - "IMG_5644": {"focal":[49,17.8],"pois":[{"t":"f","box":[44.1,13.9,9.8,8]},{"t":"b","box":[32.7,19.9,11,5.1]}],"aspect":0.563,"size":1380329,"master":"IMG_5644.heic","master_size":1366318}, - "IMG_6342": {"focal":[62.3,28],"pois":[{"t":"f","box":[55.1,18.5,14.5,18.9]},{"t":"b","box":[10.7,69.4,23.7,14.6]}],"aspect":0.75,"size":1844946,"master":"IMG_6342.jpeg","master_size":1844946}, - "IMG_6367": {"focal":[44.1,34.3],"pois":[{"t":"f","box":[37.8,28.7,12.7,11.1]},{"t":"b","box":[60.4,4.8,3.6,2.2]}],"aspect":0.75,"size":1416580,"master":"IMG_6367.HEIC","master_size":1528443}, - "IMG_6435": {"focal":[48,37.8],"pois":[{"t":"f","box":[37.9,27.2,20.2,21.1]},{"t":"b","box":[35.9,86,4.8,2.9]}],"aspect":0.75,"size":1604594,"master":"IMG_6435.HEIC","master_size":2105174}, - "IMG_8080": {"focal":[42.6,27.7],"pois":[{"t":"f","box":[36,20.8,13.1,13.9]},{"t":"b","box":[15.9,8.3,66.6,40.9]}],"aspect":0.75,"size":1580558,"master":"IMG_8080.HEIC","master_size":1420859}, - "IMG_8188": {"focal":[48.9,33.9],"pois":[{"t":"f","box":[37.9,24,21.8,19.9]},{"t":"b","box":[35,88.1,9.8,6]}],"aspect":0.75,"size":968035,"master":"IMG_8188.heic","master_size":903213}, - "IMG_8989": {"focal":[79.2,86.1],"pois":[{"t":"b","box":[76.7,84.6,5,3.1]}],"aspect":0.75,"size":1830983,"master":"IMG_8989.HEIC","master_size":2106687}, - "IMG_9795": {"focal":[31.2,22],"pois":[{"t":"f","box":[23.8,15.6,14.8,12.9]},{"t":"b","box":[21.3,51.5,4.3,2]}],"aspect":0.562,"size":2033875,"master":"IMG_9795.heic","master_size":2240240} + "FullSizeRender": { + "focal": [ + 38.5, + 34.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 33.8, + 30, + 9.5, + 9.7 + ] + }, + { + "t": "b", + "box": [ + 59.5, + 63.9, + 20.2, + 12.4 + ] + }, + { + "t": "b", + "box": [ + 87.6, + 89.3, + 8.4, + 5.2 + ] + } + ], + "aspect": 0.75, + "size": 829094, + "master": "FullSizeRender.heic", + "master_size": 516985 + }, + "IMG_0260": { + "focal": [ + 41, + 38.1 + ], + "pois": [ + { + "t": "f", + "box": [ + 32.3, + 29.3, + 17.4, + 17.5 + ] + }, + { + "t": "b", + "box": [ + 15.9, + 50, + 5.9, + 3.6 + ] + } + ], + "aspect": 0.75, + "size": 1492041, + "master": "IMG_0260.heic", + "master_size": 1978771 + }, + "IMG_0675": { + "focal": [ + 54, + 37.2 + ], + "pois": [ + { + "t": "f", + "box": [ + 47.8, + 31.8, + 12.3, + 10.9 + ] + } + ], + "aspect": 0.667, + "size": 4743995, + "master": "IMG_0675.JPEG", + "master_size": 4743995 + }, + "IMG_0686": { + "focal": [ + 57.4, + 25.4 + ], + "pois": [ + { + "t": "b", + "box": [ + 53.6, + 23.1, + 7.5, + 4.6 + ] + }, + { + "t": "b", + "box": [ + 54.1, + 47.2, + 6.9, + 4.2 + ] + } + ], + "aspect": 0.75, + "size": 1145284, + "master": "IMG_0686.heic", + "master_size": 1063196 + }, + "IMG_0688": { + "focal": [ + 72.3, + 63 + ], + "pois": [ + { + "t": "b", + "box": [ + 69.1, + 59.3, + 6.5, + 7.4 + ] + }, + { + "t": "b", + "box": [ + 39.4, + 46.8, + 4.1, + 4.6 + ] + } + ], + "aspect": 0.563, + "size": 1035484, + "master": "IMG_0688.heic", + "master_size": 954060 + }, + "IMG_0798": { + "focal": [ + 46.6, + 6.4 + ], + "pois": [ + { + "t": "b", + "box": [ + 44.8, + 5.3, + 3.7, + 2.3 + ] + } + ], + "aspect": 0.75, + "size": 2332501, + "master": "IMG_0798.jpeg", + "master_size": 2332501 + }, + "IMG_1111": { + "focal": [ + 50, + 50 + ], + "pois": [], + "aspect": 0.562, + "size": 1412575, + "master": "IMG_1111.heic", + "master_size": 1818360 + }, + "IMG_1577": { + "focal": [ + 37, + 70.6 + ], + "pois": [ + { + "t": "b", + "box": [ + 35.5, + 69.7, + 2.8, + 1.7 + ] + } + ], + "aspect": 0.75, + "size": 3285470, + "master": "IMG_1577.heic", + "master_size": 3453048 + }, + "IMG_1616": { + "focal": [ + 47.8, + 51.7 + ], + "pois": [ + { + "t": "f", + "box": [ + 42.5, + 45.2, + 10.7, + 13 + ] + }, + { + "t": "b", + "box": [ + 14.1, + 68, + 12.4, + 7.6 + ] + } + ], + "aspect": 0.75, + "size": 2863682, + "master": "IMG_1616.heic", + "master_size": 2838527 + }, + "IMG_1737": { + "focal": [ + 50, + 50 + ], + "pois": [], + "aspect": 0.75, + "size": 1539214, + "master": "IMG_1737.heic", + "master_size": 1830876 + }, + "IMG_1809": { + "focal": [ + 48, + 53.2 + ], + "pois": [ + { + "t": "b", + "box": [ + 45, + 51.4, + 6.1, + 3.7 + ] + } + ], + "aspect": 0.75, + "size": 3742829, + "master": "IMG_1809.heic", + "master_size": 4224096 + }, + "IMG_2124": { + "focal": [ + 54.8, + 35.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 49.7, + 31.8, + 10.1, + 7.9 + ] + }, + { + "t": "b", + "box": [ + 3.1, + 48.8, + 32, + 14.8 + ] + } + ], + "aspect": 0.563, + "size": 1332909, + "master": "IMG_2124.jpeg", + "master_size": 1332909 + }, + "IMG_2208": { + "focal": [ + 40, + 21.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 33.6, + 14.5, + 12.8, + 14.6 + ] + }, + { + "t": "b", + "box": [ + 23.4, + 5.1, + 10.6, + 6.5 + ] + } + ], + "aspect": 0.75, + "size": 1788410, + "master": "IMG_2208.heic", + "master_size": 1569939 + }, + "IMG_2280": { + "focal": [ + 57.4, + 33.4 + ], + "pois": [ + { + "t": "f", + "box": [ + 42.5, + 16.4, + 29.8, + 34 + ] + } + ], + "aspect": 0.8, + "size": 1016167, + "master": "IMG_2280.heic", + "master_size": 876871 + }, + "IMG_2498": { + "focal": [ + 21.8, + 61.4 + ], + "pois": [ + { + "t": "b", + "box": [ + 12.6, + 55.8, + 18.3, + 11.2 + ] + } + ], + "aspect": 0.75, + "size": 1710740, + "master": "IMG_2498.heic", + "master_size": 2148839 + }, + "IMG_2630": { + "focal": [ + 20.3, + 59.6 + ], + "pois": [ + { + "t": "b", + "box": [ + 6.8, + 44.8, + 27, + 29.4 + ] + }, + { + "t": "b", + "box": [ + 30.7, + 44, + 8.6, + 22.9 + ] + } + ], + "aspect": 1.333, + "size": 1452701, + "master": "IMG_2630.HEIC", + "master_size": 1490103 + }, + "IMG_2658": { + "focal": [ + 46.6, + 43.7 + ], + "pois": [ + { + "t": "f", + "box": [ + 39.2, + 34.5, + 14.8, + 18.4 + ] + }, + { + "t": "b", + "box": [ + 58.5, + 68.9, + 8.4, + 5.2 + ] + } + ], + "aspect": 0.75, + "size": 1992798, + "master": "IMG_2658.HEIC", + "master_size": 1608793 + }, + "IMG_2668": { + "focal": [ + 39.4, + 24.5 + ], + "pois": [ + { + "t": "b", + "box": [ + 30.4, + 19, + 18, + 11 + ] + }, + { + "t": "b", + "box": [ + 40.7, + 68.8, + 8.6, + 5.3 + ] + } + ], + "aspect": 0.75, + "size": 1365145, + "master": "IMG_2668.heic", + "master_size": 1195972 + }, + "IMG_2905": { + "focal": [ + 47.5, + 40.1 + ], + "pois": [ + { + "t": "b", + "box": [ + 28.3, + 28.4, + 38.3, + 23.5 + ] + } + ], + "aspect": 0.75, + "size": 2497398, + "master": "IMG_2905.heic", + "master_size": 2304901 + }, + "IMG_2913": { + "focal": [ + 69.9, + 19.9 + ], + "pois": [ + { + "t": "b", + "box": [ + 67.7, + 18.5, + 4.5, + 2.7 + ] + }, + { + "t": "b", + "box": [ + 87, + 36.8, + 4.1, + 2.5 + ] + } + ], + "aspect": 0.75, + "size": 1042326, + "master": "IMG_2913.heic", + "master_size": 803125 + }, + "IMG_3017": { + "focal": [ + 37.6, + 81.5 + ], + "pois": [ + { + "t": "b", + "box": [ + 31.7, + 77.9, + 11.8, + 7.3 + ] + } + ], + "aspect": 0.75, + "size": 2446374, + "master": "IMG_3017.heic", + "master_size": 2562824 + }, + "IMG_3234": { + "focal": [ + 42.4, + 48.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 36.9, + 43.2, + 11.1, + 11.3 + ] + }, + { + "t": "b", + "box": [ + 27.1, + 34.8, + 15.4, + 9.4 + ] + } + ], + "aspect": 0.75, + "size": 1015178, + "master": "IMG_3234.heic", + "master_size": 806715 + }, + "IMG_4281": { + "focal": [ + 50.2, + 38.1 + ], + "pois": [ + { + "t": "f", + "box": [ + 44.5, + 31.3, + 11.4, + 13.6 + ] + }, + { + "t": "b", + "box": [ + 70.5, + 59.8, + 8.4, + 12.6 + ] + } + ], + "aspect": 0.75, + "size": 2303766, + "master": "IMG_4281.jpeg", + "master_size": 2303766 + }, + "IMG_4312": { + "focal": [ + 4.1, + 28.1 + ], + "pois": [ + { + "t": "f", + "box": [ + 0, + 18.6, + 8.2, + 19 + ] + }, + { + "t": "b", + "box": [ + 32.5, + 63.2, + 3.2, + 2 + ] + } + ], + "aspect": 0.75, + "size": 2657700, + "master": "IMG_4312.jpeg", + "master_size": 2657700 + }, + "IMG_4606": { + "focal": [ + 53.1, + 56.5 + ], + "pois": [ + { + "t": "f", + "box": [ + 28.6, + 31.6, + 48.9, + 49.8 + ] + } + ], + "aspect": 0.75, + "size": 1044546, + "master": "IMG_4606.heic", + "master_size": 970231 + }, + "IMG_4894": { + "focal": [ + 48, + 73.6 + ], + "pois": [ + { + "t": "b", + "box": [ + 44.4, + 71.4, + 7.2, + 4.4 + ] + }, + { + "t": "b", + "box": [ + 71.8, + 49.7, + 4.6, + 6.8 + ] + } + ], + "aspect": 0.75, + "size": 1564246, + "master": "IMG_4894.heic", + "master_size": 1428189 + }, + "IMG_4997": { + "focal": [ + 54, + 55.8 + ], + "pois": [ + { + "t": "b", + "box": [ + 52.3, + 53.2, + 3.4, + 5.1 + ] + } + ], + "aspect": 0.75, + "size": 2173587, + "master": "IMG_4997.heic", + "master_size": 1804730 + }, + "IMG_5043": { + "focal": [ + 40.8, + 43.4 + ], + "pois": [ + { + "t": "f", + "box": [ + 30.8, + 32.3, + 20.1, + 22.1 + ] + }, + { + "t": "b", + "box": [ + 31.9, + 69.9, + 4.8, + 3 + ] + } + ], + "aspect": 0.75, + "size": 1239460, + "master": "IMG_5043.HEIC", + "master_size": 1156692 + }, + "IMG_5050": { + "focal": [ + 65.6, + 53.7 + ], + "pois": [ + { + "t": "f", + "box": [ + 60.1, + 48.3, + 10.9, + 10.8 + ] + }, + { + "t": "b", + "box": [ + 21.9, + 43, + 16.5, + 10.1 + ] + } + ], + "aspect": 0.75, + "size": 1515666, + "master": "IMG_5050.heic", + "master_size": 1131254 + }, + "IMG_5272": { + "focal": [ + 62.3, + 53.4 + ], + "pois": [ + { + "t": "b", + "box": [ + 61, + 51.3, + 2.7, + 4.1 + ] + } + ], + "aspect": 0.75, + "size": 1978886, + "master": "IMG_5272.jpeg", + "master_size": 1978886 + }, + "IMG_5644": { + "focal": [ + 49, + 17.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 44.1, + 13.9, + 9.8, + 8 + ] + }, + { + "t": "b", + "box": [ + 32.7, + 19.9, + 11, + 5.1 + ] + } + ], + "aspect": 0.563, + "size": 1380329, + "master": "IMG_5644.heic", + "master_size": 1366318 + }, + "IMG_6342": { + "focal": [ + 62.3, + 28 + ], + "pois": [ + { + "t": "f", + "box": [ + 55.1, + 18.5, + 14.5, + 18.9 + ] + }, + { + "t": "b", + "box": [ + 10.7, + 69.4, + 23.7, + 14.6 + ] + } + ], + "aspect": 0.75, + "size": 1844946, + "master": "IMG_6342.jpeg", + "master_size": 1844946 + }, + "IMG_6367": { + "focal": [ + 44.1, + 34.3 + ], + "pois": [ + { + "t": "f", + "box": [ + 37.8, + 28.7, + 12.7, + 11.1 + ] + }, + { + "t": "b", + "box": [ + 60.4, + 4.8, + 3.6, + 2.2 + ] + } + ], + "aspect": 0.75, + "size": 1416580, + "master": "IMG_6367.HEIC", + "master_size": 1528443 + }, + "IMG_6435": { + "focal": [ + 48, + 37.8 + ], + "pois": [ + { + "t": "f", + "box": [ + 37.9, + 27.2, + 20.2, + 21.1 + ] + }, + { + "t": "b", + "box": [ + 35.9, + 86, + 4.8, + 2.9 + ] + } + ], + "aspect": 0.75, + "size": 1604594, + "master": "IMG_6435.HEIC", + "master_size": 2105174 + }, + "IMG_8080": { + "focal": [ + 42.6, + 27.7 + ], + "pois": [ + { + "t": "f", + "box": [ + 36, + 20.8, + 13.1, + 13.9 + ] + }, + { + "t": "b", + "box": [ + 15.9, + 8.3, + 66.6, + 40.9 + ] + } + ], + "aspect": 0.75, + "size": 1580558, + "master": "IMG_8080.HEIC", + "master_size": 1420859 + }, + "IMG_8188": { + "focal": [ + 48.9, + 33.9 + ], + "pois": [ + { + "t": "f", + "box": [ + 37.9, + 24, + 21.8, + 19.9 + ] + }, + { + "t": "b", + "box": [ + 35, + 88.1, + 9.8, + 6 + ] + } + ], + "aspect": 0.75, + "size": 968035, + "master": "IMG_8188.heic", + "master_size": 903213 + }, + "IMG_8989": { + "focal": [ + 79.2, + 86.1 + ], + "pois": [ + { + "t": "b", + "box": [ + 76.7, + 84.6, + 5, + 3.1 + ] + } + ], + "aspect": 0.75, + "size": 1830983, + "master": "IMG_8989.HEIC", + "master_size": 2106687 + }, + "IMG_9795": { + "focal": [ + 31.2, + 22 + ], + "pois": [ + { + "t": "f", + "box": [ + 23.8, + 15.6, + 14.8, + 12.9 + ] + }, + { + "t": "b", + "box": [ + 21.3, + 51.5, + 4.3, + 2 + ] + } + ], + "aspect": 0.562, + "size": 2033875, + "master": "IMG_9795.heic", + "master_size": 2240240 + } + } + }, + "gens": { + "label": "Generated images — gpt-image-2 with platter-grounded identity (real+goofy default tone). One PNG per successful gen, dated. Synced to assets CDN via `npm run assets:sync:up`.", + "url_pattern": "https://assets.aesthetic.computer/jeffreys/gens/{name}", + "key_includes_extension": true, + "items": { + "recap-jeffrey-24h-01_title-2026-04-29T1625.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "01_title", + "generated": "2026-04-29T23:25:30.487Z", + "bytes": 2401086, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is sitting at a wooden home desk in a wrinkled t-shirt, holding up a single sheet of plain white printer paper next to his face. The paper has \"24 HRS\" hand-drawn on it in thick black sharpie, slightly crooked letters. He is giving a deadpan grin with one slightly raised eyebrow, mid-laugh, eye-contact with the camera. An open silver MacBook on the desk in the background shows a calendar app with a single highlighted day. Soft afternoon light from a window on the right, warm white balance. A hot-pink (#ff6b9d) coffee mug sits on the desk — the only pop of accent color. Wide shot, his whole upper body and the desk visible. Vertical, 1024x1536." + }, + "recap-jeffrey-24h-02_menuband-2026-04-29T1628.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "02_menuband", + "generated": "2026-04-29T23:28:27.056Z", + "bytes": 2481496, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is hunched over a silver MacBook on a kitchen table, leaning very close to the screen with one finger pointing dramatically at the upper-right corner of the display where a small popover window has appeared in the macOS menu bar. The popover on screen clearly shows: tiny illustrated piano keys at the bottom, a horizontal row of small square sample pads above the keys, and a thin audio visualizer with vertical cyan (#4ecdc4) and hot-pink (#ff6b9d) bars dancing. His other hand is hovering above the laptop keyboard miming a tiny piano-playing gesture, comically exaggerated. He is wearing a hoodie, slightly bedheaded. Bright midday natural light from a window. A real coffee mug sits next to the laptop. Real candid energy, slightly absurd, deadpan focus." + }, + "recap-jeffrey-24h-02_menuband-2026-04-29T1630.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "02_menuband", + "generated": "2026-04-29T23:30:09.003Z", + "bytes": 2520266, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is hunched over a silver MacBook on a kitchen table, leaning very close to the screen with one finger pointing dramatically at the upper-right corner of the display where a small popover window has appeared in the macOS menu bar. The popover on screen clearly shows: tiny illustrated piano keys at the bottom, a horizontal row of small square sample pads above the keys, and a thin audio visualizer with vertical cyan (#4ecdc4) and hot-pink (#ff6b9d) bars dancing. His other hand is hovering above the laptop keyboard miming a tiny piano-playing gesture, comically exaggerated. He is wearing a hoodie, slightly bedheaded. Bright midday natural light from a window. A real coffee mug sits next to the laptop. Real candid energy, slightly absurd, deadpan focus." + }, + "recap-jeffrey-24h-03_landing-2026-04-29T1631.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "03_landing", + "generated": "2026-04-29T23:31:22.601Z", + "bytes": 2568114, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is sitting on the floor of a bright apartment living room, legs crossed, with his silver MacBook perched on the seat of an armchair in front of him — an absurd ergonomic situation he is clearly content with. The laptop screen shows a web browser open to a website: a thin titlebar reading \"menuband\" in lowercase, a tiled wallpaper of small repeating musical-note glyphs in cream and pale yellow, and a tagline line of text beneath. He is leaning forward, scrolling with one finger on the trackpad, looking quietly pleased with himself. Soft warm lamp light from a floor lamp. A house plant in the corner. Wood floor, a rug. Real iPhone candid energy." + }, + "recap-jeffrey-24h-03_landing-2026-04-29T1633.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "03_landing", + "generated": "2026-04-29T23:33:01.366Z", + "bytes": 2277889, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is sitting on the floor of a bright apartment living room, legs crossed, with his silver MacBook perched on the seat of an armchair in front of him — an absurd ergonomic situation he is clearly content with. The laptop screen shows a web browser open to a website: a thin titlebar reading \"menuband\" in lowercase, a tiled wallpaper of small repeating musical-note glyphs in cream and pale yellow, and a tagline line of text beneath. He is leaning forward, scrolling with one finger on the trackpad, looking quietly pleased with himself. Soft warm lamp light from a floor lamp. A house plant in the corner. Wood floor, a rug. Real iPhone candid energy." + }, + "recap-jeffrey-24h-04_platter-2026-04-29T1634.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "04_platter", + "generated": "2026-04-29T23:34:20.266Z", + "bytes": 2420285, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at a home desk, his silver MacBook screen filled with a tight grid of small thumbnail portrait photos — dozens of headshots and selfies that are clearly all of HIM, the same man, across many years and outfits. He is holding a small printed 4x6 photograph of himself up beside the laptop screen, comparing the printed photo to one of the on-screen thumbnails with an exaggerated mock-puzzled expression — eyebrows together, lips pursed, mock-serious investigation. Soft afternoon light from a window. A normal bedroom or studio behind him, slightly cluttered. Real candid, slightly absurd recursion gag, deadpan." + }, + "recap-jeffrey-24h-04_platter-2026-04-29T1636.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "04_platter", + "generated": "2026-04-29T23:36:09.677Z", + "bytes": 2791024, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at a home desk, his silver MacBook screen filled with a tight grid of small thumbnail portrait photos — dozens of headshots and selfies that are clearly all of HIM, the same man, across many years and outfits. He is holding a small printed 4x6 photograph of himself up beside the laptop screen, comparing the printed photo to one of the on-screen thumbnails with an exaggerated mock-puzzled expression — eyebrows together, lips pursed, mock-serious investigation. Soft afternoon light from a window. A normal bedroom or studio behind him, slightly cluttered. Real candid, slightly absurd recursion gag, deadpan." + }, + "recap-jeffrey-24h-05_lith-2026-04-29T1637.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "05_lith", + "generated": "2026-04-29T23:37:26.043Z", + "bytes": 2598490, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is crouched on the floor underneath his home desk, surrounded by a real tangle of black ethernet and power cables, with a silver laptop balanced precariously on his knees. The laptop screen shows a terminal window with \"Caddyfile\" config text — multiple lines of routing rules — and one specific \"try_files\" line highlighted in orange (#ff8a3d). Bright yellow sticky notes are stuck to the underside of the desk above him reading \"CADDY\" and \"WEBHOOK\" in black sharpie. He is holding a coffee mug in his free hand, deadpan, looking up directly at the camera with mock weariness. Slightly dim under-the-desk light from the laptop glow plus one warm lamp peeking in from beyond the desk. Real, deadpan, very \"him\"." + }, + "recap-jeffrey-24h-05_lith-2026-04-29T1639.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "05_lith", + "generated": "2026-04-29T23:39:21.239Z", + "bytes": 2094673, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is crouched on the floor underneath his home desk, surrounded by a real tangle of black ethernet and power cables, with a silver laptop balanced precariously on his knees. The laptop screen shows a terminal window with \"Caddyfile\" config text — multiple lines of routing rules — and one specific \"try_files\" line highlighted in orange (#ff8a3d). Bright yellow sticky notes are stuck to the underside of the desk above him reading \"CADDY\" and \"WEBHOOK\" in black sharpie. He is holding a coffee mug in his free hand, deadpan, looking up directly at the camera with mock weariness. Slightly dim under-the-desk light from the laptop glow plus one warm lamp peeking in from beyond the desk. Real, deadpan, very \"him\"." + }, + "recap-jeffrey-24h-06_say-2026-04-29T1640.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "06_say", + "generated": "2026-04-29T23:40:24.091Z", + "bytes": 2594245, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at his home desk, the silver MacBook screen showing a scrolling list of text snippets — each row a short hand-written-style phrase next to a tiny green-on-black audio waveform thumbnail. Stacks of old microcassette tapes and one chunky USB cassette reader are piled on the desk around the laptop. He is holding a single cassette tape up to the laptop's built-in microphone in a mock-serious \"recording in progress\" pose, eyes wide deadpan, mouth slightly open as if to whisper into the tape. The wall behind him has five or six small sticky notes, each with a hand-written quoted phrase in sharpie. Warm afternoon light. Real, very absurd, very \"jeffrey\"." + }, + "recap-jeffrey-24h-06_say-2026-04-29T1642.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "06_say", + "generated": "2026-04-29T23:42:26.333Z", + "bytes": 2666505, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at his home desk, the silver MacBook screen showing a scrolling list of text snippets — each row a short hand-written-style phrase next to a tiny green-on-black audio waveform thumbnail. Stacks of old microcassette tapes and one chunky USB cassette reader are piled on the desk around the laptop. He is holding a single cassette tape up to the laptop's built-in microphone in a mock-serious \"recording in progress\" pose, eyes wide deadpan, mouth slightly open as if to whisper into the tape. The wall behind him has five or six small sticky notes, each with a hand-written quoted phrase in sharpie. Warm afternoon light. Real, very absurd, very \"jeffrey\"." + }, + "recap-jeffrey-24h-07_oven-2026-04-29T1643.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "07_oven", + "generated": "2026-04-29T23:43:27.519Z", + "bytes": 2322736, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at his home desk wearing a pair of bright red kitchen oven mitts, lifting a thick stack of warm printed paper out of an open cardboard moving box on the desk. The box has \"PDF\" written on the side in chunky black marker. The silver laptop next to the box on the desk shows a terminal log scrolling with repeating lines like \"[papers] oven auto-build: 6 PDFs updated\". He is giving a deadpan flat expression to the camera, mouth straight. Behind him on a low shelf, more stacks of warm-looking paper sit on a wire metal cooling rack like baked goods cooling. Late golden-hour window light. Real candid, deadpan, slightly absurd." + }, + "recap-jeffrey-24h-07_oven-2026-04-29T1645.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "07_oven", + "generated": "2026-04-29T23:45:43.835Z", + "bytes": 2688064, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is at his home desk wearing a pair of bright red kitchen oven mitts, lifting a thick stack of warm printed paper out of an open cardboard moving box on the desk. The box has \"PDF\" written on the side in chunky black marker. The silver laptop next to the box on the desk shows a terminal log scrolling with repeating lines like \"[papers] oven auto-build: 6 PDFs updated\". He is giving a deadpan flat expression to the camera, mouth straight. Behind him on a low shelf, more stacks of warm-looking paper sit on a wire metal cooling rack like baked goods cooling. Late golden-hour window light. Real candid, deadpan, slightly absurd." + }, + "recap-jeffrey-24h-08_outro-2026-04-29T1646.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "08_outro", + "generated": "2026-04-29T23:46:25.982Z", + "bytes": 2370509, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is leaning back in his desk chair holding a coffee mug, giving a small exaggerated wave to the camera with his free hand. The silver laptop in front of him on the desk shows a screen reading \"thanks for watching\" in a calm cream-on-dark text layout with a thin cyan and pink underline. He is giving a small relaxed smile, real eye contact with the camera. Comfortable home setting — desk lamp on, evening softness, warm white balance. Wood desk, a houseplant or two visible. Real iPhone candid snapshot energy." + }, + "recap-jeffrey-24h-08_outro-2026-04-29T1649.png": { + "model": "gpt-image-2", + "size": "1024x1536", + "quality": "high", + "refs": [ + "portraits/jeffrey/corpus/shoot/jeffery-av--07.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--01.jpg", + "portraits/jeffrey/corpus/shoot/jeffery-av--04.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2018-12-02_Bq4ckGFFNtW.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2020-09-02_CEpxlO2FOvD.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2021-07-10_CRI095Vl7AO_1.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2025-01-25_DFQ2lHPzN_W.jpg", + "portraits/jeffrey/ig-archive/whistlegraph/2017-04-10_BStid5yjTHq.jpg" + ], + "context": "recap-jeffrey-24h", + "segment": "08_outro", + "generated": "2026-04-29T23:49:09.690Z", + "bytes": 2284526, + "prompt": "Photographic candid lifestyle photo of the man in the reference photos. Real photograph, photo-realistic, the kind of casual iPhone snapshot a friend would take of him at home — NOT illustrated, NOT painted, NOT cinematic, NOT magazine-glossy, NOT AI-poster-glossy. Slight film grain, slightly off-center framing, real natural room light. Identity: same face, same medium-length brown hair, same actual features as the references — recognizably him across the various refs. Keep real skin texture; do NOT smooth or prettify. He is at a real home desk in normal everyday clothes (t-shirt or hoodie, slightly bedheaded). Real, deadpan, very \"him\". Vertical 1024x1536 portrait orientation.\n\nScene: he is leaning back in his desk chair holding a coffee mug, giving a small exaggerated wave to the camera with his free hand. The silver laptop in front of him on the desk shows a screen reading \"thanks for watching\" in a calm cream-on-dark text layout with a thin cyan and pink underline. He is giving a small relaxed smile, real eye contact with the camera. Comfortable home setting — desk lamp on, evening softness, warm white balance. Wood desk, a houseplant or two visible. Real iPhone candid snapshot energy." + } } } } -- 2.51.2