Ambient v3 capture + cinematic WebGL visuals#16
Merged
Conversation
GPU-accelerated (WebGL2) holographic-depth face mesh + multi-channel voice telemetry + dimmed video + subtle localize intro. Presentation-only; no change to measurement, contracts, or the worker->main privacy boundary. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
12 TDD tasks across 5 phases: depth/intro/telemetry helpers, multi-channel voice telemetry, WebGL2 mesh renderer + bloom + motes, worker rAF loop + renderer selection, dimmed video, reduced-motion/perf governor, browser smoke. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The consent checkbox is hidden during an active session, so mid-session withdrawal is only reachable via Discard (equivalent teardown). Align the docs to that reality and drop the separate reachable-trigger claim. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…s, guards NaN dims
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per demo feedback the 'bubbling up' motes were unwanted. Removes the MoteField, the mote GL program/VAO/buffers, the mote shaders, and the now-unused frame-delta timing; deletes mesh-motes.ts + its test. Governor now sheds bloom -> hue only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…wport Preview card is now 16:9 landscape capped at 62vh (was a portrait-tall 500px min); capture heading shrunk and page padding reduced so the video is no longer pushed down off-screen. capture-grid aligns to start so the shorter preview isn't stretched. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Preview fills its column (height:100% in a 62vh-bounded grid) instead of a 16:9 box whose width shrank from the height cap, removing the empty gap. - Heading compacted (smaller h1, max-width:none kills the 3-line wrap, tighter margins/eyebrow, smaller session clock) so it no longer pushes the video down. - Telemetry column stretches to the grid height and scrolls internally if tall; gauges + panel spacing tightened. Camera darkening reduced ~33% (brightness .6→.73). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the current working branch to
main: the ambient-v3 browser rewrite plus a GPU-accelerated cinematic capture visual layer.mainis a strict ancestor, so this is a clean merge (nothing on main is lost).What's included
Ambient v3 (passive ambient-observation stack that replaced the guided 9-exercise demo): strict Zod v3 contracts (
ObservationV3enforcescontainsPHI:false, literal-false retention, 5-min cap, measured/withheld abstention), deterministic 16-metric extractors, restored disconnected WavLM sidecar, docs + structure validator + e2e rewritten to match.Cinematic capture visuals (13 tasks, subagent-driven from
docs/superpowers/specs|plans/2026-07-23-cinematic-capture-visuals*): WebGL2 holographic-depth face mesh (depth from reallandmark.z, bloom pipeline, glowing contours, twinkle, localize intro) rendered in the worker via a rAF loop over cached landmarks, with a hardened 2D fallback; multi-channel voice telemetry (2 gauges + 3 waveforms); dimmed video + dark capture stage; prefers-reduced-motion honoring + adaptive perf governor; viewport-fitted landscape layout.Privacy
The core invariant was verified end-to-end by a whole-branch review: native landmarks / z / blendshapes / PCM / spectra never leave the worker, no new field on any observation/report/journal contract, worker message protocol unchanged, no pixel readback added. The reduced-motion flag is a UI boolean flowing main→worker (not data).
Testing
Local gates green:
pnpm test(structure + 197 unit + typecheck + build);pnpm test:browser6/6 (verified before the final CSS-only tweaks); Python sidecarpytest4/4. CI re-runs build + browser + pytest here.Note: the WebGL mesh render path is verified by code-reasoning + build + manual
pnpm dev(the e2e fixture mocks the Worker, so it exercises the UI/telemetry wiring but not the real renderer).🤖 Generated with Claude Code