From 6ab3bb64d8a195719b4171050d12176e60960392 Mon Sep 17 00:00:00 2001 From: OpenPets Dev Date: Wed, 17 Jun 2026 01:42:08 +0000 Subject: [PATCH] feat(rebrand): rename OpenPets to FamiliarOS and pets to familiars - 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. --- .github/ISSUE_TEMPLATE/bug-report.yml | 18 +- .github/ISSUE_TEMPLATE/feature-request.yml | 4 +- .github/ISSUE_TEMPLATE/submit-pet.yml | 16 +- .slim/codemap.json | 38 +- AGENTS.md | 18 +- DESIGN.md | 26 +- FEATURES.md | 134 ++--- FEATURES_OUR_CHANGES.md | 56 +- FEATURE_REGISTRY.md | 78 +-- LICENSE | 2 +- PULL_REQUEST.md | 68 +-- README.md | 194 +++---- README_OUR_CHANGES.md | 48 +- apps/codemap.md | 16 +- ...webp => default-familiar-spritesheet.webp} | Bin ...ail.png => default-familiar-thumbnail.png} | Bin .../assets/{openpets.webp => familiaros.webp} | Bin ...ng-pets.webp => onboarding-familiars.webp} | Bin apps/desktop/catalog.v2.fixture.json | 24 +- apps/desktop/codemap.md | 62 +-- .../contracts/catalog-fixture.contract.ts | 10 +- apps/desktop/contracts/codemap.md | 6 +- .../contracts/local-ipc-protocol.contract.ts | 4 +- .../contracts/plugin-manifest.contract.ts | 42 +- apps/desktop/control-center-preload.cjs | 140 ++--- apps/desktop/electron-builder.yml | 20 +- .../{pet-preload.cjs => familiar-preload.cjs} | 88 +-- apps/desktop/package.json | 28 +- apps/desktop/panel-preload.cjs | 4 +- apps/desktop/plugin-sdk-preload.cjs | 52 +- apps/desktop/prompt-window-preload.cjs | 28 +- apps/desktop/scripts/build-deps.mjs | 20 +- apps/desktop/scripts/codemap.md | 4 +- apps/desktop/scripts/release-local.mjs | 20 +- apps/desktop/scripts/run-tests.mjs | 8 +- ...roller.ts => agent-familiar-controller.ts} | 62 +-- apps/desktop/src/agent-setup.ts | 166 +++--- apps/desktop/src/app-state.ts | 174 +++--- apps/desktop/src/assets.ts | 6 +- .../{built-in-pet.ts => built-in-familiar.ts} | 2 +- apps/desktop/src/catalog-validation.ts | 56 +- apps/desktop/src/catalog.ts | 120 ++-- apps/desktop/src/check-cursor-desktop.ts | 34 +- .../src/check-opencode-desktop-setup.ts | 20 +- apps/desktop/src/check-packaging-contract.ts | 268 ++++----- .../src/check-plugin-sdk-conformance.ts | 10 +- apps/desktop/src/claude-memory.ts | 72 +-- apps/desktop/src/codemap.md | 128 ++--- ...x-pets-core.ts => codex-familiars-core.ts} | 14 +- .../src/{codex-pets.ts => codex-familiars.ts} | 64 +-- ...ller.ts => default-familiar-controller.ts} | 70 +-- apps/desktop/src/display.ts | 4 +- ...stallation.ts => familiar-installation.ts} | 72 +-- ...on-engine.ts => familiar-motion-engine.ts} | 6 +- .../src/{pet-paths.ts => familiar-paths.ts} | 6 +- .../src/{pet-window.ts => familiar-window.ts} | 288 +++++----- ...penpets-memory.ts => familiaros-memory.ts} | 84 +-- apps/desktop/src/i18n/index.ts | 2 +- apps/desktop/src/i18n/locales/en.ts | 283 +++++----- apps/desktop/src/i18n/locales/es-419.ts | 278 ++++----- apps/desktop/src/i18n/locales/ja.ts | 278 ++++----- apps/desktop/src/i18n/locales/ko.ts | 278 ++++----- apps/desktop/src/i18n/locales/pt-BR.ts | 278 ++++----- apps/desktop/src/i18n/locales/zh-Hans.ts | 278 ++++----- apps/desktop/src/i18n/locales/zh-Hant.ts | 278 ++++----- apps/desktop/src/i18n/reactions/es-419.ts | 6 +- apps/desktop/src/i18n/reactions/index.ts | 6 +- apps/desktop/src/i18n/reactions/ja.ts | 6 +- apps/desktop/src/i18n/reactions/ko.ts | 6 +- apps/desktop/src/i18n/reactions/pt-BR.ts | 6 +- apps/desktop/src/i18n/reactions/zh-Hans.ts | 6 +- apps/desktop/src/i18n/reactions/zh-Hant.ts | 6 +- apps/desktop/src/knowledge-store.ts | 14 +- apps/desktop/src/lease-manager.ts | 2 +- apps/desktop/src/lifecycle.ts | 12 +- apps/desktop/src/local-ipc-paths.ts | 72 +-- apps/desktop/src/local-ipc-protocol.ts | 44 +- apps/desktop/src/local-ipc.ts | 90 +-- apps/desktop/src/logger.ts | 20 +- apps/desktop/src/main.ts | 22 +- apps/desktop/src/mcp-chat-client.ts | 4 +- apps/desktop/src/mcp-toolkit-installer.ts | 14 +- apps/desktop/src/openapi-chat.ts | 20 +- apps/desktop/src/plugin-ai-gateway.ts | 4 +- apps/desktop/src/plugin-assets.ts | 12 +- apps/desktop/src/plugin-bubble-arbiter.ts | 10 +- apps/desktop/src/plugin-catalog-validation.ts | 12 +- apps/desktop/src/plugin-catalog.ts | 4 +- apps/desktop/src/plugin-config.ts | 16 +- apps/desktop/src/plugin-dev-watcher.ts | 6 +- apps/desktop/src/plugin-events-source.ts | 12 +- ...ugin-pet-api.ts => plugin-familiar-api.ts} | 12 +- ...egistry.ts => plugin-familiar-registry.ts} | 170 +++--- apps/desktop/src/plugin-host-capabilities.ts | 14 +- apps/desktop/src/plugin-js-host.ts | 60 +- apps/desktop/src/plugin-local-loader.ts | 16 +- apps/desktop/src/plugin-manifest-reader.ts | 6 +- apps/desktop/src/plugin-manifest.ts | 74 +-- apps/desktop/src/plugin-oauth.ts | 4 +- apps/desktop/src/plugin-package.ts | 24 +- apps/desktop/src/plugin-panels.ts | 8 +- apps/desktop/src/plugin-platform-settings.ts | 2 +- apps/desktop/src/plugin-runtime.ts | 28 +- apps/desktop/src/plugin-sdk-bridge.ts | 124 ++--- apps/desktop/src/plugin-sdk-events.ts | 4 +- apps/desktop/src/plugin-sdk-routes.ts | 4 +- apps/desktop/src/plugin-sdk-ui.ts | 10 +- apps/desktop/src/plugin-service.ts | 58 +- apps/desktop/src/plugin-state.ts | 30 +- apps/desktop/src/plugin-voice.ts | 8 +- apps/desktop/src/prompt-memory-extraction.ts | 4 +- apps/desktop/src/prompt-window.ts | 30 +- .../desktop/src/reaction-animation-mapping.ts | 22 +- apps/desktop/src/reaction-messages.ts | 6 +- apps/desktop/src/renderer/codemap.md | 4 +- apps/desktop/src/renderer/index.html | 4 +- apps/desktop/src/renderer/src/codemap.md | 10 +- apps/desktop/src/renderer/src/i18n.tsx | 2 +- apps/desktop/src/renderer/src/main.tsx | 473 ++++++++-------- .../src/renderer/src/mcp-toolkit-catalog.ts | 2 +- apps/desktop/src/renderer/src/styles.css | 34 +- apps/desktop/src/tray.ts | 24 +- apps/desktop/src/tts-credentials.ts | 2 +- apps/desktop/src/tts-engine.ts | 2 +- apps/desktop/src/tts-service.ts | 16 +- apps/desktop/src/update-checker.ts | 6 +- apps/desktop/src/windows.ts | 281 +++++----- apps/desktop/src/zip-safety.ts | 6 +- apps/desktop/tests/claude-memory.test.ts | 54 +- ...x-pets.test.ts => codex-familiars.test.ts} | 4 +- ...=> default-familiar-external-show.test.ts} | 24 +- apps/desktop/tests/knowledge-store.test.ts | 16 +- apps/desktop/tests/lease-manager.test.ts | 12 +- apps/desktop/tests/onboarding-state.test.ts | 6 +- .../tests/plugin-catalog-validation.test.ts | 8 +- apps/desktop/tests/plugin-config.test.ts | 4 +- apps/desktop/tests/plugin-package.test.ts | 38 +- apps/desktop/tests/plugin-runtime.test.ts | 70 +-- apps/desktop/tests/plugin-sdk-bridge.test.ts | 24 +- apps/desktop/tests/plugin-service.test.ts | 194 +++---- apps/desktop/tests/plugin-state.test.ts | 20 +- apps/desktop/tests/plugin-ui-static.test.ts | 44 +- .../tests/plugin-user-sound-store.test.ts | 2 +- .../tests/reaction-animation-mapping.test.ts | 10 +- apps/desktop/tests/update-version.test.ts | 6 +- apps/desktop/tests/zip-safety.test.ts | 56 +- apps/desktop/vite.config.ts | 6 +- codemap.md | 44 +- docs/bug-squashing.md | 70 +-- docs/claude-integration.md | 116 ++-- docs/cursor-integration.md | 158 +++--- docs/cursor-phase-1-spec.md | 114 ++-- docs/cursor-phase-2-rules-spec.md | 100 ++-- docs/cursor_todos.md | 20 +- docs/front_refactor.md | 106 ++-- docs/implementation-process.md | 100 ++-- docs/mapping.md | 90 +-- docs/mvp-validation.md | 88 +-- docs/opencode.md | 150 ++--- ...GIT_CLEANUP_HYGIENE_PROTOCOL_2026-06-09.md | 2 +- docs/phases/phase-00-workspace-foundation.md | 22 +- docs/phases/phase-01-tray-desktop-shell.md | 76 +-- docs/phases/phase-02-default-pet-window.md | 214 +++---- ...phase-03-local-state-pet-manager-basics.md | 214 +++---- .../phase-04-v2-pet-catalog-installation.md | 174 +++--- docs/phases/phase-04a-v2-catalog-read-only.md | 126 ++--- .../phases/phase-04b-safe-pet-installation.md | 160 +++--- docs/phases/phase-05-local-ipc-client.md | 122 ++-- docs/phases/phase-06a-thin-mcp-tools.md | 142 ++--- docs/phases/phase-06b-mcp-lease-lifecycle.md | 220 ++++---- ...phase-07-claude-detection-configuration.md | 138 ++--- docs/phases/phase-08-claude-enhanced-hooks.md | 120 ++-- .../phase-08c-test-harness-regression-pack.md | 16 +- docs/phases/phase-09-first-run-onboarding.md | 98 ++-- .../phase-10a-desktop-package-hardening.md | 60 +- ...0b-packaged-claude-command-distribution.md | 70 +-- .../phase-10c-asar-runtime-packaging.md | 30 +- .../phase-10e-app-icon-package-identity.md | 6 +- ...phase-11-mvp-closeout-release-readiness.md | 24 +- .../phase-12-actual-pet-animation-polish.md | 152 ++--- .../phases/phase-13a-pet-manager-ui-polish.md | 104 ++-- .../phase-13b-onboarding-greeting-polish.md | 52 +- docs/phases/phase-13c-pet-manager-gallery.md | 138 ++--- docs/phases/phase-13d-agent-setup-polish.md | 42 +- .../phase-13e-onboarding-flow-polish.md | 72 +-- docs/phases/phase-13f-settings-tray-polish.md | 74 +-- docs/phases/phase-14-pet-scale-setting.md | 100 ++-- docs/phases/phase-15-codex-pet-import.md | 50 +- .../phase-16-claude-hook-pet-routing.md | 60 +- .../phase-17-openpets-cli-project-setup.md | 144 ++--- ...se-18-reaction-sprite-animation-mapping.md | 96 ++-- docs/phases/phase-19-opencode-integration.md | 88 +-- docs/phases/phase-19a-opencode-foundation.md | 84 +-- .../phase-19b-opencode-plugin-runtime.md | 92 +-- .../phase-19c-opencode-cli-project-setup.md | 122 ++-- .../phase-19d-opencode-desktop-hardening.md | 92 +-- docs/phases/phase-20-scalable-pet-catalog.md | 318 +++++------ docs/phases/phase-21-pi-integration.md | 154 ++--- .../phase-22-reaction-animation-settings.md | 102 ++-- docs/plugins.md | 82 +-- .../OPENPETS_3_1_0_FIXES_PULL_REQUESTS.md | 88 +-- .../OPENPETS_3_1_0_MOD_NICHE_PULL_REQUESTS.md | 74 +-- ...OPENPETS_3_1_0_PR_CONSOLIDATION_OPTIONS.md | 60 +- docs/pull-requests/OP_1_6_PULL_REQUESTS.md | 50 +- ...PT_WINDOW_PACKAGED_BUILD_FIX_2026-06-15.md | 4 +- docs/release.md | 182 +++--- docs/testing.md | 14 +- docs/workflow.md | 18 +- docs/wsl-ipc.md | 56 +- package.json | 16 +- packages/agent-events/codemap.md | 4 +- packages/agent-events/package.json | 4 +- packages/claude/codemap.md | 28 +- packages/claude/package.json | 10 +- packages/claude/src/check-claude-code.ts | 66 +-- packages/claude/src/check-claude-hooks.ts | 58 +- packages/claude/src/claude-code.ts | 54 +- packages/claude/src/cli.ts | 18 +- packages/claude/src/codemap.md | 6 +- packages/claude/src/hook-messages.ts | 2 +- packages/claude/src/hook-settings.ts | 68 +-- packages/claude/src/hooks.ts | 46 +- packages/claude/src/index.ts | 2 +- packages/cli/codemap.md | 50 +- packages/cli/package.json | 16 +- .../cli/schemas/openpets.plugin.schema.json | 14 +- packages/cli/src/check-cli-contract.ts | 132 ++--- packages/cli/src/codemap.md | 14 +- packages/cli/src/index.ts | 226 ++++---- packages/cli/src/plugin-templates.ts | 154 ++--- packages/cli/src/plugin-validate.ts | 12 +- packages/client/codemap.md | 26 +- .../contracts/client-protocol.contract.ts | 12 +- packages/client/contracts/codemap.md | 2 +- packages/client/package.json | 4 +- packages/client/src/codemap.md | 28 +- packages/client/src/discovery.ts | 88 +-- packages/client/src/index.ts | 142 ++--- packages/client/src/protocol.ts | 36 +- packages/client/src/smoke.ts | 8 +- packages/codemap.md | 38 +- packages/cursor/codemap.md | 50 +- packages/cursor/package.json | 4 +- packages/cursor/src/check-cursor.ts | 116 ++-- packages/cursor/src/codemap.md | 8 +- packages/cursor/src/cursor-mcp.ts | 20 +- packages/cursor/src/cursor-previews.ts | 8 +- packages/cursor/src/cursor-rules.ts | 88 +-- packages/cursor/src/cursor-status.ts | 56 +- .../codemap.md | 8 +- .../package.json | 6 +- .../src/codemap.md | 2 +- packages/familiar-format/src/index.ts | 5 + .../tsconfig.json | 0 .../codemap.md | 44 +- .../package.json | 12 +- .../install-familiar/src/check-install-pet.ts | 36 ++ .../src/codemap.md | 4 +- .../src/index.ts | 110 ++-- .../tsconfig.json | 0 packages/install-pet/src/check-install-pet.ts | 36 -- packages/mcp/codemap.md | 18 +- packages/mcp/package.json | 10 +- packages/mcp/src/args.ts | 16 +- packages/mcp/src/check-mcp-contract.ts | 60 +- packages/mcp/src/codemap.md | 2 +- packages/mcp/src/index.ts | 10 +- packages/mcp/src/server.ts | 48 +- packages/mcp/src/tools.ts | 92 +-- packages/opencode/codemap.md | 22 +- packages/opencode/package.json | 8 +- .../opencode/src/check-opencode-foundation.ts | 114 ++-- .../opencode/src/check-opencode-plugin.ts | 38 +- packages/opencode/src/codemap.md | 6 +- packages/opencode/src/opencode-config.ts | 4 +- .../opencode/src/opencode-global-setup.ts | 76 +-- .../opencode/src/opencode-plugin-runtime.ts | 54 +- packages/opencode/src/opencode-previews.ts | 22 +- .../opencode/src/opencode-project-setup.ts | 38 +- packages/opencode/src/opencode-status.ts | 88 +-- packages/opencode/src/plugin.ts | 6 +- packages/pet-format/src/index.ts | 5 - packages/pi/codemap.md | 32 +- packages/pi/package.json | 10 +- packages/pi/src/check-pi-compat.ts | 14 +- packages/pi/src/check-pi.ts | 40 +- packages/pi/src/codemap.md | 34 +- packages/pi/src/extension.ts | 6 +- packages/pi/src/index.ts | 20 +- packages/pi/src/runtime.ts | 102 ++-- packages/sdk/README.md | 26 +- packages/sdk/package.json | 10 +- packages/sdk/src/check-plugin-sdk.ts | 56 +- packages/sdk/src/codemap.md | 8 +- packages/sdk/src/index.ts | 526 +++++++++--------- packages/sdk/src/testing.ts | 176 +++--- .../assets/routine.svg | 0 .../familiaros.plugin.json} | 2 +- .../index.js | 6 +- .../locales/en.json | 0 .../locales/es-419.json | 0 .../locales/ja.json | 0 .../locales/ko.json | 0 .../locales/pt-BR.json | 0 .../locales/zh-Hans.json | 0 .../locales/zh-Hant.json | 0 .../test.js | 6 +- .../assets/focus.svg | 0 .../familiaros.plugin.json} | 2 +- .../index.js | 6 +- .../locales/en.json | 0 .../locales/es-419.json | 0 .../locales/ja.json | 0 .../locales/ko.json | 0 .../locales/pt-BR.json | 0 .../locales/zh-Hans.json | 0 .../locales/zh-Hant.json | 0 .../test.js | 6 +- .../assets/fortune-cookie.svg | 0 .../familiaros.plugin.json} | 2 +- .../index.js | 6 +- .../locales/en.json | 0 .../locales/es-419.json | 0 .../locales/ja.json | 0 .../locales/ko.json | 0 .../locales/pt-BR.json | 0 .../locales/zh-Hans.json | 0 .../locales/zh-Hant.json | 0 .../test.js | 6 +- .../assets/launch-buddy.svg | 0 .../familiaros.plugin.json} | 2 +- .../index.js | 6 +- .../locales/en.json | 4 +- .../locales/es-419.json | 4 +- .../locales/ja.json | 4 +- .../locales/ko.json | 4 +- .../locales/pt-BR.json | 4 +- .../locales/zh-Hans.json | 4 +- .../locales/zh-Hant.json | 4 +- .../test.js | 4 +- .../assets/magic-8-ball.svg | 0 .../familiaros.plugin.json} | 2 +- .../index.js | 6 +- .../locales/en.json | 0 .../locales/es-419.json | 0 .../locales/ja.json | 0 .../locales/ko.json | 0 .../locales/pt-BR.json | 0 .../locales/zh-Hans.json | 0 .../locales/zh-Hant.json | 0 .../test.js | 6 +- .../assets/mood.svg | 0 .../familiaros.plugin.json} | 2 +- .../index.js | 6 +- .../locales/en.json | 0 .../locales/es-419.json | 0 .../locales/ja.json | 0 .../locales/ko.json | 0 .../locales/pt-BR.json | 0 .../locales/zh-Hans.json | 0 .../locales/zh-Hant.json | 0 .../test.js | 6 +- .../assets/reminder.svg | 0 .../familiaros.plugin.json} | 2 +- .../index.js | 8 +- .../locales/en.json | 0 .../locales/es-419.json | 0 .../locales/ja.json | 0 .../locales/ko.json | 0 .../locales/pt-BR.json | 0 .../locales/zh-Hans.json | 0 .../locales/zh-Hant.json | 0 .../test.js | 8 +- .../assets/virtual-pet.svg | 0 .../familiaros.plugin.json} | 2 +- .../index.js | 6 +- .../locales/en.json | 0 .../test.js | 6 +- .../assets/water.svg | 0 .../familiaros.plugin.json} | 2 +- .../index.js | 6 +- .../locales/en.json | 0 .../locales/es-419.json | 0 .../locales/ja.json | 0 .../locales/ko.json | 0 .../locales/pt-BR.json | 0 .../locales/zh-Hans.json | 0 .../locales/zh-Hant.json | 0 .../test.js | 6 +- pnpm-lock.yaml | 44 +- scripts/release-npm.mjs | 26 +- skills/openpets/SKILL.md | 86 +-- skills/openpets/references/commands.md | 26 +- skills/openpets/references/config-files.md | 12 +- skills/openpets/references/integrations.md | 18 +- skills/openpets/references/source-docs.md | 8 +- .../openpets/workflows/configure-project.md | 28 +- .../workflows/explain-architecture.md | 20 +- skills/openpets/workflows/install-openpets.md | 20 +- skills/openpets/workflows/install-pet.md | 26 +- skills/openpets/workflows/troubleshoot.md | 24 +- skills/openpets/workflows/verify-claude.md | 14 +- skills/openpets/workflows/verify-mcp.md | 22 +- skills/openpets/workflows/verify-opencode.md | 14 +- 404 files changed, 8975 insertions(+), 8886 deletions(-) rename apps/desktop/assets/{default-pet-spritesheet.webp => default-familiar-spritesheet.webp} (100%) rename apps/desktop/assets/{default-pet-thumbnail.png => default-familiar-thumbnail.png} (100%) rename apps/desktop/assets/{openpets.webp => familiaros.webp} (100%) rename apps/desktop/assets/{onboarding-pets.webp => onboarding-familiars.webp} (100%) rename apps/desktop/{pet-preload.cjs => familiar-preload.cjs} (85%) rename apps/desktop/src/{agent-pet-controller.ts => agent-familiar-controller.ts} (73%) rename apps/desktop/src/{built-in-pet.ts => built-in-familiar.ts} (75%) rename apps/desktop/src/{codex-pets-core.ts => codex-familiars-core.ts} (72%) rename apps/desktop/src/{codex-pets.ts => codex-familiars.ts} (76%) rename apps/desktop/src/{default-pet-controller.ts => default-familiar-controller.ts} (80%) rename apps/desktop/src/{pet-installation.ts => familiar-installation.ts} (82%) rename apps/desktop/src/{pet-motion-engine.ts => familiar-motion-engine.ts} (96%) rename apps/desktop/src/{pet-paths.ts => familiar-paths.ts} (78%) rename apps/desktop/src/{pet-window.ts => familiar-window.ts} (86%) rename apps/desktop/src/{openpets-memory.ts => familiaros-memory.ts} (85%) rename apps/desktop/src/{plugin-pet-api.ts => plugin-familiar-api.ts} (75%) rename apps/desktop/src/{plugin-pet-registry.ts => plugin-familiar-registry.ts} (59%) rename apps/desktop/tests/{codex-pets.test.ts => codex-familiars.test.ts} (91%) rename apps/desktop/tests/{default-pet-external-show.test.ts => default-familiar-external-show.test.ts} (77%) rename packages/{pet-format => familiar-format}/codemap.md (60%) rename packages/{pet-format => familiar-format}/package.json (75%) rename packages/{pet-format => familiar-format}/src/codemap.md (83%) create mode 100644 packages/familiar-format/src/index.ts rename packages/{pet-format => familiar-format}/tsconfig.json (100%) rename packages/{install-pet => install-familiar}/codemap.md (50%) rename packages/{install-pet => install-familiar}/package.json (69%) create mode 100644 packages/install-familiar/src/check-install-pet.ts rename packages/{install-pet => install-familiar}/src/codemap.md (64%) rename packages/{install-pet => install-familiar}/src/index.ts (81%) rename packages/{install-pet => install-familiar}/tsconfig.json (100%) delete mode 100644 packages/install-pet/src/check-install-pet.ts delete mode 100644 packages/pet-format/src/index.ts rename plugins/official/{openpets.day-routine => familiaros.day-routine}/assets/routine.svg (100%) rename plugins/official/{openpets.day-routine/openpets.plugin.json => familiaros.day-routine/familiaros.plugin.json} (97%) rename plugins/official/{openpets.day-routine => familiaros.day-routine}/index.js (95%) rename plugins/official/{openpets.day-routine => familiaros.day-routine}/locales/en.json (100%) rename plugins/official/{openpets.day-routine => familiaros.day-routine}/locales/es-419.json (100%) rename plugins/official/{openpets.day-routine => familiaros.day-routine}/locales/ja.json (100%) rename plugins/official/{openpets.day-routine => familiaros.day-routine}/locales/ko.json (100%) rename plugins/official/{openpets.day-routine => familiaros.day-routine}/locales/pt-BR.json (100%) rename plugins/official/{openpets.day-routine => familiaros.day-routine}/locales/zh-Hans.json (100%) rename plugins/official/{openpets.day-routine => familiaros.day-routine}/locales/zh-Hant.json (100%) rename plugins/official/{openpets.day-routine => familiaros.day-routine}/test.js (97%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/assets/focus.svg (100%) rename plugins/official/{openpets.focus-buddy/openpets.plugin.json => familiaros.focus-buddy/familiaros.plugin.json} (97%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/index.js (98%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/locales/en.json (100%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/locales/es-419.json (100%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/locales/ja.json (100%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/locales/ko.json (100%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/locales/pt-BR.json (100%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/locales/zh-Hans.json (100%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/locales/zh-Hant.json (100%) rename plugins/official/{openpets.focus-buddy => familiaros.focus-buddy}/test.js (97%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/assets/fortune-cookie.svg (100%) rename plugins/official/{openpets.fortune-cookie/openpets.plugin.json => familiaros.fortune-cookie/familiaros.plugin.json} (93%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/index.js (96%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/locales/en.json (100%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/locales/es-419.json (100%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/locales/ja.json (100%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/locales/ko.json (100%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/locales/pt-BR.json (100%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/locales/zh-Hans.json (100%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/locales/zh-Hant.json (100%) rename plugins/official/{openpets.fortune-cookie => familiaros.fortune-cookie}/test.js (96%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/assets/launch-buddy.svg (100%) rename plugins/official/{openpets.launch-buddy/openpets.plugin.json => familiaros.launch-buddy/familiaros.plugin.json} (98%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/index.js (97%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/locales/en.json (97%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/locales/es-419.json (97%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/locales/ja.json (95%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/locales/ko.json (95%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/locales/pt-BR.json (97%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/locales/zh-Hans.json (95%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/locales/zh-Hant.json (95%) rename plugins/official/{openpets.launch-buddy => familiaros.launch-buddy}/test.js (98%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/assets/magic-8-ball.svg (100%) rename plugins/official/{openpets.magic-8-ball/openpets.plugin.json => familiaros.magic-8-ball/familiaros.plugin.json} (90%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/index.js (96%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/locales/en.json (100%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/locales/es-419.json (100%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/locales/ja.json (100%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/locales/ko.json (100%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/locales/pt-BR.json (100%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/locales/zh-Hans.json (100%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/locales/zh-Hant.json (100%) rename plugins/official/{openpets.magic-8-ball => familiaros.magic-8-ball}/test.js (96%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/assets/mood.svg (100%) rename plugins/official/{openpets.mood-check-in/openpets.plugin.json => familiaros.mood-check-in/familiaros.plugin.json} (94%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/index.js (97%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/locales/en.json (100%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/locales/es-419.json (100%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/locales/ja.json (100%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/locales/ko.json (100%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/locales/pt-BR.json (100%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/locales/zh-Hans.json (100%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/locales/zh-Hant.json (100%) rename plugins/official/{openpets.mood-check-in => familiaros.mood-check-in}/test.js (96%) rename plugins/official/{openpets.reminders => familiaros.reminders}/assets/reminder.svg (100%) rename plugins/official/{openpets.reminders/openpets.plugin.json => familiaros.reminders/familiaros.plugin.json} (96%) rename plugins/official/{openpets.reminders => familiaros.reminders}/index.js (98%) rename plugins/official/{openpets.reminders => familiaros.reminders}/locales/en.json (100%) rename plugins/official/{openpets.reminders => familiaros.reminders}/locales/es-419.json (100%) rename plugins/official/{openpets.reminders => familiaros.reminders}/locales/ja.json (100%) rename plugins/official/{openpets.reminders => familiaros.reminders}/locales/ko.json (100%) rename plugins/official/{openpets.reminders => familiaros.reminders}/locales/pt-BR.json (100%) rename plugins/official/{openpets.reminders => familiaros.reminders}/locales/zh-Hans.json (100%) rename plugins/official/{openpets.reminders => familiaros.reminders}/locales/zh-Hant.json (100%) rename plugins/official/{openpets.reminders => familiaros.reminders}/test.js (96%) rename plugins/official/{openpets.virtual-pet => familiaros.virtual-familiar}/assets/virtual-pet.svg (100%) rename plugins/official/{openpets.virtual-pet/openpets.plugin.json => familiaros.virtual-familiar/familiaros.plugin.json} (94%) rename plugins/official/{openpets.virtual-pet => familiaros.virtual-familiar}/index.js (98%) rename plugins/official/{openpets.virtual-pet => familiaros.virtual-familiar}/locales/en.json (100%) rename plugins/official/{openpets.virtual-pet => familiaros.virtual-familiar}/test.js (97%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/assets/water.svg (100%) rename plugins/official/{openpets.water-reminder/openpets.plugin.json => familiaros.water-reminder/familiaros.plugin.json} (96%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/index.js (97%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/locales/en.json (100%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/locales/es-419.json (100%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/locales/ja.json (100%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/locales/ko.json (100%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/locales/pt-BR.json (100%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/locales/zh-Hans.json (100%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/locales/zh-Hant.json (100%) rename plugins/official/{openpets.water-reminder => familiaros.water-reminder}/test.js (96%) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 33ae094b..7611c254 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -8,21 +8,21 @@ body: value: | Thanks for reporting a bug. Keep it short — we only need enough to reproduce it. - If the desktop app starts, please consider attaching your OpenPets log. It is not required, but it is highly recommended because it often explains startup, tray, pet display, and integration issues. + If the desktop app starts, please consider attaching your FamiliarOS log. It is not required, but it is highly recommended because it often explains startup, tray, familiar display, and integration issues. - To find it: open OpenPets from the tray/menu bar, choose **Open Logs Folder**, then attach `openpets.log` to this issue. If OpenPets cannot start, check these folders manually: - - macOS: `~/Library/Application Support/OpenPets/logs/` - - Windows: `%APPDATA%\OpenPets\logs\` - - Linux: `~/.config/OpenPets/logs/` + To find it: open FamiliarOS from the tray/menu bar, choose **Open Logs Folder**, then attach `familiaros.log` to this issue. If FamiliarOS cannot start, check these folders manually: + - macOS: `~/Library/Application Support/FamiliarOS/logs/` + - Windows: `%APPDATA%\FamiliarOS\logs\` + - Linux: `~/.config/FamiliarOS/logs/` - If the problem happened before the latest restart, `openpets.previous.log` may also be useful. + If the problem happened before the latest restart, `familiaros.previous.log` may also be useful. - type: textarea id: what-happened attributes: label: What happened? description: Describe the bug. Include your OS/app version if you know it. - placeholder: "The desktop pet disappeared after..." + placeholder: "The desktop familiar disappeared after..." validations: required: true @@ -30,7 +30,7 @@ body: id: logs attributes: label: Logs (optional, highly recommended) - description: Attach openpets.log if you can. If the app cannot start or you cannot find it, leave this blank. - placeholder: "Drag openpets.log here, or paste the most relevant lines." + description: Attach familiaros.log if you can. If the app cannot start or you cannot find it, leave this blank. + placeholder: "Drag familiaros.log here, or paste the most relevant lines." validations: required: false diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml index beee65cf..20cb5e54 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -1,5 +1,5 @@ name: Feature request -description: Suggest an improvement for OpenPets. +description: Suggest an improvement for FamiliarOS. title: "Feature: " labels: ["feature"] body: @@ -13,7 +13,7 @@ body: attributes: label: What do you want? description: Describe the feature or change you would like to see. - placeholder: "I want OpenPets to..." + placeholder: "I want FamiliarOS to..." validations: required: true diff --git a/.github/ISSUE_TEMPLATE/submit-pet.yml b/.github/ISSUE_TEMPLATE/submit-pet.yml index 4b333ced..3d3f88c4 100644 --- a/.github/ISSUE_TEMPLATE/submit-pet.yml +++ b/.github/ISSUE_TEMPLATE/submit-pet.yml @@ -1,18 +1,18 @@ -name: Submit a pet -description: Suggest a pet for the OpenPets gallery. -title: "Pet submission: " -labels: ["pet submission"] +name: Submit a familiar +description: Suggest a familiar for the FamiliarOS gallery. +title: "Familiar submission: " +labels: ["familiar submission"] body: - type: markdown attributes: value: | - Thanks for suggesting a pet. Keep it short — we only need the essentials. + Thanks for suggesting a familiar. Keep it short — we only need the essentials. - type: input - id: pet-idea + id: familiar-idea attributes: - label: Pet idea or name - description: What should the pet be called, and what is it? + label: Familiar idea or name + description: What should the familiar be called, and what is it? placeholder: "Pixel Penguin — a tiny penguin coding companion" validations: required: true diff --git a/.slim/codemap.json b/.slim/codemap.json index 3924058e..21f0cffd 100644 --- a/.slim/codemap.json +++ b/.slim/codemap.json @@ -2,7 +2,7 @@ "metadata": { "version": "1.0.0", "last_run": "2026-05-24T09:29:48.346Z", - "root": "/Volumes/external/repos/pets", + "root": "/Volumes/external/repos/familiars", "include_patterns": [ "apps/**/*.ts", "packages/**/*.ts", @@ -32,21 +32,21 @@ "apps/desktop/contracts/local-ipc-protocol.contract.ts": "76d45670b202ebd96cbee64d1e8e53ec", "apps/desktop/contracts/plugin-manifest.contract.ts": "2b0eaa64d1e02dce6b14cfee9c6d2b3d", "apps/desktop/package.json": "b83883566725e5c9a97fc9d7b5fd189a", - "apps/desktop/src/agent-pet-controller.ts": "179491dc5e838b5cf042b4630380d1e5", + "apps/desktop/src/agent-familiar-controller.ts": "179491dc5e838b5cf042b4630380d1e5", "apps/desktop/src/agent-setup.ts": "c2193dd06fa7686b4446ea7dc5686b92", "apps/desktop/src/app-state-core.ts": "9f4ea019ddb620bf8ad70dfe83f27496", "apps/desktop/src/app-state.ts": "89a68328e992076d114b90de5b8fbe1b", "apps/desktop/src/assets.ts": "d59129388a45ae10b5319242fd7a67ee", - "apps/desktop/src/built-in-pet.ts": "eff5b3375b2a9eccad401f6048c9c5f1", + "apps/desktop/src/built-in-familiar.ts": "eff5b3375b2a9eccad401f6048c9c5f1", "apps/desktop/src/catalog-validation.ts": "6bd6974357781c0f972ef2b2da76eb12", "apps/desktop/src/catalog.ts": "37fe90b36fa2eee976c3617fe1ee5989", "apps/desktop/src/check-cursor-desktop.ts": "80b0d5c1913a47143970447153762617", "apps/desktop/src/check-opencode-desktop-setup.ts": "08b86952c137b2e917d296c0c4590e5c", "apps/desktop/src/check-packaging-contract.ts": "c5f74134e8e5e98623e2c69e71a79eec", "apps/desktop/src/claude-memory.ts": "37f0a29734fad5e2bb5bd97110e7ddfa", - "apps/desktop/src/codex-pets-core.ts": "f20c529df55934b632ac8e02dec4df15", - "apps/desktop/src/codex-pets.ts": "885f214e14db799953b1ccf13a264478", - "apps/desktop/src/default-pet-controller.ts": "a46002d908de6596947cdaa1d122ea84", + "apps/desktop/src/codex-familiars-core.ts": "f20c529df55934b632ac8e02dec4df15", + "apps/desktop/src/codex-familiars.ts": "885f214e14db799953b1ccf13a264478", + "apps/desktop/src/default-familiar-controller.ts": "a46002d908de6596947cdaa1d122ea84", "apps/desktop/src/display.ts": "366ab73790c796771ee0df94affe0642", "apps/desktop/src/lease-manager.ts": "a8a84622bbd73a3b680a15b709c8dff0", "apps/desktop/src/lifecycle.ts": "a346d3ebe789e6d434858481af0757d0", @@ -55,9 +55,9 @@ "apps/desktop/src/local-ipc.ts": "a8f25fd0b47d560782f2332e30acc115", "apps/desktop/src/logger.ts": "a92e8de9ede984afc378d2d29d5fce0e", "apps/desktop/src/main.ts": "5678745b8ea5c311ada5259545bb694e", - "apps/desktop/src/pet-installation.ts": "79cdc67778448f2e3876d22194c1ada1", - "apps/desktop/src/pet-paths.ts": "73d7313fe19254ea0dcf24ab2f0929b3", - "apps/desktop/src/pet-window.ts": "5fafece7a49d2c43fa42d84f327c4a83", + "apps/desktop/src/familiar-installation.ts": "79cdc67778448f2e3876d22194c1ada1", + "apps/desktop/src/familiar-paths.ts": "73d7313fe19254ea0dcf24ab2f0929b3", + "apps/desktop/src/familiar-window.ts": "5fafece7a49d2c43fa42d84f327c4a83", "apps/desktop/src/plugin-catalog-validation.ts": "507deea55077a1130f9d4623a8fe8342", "apps/desktop/src/plugin-catalog.ts": "10cffa1505a621f2e4ec4d4e1379823c", "apps/desktop/src/plugin-config.ts": "4f1f0b6a83d6f705c7ef7b98b2412677", @@ -66,7 +66,7 @@ "apps/desktop/src/plugin-manifest-reader.ts": "2ba5d272ed3ae1b7e0131d2efdaf4caf", "apps/desktop/src/plugin-manifest.ts": "15fe4e34408053cebe8b1b42e84cc6e7", "apps/desktop/src/plugin-package.ts": "2aa09526568e4fd4f961d883ef373a38", - "apps/desktop/src/plugin-pet-api.ts": "b6d35ff512c9954462d82bf84dc50929", + "apps/desktop/src/plugin-familiar-api.ts": "b6d35ff512c9954462d82bf84dc50929", "apps/desktop/src/plugin-runtime.ts": "5065842b784ca91207bf8e6ce3d1fab5", "apps/desktop/src/plugin-sdk-bridge.ts": "a925bdd85834f00474e058e2c711d097", "apps/desktop/src/plugin-service.ts": "7a6ecfc1f62a35e5c6d440e876dac788", @@ -110,9 +110,9 @@ "packages/cursor/src/cursor-rules.ts": "a05f35efb92e61e2493ca122bcf42aab", "packages/cursor/src/cursor-status.ts": "c0d0a4dc377998336cf034c82d5bf56a", "packages/cursor/src/index.ts": "324347811550c7206820993f68651cba", - "packages/install-pet/package.json": "171c0fdaa8b13597c67c8c06be7adc6d", - "packages/install-pet/src/check-install-pet.ts": "de740e86393f3d7e4e30bf807c8e489c", - "packages/install-pet/src/index.ts": "04eaea5b38365061ae310c22626e077e", + "packages/install-familiar/package.json": "171c0fdaa8b13597c67c8c06be7adc6d", + "packages/install-familiar/src/check-install-familiar.ts": "de740e86393f3d7e4e30bf807c8e489c", + "packages/install-familiar/src/index.ts": "04eaea5b38365061ae310c22626e077e", "packages/mcp/package.json": "220512b0569b05ea9ec17950df4eb429", "packages/mcp/src/args.ts": "6b84e85ab049f35181294be5ad3efb7a", "packages/mcp/src/check-mcp-contract.ts": "0029e9dc79f600482b4c3d1ff1a0e630", @@ -131,8 +131,8 @@ "packages/opencode/src/opencode-project-setup.ts": "84b378ea0b22f9a99eced35edd5e584b", "packages/opencode/src/opencode-status.ts": "2640eed91327a35c57a7162ab6730ccc", "packages/opencode/src/plugin.ts": "8265624c6f4d87274928dde47405d893", - "packages/pet-format/package.json": "de5f4dee65e316fd9968a07928ec6558", - "packages/pet-format/src/index.ts": "6e94caf8463f6c6139f8f7364691f2e4", + "packages/familiar-format/package.json": "de5f4dee65e316fd9968a07928ec6558", + "packages/familiar-format/src/index.ts": "6e94caf8463f6c6139f8f7364691f2e4", "packages/pi/package.json": "e539f5df26ab1f7aabe73ef0f924ebb6", "packages/pi/src/check-pi-compat.ts": "e2f02e876e051e7f302f9ccf835953e3", "packages/pi/src/check-pi.ts": "47a4f7d28b07fffe130419975f1cc7a4", @@ -161,14 +161,14 @@ "packages/client/src": "a036a1f04099db816b2cd6b552fda034", "packages/cursor": "bc481b08e9fbe5e0464e6aef98f8c2ef", "packages/cursor/src": "e6ff31505d96d16dcbea0afcb680d2a3", - "packages/install-pet": "1ead7cc70de4c772c4c230c446d5e4ad", - "packages/install-pet/src": "5882ef53808f2a7d7152446d1d46e196", + "packages/install-familiar": "1ead7cc70de4c772c4c230c446d5e4ad", + "packages/install-familiar/src": "5882ef53808f2a7d7152446d1d46e196", "packages/mcp": "786e8bc32d478dbaa34bc3d1831cc6ec", "packages/mcp/src": "e89d476284c4ec2814c11a064fcb210b", "packages/opencode": "dd2382941a7bfe672b2f27dcbfa51e45", "packages/opencode/src": "ed024a6207b42efd076da44ab9587adb", - "packages/pet-format": "ca85af1412e98214135e22bdcba5f406", - "packages/pet-format/src": "e01c13d845950b7c825b8ecde0c12b80", + "packages/familiar-format": "ca85af1412e98214135e22bdcba5f406", + "packages/familiar-format/src": "e01c13d845950b7c825b8ecde0c12b80", "packages/pi": "df51ca2497141871a94e3383d042f051", "packages/pi/src": "2a70d56d1b7ce40ed8a0416141834dd4" } diff --git a/AGENTS.md b/AGENTS.md index 735768e0..16076b94 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -35,15 +35,15 @@ When plugin work is finished, update these docs if behavior, commands, manifests ## Logging for Fast DX -When working on desktop UI, renderer, IPC, catalog, plugin, or pet-window behavior, add targeted logging as part of the implementation when it helps diagnose issues quickly. +When working on desktop UI, renderer, IPC, catalog, plugin, or familiar-window behavior, add targeted logging as part of the implementation when it helps diagnose issues quickly. Prefer concise, scoped logs that capture data shape, selected IDs, load/error states, and boundary decisions. -Route renderer diagnostics into the app log when possible so failures are visible in `openpets.log`, not only DevTools. +Route renderer diagnostics into the app log when possible so failures are visible in `familiaros.log`, not only DevTools. Avoid noisy permanent logs, secrets, full payload dumps, or logging in tight animation/render loops. ## Control Center CSP When adding any renderer-visible URL scheme, image source, dev server endpoint, or internal protocol, update the Control Center CSP in both `apps/desktop/vite.config.ts` and `apps/desktop/src/renderer/index.html`. -Common pet image protocols include `openpets-codex:`, `openpets-installed:`, and `openpets-pet-preview:`; forgetting CSP causes images to load as the default/fallback pet even when install/render logic is correct. +Common familiar image protocols include `familiaros-codex:`, `familiaros-installed:`, and `familiaros-familiar-preview:`; forgetting CSP causes images to load as the default/fallback familiar even when install/render logic is correct. ## Ubuntu VMware Testing @@ -51,16 +51,16 @@ An Ubuntu 24.04 ARM64 VMware/Vagrant development VM exists for Linux GUI testing - VM directory: `/Volumes/external/vmware/ubuntu24` - Provider: `vmware_desktop` / VMware Fusion on Apple Silicon -- Guest OpenPets checkout: `/home/vagrant/src/openpets` -- Guest helper aliases: `cdpets` and `openpets-dx` +- Guest FamiliarOS checkout: `/home/vagrant/src/familiaros` +- Guest helper aliases: `cdpets` and `familiaros-dx` -Do not mount the macOS OpenPets checkout into Ubuntu for development. The macOS `node_modules` tree contains platform-specific packages and ownership metadata; using it from Linux can break local macOS development. Ubuntu testing should use the isolated guest clone and its own Linux `node_modules`. +Do not mount the macOS FamiliarOS checkout into Ubuntu for development. The macOS `node_modules` tree contains platform-specific packages and ownership metadata; using it from Linux can break local macOS development. Ubuntu testing should use the isolated guest clone and its own Linux `node_modules`. For Linux GUI bug reproduction or Electron desktop testing: 1. Start or inspect the VM from `/Volumes/external/vmware/ubuntu24` with `vagrant up` / `vagrant status`. 2. SSH with `vagrant ssh`. -3. In the guest, run `cdpets` then `openpets-dx` to update dependencies, fix Electron sandbox permissions, and launch OpenPets in the Ubuntu desktop session. -4. Check guest logs at `~/.config/@open-pets/desktop/logs/openpets.log`. +3. In the guest, run `cdpets` then `familiaros-dx` to update dependencies, fix Electron sandbox permissions, and launch FamiliarOS in the Ubuntu desktop session. +4. Check guest logs at `~/.config/@familiaros/desktop/logs/familiaros.log`. -The VM is configured to boot into the Ubuntu desktop (`graphical.target`) with GDM auto-login for the `vagrant` user. Prefer this VM when validating Linux-specific renderer, Electron, tray, pet-window, IPC, plugin, or packaging behavior. +The VM is configured to boot into the Ubuntu desktop (`graphical.target`) with GDM auto-login for the `vagrant` user. Prefer this VM when validating Linux-specific renderer, Electron, tray, familiar-window, IPC, plugin, or packaging behavior. diff --git a/DESIGN.md b/DESIGN.md index 7ae02912..3bd360c2 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -1,12 +1,12 @@ -# OpenPets Control Center: Design System & Engineering Manual +# FamiliarOS Control Center: Design System & Engineering Manual -This document outlines the visual direction, component patterns, and front-end engineering guidelines for the OpenPets Control Center. It serves as a practical implementation guide for migrating existing views (Settings, Plugins, Integrations, Onboarding) and building new pages using a cohesive, high-fidelity tactile design system. +This document outlines the visual direction, component patterns, and front-end engineering guidelines for the FamiliarOS Control Center. It serves as a practical implementation guide for migrating existing views (Settings, Plugins, Integrations, Onboarding) and building new pages using a cohesive, high-fidelity tactile design system. --- ## 1. Visual Direction & Heritage -The OpenPets Control Center blends the nostalgic, playful charm of late-90s/early-2000s desktop pet managers with a modern, glassmorphic utility interface. +The FamiliarOS Control Center blends the nostalgic, playful charm of late-90s/early-2000s desktop familiar managers with a modern, glassmorphic utility interface. - **The Core Tension**: Playful nostalgia meets crisp, modern desktop productivity. - **Atmospheric Depth**: Instead of flat, sterile surfaces, interfaces leverage rich color gradients, subtle mesh backdrops, structured panels, and tactile control elements. @@ -43,7 +43,7 @@ Surfaces are layered to establish clear spatial hierarchy and keep the interface The desktop shell is designed to be self-contained, fitting exactly within the viewport height without scrolling the entire window. - **Page Shell**: Max-width of `1160px` centered, utilizing a full-height flexbox column (`h-screen p-6`). -- **Hero Header**: A balanced layout placing title text and description on the left (`.hero-content`) and the wider brand artwork (`openpets.webp`) on the right (`.hero-logo-container`). Keep artwork large enough to feel intentional, use `object-contain`, and avoid rounded wrappers or distortion. +- **Hero Header**: A balanced layout placing title text and description on the left (`.hero-content`) and the wider brand artwork (`familiaros.webp`) on the right (`.hero-logo-container`). Keep artwork large enough to feel intentional, use `object-contain`, and avoid rounded wrappers or distortion. - **Layout Split**: A clean grid split, typically: - **Left Gallery/List Panel**: `1.25fr` — for browsing, searching, and filtering. - **Right Detail/Action Panel**: `0.75fr` — for contextual inspection and heavy operations. @@ -61,7 +61,7 @@ The desktop shell is designed to be self-contained, fitting exactly within the v - **Eyebrow / Section Header**: `text-xs font-bold uppercase tracking-[.18em] text-brand` - **Card Title**: `text-sm font-semibold text-navy` - **Metadata / Descriptions**: `text-xs text-slate-500` -- **Copy Tone**: Conversational, clean, and helpful. Avoid overly dense technical jargon; explain state transitions clearly (e.g., *"Ready to become your default pet"* instead of *"State: INSTALLED, ACTIVE: FALSE"*). +- **Copy Tone**: Conversational, clean, and helpful. Avoid overly dense technical jargon; explain state transitions clearly (e.g., *"Ready to become your default familiar"* instead of *"State: INSTALLED, ACTIVE: FALSE"*). --- @@ -78,14 +78,14 @@ All colors are mapped to functional roles to ensure consistency across themes. | **Success / Ready** | `#059669` / `#34d399` | `emerald` | Active indicators, successfully installed badges | | **Warning / Import** | `#d97706` / `#fbbf24` | `amber` | Codex source indicators, imports, attention states | | **Featured** | `#7e22ce` / `#a855f7` | `purple` | Featured catalog filters and badges | -| **Originals** | `#ca8a04` / `#facc15` | `yellow` | Original OpenPets catalog filters and badges | +| **Originals** | `#ca8a04` / `#facc15` | `yellow` | Original FamiliarOS catalog filters and badges | | **Danger / Remove** | `#dc2626` / `#ff6b6b` | `red` | Destructive actions, broken states, error messages | --- ## 6. Tactile Button System -Buttons are the core interactive elements. They reject flat modern trends in favor of a chunky, tangible 3D appearance inspired by physical pet hardware and OS controls. +Buttons are the core interactive elements. They reject flat modern trends in favor of a chunky, tangible 3D appearance inspired by physical familiar hardware and OS controls. ### Visual Architecture - **Borders**: Darker semi-transparent bottom/side borders (`rgba(..., 0.32)`). @@ -130,12 +130,12 @@ Buttons are the core interactive elements. They reject flat modern trends in fav - Amber/yellow-orange for `Originals` - Match catalog v3/web gallery taxonomy where possible: `Featured` excludes originals, and category filters like `Western`/`Asian` exclude featured and originals. -### Pet Cards & Badges +### Familiar Cards & Badges - Card grids need inner padding so selected rings and focus states are not clipped by the scroll container. - Use badges to expose catalog identity, not just install state: - - `Original` for original/OpenPets pets - - `Featured` for featured non-original catalog pets - - `Western` / `Asian` for standard category pets + - `Original` for original/FamiliarOS familiars + - `Featured` for featured non-original catalog familiars + - `Western` / `Asian` for standard category familiars - `Default`, `Installed`, and `Codex` for local state/source - Avoid low-value detail badges such as `Available`; reserve detail badges for meaningful state or catalog identity. @@ -192,8 +192,8 @@ When refactoring other Control Center views, apply the following structural mapp ### B. Plugins Page - **Old Layout**: Flat list of available integrations. -- **New Layout**: Grid-based layout matching the `.pets-grid` structure. -- **Cards**: Use the `.pet-card` styling with a thumbnail on the left, author/description text on the right, and semantic status pills (e.g., `.pill-green` for "Active", `.pill-slate` for "Disabled"). +- **New Layout**: Grid-based layout matching the `.familiars-grid` structure. +- **Cards**: Use the `.familiar-card` styling with a thumbnail on the left, author/description text on the right, and semantic status pills (e.g., `.pill-green` for "Active", `.pill-slate` for "Disabled"). ### C. Onboarding - **Old Layout**: Full screen wizard. diff --git a/FEATURES.md b/FEATURES.md index b8761d0a..c28d376b 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -1,6 +1,6 @@ -# OpenPets Feature Inventory +# FamiliarOS Feature Inventory -This file is the current feature roll-up for this working fork of OpenPets. +This file is the current feature roll-up for this working fork of FamiliarOS. It combines: - the shipped baseline described in `README.md` @@ -15,34 +15,34 @@ It combines: ## Desktop Companion Core - Tray-first desktop companion app -- Desktop pet that can idle, react, wave, move, and speak -- Default pet plus installed non-default pets -- Per-agent pet routing when integrations request a specific installed pet -- Manual pet dismissal with lease-aware recovery rules -- Native right-click pet context menu -- Always-on-top pet window with click-through background behavior +- Desktop familiar that can idle, react, wave, move, and speak +- Default familiar plus installed non-default familiars +- Per-agent familiar routing when integrations request a specific installed familiar +- Manual familiar dismissal with lease-aware recovery rules +- Native right-click familiar context menu +- Always-on-top familiar window with click-through background behavior - Drag support with mouse passthrough recovery for Windows/Linux edge cases -- Adaptive pet scale setting (continuous slider from 0.16x to 10x in Settings) -- Reset default pet position +- Adaptive familiar scale setting (continuous slider from 0.16x to 10x in Settings) +- Reset default familiar position - Launch at login support where the platform allows it - Update checking against GitHub releases - Open logs folder from the app -## Pet Packs And Gallery +## Familiar Packs And Gallery -- Built-in default pet -- Installed pet pack loading -- Local pet import from ZIP -- Local pet import from folder -- Codex pet import flow -- Pet catalog browsing -- Pet preview thumbnails and spritesheets -- Default pet selection -- Pet gallery linkout +- Built-in default familiar +- Installed familiar pack loading +- Local familiar import from ZIP +- Local familiar import from folder +- Codex familiar import flow +- Familiar catalog browsing +- Familiar preview thumbnails and spritesheets +- Default familiar selection +- Familiar gallery linkout ## Reactions And Speech -- Explicit pet speech bubbles +- Explicit familiar speech bubbles - Reaction-only decorative bubble messages - Reaction animation mapping - User-configurable reaction-to-animation overrides @@ -51,9 +51,9 @@ It combines: - Safer speech rules for agent-driven bubble content - Bubble behavior that avoids showing code, logs, URLs, paths, or secrets in normal integration speech -## Pet Text-to-Speech (Phase 2) +## Familiar Text-to-Speech (Phase 2) -- Settings > **Text-to-Speech** panel controls voice output for the pet and floating chat. +- Settings > **Text-to-Speech** panel controls voice output for the familiar and floating chat. - **System voice** uses the OS speech engine through the renderer (`window.speechSynthesis`) with optional voice-name matching and a 0.5×–2.0× speed multiplier. - **Cloud TTS providers**: OpenAI TTS, ElevenLabs, and an **OpenAI-compatible** preset for OpenRouter, LiteLLM, WaveSpeedAI, or a custom endpoint. - **Local TTS provider**: Piper (spawned as a local process) for fully offline speech. @@ -61,25 +61,25 @@ It combines: - Per-provider model, voice, speed, endpoint preset, and custom endpoint controls. - Dynamic voice list fetching for ElevenLabs; static voice lists for OpenAI / OpenAI-compatible. - In-app **Test voice** and **Stop** buttons to preview the configured voice. -- Assistant replies and other speech are spoken through the pet window renderer via a shared TTS service (`apps/desktop/src/tts-service.ts`). +- Assistant replies and other speech are spoken through the familiar window renderer via a shared TTS service (`apps/desktop/src/tts-service.ts`). - Respects quiet-hours: speech is skipped while quiet hours are active. - Audio returned by cloud providers is validated (MP3/WAV magic bytes) and played through a renderer `