Skip to content

feat(webchat): the lobster remembers — dex memories and a familiarity arc#103359

Merged
steipete merged 1 commit into
mainfrom
claude/lobster-familiarity-4abdbb
Jul 10, 2026
Merged

feat(webchat): the lobster remembers — dex memories and a familiarity arc#103359
steipete merged 1 commit into
mainfrom
claude/lobster-familiarity-4abdbb

Conversation

@steipete

Copy link
Copy Markdown
Contributor

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:

    • Shy (fewer than 3 visits ever): shorter stays, later first arrivals.
    • Regular: today's behavior.
    • Friend (15+): longer stays, sooner returns, and a hello wave on its first arrival of each load.
    • Wary (shooed often relative to visits): noticeably longer gaps between visits, whatever the tier.

    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=0 on 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:ui and pnpm --dir ui build.
  • Live verification against pnpm dev:ui:mock: gallery tooltips render "Pinchy · first visited 7/4/2026" / "Goldie · first visited 7/5/2026" with unseen slots still "?".
  • New i18n key synced with real translations across locale bundles.
  • Codex autoreview clean.

@openclaw-barnacle openclaw-barnacle Bot added app: web-ui App: web-ui size: L maintainer Maintainer-authored PR labels Jul 10, 2026
@steipete
steipete force-pushed the claude/lobster-visitors-4abdbb branch from 3035798 to e13a02d Compare July 10, 2026 05:30
@steipete
steipete force-pushed the claude/lobster-familiarity-4abdbb branch from 226b254 to 82f85bd Compare July 10, 2026 05:30
@steipete
steipete force-pushed the claude/lobster-visitors-4abdbb branch from e13a02d to eb97cf2 Compare July 10, 2026 05:59
@steipete
steipete force-pushed the claude/lobster-familiarity-4abdbb branch from 82f85bd to 65bb540 Compare July 10, 2026 06:00
Base automatically changed from claude/lobster-visitors-4abdbb to main July 10, 2026 06:22
@steipete
steipete force-pushed the claude/lobster-familiarity-4abdbb branch from 65bb540 to e62295a Compare July 10, 2026 06:26
… 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
steipete force-pushed the claude/lobster-familiarity-4abdbb branch from e62295a to b476469 Compare July 10, 2026 06:42
@steipete
steipete merged commit 0d63f46 into main Jul 10, 2026
125 of 126 checks passed
@steipete
steipete deleted the claude/lobster-familiarity-4abdbb branch July 10, 2026 07:10
@steipete

Copy link
Copy Markdown
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui maintainer Maintainer-authored PR size: L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant