Files
openclaw/ui
Peter Steinberger ae27ee98f0 feat(ui): expand the lobster pet's random universe (#112073)
* feat(ui): expand lobster pet randomization

Shiny rolls (1/512) with Lobsterdex tracking, cotton candy and lumen
palettes, crusher/pincer claw asymmetry, freckles, seeded eye glints,
elder and old-friend rare loads, balloon/bubble entrances, snail/duck/
jellyfish ledge traffic with per-kind crossing times, passer reactions,
a message-in-a-bottle event, National Lobster Day monocles, and a golden
ledge trim for a completed Lobsterdex.

* style: apply oxfmt formatting to lobster pet files

* refactor(ui): split lobster pet art and ledge traffic into modules

lobster-pet-sprites.ts owns the static SVG art, lobster-pet-traffic.ts
owns passer/bottle scheduling as a ReactiveController, and load identity
(elder, old friend, dex completion) moves into lobster-pet-plans.ts;
keeps lobster-pet.ts and lobster-pet-look.ts under the max-lines cap and
fixes the passerBaseStyle consistent-return lint.

* fix(ui): clear ledge traffic on disconnect, hide bottle from AT

Review findings: a host reconnect no longer shows a frozen passer or an
unebbing bottle, and the bottle joins the rest of the decorative ledge
sprites behind aria-hidden (fortunes stay on the native-tooltip channel
by design - no i18n surface).

* style: oxfmt formatting for lobster plans/sprites/pet

* refactor(ui): narrow lobster plan/traffic exports to production consumers

isLobsterElderLoad and planLobsterOldFriend become module-local (tests
prove them through resolveLobsterLoadIdentity), and the traffic
controller's hook/scene types stay local; fixes the knip production
unused-export gate.

* fix(ui): request host update when disconnect clears ledge traffic

Lit does not re-render on reattach by itself; the queued update makes
sure a detached-then-reattached pet never shows a stale passer/bottle.
2026-07-21 00:18:54 -07:00
..