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
Problem — When a user invokes a skill with no message body (e.g. /tdd with no additional text), a small empty gray rectangle renders below the skill pill. The blob is the user-message-text prompt bubble mounting unconditionally with its padding and background visible despite having no text content.
Scope — in: the UserMessageDisplay render path in session-ui's message-part.tsx and the identical code in the opencode overlay. out: assistant-side empty-text filtering (already handled by renderable()), CSS-only fixes (fragile with SolidJS comment markers vs :empty).
Acceptance Criteria
Invoking a skill with no body text (e.g. /tdd) renders the skill pill without an empty prompt bubble below it
Invoking a skill WITH body text still renders both the skill pill and the text bubble
UserMessageComments still render when present on a skill-only message (guard includes comments check)
Key Decisions
The [data-slot="user-message-text"] div should be wrapped in <Show when={text() || messageComments().length > 0}> rather than just <Show when={text()}>, so that inline comments attached to a skill-only message are not accidentally hidden.
Constraints & Invariants
The fix must be applied in both the amicode overlay (packages/app-bundle/overlay/packages/session-ui/) and the opencode source (packages/session-ui/)
renderable() is not called on the user-message path and should not need to be — the conditional belongs at the render site
Prior Art
UserMessageDisplay component in session-ui message-part.tsx (around line 1823)
renderable() function in the same file (line 753) — handles the equivalent filter on the assistant side
last-prompt-bubble.test.ts — already models skill-only messages for the floating bubble feature, but does not cover inline rendering
Important
Problem — When a user invokes a skill with no message body (e.g.
/tddwith no additional text), a small empty gray rectangle renders below the skill pill. The blob is theuser-message-textprompt bubble mounting unconditionally with its padding and background visible despite having no text content.Scope — in: the
UserMessageDisplayrender path in session-ui'smessage-part.tsxand the identical code in the opencode overlay. out: assistant-side empty-text filtering (already handled byrenderable()), CSS-only fixes (fragile with SolidJS comment markers vs:empty).Acceptance Criteria
/tdd) renders the skill pill without an empty prompt bubble below itUserMessageCommentsstill render when present on a skill-only message (guard includes comments check)Key Decisions
The
[data-slot="user-message-text"]div should be wrapped in<Show when={text() || messageComments().length > 0}>rather than just<Show when={text()}>, so that inline comments attached to a skill-only message are not accidentally hidden.Constraints & Invariants
packages/app-bundle/overlay/packages/session-ui/) and the opencode source (packages/session-ui/)renderable()is not called on the user-message path and should not need to be — the conditional belongs at the render sitePrior Art
UserMessageDisplaycomponent in session-uimessage-part.tsx(around line 1823)renderable()function in the same file (line 753) — handles the equivalent filter on the assistant sidelast-prompt-bubble.test.ts— already models skill-only messages for the floating bubble feature, but does not cover inline rendering