Skip to content

feat(companion): cat-first controls and adaptive desktop placement - #55

Merged
zts212653 merged 5 commits into
mainfrom
feat/companion-cat-first
Sep 20, 2026
Merged

zts212653 merged 5 commits into
mainfrom
feat/companion-cat-first

Conversation

@zts212653

@zts212653 zts212653 commented Sep 20, 2026 •

Copy link
Copy Markdown
Owner

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:

  • Contract 378/378, SDK 305/305, companion 30/30; SDK typecheck and renderer syntax checks pass.
  • Packed desktop consumer and fresh npm consumer pass, without workspace links.
  • Catalog validation and exact archive bytes pass with Node24.18.0/npm11.16.0/zlib1.3.1-e00f703.
  • Actual built renderer exercised in Safari: idle, click actions, icon menu, typing with voice off, draft folding/recovery, send/readback. Its preview bridge is explicitly simulated.
  • A companion Host candidate installed the exact archive through its ordinary installer/inventory/lease path and opened the real sandboxed Electron renderer. Native CUA window selection timed out, so native pointer/menu acceptance is unconfirmed, not counted as passed.

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 a57a97031fd7496cf612c3d88af5d030496944ee has 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

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)
@zts212653
zts212653 marked this pull request as ready for review September 20, 2026 13:43
@zts212653
zts212653 requested a review from mindfn as a code owner September 20, 2026 13:43
@zts212653

Copy link
Copy Markdown
Owner Author

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: a57a97031fd7496cf612c3d88af5d030496944ee; clean, mergeable, and unchanged since the successful required CI run 35513533881. The CI contract archive matches the independently packed candidate by version, integrity, shasum and size. Paired Host/renderer boundaries passed the independent Terra review already summarized in the PR.

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

@zts212653
zts212653 merged commit 7251983 into main Sep 20, 2026
3 checks passed
mindfn added a commit to mindfn/clowder-ai-plugins that referenced this pull request Sep 20, 2026
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🐾]
mindfn added a commit to mindfn/clowder-ai-plugins that referenced this pull request Sep 20, 2026
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🐾]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant