shaft-intellij: remove emoji/glyph custom thinking messages from Assistant transcript#3953
Merged
Merged
Conversation
…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
enabled auto-merge (squash)
July 21, 2026 14:10
Up to standards ✅🟢 Issues
|
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.
Summary
agentMilestoneIconand every synthesized-progress call site (Running,Cancelling...,Killing...,Denied,Waiting for approval, terminalCompleted/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."_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.Tool selected: ...bubbles (carry unique routing-reason info the toolbar doesn't show), streamed MCPnotifications/progresstext, translated local-agent CLI lines (addCompactLocalAgentMilestone), andAuto-approved SHAFT tool: ...— all real, non-duplicated information, not decorative chrome. The one-time 👋 first-run greeting and the toolbarJProgressBarspinner 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 citesTool 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.LOCAL_AGENT_STREAMING_HEADER's text would have broken the anchor: bothAssistantTranscriptView.appendandShaftAssistantChatState.appendsilently drop blank messages (already documented inAssistantQuestionTest.java:140-144), so an eager blank placeholder would never actually get added to the message list, andlocalAgentStreamPlaceholderMessageIndexwould 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. AddedassistantVerboseStreamingAccumulatesInPlaceAcrossMultipleLinesas a regression guard for this specific correctness property.Test plan
ShaftPanelSetupTestcovers 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).gradlew testforshaft-intellij— BUILD SUCCESSFUL.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.