Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions capture/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,49 @@ recordings as evidence of physical-hardware validation.
The older `core-capture.json`, `core-controls.json`, and `core-workflows.json` describe their historical v3.0 capture run. For an output recaptured by `interfaces.json`, the current `manifest.json` entry is authoritative.

To redo only the movies after a reviewed still capture at the same source revision, set `CAPTURE_MODE=video` on the capture command.

## October 14 development preview

`capture/development.json` records the unreleased Core and iOS source revisions
and capture methods. The site labels these features as development previews.

For Core, use an isolated checkout at
`f905a776a8eca61cf0e855726b06e7774f241c52`. Install locked dependencies with scripts
disabled, then run `pnpm rebuild better-sqlite3`. Build with
`CI=1 NEXT_PUBLIC_DEMO=1 DATABASE_URL=:memory: BIOMETRICS_DATABASE_URL=:memory: pnpm build`.
Start the standalone server with `CI=1 HOSTNAME=127.0.0.1 PORT=3214`, both database
URLs set to `:memory:`, and a nonexistent `DAC_SOCK_PATH`. Run
`node scripts/capture-development.mjs` from this site worktree. API and external
network requests are blocked; the built-in demo handles queries and mutations.
The Watch dialog clip stops before uploading; the calibration clip imports only
the synthetic records embedded in the script and saves a candidate without
applying it. No product UI is modified.

For iOS, use a clean checkout at `ce1d455cb69b00413f8d84630052c1878d9a5f5b` and
build the upstream `Marketing/AppStore/capture.py` app/test target. Create a
**sleepypod Docs Watch** iPhone 17 Pro Max simulator on iOS 26.2, then run:

```sh
IOS_SOURCE_ROOT=/path/to/pinned/ios IOS_CAPTURE_UDID=<dedicated-simulator-udid> \
python3 scripts/capture-ios-watch.py
```

The wrapper runs the upstream Watch screenshot and `testClipSleepAndWatch` tour,
using its demo launch arguments and disabling Apple Health sync. It resets only
the named disposable simulator's app data. The upstream runtime auto-selection
failed to create an iPhone 17 Pro Max on this machine's iOS 27.1 runtime, so the
wrapper selects the explicitly supplied compatible simulator. Screenshots are
copied from `raw/`, with no marketing frame baked into their pixels.

After reviewing raw captures, run:

```sh
IOS_SOURCE_ROOT=/path/to/pinned/ios node scripts/promote-development.mjs
pnpm check
```

