Repository navigation
Releases
BoopFace v0.8.0
Agent Robot Avatar is now BoopFace.
npm uninstall agent-robot-avatar
npm install boopfaceUse <boop-face>, BoopFace, and boopface.js (or boopface/lite). Expressions, gestures, skins and options keep the same behavior. The old <agent-robot-avatar> element, AgentRobotAvatar export and TypeScript aliases remain supported until 1.0; the old tag logs one rename notice per page. Existing installations of the old npm package keep working; future versions use boopface.
The repository is now CX-ArtLab/boopface. Old repository and demo links redirect. The READMEs in all ten languages include the new artwork, migration steps, compact skin table and gzip size comparison.
Also available: BoopFace Embedded 0.1.0 (experimental), with a downloadable Arduino library, firmware examples and the 32-screen simulator. Its library version is independent of the Web package.
The boopface-0.8.0.zip asset contains only the Web component, types and skins, suitable for direct imports without npm. GitHub's automatic source archives contain the whole repository.
BoopFace Embedded v0.1.0 (experimental)
First experimental release of BoopFace Embedded, the portable C++11 robot-eye engine.
- Same eye expressions, motion and timing as the Web avatar; caller-supplied framebuffer and display driver, with no heap allocation in the core.
- Firmware examples for 28 board/display configurations across ESP32, ESP32-S3, STM32 and Raspberry Pi Pico.
- Online simulator with 32 screen presets, custom sizes, layouts, colours, gaze simulation and settings export. Ten interface languages; exported
eyes_settings.hcomments follow the selected language. BoopFace-Embedded-0.1.0.zip: import through Arduino IDE → Sketch → Include Library → Add .ZIP Library. Includes<BoopFace.h>,boopface::Eyes, SerialEyes/OledSSD1306 examples and the MIT license.boopface-embedded-preview.html: download and open directly in a browser; works offline.
All reference firmware configurations compile in CI. Physical board verification is pending; please send a hardware report if you try one. The preview validates the engine's animation, not hardware performance.
Arduino Library Manager registration has been accepted; search installation becomes available after the Arduino index updates (normally within a day). PlatformIO registry submission will follow. Use the ZIP or source now. Guide, API and wiring.
The embedded library is versioned independently from the npm Web component; this release does not publish to npm.
v0.7.2
Changed
- Skins 705 (Candy), 1401 (Denim) and 1503 (Watermelon) have new colors and textures. Their numbers stay the same.
- The Skin Gallery has a background color picker next to the floor shadow switch.
Fixed
- Pulling the antenna far to one side no longer pushes the eyes out past the edge of the head.
- A diagonal look keeps both eyes inside the head's rounded corners.
- A skin set with
setSkin()is no longer replaced by theskinattribute when the avatar moves in the page. - A sleeping avatar no longer wakes its drawing loop on every mouse move.
v0.7.1
v0.7.0
Added
- 188 skins in 17 series. Pick one by number with
skin="301"orsetSkin(301);setSkin(null)goes back to the flat color. - Skin numbers are permanent: the series number plus two digits, so 305 is the fifth skin of series 3. New skins take the next free number, and numbers are never reused.
- Every skin works with every expression and gesture, and its light follows the pointer.
SKINS,SKIN_SERIESandSKIN_NAMESlist the skins, for building a skin picker.- Skin code loads only when a page uses a skin.
loadSkins()loads it in advance. agent-robot-avatar/lite: the same avatar without any skin code.- The demo has a Skin Gallery and a page with every skin.
v0.6.0
Upgrading from 0.5.x
Several actions are renamed after what the avatar does on screen, instead of the situation they were first written for. The old names keep working in 0.6 and print a one-time notice in the browser console; they stop working in 1.0. To upgrade, replace the old names in play() calls and in action-state or face-state listeners:
| Old name | New name | What it looks like |
|---|---|---|
send |
affirm |
A nod |
warning |
wary |
Head turned, one eye close, a guarded up-and-down look |
error, system-error, connection-error |
refuse |
A head shake |
blocked, policy-blocked |
angry |
Lowered, glaring eyes |
wait |
waiting-spin (or waiting) |
The default waiting spin |
failed, fail |
failure |
|
verify, review |
inspect |
|
slot |
random |
action-state now reports affirm, wary, angry and refuse, and face-state reports wary and refuse. A shake reads as "no", so use refuse when the Agent cannot or will not do something, and failure when a task or connection fails. Antenna blinking is removed: setAntennaFlash() now does nothing and prints a one-time notice, and it is deleted in 1.0. Packages that depend on ^0.5.x do not pick up 0.6 automatically.
Added
- Added the
waiting-waveaction: both eyes bob in staggered waves.startWaiting({ variant: 'wave' })loops it continuously. - Added
waiting-spinas the explicit name of the default waiting motion, andstartWaiting({ variant: 'spin' }). - Added brand-inspired color palettes to the demo. Colors apply to a stage card around the avatar; hovering a swatch previews it, a dice button picks a random palette, a swap button exchanges the background and head colors, and a reset button appears on the stage while the colors differ from the default. The page opens by rolling the stage through the palettes in step with the eyes' reel spin, ending with a faint rainbow ripple.
Changed
- Renamed actions as listed above.
- Demo labels now describe the expression: Waiting · Spin, Waiting · Scroll, Affirm, Wary, Angry and Refuse. The toolbar row is one card as wide as the actions, with Head shape and a random-colors button.
- Refined the wary expression with independently tilted eyes, adjusted eye proportions and eyelids.
Also in this release
- The embedded eyes engine for robot and dev-board screens is still in development. It will get its own version number and release; progress is tracked in embedded/CHANGELOG.md.
Removed
- Removed antenna blinking (
setAntennaFlash()), which added little and is no longer shown in the demo.
Fixed
- The demo no longer shows intermediate layouts while loading, keeps its action rows even and stable on phones and under browser page translators, and keeps an open panel on screen.
v0.5.2
Added
- Added the
loveaction: the eyes lean together into a heart, beat three times, then return. - Added the
randomaction (aliasslot): the eyes roll like slot-machine reels, then settle with a bounce.
Fixed
lovenow shows the full heart under reduced motion, andloveandrandomfollow motion preference changes while they play.
v0.4.3
Fixed
- Restored head dragging, waiting, sleep and wake, and touch cancellation alongside press-and-hold squeezing.
- Refined the wrap waiting animation with shared rotational projection, optical height compensation, and edge contact so the eyes turn around the head without overlapping, clipping, or using transparency.
v0.4.2
新增
- 新增第二种等待方式
startWaiting({ variant: 'wrap' }),以及单次播放的play('waiting-wrap')。 - 新增按住头像中心挤压、到底轻颤、松开后的弹簧与果冻回弹。
- 新增天线拖动、局部头部形变、弹簧复原及复原后的愤怒反应。
- 新增
setPressSqueeze()与setAntennaDrag()开关、交互状态事件和低动态支持。 - 在线 Demo 增加多语言“试一下”交互标签。
变更
- Demo 中第二种等待命名为“等待 · 环绕”,并放在原等待按钮之后。
修复
- 拖动天线开始时,双眼不再返回中心。
- 拖动期间,双眼持续看向实时光标位置。
这是合并后的 v0.4 系列公开版本,包含原 v0.4.0、v0.4.1 与 v0.4.2 的全部内容。
v0.3.2
Fixed
- Unified synchronous
sizeparsing so numeric andpxvalues no longer pass through a transient default size. - Added the existing public
sleep(),wake(), andinput()helpers to the TypeScript declarations. - Prevented delayed replacement work in the accessibility request example from starting after cancellation or a newer request.
- Made the example's business status the only automatic live region while keeping the visible debug log readable on demand.
- Stabilized request-replacement regression coverage and strengthened package integrity checks.