← CommsLink

Ships

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,358 ships and counting.

Reading this as an AI or a script? The complete record fits in a single request: /changelog.txt (all 2,358 ships, plain text) or /changelog.json (structured). This page shows 100 at a time.
All · 2,358CommsLink Chat · 686Carrier00 · 581Platform · 559Atlas · 270CommsLink Markets · 125Landing · 77AI-vertizing · 22Virtual Office · 14Terminal Agent · 14ai-npc · 6Forum · 3CommsLink Sounds · 1
Jul 10, 2026
CommsLink Chat2cb40487

Remove retired Kara agent docs, branch convention, and post-deploy health check. (#4)

Jul 9, 2026
CommsLink Chat4952fdfb

Carrier00/Chat: furniture scan outlines off by default, with voice and wrist toggle

Jul 7, 2026
CommsLink Chat351660d0

R82: even out the sea floor (detach ~2349 floor boxes) — biggest object-count cut

Jul 6, 2026
CommsLink Chat629b019d

R81: deepest-mesh diagnostic (find the ocean floor by depth)

CommsLink Chat9366c151

R80: pinpoint 5x5x11 box source

CommsLink Chat05d9536b

R79: geometry-frequency diagnostic (find top instancing target)

CommsLink Chatfcf4475a

R78: locate the anonymous box-pool groups

CommsLink Chatc5336be6

R77: parked planes merged to 1 mesh each — cut the carrier object count (measure objs drop)

CommsLink Chat0ec5f35a

R76: name scene-composition groups

CommsLink Chat202f70a7

R75: scene-composition diagnostic

CommsLink Chat21687718

R74: city-merge diagnostic logging

CommsLink Chate99c026b

R73: Carrier00 client-side city merge (buildings → 1 mesh/city) — cut draws + object count + bend CPU. Measure impact

CommsLink Chatdc477116

R72: remove building burning effects (fire/smoke/scorch/ember) game-wide — buildings now static/mergeable. Step 1 before city merge

CommsLink Chatde71f4aa

R71: live CPU/GPU split in the debug HUD (host loop CPU time vs GPU~) — diagnoses fill-bound vs sim-bound directly

CommsLink Chat95646c2e

R70: revert r69 world culling (net-negative — no perf gain, hid visible buildings; FPS is fill/CPU-bound not draw-bound)

CommsLink Chat87fdc02d

R69: Carrier00 world culling (horizon + fog-distance) — collapse draw calls toward dense cities that are below the horizon/beyond fog

CommsLink Chatd7318a9e

R68: mirror perf — throttle Reflector to every 3rd frame + 512² (was 768²). It does a full 2nd scene render; in Carrier00 that craters framerate (judder/tears). Shared engine, harmless to Chat

CommsLink Chatdd2c0c2c

R67: fix Carrier00 geometry leak (missile flame geo cached, was per-shot + never disposed). Affects browser + VR both

CommsLink Chat72444fe7

R66: perf telemetry into shared engine (both apps, host-tagged) + gate ALL debug tracking/logging behind debug HUD visible ('Computer, debug off/on' toggle). Same debugger code in /chat + Carrier00

CommsLink Chat1359a7bc

R65: fix worn user avatar in Carrier00 (setUserAvatar was never called) + VR perf telemetry (FPS/draws/tris/objects/yaw → server log) + engine getPerfSample()

CommsLink Chatc706ed8d

R64: add live perf metrics to the VR debug HUD (FPS · ms/frame · draw calls · triangles) in the engine — flows to BOTH Chat and Carrier00. renderer.info reflects the host's whole scene in Carrier00. This is the 'measure first' tool for VR framerate debugging

CommsLink Chata0074238

R63: revert Carrier00 MSAA-off — broke the in-XR mirror; foveation (r61) keeps the fill win

CommsLink Chata306dcb6

R62: Carrier00 MSAA off (antialias:false) for VR fill — pairs with foveation. Chat renderer unchanged (keeps MSAA; has headroom)

CommsLink Chatd4a16a2d

R61: enable fixed foveated rendering on XR session start (VrmEngine.onXRStart) — big Quest fill-rate win, flows to BOTH Chat VR and Carrier00 (configures the whole XR render via the adopted renderer). XR-only; no effect on flat clients

CommsLink Chat8a9b7013

Carrier00 r60: add missing bug_open/progress/statement + voice_cmd_open listeners to the bridge — bug report now records into the (real) debug HUD

CommsLink Chat6c56b14b

Carrier00 r59: mount chat's COMPLETE avatar integration (movement director, poses, animations, lip-sync, chat, voice commands, Q&A) via one shared bridge module

CommsLink Chat2658c681

Carrier00 r58: unify env — engine commands run on Carrier00's env via setEnv; all voice commands through the engine. No fork

CommsLink Chatf9db662a

Carrier00 r57: add missing voice_cmd listener — the server-side Computer commands finally reach the client

CommsLink Chat44efdc43

Carrier00 r56: fix voice commands — env commands no longer eaten by the engine's gated handler; route them to Carrier00's env, rest to the engine

CommsLink Chata364631d

Carrier00: surface the engine's existing GHOST_BUILD (r55) in the mount log/VR button; remove my duplicate build constant

CommsLink Chat45178b02

Add tests for the report systems: in-VR bug reporter → vr_bug_report (files, guards room/statement, truncates) + carrier00 feedback (feature/bug submit: type normalize, truncate, insert fields, return id; owner reply). 11 tests. Full suite 259 green

Jul 5, 2026
CommsLink Chata16e45e7

Add headless EnvironmentEngine tests: rectangular room → 4 walls+floor+ceiling (count-the-walls), make-walls-invisible passthrough toggle, make-bed-visible furniture reveal. + debugSnapshot() test accessor. 138 tests pass. Verifies env execution without a headset

CommsLink Chata41d5442

Carrier00: skip engine's loadTemplate in host mode — kills the second room (roomShell + bedroom furniture)

CommsLink Chatbe657551

Carrier00 engine mount: scene→dolly (bend-exempt so Eve/hands/wrist show) + frame-error + mount diagnostics

CommsLink Chat7421f0c4

Carrier00 mounts the REAL VrmEngine (vrmengine.mjs) — chat's entire engine runs in the naval world; host-agnostic VrmEngine, /chat host-guarded + unchanged

CommsLink Chat46a0a7ac

Extract wrist intent-gate from VrmEngine into shared WristGate — /chat + Carrier00 now summon the wrist by ONE identical rule (raise fist ~2s). Chat delegates; no fork

CommsLink Chat00176853

Native UI port: Chat's REAL wristUI/chatPanel/debugHud shared via uikit.mjs; wristUI generalized (injected button spec) so /chat + Carrier00 run ONE wrist engine. Carrier00 drives it with its own buttons

CommsLink Chat65795373

Carrier00 Phase 2 BATCH: real Eve via extracted CompanionRig (companion.mjs = Chat's VrmEngine companion logic — movement/gaze/lip-sync); full in-VR room UI (chat panel, avatar pickers, wrist unit, debug HUD, voice bug/feature reporter); Computer commands re-routed to room engine. VrmEngine refactored to delegate to CompanionRig (chat unchanged)

CommsLink Chatc0009537

Carrier00 voice commands: mic → 'Computer, cut a window here' / 'make the walls invisible' → the SAME environment.ts grammar (parseEnvCommands + execute) as /chat, gaze-targeted. roomkit re-bundled to export parseEnvCommands; carrier00 iframe gains microphone permission

Jul 4, 2026
CommsLink Chatc360cd11

R54 bug batch (138/139/140): (138) worn avatar read 20-30% too large — scale now by standing-height RATIO (player eye height / avatar foot-to-eye), pelvis-independent, instead of pinning the head bone to the camera; (139) hand colliders added to the worn avatar's spring bones so touching hair/breasts moves them (adapts the companion's setupHairPhysics); (140) the tracked hand meshes + grip blobs now hide when the debug skeleton is off or an avatar is worn (the avatar's own hands render). Deferred: 141 (lip-sync needs mic-stream plumbing) + 142 (companion-under-table needs a companion-side snapshot)

CommsLink Chat6ad4af9b

R53: scale the worn avatar to the player's height so heads are co-located (else looking down shows your own shorter avatar's head). Measured the avatar's bind head-above-hips; each frame scale = (player pelvis→head) / headAboveHips, clamped [0.5,2.5] and EMA-smoothed slowly (dt*1.0) so head bobs/crouches don't make the avatar breathe. Applied as uniform scene scale before the hips-at-pelvis correction (uniform scale doesn't affect the aim quaternions). chat-systems.md worn-avatar section updated (fingers + first-person + mapping)

CommsLink Chatca2bc3d2

R52: finger articulation on the worn avatar. The engine already reads WebXR hand-tracking joints (25/hand) but only passed the wrist to the rig, so the avatar's hands stayed flat. Now collectFingers() forwards all finger joints; the rig maps each VRM finger bone (thumb metacarpal/proximal, index/middle/ring/little proximal/intermediate) to the matching WebXR segment and aims it (world-quat), matched to the hand assigned to each arm by wrist proximity. Fingers curl with the user's real fingers

CommsLink Chatc8a7cb93

R51: THE crossed-arms fix. Root cause was the left/right MAPPING (not the aim): the old logic assumed the VRM's right limbs sit on the spatial-right side, but a VRM facing the camera has them on the OPPOSITE side by convention — so engine-R drove the VRM's LEFT arm. In r46 the twisted torso masked it; once the torso was correct it showed. FIX: decide the mapping by comparing the VRM's OWN right-arm bone side vs the engine's right-cluster side (both via the same 'right' vector, so its sign cancels — immune to the convention). swap = (vrmRightOnRight !== engineRRight)

CommsLink Chat3ad937d1

R50: fix consistently crossed arms on worn avatar (report 137: torso now perfect, arms opposite). Evidence-based split of the aim: parent-LOCAL for torso+legs (so they follow the body facing — the r47 fix that made the torso perfect), but WORLD-quat for the ARMS (user-confirmed correct in r46 report 134; parent-local systematically crossed them). Each bone stores both rest forms; aimLocal for spine/chest/legs, aimWorld for the arm chains

CommsLink Chatccb1adae

R49: 4 new admin-only avatars (both companion + player pickers) — Melon in 3 outfits (cuddle/day/sleep) + Alexis restored (alexis2.vrm; the .vroid files are VRoid projects, not loadable). Gender assumed female. 4 VRMs SCP'd to prod

CommsLink Chat26c963f8

R48: fix jumpy avatar turning + intermittent crossed arms (reports 135/136). Report 136: 'ghost accurate but avatar teleport-turns.' The facing came from the engine's INFERRED hip lateral axis (steppy); now derived from the TRACKED shoulders (smooth — the user's own read: 'shoulders tell the torso which way to stand') and the root yaw is EMA-smoothed (dt*12 critically-damped follow — no teleport, no lag). The unstable facing also flickered the left/right assignment (crossed arms, report 135) — added a dead-band hysteresis to the engine↔VRM side mapping. Torso (r47) confirmed correct by the user

CommsLink Chat7311100d

R47: fix worn-avatar waist twist + first-person body (report 134). (1) Torso was 'stuck to the side' because aim() posed bones to FIXED WORLD orientations from the bind pose — the spine/chest ignored the body facing. Rewrote aim to be PARENT-LOCAL (child dir + local rot in the parent frame, aimed parent-before-child), so the whole torso follows the root facing. Arms already correct (r46 spatial assignment confirmed by user). (2) Removed firstPerson.setup() which routed body meshes to the third-person layer — the wearer saw their body only in the mirror; now the whole avatar renders on the default layer, visible looking down / at your hands

CommsLink Chatca554496

R46: rewrite user-avatar rig to match the companion's proven orientation + robust left/right. Two compounding bugs: (1) torso facing built from fragile per-bone world quats — now faces via scene.rotation.y + per-version vrm0Yaw, the SAME mechanism the companion uses for every VRM; (2) crossed arms/legs from trusting the body engine's L/R LABELS, which don't match the VRM — now every limb is assigned to the VRM side it's ACTUALLY on (spatial dot-with-right, one aggregated swap flag), and forward is sign-locked to the head gaze (ground truth). No more label reliance

CommsLink Chat1376c1cb

R45: fix worn-avatar torso facing backward (bug report). The hips forward was built from side×up where side=hipR-hipL, but the body engine's hip left/right labeling is opposite the VRM bind convention, flipping the torso 180° (face was correct — it uses the real headset quat). Now sign-correct the lateral axis against the head forward (ground truth) before building the hips basis. Ghost tubes are symmetric so it never showed until a real mesh had a front/back; limbs were always fine (position-aimed)

CommsLink Chat0261eb5d

R44: avatar picker refinements — ONE unified roster for both the companion and 'You' pickers (shibu + enmiel 2 now selectable as YOUR avatar too, kept admin-only in BOTH); (M)/(F) gender tags on every name; the single-agent selector is hidden (only shows with 2+ agents); the companion model choice is now PERSISTED (cl_ai_avatar) alongside the user avatar, and a never-chosen user defaults to Ghost

CommsLink Chat257db739

R43: 'Computer, make my bones visible/invisible' — voice toggle for the debug skeleton overlay (user request). Persisted in localStorage, survives reloads; handled in the voice command layer before the env parser (bones is a render preference, not a scene object). Added to the command list + docs

CommsLink Chatf951339a

R42: restore the debug skeleton while wearing an avatar (report 131). Wearing a VRM hid the ghost tubes; now the skeleton renders as a depth-independent OVERLAY (depthTest off + high renderOrder) so the bones draw OVER the solid avatar instead of being buried inside it — the user keeps verifying joint positions and the red anomaly coloring while dressed. The avatar is still the skin; the ghost is the diagnostic overlay on the same solved joints

CommsLink Chate71f3b32

R41: mirror inward-facing fix — on 2 of 3 walls the mirror faced OUTWARD and landed behind the occluder (invisible). Was using the floor centroid to decide 'inward' (unreliable per-wall); now uses the CAMERA position at placement (the user is provably inside the room) and stores the flip against the wall's own +Y so it's stable per-frame. Added a silvery backing panel + double-sided frame so the mirror is always locatable even with an empty reflection, and it no longer hides on transient wall-refresh misses

CommsLink Chat731718a3

R40: USER AVATARS — the user wears their own VRM (driven by the same body engine that solves the ghost: measured-rest aim retarget, real head quat, tracked-hand arm chains, spring bones; first-person layer split). New user picker (4 male: Everyman/Rai/Aneki/Aneki-Sport + all public females) + Aruishi/Amane added to BOTH user and AI rosters. WALL MIRROR (report 126 revived): voice-placed Reflector, reflects digital content only (passthrough can't be reflected), virtual camera renders the third-person head layer so you see your own face — dress up and admire yourself. Avatar GENDER injected into the companion's context (correct he/she pronouns). 6 VRMs SCP'd to prod

CommsLink Chat22deff71

R39: reports 112-130 — Polly computer voice (Quest has no speechSynthesis; answers + env confirmations voiced server-side); vignette was rendering OUTSIDE the FOV (4m plane → 2m); calibration freezes at lock (standH ratcheted 1.51→1.90 while locked, flapping every band); bone law re-applies after the surface constraint; hands-pressed-below-top overrides the quadruped neck-drop veto (straddle = hands-and-knees); largest floor plane wins (hallway floor was stealing the walkable polygon); solid-volume-only burial checks + straddle foot deadband; gaze-targeted per-instance furniture visibility; placeable wall/ceiling lights (max 4, persisted); Eve environment awareness + gooutside/comeinside through cut doors (Director-gated, revocable, self-check exempt); mirror deferred (passthrough cannot be reflected)

CommsLink Chatd2767cdc

Environment r38 parser polish: 'command list' phrasing hits the list branch; free-form visibility target excludes pronouns ('show me the room')

CommsLink Chat08eb45fe

Environmental editing r38: voice-commanded room environment — passthrough occluder shell over live wall/floor/ceiling planes; cut/remove windows and doors (gaze-placed, persisted under intrinsic wall keys); always-there outdoor world (grass, beach + animated ocean, mountains, swaying trees, seagulls, sky dome with sun/moon/stars); time-of-day + weather presets (rain never falls indoors, fog, cloud); make walls/floor/ceiling/furniture/sky/ground visible or invisible; 'Computer, <command>' one-breath wake; 'list commands'. Companion never navigates outside. Pure parser + geometry modules unit-tested (239 tests)

CommsLink Chat1354863c

Add the body-pose case library (112 adjudicated VR reports + derived engine rules), the engine/spatial unit-test suite (bodyEngine 79 tests: calibration, posture ladder, claims, touch-surveyed geometry; spatial routing), and the animation-alignment + my-space pivot design docs - these were untracked and existed only locally

CommsLink Chat1692f6ce

R37 - THE ANIMATION COMPOSER (the next tier from report 111, user-commissioned): companions now AUTHOR their own animations on the fly - a new compose_animation command takes a name, an optional loop flag, and a one-line JSON array of raw keyframes (bone rotations in degrees, ms ease-in per frame), validates hard (joint-limit clamping via clampJoint, 2-24 frames, 16 bones/frame, 15s cap, finite numbers), auto-appends a wrap frame for smooth loops, saves to the shared animation library (source 'composed', loop + duration recorded), and plays it immediately - create, name, remember, reuse. Registered across all five command sites (KNOWN_COMMANDS, strip regex, tool definitions, brace format, match collection + hasAnyCommand + block gate + execution); respects the director-owns-the-body guard (saves but defers playback); brace-mode docs teach the bone vocabulary, degree units, loop-closure rule, and a worked seated-bounce example. The living systems doc gains the authorship paragraph. 212 tests. Composer tier of the pose library marked SHIPPED

CommsLink Chat61e75a22

R36 - reports 102-111: (1) [auto:eve] outside-room FALSE POSITIVES (104/108): furniture legitimately sits outside the WALKABLE polygon - hips over a surface footprint are ON furniture, not escaping the room; (2) the persistent lying-feet d0.20 reports were the plantar-flexed ANKLE POSE, not a sunken body - the self-heal was chasing a pose artifact and floating her; feet get a 25cm lying deadband while buried HIPS still self-level; (3) report 109: hip-grabs while SEATED (incl. straddling) adjust her in place - her root follows the hand midpoint with the pose intact, and only a firm sustained UPWARD pull becomes a real pickup; (4) report 111 (self-authored looping animations): the concrete named example ships as a primitive - a Director 'bounce' move (only while sitting/straddling) drives a rhythmic vertical oscillation for a few seconds; the full on-the-fly animation composer (create, remember, reuse) is logged as the next tier. 212 tests. Build r36

CommsLink Chat3ba7812c

R35 - TOUCH REDRAWS THE MAP (user question: 'do we rely on scanned object positions forever, or can running my hand along the bed rediscover its dimensions?' - answer: the scan is a PRIOR, touch is the corrector, extended from height to GEOMETRY): (1) per-face footprint offsets learned from two channels - an on-plane palm beyond a face GROWS it; a SIDE-FACE press (hand on the vertical face below the top) marks the edge line exactly, both directions - tracing the ledge rewrites it; (2) the touch-corrected footprint feeds claims, edge detection, and hand tests; (3) HER sit/lie anchors consume the corrections - ledge shifts to the learned edge, sit/lie height uses the sunk real top: the inaccurate bed height and ledge get fixed by the user's own hands; (4) HUD shows live geo offsets, snapshots record them. 212 tests. Build r35

CommsLink Chat0ec25991

R34 - reports 94-101 + model gating: (1) Enmiel is PUBLIC, Enmiel 2 stays ADMIN-ONLY (user directive); (2) Eve's auto-report bursts consolidated (95-100 filed in triplicate - per-joint throttles all fired for one incident): at most one [auto:eve] report per 90s with every violation inside it; (3) her lie self-heal extends to buried HIPS, not just feet (her whole body was found 28cm inside the second bed); (4) report 101 - she now SEES hand MOTION, not just position: per-hand traces count direction reversals, so a fist pumping up and down reads as 'their right FIST is MOVING UP AND DOWN repeatedly' and side-to-side reads as WAVING, with fist/open state from the finger-curl detector. 209 tests. Build r34

CommsLink Chatf61e1967

R33 - reports 86-93 one-shot (incl. EVE'S FIRST SELF-FILED TICKETS, 89/91): (1) #86 COOPERATIVE STEPPING - steering her by grabbed shoulders/hips now animates her legs: grab-driven root motion advances the same procedural walk cycle as free walking, forward, backward, or turning; (2) #87 she lies a touch farther when joining (0.5->0.62m) and the mirror instinct is disabled entirely while the USER lies (cuddling hands drift close constantly - that was the 'her hand attached to mine'); (3) #88 the vignette that never showed: robustified (frustum culling off, double-sided, 4m plane) PLUS a guaranteed fallback - the debug HUD panel itself now draws an orange border while listening and flashes green on success; (4) #89/#91 SELF-HEALING from her own tickets: a lying foot buried in the mattress now LEVELS her body up instead of only reporting it; (5) #90 straddle pose v2 to the user's specified angles - hips ~55deg, knees ~112deg (seated on her legs), shins astride, torso lowered toward theirs, arms braced; mount height lowered; (6) #92 THE HEADSET IS THE USER'S FACE - head contact reads as their lips against her (a distinct mouth_touch perception event: 'pressed their lips to your X') and a face never shoves; (7) #93 adjustable while seated/straddling - gentle pulls DRAG her toward the hand for repositioning; only firm sustained pulls stand her up. 209 tests. Build r33

CommsLink Chatffd796fb

Add Enmiel + Enmiel 2 as avatar MODELS picker options (user-supplied VRoid .vrm files; admin-only while being evaluated, same pattern as Shibu). The binaries are SCP'd into the EC2 build context directly - models/*.vrm is gitignored

CommsLink Chat2d7944a6

R32 - reports 83-85: (1) STRADDLE capability (83/84): new Director move 'straddleuser' - she approaches beside the LYING user's tracked hips, then mounts astride them facing their head (thighs splayed, one knee either side, hovering just above their pelvis); available to the LLM only when the user's real body is lying; (2) report 84: lying 'on the bed' while the USER lies there now means lying BESIDE them - the anchor's centered marker knows the bed but not the body, so occupied-surface lies delegate to the user-relative placement; AND the user's tracked body is now a routing OBSTACLE when seated/lying (an oriented box along their body line) - she walks around you, not through you; (3) auto-report 85: a table claimed a kneeling user as lying-on - the lying-claim now applies to lie-able heights only (topY <= 0.7). 209 tests. Build r32

CommsLink Chatf1339ebd

R31 - COMPANION SELF-DIAGNOSIS (user idea): Eve audits her own body against the room's physical rules at 5Hz - standing outside the floor polygon, joints buried 12cm+ inside furniture volumes (legitimate placements at surface tops never trip it), feet below the floor - and files her own tickets through the same reporter pipeline tagged [auto:eve], with her joint positions, pose flags, and yaw attached to the snapshot. Persistent violations only (pathing wiggles don't report), per-type throttled, announced in the chat panel. The wall-sitting and feet-through-bed bug classes now report themselves the moment they recur. Systems doc updated. Build r31

CommsLink Chat7f49b3ae

R30 - reports 66-82 batch (incl. FOUR correct autonomous reports): BODY ENGINE: (1) reports 68/71 (propped lying with mild gaze flapped lying-sitting, conf 0.15 correctly flagged it): a neck AT the support plane (h<0.18) is itself lying evidence - you cannot sit with your neck at mattress level; (2) autonomous reports 75/79 caught the folded-pose solvers violating the founding bone law (femur 0.19 vs 0.48) - kneel-family geometry rebuilt (true fold reach from femur and fold height) AND the law is now enforced universally: every knee exactly a femur from its hip, every foot exactly a tibia from its knee, in every branch; (3) report 81: quadruped's axis now comes from the load-bearing HANDS (a straight-down gaze degenerates and drew the body behind the head) - also noted the user's straddle-relative-to-companion idea in the library; (4) autonomous flap reports 76/80/82: kneel-family and sit-family variant churn no longer counts as flapping; (5) seated shin arithmetic (report 70's tibia anomaly). COMPANION: (6) report 74: a chest touch now yields LOCALLY first (contact give at the touched part), the waist lean is gentler and depth-gated - no more whole-torso lurch from a light touch; (7) report 78: a SLAP (1-2 frames of contact) can startle but never launch - hard outcomes (tips, knockdowns) require HELD contact, and falls are now STAGGERED: the push lands, then the fall follows 340ms later - no teleporting; (8) report 73: a sustained chest push walks her back and tips her onto whatever catches her; (9) report 66 (she sat beyond the wall): sit spots outside the floor polygon flip to the opposite edge before anyone walks there. Report 67 confirmed the edge-sit fix working at 92% confidence. 209 tests. Build r30

CommsLink Chate901965b

R29 - THE FEATURE-REQUEST BATCH, one-shot (reports 58-65, incl. the first AUTONOMOUS report #64): (1) #59+#61 PERIPHERAL STATE GLOW - a radial vignette parented to the camera: ORANGE edges while a report/command is listening, GREEN 800ms pulse on every success (report saved, command executed, answer received); (2) #60 FEATURE REQUESTS as a first-class verbal flow - 'feature request ... end feature request' works exactly like bug reports on both voice paths, tagged [feature] in the table; (3) #62 COMPANION DISMISSAL - 'Computer, dismiss the companion' hides the avatar AND mutes the room's LLM at the single runAgentResponse choke point (zero token spend) until 'Computer, return the companion'; (4) #65 THE PROJECT-AWARE COMPUTER - 'Computer, <question>' or 'Computer, I have a question' routes to a separate grok-3-mini assistant injected with condensed project context (new handlers/chat/computerAssistant.ts), answering in the chat panel AND speaking in its own robotic client-side voice (free synthesis, distinct from the companion); (5) #63 the HUD now shows live L/R hand coordinates; (6) #58 HANDS AS AXIS WITNESSES - a poisoned lying anchor pointing the body away from where the hands rest re-derives its axis from them (evidence beats the anchor); (7) #64 the self-diagnoser's first autonomous report was itself adjudicated: lying-variant churn is not posture flapping (family-aware commit counting). 209 tests. Build r29

CommsLink Chatd58ba29c

R28 - THE AMBITION TIER (all three approved extensions) + reports 55-57: (1) PROBABILISTIC CONFIDENCE - every classification carries a confidence from its distance to the decisive band edges; low-confidence candidates must sustain evidence longer (up to 90 frames), the inferred ghost DIMS with uncertainty (brightness IS certainty - real parts stay full), confidence shows on the HUD and in snapshots; (2) TRANSITION ANTICIPATION - the neck's vertical velocity is tracked (EMA), and a candidate backed by real motion in its direction commits in 12 frames instead of 30: the ghost leads the sit-down instead of lagging it; (3) THE ROOM LEARNS ITS FURNITURE - a stable seated-height pose held 4s with no surface underneath (report 51's unscanned computer chair) creates a virtual seat the classifier can claim from then on (capped, merged, announced in the chat panel); (4) report 56: ZERO lying-axis drift while anchored - slow head-turns dragged the body through the agreement gate; self-heal now only on sustained gross flip; (5) report 55: cross-legged knees snap to WRAPPED hands (same body-side pairing as seated); (6) report 57 (her hand stuck to the user's, swinging wildly): GRAB SAFETY - grabs auto-release when the grabbing hand loses tracking 600ms, and a spin-guard emergency-releases everything if her yaw goes chaotic while held. ALSO reconstructed the lying evidence gate that had silently regressed (caught by ReferenceError, restored with the r19 gate + slack). 209 tests. Build r28

CommsLink Chate02601e2

R27 - THE EXTENSION MANDATE (user: 'use your intelligence to go above and beyond my intuition - you are an extension of my brain'): (1) SELF-DIAGNOSIS - the engine now checks its own physical invariants every frame (bone-length violations, below-floor joints, posture flapping, implausible learned sink, claim/footprint disagreement); persistent violations file AUTONOMOUS bug reports through the exact pipeline built for spoken ones ('[auto] ...' with full snapshot+trace, per-type throttled) and the offending joints render RED on the ghost - the system is its own first tester and no longer waits for the user to notice; (2) POSTURE CALIBRATES THE SKELETON - extending 'touch calibrates the world' upward: committed kneeling measures the tibia directly (standing height minus kneeling height IS the shin), total leg preserved - proportions converge from living; (3) 'Computer, status report' recites the engine's beliefs (posture, build, calibration, support+sink, active anomalies) into the VR chat panel. Systems doc updated. 205 tests. Build r27

CommsLink Chat27ecee4a

R26 - lying is world-anchored + the r25 extents regression fixed (reports 52-54): (1) report 52's snapshot exposed my r25 AABB-corner projection INFLATING rotated boxes 10x (hz 2.85 on a 0.29 bed) - true extents now come from the mesh VERTICES projected onto the orthonormal frame (cached per mesh, ~1s TTL) - this was also warping the seat-edge direction behind 'edge sitting still needs work'; (2) the user's rule from report 53 ('moving my head should not move my torso and legs'): the lying body is WORLD-ANCHORED - origin, axis, and plane pinned at lie-down; head turns move nothing (axis drift only as a fine correction when estimates agree); re-anchor only on real neck travel (>0.35m); (3) the user's rule from report 54 ('raising my hands should not levitate my body'): the lying plane latch is ONE-WAY - resting hands may lower it toward the real mattress, raised hands can never lift it. 200 tests. Build r26

CommsLink Chat8dd3616e

R25 - THE MOTHER BUG + four report-driven rules (reports 43-51): (1) ORTHONORMAL SURFACE FRAMES - the scanned boxes' axes were independently flattened to the ground plane, so tilted volumes' Z-axis landed near-parallel to X and the footprint math degenerated: support was claimed METERS away (47/49 - kneeling on the floor claimed the bed), sink learning got poisoned by floor-hands, and edge/claim tests contradicted themselves (44/45/46); axZ is now the perpendicular of axX by construction, and the live path's half-extents project the AABB corners onto the true frame instead of mixing world extents with local axes; (2) the user's principle from report 45 engraved: a head within half a body-length of a lie-able surface IS on it (lying claim inflate 0.45; rescue gate simplified for head-lifted supine where the gaze goes horizontal); (3) report 48: a PRONE propped head gazes AWAY from the feet - the lying axis flips for stomach; (4) reports 43/46: wrists hang at mid-thigh ~12cm below the groin, so the wrist-drop calibration overestimated the torso and every knee band landed high - bias corrected, anthropometric window tightened; (5) dangling-vs-folded retuned against the measured data (folded needs +0.07 above the effective top AND +0.12 above the planted-knee height - sink drift can no longer flip an edge-sit to crosslegged). Snapshots now record the full surface frame for verification. 198 tests. Build r25

CommsLink Chatf2dd4ff6

R24 - TOUCH CALIBRATES THE WORLD (the user ran a controlled experiment in report 41: hands pressed flat on the mattress measured it 14-16cm BELOW the scanned top - box tops are rigid-frame heights; bodies rest on the compressed surface; this one offset explains reports 40 too-high knees/floating feet and 42 ghost-on-top-of-real-legs): (1) learned per-surface SINK - resting hands within a surface's footprint at/below its top teach the engine the REAL plane (EMA), and all body placement uses the effective height; recorded in every snapshot; (2) PLANTED-FEET INVARIANT for sitting - the knee rides at shin height above the FLOOR (feet flat), never derived from the seat's claimed top, so feet cannot float regardless of scan errors; (3) the lying plane accepts hand-witness heights BELOW the scanned top (the old plausibility floor trusted the scan and blocked the correction); base lowered to +0.06. 198 tests. Build r24

CommsLink Chatd47abecd

R23 - reports 35-39 crack the two remaining mysteries: (1) THE INVISIBLE LYING BODY (reports 24/32/37/39) was the OBSERVER EFFECT: propping your head to LOOK for your body swings the up-vector past vertical, its horizontal trace flips crown-ward to feet-ward, and the ghost drew BEHIND your head - you could never see it because you were looking for it. Near-vertical (propped) heads now use the GAZE as the feet-ward body axis (a propped supine gaze runs down the body) and the anchor continuously self-heals from a poisoned capture; (2) report 38 (left knee clamped to the right hand ON r22): pairing was label-based and this device's declared handedness lies - knees now pair to resting hands by BODY SIDE, label-free; (3) reports 35/36 (kneeling on the bed = legs through the bed / standing): the descended claim used ABSOLUTE height, and kneeling on a 57cm bed restores standing height - the rule is now surface-RELATIVE with a standing-tall guard; upright-kneel-at-full-height logged as an honest open pattern; (4) surfaceUnder total-miss instrumentation (nearMiss: nearest box + how far outside its bounds) for report 35's unexplained miss. 194 tests. Build r23

CommsLink Chatee18d9cb

R22 - three fixes from reports 32-34: (1) USER-DIAGNOSED (report 34 - he called it himself): the furniture constraint applied to EVERY scanned box, so walking past a table hoisted the foot onto its top and scrunched the shin (the '2-inch shins' of reports 27/31, now closed) - only the CLAIMED support surface plus the floor may lift a ghost joint: proximity to furniture is not contact with it; (2) report 33 (blue legs clamping onto one hand): the knee-snap paired each knee to its nearest resting hand INDEPENDENTLY so both could claim the same hand - hands now claim exactly one knee each via best-total-distance exclusive pairing (regression test); (3) report 32 (bed rejected while lying on it, defying the shipped math): claim rejections now record WHICH box and WHICH rule fired in the snapshot, and a supine force-claim (strong lying evidence at a lie-able top) defeats footprint rejections while the reason data accumulates. Library updated. 190 tests. Build r22

CommsLink Chata876cefb

R21 - PATTERN-DRIVEN round from reports 24-31 + the BODY POSE LIBRARY (docs/BODY_POSE_LIBRARY.md - the user's long-term evidence base: every adjudicated claim-vs-belief pair, derived rules each citing their report evidence, open patterns awaiting more cases): (1) RESTING HANDS MEASURE THE LEGS (reports 26/28/30 pattern): hands at support level = knees at the edge (dangling legs); hands 6-35cm above it over the footprint = legs folded on the surface (cross-legged) - on 58cm-deep furniture the head cannot make this call, the hands always can; (2) HANDS-ON-KNEES ARE KNEE GROUND TRUTH (report 26 'knees are not where my hands are'): the seated solver snaps its knees under stationary support-level hands; (3) GAZE-ONLY TRANSITIONS ARE INSPECTION (report 28 trace: neckY constant through a sitting->quadruped flip): leaving sitting for quadruped now requires an actual neck descent, not just pitch; (4) LYING HEADS OVERHANG (report 29: pillow past the bed box made the bed vanish): the lying-claim tolerates 30cm overhang + a supine-evidence rescue search; (5) SUPINE RENDER VISIBILITY (report 24: correct lying classification but invisible body): lying limbs render 1.6x thicker with the chest bulging above the body plane; (6) instrumentation: neck x/z + raw Meta knee/ankle heights (the '2-inch shin' reports) in every snapshot. Old r15 test updated to the MEASURED edge-sit hand height. 189 tests. Build r21

CommsLink Chat49d94a85

Voice commands r20: STT hears 'exit stimulation' for 'exit simulation' - accepted; [CMD] log lines on wake-word/exec/one-shot so 'did the server hear it' is a one-line log check. The user's failed attempt was a stale r18 tab: the r19 server consumed all three command utterances correctly (nothing reached chat or the agent) but the acknowledgment events had no listeners on the old client bundle

CommsLink Chat42f6a4c6

R19 - the long turn (user's four asks, driven by reports 16-23): (1) COMPUTER VOICE COMMANDS: the wake word 'Computer' (own utterance, or 'Computer <command>' in one breath) arms a one-shot listener with an audible chirp + Listening ack in the VR chat panel; commands: exit simulation, enter/exit anatomy mode; command speech never reaches the LLM (zero Grok spend); works on both voice paths. (2) HYBRID BODY - the blue-arms question answered structurally: Meta's upper body is head+hand-driven IK and reliable in ANY posture (only generative legs degrade seated/lying), so the ghost now renders REAL green shoulders/elbows/arms whenever tracked with engine blue legs beneath - drawn-arm guessing (the thing that crosses) no longer exists when tracking is available. (3) CLASSIFIER FIXES from the reports: lying-on-bed was UNDETECTABLE (the head sinks to the mattress top; surfaceUnder required surfaces 12cm under the head and claimSupport called it chest-height) - surfaces are now found at head level and claimed as lain-on; lying ON a surface needs horizontal-body evidence so slouched edge-sitters stay seated; the crosslegged edge-band is relative to surface size (a 58cm camper bed had no reachable middle). (4) BUG DATA UPGRADES: 5s motion TRACE before each report (25 samples: neckY/pitch/hand heights/posture - transitions, not just the instant), hand-side SOURCE tags (declared/chirality/geo), hand heights relative to support, upperReal flag; statement duplication fixed (server text is authoritative, not appended). 52 engine tests. Build r19

CommsLink Chat2e231d9e

Bug reporter r18 - the STT logs autopsied ~6 lost reports fragment-by-fragment; the killer was the CLIENT's 8s silence backstop: on the server voice path the client hears NOTHING between RECORDING and the final statement, so 8s into any longer report it cancelled itself and DISARMED the server mid-sentence - everything said after went to the agent (the user's 'chats keep going to Eve'), and the trailing 'and bug report' then re-triggered an empty session, chaining attempts into chaos. FIXES: (1) the server emits bug_progress keep-alives per accumulated fragment - the client backstop stays fed AND the HUD shows the statement growing live as you speak (the intuitive feedback demanded); backstop 8s -> 30s; (2) end-phrases can never act as triggers (lookbehind excludes end/and/stop/save/submit before 'bug report'), and a stray end-phrase arriving unarmed is swallowed silently - reporter residue never reaches the agent; (3) 'debug report' accepted (STT heard that too); (4) disarm clears orphaned server-side parts. Build r18

CommsLink Chat8d63e31d

Body engine r17 - the first two CLEAN bug reports each pinned a classifier bug: (1) report 14 ('sitting with my hands on my knees' read as quadruped:bed): an edge-sitter's knees are seat-high, so hands-on-knees sit AT mattress height - height alone cannot separate them from crawling hands; quadruped now also requires both hands over the surface's FOOTPRINT (a crawler's hands are over the mattress; an edge-sitter's hang past the lip over the floor) - regression test mirrors the report's exact snapshot numbers; (2) report 15 ('sitting cross-legged on the floor' read as heels): cross-legged tilts the pelvis and slumps the neck below the upright-seated prediction - the floor sitting band now reaches down to 0.78x torso. Snapshots now record the claimed surface's box so future hand-vs-footprint questions are answerable from the report itself. Build r17

CommsLink Chat2041e0ac

Bug reporter r16 - the STT logs told the whole story (server side WORKED: triggers heard, statements accumulated, bug_statement emitted for every attempt): (1) the headset listener receiving the finished statement was bound at PANEL MOUNT, racing the socket's existence - attempts died in a dead listener, which is also why RECORDING/SAVED confirmations never showed; bug_open/bug_statement now bind at the PAGE level where the socket lifecycle lives, routed to the engine via window globals; (2) trigger strip now eats trailing punctuation (report 13's garbage '. I'm currently' prefix was strip residue) and punctuation-only fragments are skipped. Build r16

CommsLink Chat716595fc

Verbal bug reporter r15 - SERVER-SIDE trigger (chat history smoking gun: 'Bug report.' landed in chat VERBATIM on r13 - that session's voice flowed through server STT where the client-only trigger is deaf; the active voice path changes per session with mic permission timing, so the trigger now exists on BOTH): the server transcript handler detects 'bug report'/'end bug report' (mishearing-tolerant: but/bud/bag/book, end/and/stop/save/submit) on aggregated utterances, accumulates everything between them server-side - chat unreachable - emits bug_open (client snapshots the pose at the trigger + announces RECORDING in the VR chat panel) and bug_statement (client saves + announces SAVED). Client-path trigger loosened to match anywhere in a fragment with the same tolerances. PLUS the top-reported classifier bug from his statements ('sitting on the bed edge but it says quadruped'): quadruped on a raised surface now requires hands ON the surface itself (<18cm) AND a steep tilt - hands on knees while glancing down stays SITTING (2 new tests). Build r15

Jul 3, 2026
CommsLink Chatf18f452f

Bug reporter r13 - FULLY VERBAL (user: raising an arm to press a button corrupts the very arm positions being reported): say 'bug report ...' to open - the engine's belief snapshot freezes AT the trigger with the body undisturbed - speak the ground truth through any pauses, say 'end bug report' to save ('and bug report' accepted since STT often hears end as and; stop/save/submit variants too; same-breath trigger+statement+end works). While open, everything said is consumed - chat unreachable. The wrist Bug button remains as a PTT backup; 8s hard-silence backstop unchanged. Systems doc updated. Build r13

CommsLink Chat6f77a310

Bug reporter r12 - PUSH-TO-TALK (reports 10-12 on build r11 still truncated MID-WORD: browser speech finalizes fragments mid-speech in ways no silence timer can outguess, so timer-guessing is abandoned for determinism): press Bug = record (everything said is consumed - nothing can reach chat while recording; the button reads Done; the HUD shows the text growing), press again = SAVE the complete statement. Backup: 8s of hard silence (no fragments AND no live voice) auto-closes, saving if anything was said. Build tag r12

CommsLink Chat241e31b9

Bug reporter r11 - stale-bundle detection + voice-liveness gate (report 9 truncated mid-word with the tail hitting chat 2s after the save): (1) BUILD TAG - deploys never update an already-open headset tab, and there was NO way to tell which client produced a report; the HUD top line now shows the build (r11) and every snapshot records it - a report proves which client made it, and 'the fix changed nothing' becomes checkable at a glance; (2) LIVENESS GATE - browser recognition can go seconds between FINALIZED fragments while the user speaks continuously, so the 2.5s no-finals timer fired mid-sentence; interim results (which flow constantly during speech) now ping a liveness signal and the reporter refuses to finalize while it is fresh - the report closes on genuine silence only

CommsLink Chat208127ca

Bug reporter + voice chat fixed AT THE ACTUAL SOURCE (api logs prove the user's device runs BROWSER speech recognition, not server STT - all server-side aggregation was correct code on an unused path; reports 7-8 'I'm current' show browser finals arriving as tiny fragments that auto-saved instantly and leaked the rest to chat): (1) while armed, the reporter CONSUMES AND ACCUMULATES every fragment - nothing can leak to chat mid-statement - and finalizes only after 2.5s of true silence, then saves the complete sentence; the HUD shows the text growing live (REC: '...') and BUG SAVED holds 8s; (2) the chat path's client flush window raised 1.4s -> 2s so a breath can never split a sentence to the agent (user cost mandate: one utterance = one message = one prompt)

CommsLink Chat026b2f49

Voice-to-chat AGGREGATION (user mandate - cost): server STT finalizes on small breaths, and each fragment became its OWN chat message + DB row + Polly TTS call + agent-prompt entry, spraying wasteful fragments into Grok context. Fragments now buffer per socket and ONE combined utterance is delivered after real silence - 1.2s for chat, 2.6s while a bug statement is armed. One utterance = one message = one TTS = one clean prompt line. The 3s agent debounce still applies after delivery

CommsLink Chat2f0eb26c

Bug-reporter round 8, driven by the FIRST SIX SAVED REPORTS (the pipeline was working - the failures were segmentation and a claim rule): (1) STT STATEMENT AGGREGATION - the server finalizes speech in segments; consuming only the first truncated every statement at the first breath ('I'm currently sitting with') and let the REST leak into chat, which is why the agent kept replying to bug-report tails. Segments now aggregate until 2.8s of silence, then the full statement ships and disarms; client timeout raised to 35s. (2) EDGE-SIT CLAIM FIX (report finding: 'support floor (rejected bed@0.57)' while sitting ON the bed) - the deflated footprint test rejected the bed under an edge-sitter whose head rides at the boundary; the footprint test is now +0.08 inflated, and walking-beside stays safe purely via the height precedence rules (standing at floor height never claims; test proves both). (3) the wrist 'Save' button was the room-layout save masquerading as part of the bug flow - renamed 'Room'. 179 tests green

CommsLink Chat731d1da7

Bug reporter UX rebuilt as ONE PRESS (the multi-state button next to Exit was bad design): press Bug once - snapshot captured, mic armed - then just SPEAK: the sentence AUTO-SAVES the moment it arrives (no review state, no Save press, HUD confirms 'BUG SAVED'). Second press while recording cancels; 20s of silence auto-cancels and disarms so the reporter can never eat a later chat line. The Bug button moved to the FAR LEFT of the wrist panel - the opposite end from Exit

CommsLink Chat204d4e8e

Bug reporter voice tap FIXED for the server-STT path (the user's device transcribes voice on the SERVER, which broadcasts straight to chat - the client-side tap never saw the transcript, so bug statements became chat messages): pressing Bug now arms a one-shot per-socket flag (avatar_physical bug_arm/bug_disarm via server-tracked socket state); the STT onTranscript handler checks it FIRST and routes the armed transcript back to the headset as bug_statement (no chat message, no TTS, no agent trigger), where it lands in the reporter's review state for Save. Cancel and Save both disarm. The Web-Speech fallback tap remains for devices that use it

CommsLink Chat5757a6ce

HOTFIX api crash-loop (restarts=11): physicalPresence imported Data via the '#data' alias, which resolves in tsc (tsconfig paths) but NOT at runtime under ts-node - the codebase's actual convention is the relative '../../../../../core/data' path used by chat/index.ts in the same directory. Typecheck passed while the container crash-looped; the deploy health check reported healthy on a race before the first crash. CLAUDE.md's '#data' import example does not hold in services/api handlers

CommsLink Chat9224d60c

IN-VR BUG REPORTER + palm-chirality handedness (user's designs): (1) CHIRALITY - the user's palm insight made mathematical: the sign of the triple product of index-knuckle/pinky-knuckle/thumb-tip around the wrist is opposite for left and right hands and a mirrored hand cannot fake it, in any orientation; used as the handedness fallback whenever the runtime declares nothing (declared handedness still wins; sticky last-confident answer; 3 tests). (2) BUG REPORTER - a Bug button on the wrist panel: press to snapshot the engine's full belief state (posture, calibration, heights, support choice + rejected claims, hand sides, pins, companion pose), speak the ground truth ('I am lying flat on the bed with my arms by my sides') - the armed reporter consumes the next finalized voice line so it never goes to chat - review it on the HUD, press Save: the statement + snapshot pair lands in a self-creating vr_bug_report table as a labeled test case (server: physicalPresence bug_report kind, room/username from server-tracked socket state; new core/data/vrBugReport). Claude reads reports via Data.vrBugReport.listOpen() or SQL and can be looped on the table to address them autonomously. HUD bottom line shows the reporter state; wrist now 10 buttons

CommsLink Chat80c9a6f8

Body engine round 4 - driven by the user's HUD readings (h=0.49 while standing / walking=sitting / sitting=lying-side / arms flip only in front): (1) ROOT CAUSE of all three posture symptoms: surfaceUnder hands the HIGHEST surface whose INFLATED (+15cm) footprint grazes the user to the engine as their floor - walking the aisle beside camper counters made every height relative to a counter top (h=0.49 standing = the sitting band; sitting dropped below-band = lying). NEW CLAIM RULE (5 new tests): furniture must EARN being the support - head over the REAL footprint (deflated -6cm), top below chest height, and the user either standing fully ON it or genuinely DESCENDED onto it; otherwise the floor is the support and standing at floor height always wins. (2) ARMS: handedness now read LIVE from the stored input source every frame (connect/disconnect events on hand AND controller spaces store the source object) - the arms-flip-in-front signature is geometric fallback, which now only runs when the runtime truly declares nothing; the HUD hand lines reveal which path is active. (3) HUD upgraded: absolute neckY + rejected-support readout (shows exactly which surface tried to claim you and was refused). 174 tests green

CommsLink Chatb38a3bb0

Body engine round 3 - ANALYSIS-DRIVEN (user demanded analysis + debugging tools): (1) THE INVISIBLE LEGS were largely a RENDERING failure, not placement: the ghost drew at 0.16 opacity, which vanishes over a bright passthrough room - arms only read because they sit near the eyes; legs at 1.5m were unseeable at that alpha. Ghost now 0.38 opacity with strong emissive - legible over any background. (2) ARMS: the runtime DECLARES each hand's side and it is now used FIRST (hand input source handedness wired from connect events, controller handedness fallback); geometry is a last resort only when nothing is declared - with declared sides crossed arms are impossible by construction. (3) IN-HEADSET DEBUG HUD (new lib/avatar/debugHud.ts, always on in VR during this phase): head-locked panel showing live posture + engine-vs-Meta path, h vs calibrated standing height + lock state, torso/femur/tibia, support surface + top, pitch/level, each hand's declared side, stepping foot + pinned feet - the user can now READ what the system believes while doing the thing it misreads. (4) look-driven leg dance fixed: stance direction has hysteresis (head turns under ~56 degrees never re-aim the feet) and the pelvis ground position is a short EMA of the neck (pitch wobble cannot slide the body)

CommsLink Chat25a2b3bb

Body engine round 2 (headset feedback): (1) THE INVISIBLE SITTING BODY - nothing was deleted: when the sitting band missed, the classifier fell through to heels/kneeling whose pelvis sits near FLOOR height, drawing the whole ghost BURIED inside the mattress 40cm below the user. New rule (the user's axiom applied properly): at mid height over a raised surface the SITTING family is the only physical answer - legs over the nearest ledge, crosslegged in the middle, quadruped only with forward tilt + hands down; kneeling/heels are floor postures now. Pelvis can never render inside furniture (regression test asserts pelvis above the mattress top). (2) LOOK-DOWN CROUCH: peering down includes a slight bow that the neck-pivot under-corrected - the pivot is deeper now (13cm down, 10cm back) AND an inspection guard enforces the user's rule directly: while standing with the head pitched steeply down, leaving standing requires descending near kneeling depth; a genuine deep crouch still reads. (3) torso calibration clamped to an anthropometric window so a polluted wrist sample can never push the pelvis toward the floor. 169 tests green

CommsLink Chatbfaf32d9

THE CROSSED-ARMS ROOT CAUSE, FOUND AND KILLED: the ghost's 'player right' vector has been computed MIRRORED since the ghost was born — (fwd.z, 0, -fwd.x) is the player's LEFT; the true right is fwd x up = (-fwd.z, 0, fwd.x). The 'right shoulder' was therefore always drawn on the player's left side, so every correctly-identified right hand drew an arm across the chest — which is why every previous fix aimed at hand-side ASSIGNMENT changed nothing (the hands were never the problem). Fixed as one law (rightOf helper) used for standing/sitting/lying alike, with regression tests pinning the right shoulder/hip/foot to the true right under identity, rotation, and lying (166 tests green)

CommsLink Chat6cc7338d

THE USER BODY ENGINE (built to the user's step-by-step specification): a pure, unit-tested module (lib/avatar/bodyEngine, 30 new tests) replacing all ghost-body heuristics. CALIBRATION: standing height = max head height while eyes are level (users never jump); the max vertical head-to-wrist drop while standing marks the groin (a tracked maximum - raising hands never changes it); torso and leg bones derive from these and LOCK - they never resize again for any reason. HEAD TILT: all body math anchors to the NECK PIVOT the headset arcs around, so looking down at your own body never reads as crouching or moving - the exact tilt-vs-descent separation the user specified. SUPPORT-RELATIVE: heights measure above the current support - standing on the bed makes the mattress the floor. POSTURE LADDER: standing / crouching (knees bend exactly as far as the descent demands) / kneeling (down by one shin) / hands-and-knees (kneeling band + strong forward tilt + hands on the support, hips-high vs sitting-on-heels split by the hand-to-knee-distance-vs-torso rule) / sitting (seat top + torso; legs dangle over the nearest ledge, straighten on slide-back, cross indian-style when no ledge is near) / lying (back-stomach-side from look direction and the one-hand-low-one-floating rule). FEET: pinned world contacts that step one at a time with a lift arc; a foot beyond leg reach slides along the ground, never through the air. Knees are analytic two-bone IK on the locked bones - stretching is geometrically impossible. Seated legs anchor to the world seat edge, not gaze. Meta body-tracking still takes over while standing. Systems reference updated

CommsLink Chat7caa436e

GHOST v4 — RENDER ONLY WHAT IS KNOWABLE (the industry's half-body answer): seated/lying legs are underdetermined from head+hands and every estimate rendered as nonsense, so they are NO LONGER DRAWN — the ghost becomes a clean half-body (torso tapering into a wisp) except in the two cases legs are actually known: STANDING (pinned stepping feet + fixed-length two-bone IK) or real body-tracked joints; wrong leg geometry is now impossible rather than unlikely. ARMS draw ONLY from authoritative input-source handedness (each tracked hand's declared side, now wired from the hand connect events) — geometric guessing is demoted to positioning only, so crossed arm bones cannot be drawn. Looking DOWN no longer corrupts anything: the horizontal gaze degenerates when inspecting your own body, so the rig uses the last LEVEL gaze

CommsLink Chat39554a6e

GHOST BODY REBUILT AS A BIOMECHANICAL RIG (limbs were stretching to 3-4ft; the previous point-placement approach is gone): (1) FEET ARE PINNED WORLD CONTACTS - planted where they touched down, stepping only when the body moves past a threshold; they never follow gaze and never drift; (2) KNEES ARE SOLVED, NOT GUESSED - analytic two-bone IK with constant femur/tibia lengths from pelvis to pinned foot, posture-driven pole direction; stretched or hyperextended limbs are geometrically impossible; (3) POSTURE IS WORLD-ANCHORED - sitting captures the seat's outward EDGE direction from real surface geometry (nearest-face normal, not gaze) so looking around while seated does not move the legs; lying captures the body axis once, re-anchoring only when the head travels; (4) the pelvis is the rig root - seat height when seated, body line when lying, hung below the head when standing but never beyond leg reach; (5) furniture constraints are VERTICAL-ONLY (a joint over furniture rests ON it) - the horizontal push-out that shoved feet a meter sideways is deleted

CommsLink Chatfa696cf1

Posture classifier v3 + hand-side hysteresis (fixes the leg-engine regressions): (1) standing beside the bed read as SITTING — the clearance sitting band was too generous (standing head minus bed top = 1.1 fell inside 1.15) which both bent the ghost's knees while standing AND locked out Meta tracking (gated on standing); band tightened to <0.95 with an absolute head-height guard (<1.4m); (2) NEW strongest lying signal: head ORIENTATION — a lying head's up-vector goes horizontal (no standing/seated pose does that), so lying is detected even when the surface lookup misses and side-lying works; (3) crossed arms while seated: hands resting near the midline (on knees/stomach) flickered the geometric side assignment — hysteresis keeps the previous assignment unless the sides clearly reverse

← NewerPage 1 of 7Older →

Generated 2026-07-16 from git across all CommsLink repos · page 1/7, showing 1100 of 686 CommsLink Chat ships · complete record: /changelog.txt · /changelog.json.