feat(webchat): the lobster remembers — dex memories and a familiarity arc#103359
Merged
Conversation
steipete
force-pushed
the
claude/lobster-visitors-4abdbb
branch
from
July 10, 2026 05:30
3035798 to
e13a02d
Compare
steipete
force-pushed
the
claude/lobster-familiarity-4abdbb
branch
from
July 10, 2026 05:30
226b254 to
82f85bd
Compare
steipete
force-pushed
the
claude/lobster-visitors-4abdbb
branch
from
July 10, 2026 05:59
e13a02d to
eb97cf2
Compare
steipete
force-pushed
the
claude/lobster-familiarity-4abdbb
branch
from
July 10, 2026 06:00
82f85bd to
65bb540
Compare
steipete
force-pushed
the
claude/lobster-familiarity-4abdbb
branch
from
July 10, 2026 06:26
65bb540 to
e62295a
Compare
… arc
The Lobsterdex upgrades to a v2 object schema (v1 arrays migrate in
place, memories backfill on the next visit): each palette remembers its
first visitor's name and date, shown in the gallery tooltips ('Goldie -
first visited 7/5/2026'). Familiarity counters (visits, shoos) shape
behavior with no UI: fewer than three lifetime visits is shy (shorter
stays, later arrivals), fifteen or more is a friend (longer stays,
sooner returns, and a hello wave on the first arrival of each load),
and shooing it too often makes it wary, stretching the gaps between
visits. All best-effort localStorage; tuning lives in one exported
table.
steipete
force-pushed
the
claude/lobster-familiarity-4abdbb
branch
from
July 10, 2026 06:42
e62295a to
b476469
Compare
Contributor
Author
|
Merged via squash.
|
github-actions Bot
pushed a commit
to Desicool/openclaw
that referenced
this pull request
Jul 10, 2026
… arc (openclaw#103359) The Lobsterdex upgrades to a v2 object schema (v1 arrays migrate in place, memories backfill on the next visit): each palette remembers its first visitor's name and date, shown in the gallery tooltips ('Goldie - first visited 7/5/2026'). Familiarity counters (visits, shoos) shape behavior with no UI: fewer than three lifetime visits is shy (shorter stays, later arrivals), fifteen or more is a friend (longer stays, sooner returns, and a hello wave on the first arrival of each load), and shooing it too often makes it wary, stretching the gaps between visits. All best-effort localStorage; tuning lives in one exported table.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related: #102754 · Stacked on #103352 (visitors) — lands after it.
What Problem This Solves
The pet has no memory of you, and the Lobsterdex has no memory of them. Relationships are what turn a mascot into a pet.
Why This Change Was Made
Lobsterdex memories: the dex storage upgrades to a v2 object schema (v1 arrays migrate in place; old entries backfill their memory on the next visit). Each palette remembers its first visitor's name and date, surfaced in the gallery tooltips: "Goldie · first visited 7/5/2026". First memories are immutable — later same-palette visitors don't overwrite history.
The familiarity arc: two counters (lifetime visits, lifetime shoos) shape behavior with zero UI:
No meter, no progress bar — the relationship expresses itself purely through behavior, which is how actual pets work. Tuning lives in one exported table.
User Impact
Your lobster warms up to you over weeks: early visitors are skittish, regulars settle in, old friends wave when they arrive. Shoo it too often and it keeps its distance for a while. Hover the Lobsterdex to reminisce about your first gold.
Evidence
Validation (delegated Blacksmith Testbox,
exit=0on retry after an infra box-shutdown flake):pnpm test ui/src/components/lobster-pet.test.ts ui/src/components/lobster-dex.test.ts ui/src/pages/config/quick.test.ts— 68/68: v1→v2 migration + backfill + first-memory immutability, tier/wary counter math, tuning-table sanity, arrival recording of name+date, the friend greeting wave, shoo counter persistence, plus all existing suites.pnpm tsgo:test:uiandpnpm --dir ui build.pnpm dev:ui:mock: gallery tooltips render "Pinchy · first visited 7/4/2026" / "Goldie · first visited 7/5/2026" with unseen slots still "?".