Skip to content

shaft-intellij: remove emoji/glyph custom thinking messages from Assistant transcript#3953

Merged
MohabMohie merged 1 commit into
mainfrom
ChaosEngine/3919-remove-emoji-thinking-messages
Jul 21, 2026
Merged

shaft-intellij: remove emoji/glyph custom thinking messages from Assistant transcript#3953
MohabMohie merged 1 commit into
mainfrom
ChaosEngine/3919-remove-emoji-thinking-messages

Conversation

@MohabMohie

Copy link
Copy Markdown
Contributor

Summary

  • Removes the glyph-prefixed milestone bubbles from the Assistant chat transcript: agentMilestoneIcon and every synthesized-progress call site (Running, Cancelling..., Killing..., Denied, Waiting for approval, terminal Completed/Failed/Cancelled/Killed) are gone. That state was always duplicated by the toolbar spinner/status label (setStatus/setRunning), or immediately followed by a real response bubble that already says so.
  • Removes the "_Running local assistant..._" streaming placeholder bubble (LOCAL_AGENT_STREAMING_HEADER). The replace-in-place mechanism (replaceLocalAgentStreamPlaceholder) is kept — verbose-mode streaming and mid-run Verbose-toggle safety still work exactly as before — but it now establishes its transcript anchor lazily on the first real content instead of eagerly appending a placeholder bubble that sat on screen doing nothing.
  • Kept: Tool selected: ... bubbles (carry unique routing-reason info the toolbar doesn't show), streamed MCP notifications/progress text, translated local-agent CLI lines (addCompactLocalAgentMilestone), and Auto-approved SHAFT tool: ... — all real, non-duplicated information, not decorative chrome. The one-time 👋 first-run greeting and the toolbar JProgressBar spinner are untouched (out of scope per the issue).

Closes #3919

Judgment calls worth flagging for review

  • Tool selected: ... kept, undecorated. The issue's "Current artifacts" list cites Tool selected: ... as an example of a glyph-prefixed synthesized milestone, but it's also the only place the routing-reason text (— routed via intent: ... (weight ...), issue IntelliJ selector follow-ups: slashAlias-driven /mcp autocomplete + transcript-visible routing-decision labels #3883(b)) appears — the toolbar only echoes the tool name, not why it was picked. I kept the bubble (minus the glyph) rather than deleting it outright; this reads as "stop decorating it," not "delete the information," per the parent task's own worked example.
  • Streaming-placeholder redesign was necessary, not optional. Naively blanking LOCAL_AGENT_STREAMING_HEADER's text would have broken the anchor: both AssistantTranscriptView.append and ShaftAssistantChatState.append silently drop blank messages (already documented in AssistantQuestionTest.java:140-144), so an eager blank placeholder would never actually get added to the message list, and localAgentStreamPlaceholderMessageIndex would end up pointing at the wrong (previous) message — corrupting later replace-in-place calls. Instead, no placeholder is appended at all; replaceLocalAgentStreamPlaceholder's existing "no valid index yet" fallback now also captures the index after its first real append, so later calls still update the same bubble in place. Added assistantVerboseStreamingAccumulatesInPlaceAcrossMultipleLines as a regression guard for this specific correctness property.

Test plan

  • TDD: watched 5 tests fail (RED) against unmodified code, then pass (GREEN) after the implementation — ShaftPanelSetupTest covers prompt-completion, cancel, kill, timeout, and streaming-placeholder behavior.
  • gradlew compileJava compileTestJava — clean.
  • gradlew test --tests com.shaft.intellij.ui.ShaftPanelSetupTest — all pass.
  • gradlew test --tests com.shaft.intellij.ui.ShaftPluginScreenshotRendererTest / AssistantQuestionTest / AssistantTranscriptViewPerformanceTest / com.shaft.intellij.settings.ShaftSettingsConfigurableTest — all pass (flagged by an earlier grep for milestone/glyph text; none assert the removed behavior, all still green).
  • Full gradlew test for shaft-intellij — BUILD SUCCESSFUL.
  • Repo-wide grep for the deleted symbols (agentMilestoneIcon, appendTerminalAgentMilestone, isTerminalStep, elapsedMilestoneSuffix, resetAgentMilestones, terminalRecorded, runStartNanos, LOCAL_AGENT_STREAMING_HEADER) — zero remaining references.

Not touching ShaftStatusPresentation's glyph constants themselves (SUCCESS_ICON/ERROR_ICON/PENDING_ICON/WARNING_ICON) — they're load-bearing elsewhere (settings status labels, MCP setup prerequisites, AssistantMarkdown's test-result/warning formatting), unrelated to this issue's transcript-milestone scope.

This is subtask 1 of 5 in the #3923 chain (#3919#3918#3920#3922-refactor → #3921), all touching this same file — kept tightly scoped to exactly this issue so the diff stays small for the next subtask. Not arming auto-merge; requesting review since 4 more subtasks build on this branch's merged state.

…stant transcript (#3919)

Progress belongs to the toolbar spinner/status label alone now: the
glyph-prefixed milestone bubbles (agentMilestoneIcon and the synthesized
"Running"/"Cancelling..."/terminal Completed-Failed-Cancelled-Killed
bubbles) and the "_Running local assistant..._" streaming placeholder are
gone from the transcript. "Tool selected: ..." bubbles, streamed MCP
progress, translated local-agent CLI lines, and "Auto-approved SHAFT
tool: ..." stay -- they carry real, non-duplicated information the
toolbar doesn't show. The streaming placeholder's replace-in-place
mechanism is kept but now establishes its transcript anchor lazily, on
the first real content, instead of an eager placeholder bubble.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NDQpYzvnTbDPYwqDwHQoRz
@MohabMohie
MohabMohie enabled auto-merge (squash) July 21, 2026 14:10
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@MohabMohie
MohabMohie merged commit ec760e0 into main Jul 21, 2026
19 checks passed
@MohabMohie
MohabMohie deleted the ChaosEngine/3919-remove-emoji-thinking-messages branch July 21, 2026 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Assistant chat: remove emoji/glyph custom thinking messages (milestone prefixes + streaming placeholder)

1 participant