Skip to content

Commit 83c139e

Browse files
committed
fix: initial-session Markdown rendering for VSCode extension
1 parent ada6ca7 commit 83c139e

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

packages/vscode-ide-companion/src/provider.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export async function handleWebviewMessage(message: unknown, deps: ProviderDeps)
6262
const msg = message as Record<string, unknown>;
6363

6464
if (msg.type === "ready") {
65-
loadInitialSession(sessionManager, postMessage);
65+
loadInitialSession(sessionManager, postMessage, renderMarkdown);
6666
await sendSkillsList(sessionManager, postMessage);
6767
return true;
6868
}
@@ -138,7 +138,11 @@ export async function handleWebviewMessage(message: unknown, deps: ProviderDeps)
138138
return false;
139139
}
140140

141-
function loadInitialSession(sessionManager: ProviderDeps["sessionManager"], postMessage: PostMessageFn): void {
141+
function loadInitialSession(
142+
sessionManager: ProviderDeps["sessionManager"],
143+
postMessage: PostMessageFn,
144+
renderMarkdown: (text: string) => string
145+
): void {
142146
const sessions = sessionManager.listSessions();
143147
const sessionsList = toSessionList(sessions);
144148

@@ -152,7 +156,7 @@ function loadInitialSession(sessionManager: ProviderDeps["sessionManager"], post
152156
}
153157

154158
const latestSession = sessions[0];
155-
loadSession(latestSession.id, sessionManager, postMessage, (t) => t);
159+
loadSession(latestSession.id, sessionManager, postMessage, renderMarkdown);
156160
}
157161

158162
export function loadSession(

packages/vscode-ide-companion/src/tests/extension.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,18 @@ test("ready message triggers loadInitialSession and sendSkillsList", async () =>
8282
assert.ok(types.includes("skillsList"), `Expected skillsList, got: ${types.join(", ")}`);
8383
});
8484

85+
test("ready message renders markdown for initial session messages", async () => {
86+
const deps = createDeps({
87+
messages: [{ role: "assistant", content: "**bold**", visible: true }],
88+
});
89+
90+
await handleWebviewMessage({ type: "ready" }, deps);
91+
92+
const loadMsg = deps.messages.find((m: any) => m.type === "loadSession") as any;
93+
assert.ok(loadMsg, "Should send loadSession");
94+
assert.equal(loadMsg.messages[0].html, "<p>**bold**</p>");
95+
});
96+
8597
test("ready with no sessions sends initializeEmpty", async () => {
8698
const deps = createDeps({ sessions: [] });
8799
await handleWebviewMessage({ type: "ready" }, deps);

0 commit comments

Comments
 (0)