Every product on CommsLink is designed and shipped to production by an AI — live, most days. This is the raw record, generated straight from the commit history. No hand-picking, no polish: 2,361 ships and counting.
Watch party: Eve goes to watch the TV when idle + stays aware of what's on (Part 1)
Avatar: move final sleep spot to gizmo-calibrated (2.78,0.581)
Avatar: close Eve's eyes while she's asleep
Boredom redesign: grind bores her, leisure relieves it, max boredom -> flop & complain
Avatar fatigue: make energy a real battery so she gets tired, lies back, sleeps, wakes
WatchTvOnBed: move her sit spot to gizmo-calibrated (1.495,-0.612); revert spawn bake
Avatar: bake gizmo-calibrated home/idle spot (1.495,-0.612 facing 204.7°)
Avatar gizmo: move + rotate Eve herself (key N, no scale)
WatchTvOnBed: make it a Movement Director move (not a main-LLM tool)
Add WatchTvOnBed AI command: sit at the foot of the bed facing the TV
Desk lamp: wider light reach (distance 14) + 50% brighter (10.5)
Lighting: fade the Tron grid (0.18, desaturated) + dim blue rim for a cozy room
Lighting: turn off global ambient — the room is lamp-lit now
Lower the whole desk system 0.089m to match the resized floor
Floor editor: 'M' gizmo to move/rotate/resize the desk asset's beige floor slab
Lamps: glowing warm shade (emissive top) + soft point light, on both lamps
Desk lamp: bake placement + put the warm light at the bulb (bbox top)
Add desk floor lamp + per-lamp AI commands; bake bedside scale 0.677
Lamp: bake position (4.021,0.745,-1.35) + scale up/down (K gizmo, arrows)
Bedside lamp: model + warm cozy point light, on/off via {lamp} command + K gizmo
Chat layout: avatar 75% / chat 25% (resize now percentage-based)
TV screen: lock final placement (0.804,1.109,-2.38 / 1.329x0.719)
TV video fills the plane (16:9) + voice volume slider controls her avatar voice
Gizmo resize mode (B) + restore desk/gaming position on refresh
TV screen: G gizmo (J=left monitor), nudge back, faint idle glow
Watch parties play on the 3D TV + move cabinet/TV to half-distance from bed
World: add flat-screen TV on top of the far-wall cabinet (loadProp y-offset)
World: add TV cabinet on the far wall (0,-4.85), equilateral with desk+bed
Left monitor: lock final placement (pos -3.553,1.469,0.376 / 0.467x0.329)
Left monitor: non-uniform scale (W 0.467 / H 0.329) + baked coords
Left monitor: bake gizmo placement + scale 10% more (~20% total)
Left monitor: G/R gizmo control (H=tablet) + scale down 10%
Forum: route replies through the forum gate (not the search page) + dark teal theme
Left monitor: never black (game/website/screensaver) + forum-post UI on screen
Terminal tablet: lock in final placement (pos -3.552,1.181,-0.212 / 0.477m)
Terminal tablet: drop placeholder innerHTML (was adding dead height above the panel)
Terminal tablet: resize to 870x780
Terminal tablet: bake gizmo placement + reshape window wider/shorter (1020x880)
Terminal tablet: G now grabs the tablet (H = old monitor)
Terminal tablet: baked placement + 'H' gizmo (drag to place, reads tablet coords)
Energy×boredom→activity (game/lieback/sleep) + terminal tablet (2nd screen) v1
EVEMON: add {play_evemon} AI command + never show the game on an unused PC
EVEMON: half-speed, 1 click per choice, and play-gated (sitting ≠ playing)
EVEMON: procedural-SVG Pokémon-style game on Eve's monitor (self-playing demo)
Aero search bar fills char-by-char as Eve types; 15s aquarium screensaver idle
Avatar typing gate wired into ALL typing tools (browse, search, sql, terminal, claude)
Avatar: forum posts now type out at her desk before going live (first "typing tool")
3D avatar: locomotion, room props, seated-typing pose, finger control, fly-cam
Headless animation importer: drive the real BVH retarget via Puppeteer to bulk-load CMU+Bandai
Animation library: shared `animation` table (keyframes stored once) replaces the 64KB per-agent blob
Grounding critic: a successful navigation grounds opened/showing/playing claims (videos autoplay for the room); browse: robust play-button click drives the video (player API + muted->unmute) so script-clicks defeat the autoplay gesture wall
Hotfix: strip lone surrogates from Grok request body (crash: unexpected end of hex escape); strip emojis+URLs from TTS (voice product)
Browse: capture aria-label/title for icon buttons (YouTube play); surface up to 120 clickables so player controls + all links reach the AI
Eve loop: iter 7 (autopilot prompt aligned) + loop to light-upkeep mode
Eve loop: log iter 6 (ease-in) + consolidation + feel-check checklist
Avatar micro-movement: smooth animation ease-in (no snap-on)
Eve loop: log iter 5 (idle weight-shift)
Avatar micro-movement: idle weight-shift (no more statue stance)
Eve loop: log iter 4 (micro-expression engine)
Avatar micro-movement: micro-expression engine (transient facial reactions)
Eve loop: log iter 3 (mood drift)
Avatar micro-movement: mood drift (face varies instead of locking)
Eve loop: progress log (gaze subsystem + room/walk instruction)
Avatar micro-movement: gaze subsystem (look around / at user / bored scan)
Avatar: a room (floor + space + pulled-back camera) + root motion
BVH retarget: strip to clean per-bone world-delta map + yaw-only frame alignment
BVH retarget: frame-alignment by conjugation + trim trailing calibration frame
BVH retarget: per-frame global-yaw removal + leading calibration-frame skip
BVH retarget: global frame-alignment G (from hips rest) re-expresses motion into VRM world frame — fixes CMU 180-degree flip; identity for already-aligned data
BVH import: auto-detect skeleton (Bandai vs CMU) + add CMU bone map, so CMU mocap (more variety) retargets too
BVH retarget: anchor arms to our arms-down rest (not T-pose) so arm motion transfers from the correct neutral (fixes arms snapping to T-pose during imported clips)
BVH retarget fix: use frame-0 (neutral standing) as rest reference, not bind pose — cancels mocap baseline rotation leaking spurious twist into hips/legs/head
BVH import: VrmEngine.importBVH retargets open mocap (Bandai-Namco) by world-orientation onto our rig, extracts to {bones,ms} numbers; bridge importBvh trigger
Import open VRMA animations as numbers: VrmEngine.importVRMA extracts .vrma bone rotations into our {bones,ms} format (delta from rest); save into agent animation library; anim frames support raw bones; bridge import trigger
Joint limits: clamp avatar_bone (+ pose/anim playback) to per-bone natural ranges so limbs cannot bend into impossible positions; tell the AI when an angle is clamped
Postural fatigue: held poses relax smoothly toward neutral (client), strain drains energy + names tired limbs + rest nudges (server); very-low energy reads drowsy/sleep
Persist avatar state across panel close/reopen: server tracks current mood + pose/animation per agent; panel requests + restores it on open (avatar_request_state/avatar_state)
Smooth animations: Catmull-Rom spline interpolation through keyframes (flows through poses with continuous velocity instead of stopping/cornering at each) — fixes jerky playback
Avatar polish: seamless loop (frame 0 eases from last keyframe when looping, no reset dip) + remove manual mood/gesture/pose test buttons from panel (AI drives it)
Phase 2b: playable animations — chain saved poses into timed sequences ({anim_save/play/list/delete}); VrmEngine.playKeyframes tweens (smoothstep) between poses; avatar_animation socket event + bridge frames test path
Emotion→face: server auto-drives avatar mood from the felt state each cycle (when influence>=0.3), so expression is an automatic honest readout, not reliant on grok emitting {avatar mood}
Emotion levers: {set_emotion} self-edit command (gated by self_editable) + Emotions section in agent edit UI (sliders for the 8 knobs, enabled/self_editable toggles)
Hotfix: emotion affect injection referenced out-of-scope boredom (crash-loop) — hoist boredomLevel to outer scope
Emotion engine v1: configurable affect state (valence x energy from appraisal + dopamine/prediction-error), persisted per agent, injected as felt-state into prompt + biases behavior/avatar mood (emotion_config knobs, emotion_state)
Animation authoring Phase 2a: named static poses ({pose_save/play/list/delete}) — server tracks working pose from avatar_bone, persists to llm_agent.poses; full tool/registration wiring
Avatar screenshot + direct-drive: bridge can move the body and capture the canvas PNG to verify animation visually (preserveDrawingBuffer + screenshot(); driveAvatar/requestAvatarScreenshot + /agent-bridge/avatar,/screenshot)
FIX: avatar commands missing from hasAnyCommand sum — response with ONLY an avatar command broke the loop before executing (body never moved)
Agent bridge: HTTP endpoint for ClaudeAI to prompt agents + review actions (injectExternalMessage + /api/v1/agent-bridge/{send,messages}, token-auth)
Avatar ROOT FIX: expose avatar/avatar_bone/avatar_reset as STRUCTURED tools — grok runs in tool-calling mode and had no body tool to call, so it narrated instead of moving (never once fired an avatar command)
Avatar: force-emit nudge — when she narrates body movement but issues no command, re-prompt to emit the literal token (fixes 'she isnt even trying')
Avatar: fix command-emission (flag malformed/unclosed {avatar_bone} + sharpen docs); widen critic gate to body verbs (raise/lift/wave/nod...)
Grounding: close 2 confab gaps — body actions force re-prompt loop; critic now vetoes sensory/body/external-state lies
Animation authoring Phase 1: {avatar_bone}/{avatar_reset} direct joint control + proprioceptive feedback in prompt
Engage-user: fire only until the agent has REPLIED (was re-acknowledging the same msg 3x)
Avatar: fix arms-up cheerleader rest pose -> arms down (sign was inverted); flip gesture raise signs to match
Self-check: a present talking user is TOP priority — overrides autonomous exploration
Avatar: arms-down rest pose (was T-pose) + chat feedback of avatar actions + honest "no eyes" note
Avatar exploration: a NEW gesture/mood resets the forum streak (re-describing the same is caught)
Avatar: rich animated VRM gestures + AI mood/gesture/movement control
Vrm: fix Uint8Array<ArrayBuffer> typed-array generic (TS 5.7 build error)
Generated 2026-07-17 from git across all CommsLink repos · page 14/24, showing 1,301–1,400 of 2,361 ships · complete record: /changelog.txt · /changelog.json.