Commit Graph

8 Commits

Author SHA1 Message Date
David Lafond
b5246b1f7f Add Davebot gaze lab and make his eyes lock on to the cursor
Gaze magnitude now comes from the angle to the pointer rather than a
linear distance ramp:

  gain = distance / hypot(distance, depth)

That is the projection of an eyeball rotating to face a target `depth`
away, so it saturates. Once the pointer passes the knee the eyes hold
near-full deflection and keep pointing straight at it, which is what
reads as being looked at. Measured angle error against the true cursor
direction is 0 degrees.

Default travel rises from 9 to 30 SVG units. The eye group is clipped to
the head silhouette and the outer eye edge sits 48 units from it, so 30
stays clear while the slider can explore up to the clip. At the shipping
46px render this moves the pupils 4.5 screen px instead of 1.4.

Extract the tracker into davebotGaze.ts and add davebot-gaze.html, a
tuning lab with live controls for travel, depth, smoothing, convergence
and lean. Settings persist, so the header reads whatever the lab last
saved. Sliders are generated from the engine's own limits and read back
its clamped values, so the panel cannot display a number the tracker is
not using.
2026-08-24 22:41:40 -04:00
David Lafond
883b589a43 Add Davebot cursor-following portfolio header
Rename the portfolio mascot from Bigeye to Davebot and give him the
canonical inverse inks: light mode uses a #262626 body with #d4d4d4
eyes, dark mode mirrors that exactly.

Eyes follow the pointer by translating the two existing eye paths with
one persistent SVG transform each, batched into a single animation
frame. Playback, blinking and body drift stay owned by avatar-web, so
gaze layers on top without resetting the timeline or regenerating paths.

Also fix Prettier violations in earlier portfolio-gallery files.
2026-08-24 22:30:53 -04:00
David Lafond
8537b53ec9 Add smooth ghost tail and crew studies 2026-08-24 21:53:27 -04:00
David Lafond
380c2cc1a8 Add Grokbot HTML explorations: pip, ghosts, gallery builder 2026-08-24 19:21:01 -04:00
David Lafond
289908323a Add portfolio-gallery example: procedural avatar showcases
New workspace example rendering Bible Strong avatars via
@bible-strong/avatar-web for Rachel Chen's portfolio aesthetic.

- src/builder.ts: shared AvatarDefinition builder — 12 expressions,
  8 named emotes (idle/hello/curious/look-around/excited/surprise/
  sleepy/shy), lobe/pod/ears/antenna node presets, signature emotes.
- src/gallery.ts: shared grid renderer (hover -> signature emote).
- index.html / src/characters.ts: 20 characters across all engine
  surface types (sphere, mickey, cursor, cube, capsule, cylinder,
  cone, diamond).
- blobs.html / src/blobs.ts: 10 organic characters built from
  overlapping same-color lobes, no angular primitives.
- showcase.html / src/showcase.ts / src/showcase-main.ts: emote
  playground for 12 curated characters (4 new personalities driven
  by extreme eye traits) with per-character emote chips, following
  surface-motion (blur crossfade, staggered entrance, press feedback,
  reduced-motion) and surface-interaction (focal hover staging,
  50-use frequency test, interruptible playback) skill guidance.

pnpm-lock.yaml updated for the new workspace package.
2026-08-23 14:07:15 -04:00
smontlouis
2386b78817 feat(runtime): unify React and ESM avatar exports
Add shared core-backed React and browser runtimes, continuous playback transitions, export previews and API documentation. Package the JavaScript export as a CDN-powered demo with the portable avatar definition.
2026-08-17 17:27:20 +02:00
Eric Cappannelli
698d21feb1 Improve avatar expression and drag interactions 2026-08-16 10:18:39 +02:00
Eric Cappannelli
99300b3b30 feat(runtime): ship semantic avatar packages and Studio export
- add the v1 AvatarDefinition schema, bounded parser, strict validation, semantic catalog, pure geometry, scene generation, and deterministic playback to @bible-strong/avatar-core
- add the React 19 renderer with semantic controls, SSR-safe embedded/floating layouts, direct frame updates, pointer and keyboard movement, constraints, callbacks, and accessible controls
- add real tarball packaging and a clean React/Vite consumer using the exported Strobi definition
- add Studio semantic-key authoring, runtime readiness, JSON download/copy, bundled-key recovery, concise errors, targeted local-project clearing, npm guidance, syntax highlighting, and a runnable package preview
- preserve the historical ZIP and Studio project exports, regenerate the standalone engine, and synchronize English, French, and Simplified Chinese copy
- add focused contract, playback, renderer, interaction, persistence, export, and localization coverage
- archive the completed runtime and semantic-curation specs, retain the Vite performance draft, and record the engineering session in TIMELOG.md

Validation:
- pnpm check: 19 test files, 162 tests, typecheck, engine freshness, package builds, and Studio production build passed
- npm pack dry runs: 30 core files and 10 React files
- package smoke: real tarballs installed, typechecked, and built outside the workspace
- browser checks: semantic playback, embedded/floating render, drag, mobile overflow, runtime export recovery, formatted copy, syntax colors, and live package preview

Publication remains disabled: both packages stay private and AGPL-3.0-only pending licensing and repository metadata approval. Vue and Angular adapters remain deferred.
2026-08-16 10:18:39 +02:00