Promotion trims Core recording startup, encodes silent H.264, and copies the
upstream iOS clip and untouched screenshot. It records dimensions, durations,
byte sizes, and SHA-256 hashes. Captions provide the action transcript and
identify synthetic data. These demonstrations do not validate biometric accuracy,
live processor adoption, or Apple Health writes.
26 changes: 26 additions & 0 deletions capture/development.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"sourceCommit": "f905a776a8eca61cf0e855726b06e7774f241c52",
"method": "Unmodified Core production demo; local in-browser simulation; API and external network requests blocked",
"records": [
{
"name": "core-vitals-preview",
"route": "/en/sleep?view=biometrics",
"raw": ".capture/development/page@f6ddb3b6f5f8dfab4020fafe5fa43c71.webm",
"start": 3.626,
"duration": 10.088000000000001
},
{
"name": "core-calibration-preview",
"route": "/en/settings?section=biometric-calibration",
"raw": ".capture/development/page@96b4e670c820c4c5418fccc1679af0e6.webm",
"start": 3.653,
"duration": 18.218
}
],
"ios": {
"sourceCommit": "ce1d455cb69b00413f8d84630052c1878d9a5f5b",
"simulator": "iPhone 17 Pro Max / iOS 26.2",
"method": "scripts/capture-ios-watch.py; upstream testClipSleepAndWatch",
"data": "Built-in synthetic demo; Apple Health sync disabled"
}
}
69 changes: 69 additions & 0 deletions capture/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -776,6 +776,75 @@
"bytes": 277849,
"width": 1920,
"height": 1080
},
{
"repository": "sleepypod-core",
"commit": "f905a776a8eca61cf0e855726b06e7774f241c52",
"source": "/en/sleep?view=biometrics",
"output": "core-vitals-preview.mp4",
"method": "scripts/capture-development.mjs + scripts/promote-development.mjs; unmodified loopback production demo, synthetic data, API/external requests blocked",
"sha256": "6f6cb9e6e84c19f045d8f0919d398c2946938c1cb4a8d809487997830a9f8ce6",
"bytes": 391634,
"width": 1440,
"height": 1000,
"duration": 9.96
},
{
"repository": "sleepypod-core",
"commit": "f905a776a8eca61cf0e855726b06e7774f241c52",
"source": "/en/sleep?view=biometrics",
"output": "core-vitals-preview.png",
"method": "scripts/capture-development.mjs + scripts/promote-development.mjs; unmodified loopback production demo, synthetic data, API/external requests blocked",
"sha256": "a2e7dcb06420fc1076e28334141ca151ba58a5c366b2a4e630b827da5a2d5054",
"bytes": 178778,
"width": 1440,
"height": 1000
},
{
"repository": "sleepypod-core",
"commit": "f905a776a8eca61cf0e855726b06e7774f241c52",
"source": "/en/settings?section=biometric-calibration",
"output": "core-calibration-preview.mp4",
"method": "scripts/capture-development.mjs + scripts/promote-development.mjs; unmodified loopback production demo, synthetic data, API/external requests blocked",
"sha256": "3bf4ed4d692b714cd5482e328dc1b916cff82a2dca1a8a3f12c9ec5d92bc7ad9",
"bytes": 650720,
"width": 1440,
"height": 1000,
"duration": 18.12
},
{
"repository": "sleepypod-core",
"commit": "f905a776a8eca61cf0e855726b06e7774f241c52",
"source": "/en/settings?section=biometric-calibration",
"output": "core-calibration-preview.png",
"method": "scripts/capture-development.mjs + scripts/promote-development.mjs; unmodified loopback production demo, synthetic data, API/external requests blocked",
"sha256": "2b5ad02d14952ea298d9991b709f7c806cde500a80f95f9b80c6c8a7d7c20cd4",
"bytes": 126781,
"width": 1440,
"height": 1000
},
{
"repository": "sleepypod-ios",
"commit": "ce1d455cb69b00413f8d84630052c1878d9a5f5b",
"source": "Marketing/AppStore/output/iphone-6.9/clip-sleep-watch.mp4",
"output": "ios-watch-preview.mp4",
"method": "scripts/capture-ios-watch.py; upstream XCUITest tour on dedicated iPhone 17 Pro Max iOS 26.2 simulator, demo backend, Health sync disabled; original raw screenshot and encoded clip",
"sha256": "402c50847fd46e8d2596ab8da09b84171a808af7c82b20ec39e2e4d00cb0f13c",
"bytes": 1255936,
"width": 886,
"height": 1920,
"duration": 19.433333
},
{
"repository": "sleepypod-ios",
"commit": "ce1d455cb69b00413f8d84630052c1878d9a5f5b",
"source": "Marketing/AppStore/raw/iphone-6.9/dark/07-apple-watch.png",
"output": "ios-watch-preview.png",
"method": "scripts/capture-ios-watch.py; upstream XCUITest tour on dedicated iPhone 17 Pro Max iOS 26.2 simulator, demo backend, Health sync disabled; original raw screenshot and encoded clip",
"sha256": "bba58073c87c1966e7bac39e29f4965b153541132f0f51188a13268df96f7305",
"bytes": 366350,
"width": 1320,
"height": 2868
}
]
}
89 changes: 89 additions & 0 deletions capture/recent-pr-review.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{
"reviewedAt": "2026-10-14",
"scope": "Documentation and demonstration coverage of recent product PRs against product main; site PR review and merge. This is not a full audit or approval of product code.",
"baselines": {
"core": {
"main": "9bbc7232924fd2b18c7176c259556151aecc6412",
"development": "f905a776a8eca61cf0e855726b06e7774f241c52",
"promotionPR": 820
},
"ios": {
"main": "bb81c0aa08f71843283559c4cd45a723b26bb31b",
"development": "ce1d455cb69b00413f8d84630052c1878d9a5f5b"
}
},
"coverage": [
{
"repository": "sleepypod/core",
"prs": [802, 803, 814, 821, 826],
"topic": "Watch reference data and vitals exploration",
"guide": "/core/development-preview/",
"media": ["core-vitals-preview.mp4"],
"status": "development preview; upload dialog demonstrated without uploading Health data"
},
{
"repository": "sleepypod/core",
"prs": [815, 816, 817, 822, 823, 828, 829, 830, 831],
"topic": "Stage rules, biometric profiles, references, replay and activation",
"guide": "/core/development-preview/",
"media": ["core-calibration-preview.mp4"],
"status": "development preview; synthetic reference import and candidate save demonstrated; no claim of live adoption or validated accuracy"
},
{
"repository": "sleepypod/core",
"prs": [825, 827, 832],
"topic": "MCP sleep curves, saved templates and notes",
"guide": "/core/development-preview/",
"media": [],
"status": "development preview; existing schedule video retained at its own revision"
},
{
"repository": "sleepypod/core",
"prs": [804, 805, 806, 807, 808, 813],
"topic": "Sleep detection fixes, away controls and side tabs",
"guide": "/core/development-preview/",
"media": [],
"status": "development preview; existing Stage video retains its own revision"
},
{
"repository": "sleepypod/core",
"prs": [833, 834],
"topic": "HTTP and sensor WebSocket Host/Origin allowlist",
"guide": "/core/development-preview/",
"media": [],
"status": "development preview; pinned deployment reference; no visual workflow required"
},
{
"repository": "sleepypod/core",
"prs": [811, 812, 818, 819],
"topic": "Build and dependency maintenance",
"guide": null,
"media": [],
"status": "no new user workflow; current development demo production build verified"
},
{
"repository": "sleepypod/ios",
"prs": [58, 59, 60, 61, 62],
"topic": "Health resync/rebuild and Watch comparison",
"guide": "/ios/using-the-app/",
"media": ["ios-watch-preview.mp4"],
"status": "development preview; real simulator demo; no Health writes"
},
{
"repository": "sleepypod/sleepypod.github.io",
"prs": [39],
"topic": "Firmware recovery claims and modified Slot B stop condition",
"guide": "/core/firmware-updates/",
"media": [],
"status": "corrected and merged at 945ff5dc6c2f2b6632249efa56fdd7a37eb73664; no new UI to record"
}
],
"notReleased": [
{
"repository": "sleepypod/core",
"prs": [809, 810],
"reason": "Open feature/fix branches outside the reviewed dev and main snapshots; not presented as released behavior."
}
],
"preservedMedia": "Existing screenshots and clips retain their original pinned revisions; newly generated media are additive."
}
1 change: 1 addition & 0 deletions content/core/_meta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export default {
temperature: 'Temp',
base: 'Base (experimental)',
tour: 'Video tour',
'development-preview': 'Development preview',
autopilot: 'Autopilot',
schedules: 'Schedule',
biometrics: 'Sleep',
Expand Down
2 changes: 2 additions & 0 deletions content/core/biometrics.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: 'Review nights, sleep stages, and vitals by night, week, or month,

# Sleep

Looking for newer development controls? See the [development preview](/core/development-preview/) for their status and workflows.

**Sleep** shows what the Pod measured while you slept. It has two views: **Nights** for sleep records and **Biometrics** for heart rate, HRV, and breathing. Everything is processed on the Pod; see [Follow your data](/core/data-flow/) for how.

Choose whose data you see with **Left** / **Right** at the top. The switch is hidden while one side is in [Away mode](/core/settings/sides/#away-mode).
Expand Down
Loading
Loading