Add Desktop Pet beta companion#2916
Open
franksong2702 wants to merge 6 commits into
Open
Conversation
Collaborator
|
Holding for now — this is a substantial new feature (58 files, +13K LOC including new Tauri-based desktop pet shell). I want to give it a focused review pass rather than batching it with smaller fixes. Specific things I'll be checking:
Thanks @franksong2702 — flagging this for @nesquena's eyes before merge. No action needed from you right now. |
Contributor
Author
|
Thanks for the focused review pass. Quick confirmations on the four areas you called out:
Happy to split, trim bundled skins/screenshots, or adjust the beta boundary if that would make the first review pass easier. |
9aed189 to
4f59c44
Compare
When a WebUI tab is polling the bridge, _queue_and_focus now skips _reuse_existing_pet_browser_tab (which changes the URL and causes a full page reload through Loading Session...). Instead the bridge receives the queued command and calls loadSession(sid) for a smooth in-page transition. Hard URL reuse is kept as the fallback for cold starts (no live bridge tab) and for ack timeouts (bridge polled but didn't ack within 1.6 s). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
Thinking Path
/pet wakeup.What Changed
Product surface
Desktop Pet (Beta)as a feature-first long-term preference, separate from whether a native pet process is currently running./pet wakeupand/pet sleepslash commands./pet wakeupuses the same install-before-launch path as Settings when the native shell is missing, keeps setup feedback alive during long first builds, and only reports success after launch succeeds.keeper, displayed to users asMay.keeper/ May,courier, andshibaskins for review.Runtime and bridge
api/pet_routes.pyfor skins, attention state, preference sync, install/launch/status/close, native shell registration, and session navigation./petand/pet/bubblespages backed by vanilla JS.desktop-pet/with separate pet and bubble windows.static/pet_bridge.jsso an existing WebUI tab can consume pet navigation commands and keep the browser session as the source of truth.8787,8788, and other loopback runtimes are not confused.Native-window and interaction details
+N, andLatestcontrols.Xvisually larger, and suppressed native checkbox ghost rendering in the Settings switch during launch.Documentation
docs/desktop-pet.mdfor beta status, product behavior, runtime model, boundaries, local development, troubleshooting, and follow-ups.desktop-pet/README.mdto clarify native-shell ownership and local development flow.README.md,TESTING.md, andCHANGELOG.mdwith release-facing Desktop Pet notes and PR evidence expectations.Why It Matters
Desktop Pet is meant to make Hermes better at the parts of agent work that are not purely foreground chat:
The product direction is broader than the initial mascot: Desktop Pet can become the desktop attention layer for Hermes sessions. This PR only ships the foundation: status, session return path, approval/clarify/reply interactions, safe native lifecycle, and clear beta boundaries.
Screenshots
Settings entry and first-launch progress:
Default May pet and collapsed badge:
Welcome and session bubbles:
Approval, clarify, and inline reply interactions:
Overflow controls:
Verification
git diff --cached --checknode --check static/panels.js static/sessions.js static/commands.js static/pet_bridge.js static/desktop_pet/bubbles.js static/desktop_pet/pet.js static/sw.js static/i18n.jspython -m pytest tests/test_pet_routes.py tests/test_desktop_pet_static.py tests/test_desktop_pet_regressions.py tests/test_desktop_pet_slash_command.py -q->66 passedcargo fmt --manifest-path desktop-pet/src-tauri/Cargo.toml -- --checkcargo clippy --manifest-path desktop-pet/src-tauri/Cargo.toml -- -D warningsnpm --prefix desktop-pet audit --audit-level=moderate->found 0 vulnerabilitiesManual/local evidence:
X, running/ready bubbles, approval/clarify hover interactions, inline reply, overflow controls, drag following, and multi-display bubble placement.8788runtime. Settings screenshots use the real WebUI page; pet/bubble screenshots use the real/petand/pet/bubblespages with mocked attention data to cover all states deterministically.Risks / Follow-ups
Model Used
OpenAI GPT-5 via Codex assisted with implementation review, documentation, screenshot preparation, and PR text drafting.