Skip to content

feat(jetbrains): render agent board messages as markdown - #14622

Merged
kirillk merged 2 commits into
mainfrom
merry-grove
Sep 28, 2026
Merged

kirillk merged 2 commits into
mainfrom
merry-grove

Conversation

@kirillk

@kirillk kirillk commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Issue

No linked issue. This PR implements requested VS Code parity for the JetBrains agent board.

Context

JetBrains currently presents agent board posts as ActiveList rows, which flattens structured message bodies and prevents agents from using standard Markdown formatting. This change presents the board as independent stacked messages, matching the VS Code experience.

Implementation

Each loaded post now owns a retained Markdown view with a from → to route header. Both route endpoints use the existing deterministic agent identity icons, and subagent icons remain keyboard- and mouse-accessible for opening their sessions. Retaining message components by ID preserves paging behavior while allowing embedded editor resources used for fenced code blocks to be disposed correctly on reset or dialog close.

The board RPC, paging, reset, copy-all, and modeless dialog behavior remain unchanged.

Screenshots / Video

Screen Shot 2026-09-28 at 2 42 18 PM ## How to Test

Manual/local verification

  • Agent executed ./gradlew typecheck from packages/kilo-jetbrains/.
  • Agent executed the full ./gradlew test suite from packages/kilo-jetbrains/.
  • The push hook executed repository-wide typechecks, including the JetBrains Gradle typecheck.

Reviewer test steps

  1. Open a session with agent board messages in the JetBrains plugin.
  2. Open Kilo Swarm and confirm messages appear as a vertical stack rather than list rows.
  3. Post Markdown containing headings, lists, tables, inline code, and fenced code through an agent.
  4. Confirm the body renders as Markdown and fenced code uses syntax highlighting.
  5. Confirm each header shows from → to with stable icons for both endpoints.
  6. Activate a subagent endpoint icon and confirm its session opens without closing the board.
  7. Load older messages and reset the board to verify the existing controls still work.

Blocked checks and substitute verification

  • No automated checks were blocked. Visual screenshot capture was unavailable in the headless environment; real Swing component, accessibility, retention, Markdown rendering, and editor-disposal tests provide substitute verification.

Checklist

  • Issue linked above, or exception explained
  • Tests/verification described
  • Screenshots/video included for visual changes, or marked N/A
  • Changeset considered for user-facing changes
  • I personally reviewed the diff and can explain the changes, including any AI-assisted work.

Get in Touch

N/A

@kilo-code-bot

kilo-code-bot Bot commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (5 files)
  • .changeset/jetbrains-swarm-markdown-messages.md
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/board/BoardMessagesView.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/board/SessionBoardDialog.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/board/BoardMessagesViewStressTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/board/SessionBoardDialogTest.kt
Previous Review Summary (commit 83c1d0f)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 83c1d0f)

Status: 3 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 3
Issue Details (click to expand)

SUGGESTION

File Line Issue
packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/board/BoardMessagesView.kt 47 Paging retains one MdView (and its code-block editors) per loaded message until reset/close; consider bounding deep paging.
packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/board/BoardMessagesView.kt 180 Inert main/ALL endpoints are still announced as PUSH_BUTTON via HoverArea; VS Code renders main without a button role.
packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/board/BoardMessagesViewStressTest.kt 54 Stress test always uses id = "m1", so the subset-removal disposal path in sync is never exercised.
Files Reviewed (5 files)
  • .changeset/jetbrains-swarm-markdown-messages.md - 0 issues
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/board/BoardMessagesView.kt - 2 issues
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/board/SessionBoardDialog.kt - 0 issues
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/board/BoardMessagesViewStressTest.kt - 1 issue
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/board/SessionBoardDialogTest.kt - 0 issues

Fix these issues in Kilo Cloud


Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0

Review guidance: REVIEW.md from base branch main

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants