You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The public Composer extension surface is currently asymmetric between active conversations and blank / zero-turn Hero sessions.
Active conversations expose an additive seat below the Composer through:
conversation.composer.dock
The resident Hero Composer has no equivalent public seat that is additive, below the InputBar, rendered in normal document flow, and does not replace the Composer.
Why the existing seams are not equivalent
conversation.input.dock
renders before the InputBar
semantically represents content above the Composer
conversation.input.overlay
is an internal popup / overlay anchor within the InputBar
does not provide below-Composer normal flow
conversation.composer.dock
has the desired additive dock semantics
is mounted only for the active variant === 'composer' path
conversation.composer
is a replacement chain
using it would replace the resident Composer rather than extend it
As a result, an extension that needs lightweight contextual UI below the zero-turn Composer currently has to rely on DOM positioning, replace the Composer, use private APIs, or maintain a host patch. None of those options fit the public extension model.
This would be an additive public API change. Existing conversation.composer.dock registrations would remain active-composer-only and would not gain Hero behavior implicitly.
Reference implementation
A minimal implementation and focused regression tests are available as design evidence:
slot catalog, bilingual docs, and pairing validation: passed
GUI suite: 5331 passed, 1 skipped, 1 failed
doc-sync: 33/34 gates passed
The two local failures occur while creating Windows symbolic links (EPERM) before their business assertions. Those test files are outside the reference patch diff.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Context
The public Composer extension surface is currently asymmetric between active conversations and blank / zero-turn Hero sessions.
Active conversations expose an additive seat below the Composer through:
conversation.composer.dockThe resident Hero Composer has no equivalent public seat that is additive, below the InputBar, rendered in normal document flow, and does not replace the Composer.
Why the existing seams are not equivalent
conversation.input.dockconversation.input.overlayconversation.composer.dockvariant === 'composer'pathconversation.composerAs a result, an extension that needs lightweight contextual UI below the zero-turn Composer currently has to rely on DOM positioning, replace the Composer, use private APIs, or maintain a host patch. None of those options fit the public extension model.
Proposed contract
Expected behavior
conversation.composer.dockbehavior unchangedCompatibility
This would be an additive public API change. Existing
conversation.composer.dockregistrations would remain active-composer-only and would not gain Hero behavior implicitly.Reference implementation
A minimal implementation and focused regression tests are available as design evidence:
64c3528282c09412ea6fec57b968c6109d492715Validation on that reference branch:
The two local failures occur while creating Windows symbolic links (
EPERM) before their business assertions. Those test files are outside the reference patch diff.All reactions