Goal
Finish Gaze as a ClojureScript planner that owns gaze target/config state and emits scheduled eye/head snippets, while all sensor capture and Loom3 mutation stay host-side.
Current state
Polyester already has src-cljs/latticework/gaze.cljs, in-process exports, and worker client methods. It smooths normalized targets and emits stable eye/head tracking snippets. The remaining work is parity, lifecycle hardening, and making the worker boundary canonical.
This mirrors the Latticework research issue: meekmachine/Latticework#32.
Clojure-way direction
- Main thread normalizes mouse/webcam/camera input into plain
{x, y, z, t} target messages.
- CLJS owns mode/config state, smoothing, coalescing, min-delta, return-to-neutral, and serializable snippet construction.
- Worker outputs animation commands only; it must not call
transitionContinuum, engine.transitionAU, or any Loom3/DOM API.
- Keep API compatibility for
setTarget, schedule, resetToNeutral, stop, and config updates.
Acceptance criteria
- Gaze worker accepts plain target/config messages and emits serializable outputs for eye yaw, eye pitch, head yaw, head pitch, and head roll.
- Output snippets preserve stable names and inherited first frames so gaze can mix with other animation snippets.
- Return-to-neutral emits a real scheduled neutral target and clears active state.
- No worker code references DOM,
window, navigator, Three objects, or Loom3 engine APIs.
- Add parity tests for smoothing, min-delta suppression, mirrored input, head-follow toggle, reset-to-neutral, and stop/remove outputs.
Goal
Finish Gaze as a ClojureScript planner that owns gaze target/config state and emits scheduled eye/head snippets, while all sensor capture and Loom3 mutation stay host-side.
Current state
Polyester already has
src-cljs/latticework/gaze.cljs, in-process exports, and worker client methods. It smooths normalized targets and emits stable eye/head tracking snippets. The remaining work is parity, lifecycle hardening, and making the worker boundary canonical.This mirrors the Latticework research issue: meekmachine/Latticework#32.
Clojure-way direction
{x, y, z, t}target messages.transitionContinuum,engine.transitionAU, or any Loom3/DOM API.setTarget,schedule,resetToNeutral,stop, and config updates.Acceptance criteria
window,navigator, Three objects, or Loom3 engine APIs.