- Rename all user-facing and technical identifiers from OpenPets/Pet to FamiliarOS/Familiar.
- Rename packages from @open-pets/* to @familiaros/*; rename install-pet/pet-format packages.
- Rename plugin IDs and directories from openpets.* to familiaros.*.
- Rename IPC namespace from openpets:* to familiaros:* and state filenames from openpets-* to familiaros-* with legacy migration.
- Rename source files (pet-window, built-in-pet, default-pet-controller, etc.) to familiar equivalents.
- Update locales (en, es-419, ja, ko, pt-BR, zh-Hans, zh-Hant) and tray/pet context menu strings.
- Add Familiar naming feature: preference, settings input, tray menu display.
- Update assets and packaging config; all desktop tests pass.
Merged origin/main (release v3.0.0) into main and preserved fork features:
- Minimal compact prompt window (140px) that expands with editor/history.
- Larger pet speech bubbles that scale with pet/window size.
- Improved chat command memory extraction (/remember, /memorize, /note, don't forget).
- Continuous pet scale slider from 0.16x to 10x (screen-filling).
Version bumped to 3.1.0.
- Prompt window opens at 140px compact height and expands to 456px when editor/history shown.
- Pet speech bubbles scale with larger pets and window sizes; removed text overflow clipping.
- Extracted prompt memory extraction into testable module; added /remember, /memorize, /note, don't forget patterns.
- Replaced pet scale dropdown with continuous slider from 0.16x to 10x.
- Added prompt-memory-extraction.test.ts and updated packaging/onboarding tests.
When a heartbeat fails, the MCP server previously cleared the lease and
stopped heartbeating permanently, making the pet unresponsive for the
rest of the session.
Now on heartbeat failure:
- Enters retry mode with exponential backoff (5s → 10s → 20s → 40s → 60s cap)
- Re-acquires lease automatically when the desktop app recovers
- Resumes normal 5s heartbeat after successful re-acquisition
Also adds on-demand lease recovery in react/say tool handlers — if the
lease is expired when a tool is called, it attempts to acquire a new one
before returning an error.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>