Add a side placement for extension widgets, so a plugin can host a persistent panel #1489
jasoncarreira
started this conversation in
Feature requests
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
Extension widgets can only be placed inline around the editor. There is no side region — no sidebar, no
persistent panel — so an extension that wants to show durable state alongside the conversation has nowhere to put
it. I would like a side placement for extension widgets.
Environment. prime-agent 0.7.2, daemon protocol 7 (
protocol-7-schema-16-1bcb9e7f1a49), build83a0f9f-dirty, Node 24.11.1, macOS 15 (darwin 25.5.0).Current surface
ExtensionUIContextis generous for transient interaction —select,confirm,input,notify,onTerminalInput,setStatus,setWorkingMessage,setWorkingIndicator— but all of it is either modal or asingle line of status. Anything larger than a status string has to be printed into the conversation, where it
scrolls away and competes with the transcript.
What we would use it for
We orchestrate long autonomous builds. The state worth showing continuously is a handful of rows — the current
gate, each parallel slice and its attempt count, the lock owner, the last verification result. It updates every
few seconds for hours. In our opencode adapter that lives in a sidebar component and stays out of the
conversation entirely; there is no equivalent placement here, so our prime adapter ships no UI at all.
A
"sidebar"(or"side") member ofWidgetPlacement, with a width hint and the same render contract theexisting placements use, would be enough. It does not need to be resizable or focusable to be useful.
Relationship to #1462
#1462 asks for client-local UI extensions to
execute at all in daemon-backed interactive chats, noting that
getEditorComponent()and friends are currentlyno-ops. That is the execution half and I support it. This is the placement half: even once those callbacks
run,
aboveEditor/belowEditorare the only places a widget can appear. Both are needed for a panel thatpersists beside the conversation, and they seem independently implementable.
All reactions