Repository navigation
Conversation
3 of 6 tasks
arvsrn
force-pushed
the
pill-icon-render
branch
from
October 29, 2026 13:51
9f3ded6 to
51cde9c
Compare
A composer pill can now render its own icon, such as an animated status glyph, in place of the view's named icon and tone. It renders once per mounted pill, so an animation keeps running while show() runs again. A pill's own popover (menu) no longer gets a host heading. The host keeps the popover's frame, and everything inside belongs to the plugin; the view's title names the popover for assistive technology.
arvsrn
force-pushed
the
pill-icon-render
branch
from
October 29, 2026 16:18
d171d3f to
8f14c7e
Compare
A pill that starts with an icon now sits it 8px from the edge with a 6px gap to its label, through one rule on the shared pill instead of the todo pill's own override. Pills without an icon keep 10px on both sides. The activity menu's rows follow the capsule's new inset and gap.
This branch has not been deployed
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.
Issue for this PR
None. Follows #59437, which added the goal plugin's composer pill and the pill
menu.Type of change
What does this PR do?
Lets a composer pill render its own icon, and makes a pill's own popover fully composable.
ComposerPill.icon(input)iconandtone. It's meant for things the icon set can't draw, such as an animated status glyph.show()runs again whenever what it reads changes, so an icon returned fromshow()would be rebuilt each time and restart its animation. A render method keeps the same element and updates through its own reactivity, the same waymenuand slot renders work.ComposerPillView.iconandtoneare unchanged, so existing pills don't change. Menu rows still take icon names only.No host heading in a pill's own popover
menu, the host no longer drawstitle(orlabel) as an 11px heading above the plugin's content. The host keeps the popover's frame (320px wide, 4px inset, placement, focus, dismissal), and everything inside belongs to the plugin, including any heading.titlestill names the popover for assistive technology.menu, and its redesign in the stacked PR draws its own content. Until that lands, the goal popover shows only its buttons.Leading icon inset
:has()rule on the shared pill (composer-lane.css) does it, keyed on a newdata-composer-pill-iconmarker. Pills without an icon keep 10px on both sides.How did you verify your code works?
bun typecheckinpackages/plugin,packages/appandpackages/gui-pluginsbun script/sdk-docs.ts, oxlint and prettier on the changed filesplugin-host.spec.ts, including a new one. It checks that a custom icon replaces the named one and stays the same element whileshow()re-runs. Making the host rebuild the icon from the view fails it.Visual
Screenshots / recordings
The stacked goal pill PR shows the custom icon in use.
Checklist