Repository navigation
feat(companion): report first visible subtitle - #78
Merged
Merged
Conversation
Why: F317 meeting capture must reach the desktop companion as a bounded Host-owned status without exposing raw capture diagnostics or giving the renderer meeting control authority. [小太阳·砚砚/gpt-5.6-sol🐾]
Why: Chat and settings must keep a common verified meeting source readable beside the fixed status phrase, while the public label boundary should reject line and bidi control spoofing. [小太阳·砚砚/gpt-5.6-sol🐾]
Why: A full-width meeting status row must not let CSS auto-placement detach chat and settings controls from their connection header. [小太阳·砚砚/gpt-5.6-sol🐾]
Why: F317 needs a bounded renderer observation only after assistant text reaches a visible call surface so the Host can correlate first-visible timing without receiving subtitle text, media, credentials, or renderer-selected session authority. [小太阳·砚砚/gpt-5.6-sol🐾]
Why: Resolve visible text identity from the current projection, bound Host rejection retries, and keep the public observation boundary consistent before publishing the prerelease. [小太阳·砚砚/gpt-5.6-sol🐾]
Why: A Host-declared permanent rejection must survive transcript polling so one stale reference cannot create unbounded requests within the same call. [小太阳·砚砚/gpt-5.6-sol🐾]
mindfn
added a commit
to mindfn/clowder-ai-plugins
that referenced
this pull request
Oct 12, 2026
Why: Absorb accepted main zts212653#78 behavior and regenerate the combined contract without downgrading unpublished C1 versions or rewriting consumer pins and lock. Preserve both catalog histories and replace only the unpublished Companion alpha.26 pack identity. The exact aggregate candidate now requires its integration gate; old CI and installed receipts remain historical.
mindfn
added a commit
to mindfn/clowder-ai-plugins
that referenced
this pull request
Oct 12, 2026
Why: Main zts212653#79 introduced only Companion presentation and candidate metadata after the verified zts212653#78 integration cut. Preserve C1 versions and pins, retain all catalog rows, update only the unpublished alpha.26 artifact, and validate current Companion unit/type/browser behavior without repeating the unchanged contract/SDK aggregate gate.
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.
Summary
presentation.observe/first_text_visiblebridge command and typed SDK methodinvalid_requestpermanently rejects that reference for the current call; transient failures use bounded retry and settle as unknown instead of backfilling a later successThis PR is intentionally stacked on #76. Its base is
feat/f317-b-meeting-status; it does not reuse #76's review or release approval.Trust boundary
The renderer observation is untrusted. It proves only that a correlated DOM node passed the package's checks after an animation frame. It does not prove compositor paint, OS-window visibility, or that a person read the subtitle. The Host remains authoritative for the current call/session/generation, reference ownership, stale/foreign rejection, and idempotency.
Bridge version is raised to
1.4.0, so older Hosts reject the package rather than silently ignoring the new observation.Prerelease candidates
@clowder-ai/plugin-contract@0.1.0-beta.27sha512-9OUPBpJXcIcHXVaUCi90l8shJEVFhA1+bpLVwvwqmGPlJovLjVeAqql2D+vxG7Qpc2/CYlsOa0jdpvgu2gIiSQ==ba185507b46311508c8db569f5bb8cb4a44c508b@clowder-ai/plugin-sdk@0.1.0-beta.23sha512-LhdJecUUvrBnzqEP82blpw24Fx9ahU277J6zntkoDj/ACDByo5WtRzlSDm7IX8LL1Hnbwr/kMzSNLrr6AxweLg==d1bcf1e1ac07ab76fc6404ef720cf9388c47c0e0@clowder-ai/companion@0.1.0-alpha.23sha512-uJimgsfGi9p6DROxQYFlB3CYj3mwkmTqHJzaR/NkGslLqE5LgXjJ6FLkORr0DEPnJjNoALyk2DDkhQ+Cg0XkTw==5f5aaa9e51ef864db131b7af96450e4848c6652cAll three artifacts were packed with Node 24.18.0, npm 11.16.0, and zlib 1.3.1-e00f703. These versions are not yet published.
Verification
Additional browser probes cover recycled DOM rows, permanent rejection memory, bounded transient failures, a 64-reference rejection cap, current-call reset, offscreen/overflow clipping, and empty subtitle deltas.