Repository navigation
feat(companion): cat-first controls and adaptive desktop placement - #55
Conversation
Why: The released default used a cropped opaque legacy image and a permanent large control card. Restore the complete cat silhouette and the compact interaction, while keeping Host identity, history and media authority unchanged. This isolated candidate includes a labelled fixture preview and still requires visual acceptance before release. Authored-by: Astra (@codex-astra, gpt-6-astra)
Why: Always-visible controls still occupy the desktop even when rendered as a compact strip. This isolated prototype reveals actions only after a deliberate cat interaction and keeps explicit call indicators actionable. Uses the existing Xianxian asset; no Host, model or media capture is connected. Validation: Six interaction contracts RED to GREEN; companion 29/29; real Safari checks for tap, draft/history readback, right-click, simulated call/share stop, failure, dragging and hide/restore. Browser typing used a new Chinese sentinel. Documentation write remains blocked by the old runtime native guard; not a release candidate. Authored-by: Astra (@codex-astra, gpt-6-astra)
Why: The accepted on-demand interaction still read as an unstructured text panel. Add consistent line icons, grouped rows, separate preference status, lighter type and shadow while retaining the same interaction. Label-only updates preserve icons through state changes. Validation: Six interaction tests and syntax/diff checks pass. Safari verified action icons, context menu, preference state updates and light/dark backgrounds. Authored-by: Astra (@codex-astra, gpt-6-astra)
Why: The companion should occupy the desktop as a cat, revealing controls only on deliberate interaction. Add bounded presentation commands and canonical conversation reads, keep explicit media gestures, and permit typing without voice. Bridge 1.1 prevents older Hosts from accepting an unsupported surface. Validation: contract 378, SDK 305, companion 30; packed desktop and fresh consumers; exact-toolchain catalog integrity. Actual renderer verified in Safari. Native packed startup verified; native CUA pointer acceptance remains unconfirmed. Authored-by: Astra (@codex-astra, gpt-6-astra)
Why: CI correctly rejected the old beta.16 release assertion after the candidate version advanced. Preserve the exact-version and signed broker-protocol checks with the new release coordinate. Authored-by: Astra (@codex-astra, gpt-6-astra)
|
Maintainer-authorized merge exception: the repository owner explicitly directed this PR to merge without waiting for the outstanding CODEOWNER response. This is a one-PR exception, not a fabricated CODEOWNER approval or a change to repository protection rules. Final head: Native pointer/menu acceptance remains unconfirmed. Publication is prerelease-only through the existing workflow; the consuming Host must verify registry bytes and run its own final installation/integration checks before landing. No production activation is included. Astra / gpt-6-astra |
Why: - Rebasing onto main (7251983, PR zts212653#55) conflicted on plugin-sdk version pins and the fresh-consumer assertions; main is ahead (sdk 0.1.0-beta.13, contract 0.1.0-beta.17) so the branch takes main's higher versions instead of its own older bumps (beta.12/beta.16). - catalog.json companion block regenerated during the rebase picked up the stale alpha.2 artifact; restored main's alpha.3 artifact metadata (integrity/shasum) since packages/companion is alpha.3 on main. - pnpm-lock.yaml already matched main's versions after auto-merge; no lockfile change needed. 小狸 [狸花猫/k3🐾]
Why: npm registry no longer carries plugin-sdk beta.12 (replaced by beta.13 when PR zts212653#55 bumped plugin-sdk on main), so connector shrinkwraps must pin beta.13 or fresh-consumer install fails with ETARGET. npmmirror-based regeneration rewrote resolved URLs off registry.npmjs.org and violated the catalog resolved-URL conformance rule, so instead restore the original shrinkwrap trees and patch only the plugin-sdk/plugin-contract entries with registry.npmjs.org metadata pulled from the live registry. 小狸 [狸花猫/k3🐾]
The desktop companion now rests as the selected cat, with actions on click and a grouped icon menu on right-click. Text and recent history open on demand; explicit microphone and screen indicators remain actionable while active. Folding controls preserves the current draft and does not end voice.
The additive desktop bridge 1.1.0 keeps native placement, bounded cursor-driven movement, hiding and the owner conversation in the Host. Packages cannot select an owner, thread, native window, absolute desktop coordinate, media stream or provider channel. Typing can use the existing conversation while voice is off. Older 1.0-only Hosts reject the new manifest before installation.
Release candidates: contract beta.17, SDK beta.13, companion alpha.3. SDK beta.12 is already proposed by #54; this change does not depend on the C1 runtime migration. Shared release inputs need reconciliation on whichever branch lands later; the substantive SDK changes here are confined to
companion-client.ts.Validation:
The paired Host implementation has passed an independent Terra review of the native ownership, media-gesture, conversation and bridge compatibility boundaries. That internal review does not replace the other-party CODEOWNER approval required here.
Final push
a57a97031fd7496cf612c3d88af5d030496944eehas green Contract CI and Personal Chrome Companion CI. The final follow-up only updates the exact beta.17 release assertion; it does not change packed bytes.This PR is ready for protected-path review. Native pointer/menu acceptance remains unconfirmed and must remain visible in the prerelease/rollout decision; it is not silently promoted to a passed check. Publication and activation have not occurred. After approved merge and canonical publication, the consuming Host still needs registry-only installation and its own final integration gate. No manual npm publication or protected-path bypass is requested.
Astra / gpt-6-astra