{contextLabel}
+{contextLabel}
const x = 1;' }}
- promptFiles={{}}
- capability="streaming"
- />,
- );
- });
-
- const copyBtn = container.querySelector(
- 'button[aria-label^="Copy"]',
- ) as HTMLButtonElement | null;
- expect(copyBtn).not.toBeNull();
-
- act(() => {
- copyBtn!.click();
- });
-
- expect(track).toHaveBeenCalledWith('cockpit:code_copied', {
- capability: 'streaming',
- surface: 'code_mode',
- file_path: 'src/app.tsx',
- });
- });
});
diff --git a/apps/cockpit/src/components/code-mode/code-mode.tsx b/apps/cockpit/src/components/code-mode/code-mode.tsx
index 5e013fc6..9f532edc 100644
--- a/apps/cockpit/src/components/code-mode/code-mode.tsx
+++ b/apps/cockpit/src/components/code-mode/code-mode.tsx
@@ -2,7 +2,6 @@
import React from 'react';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
-import { track } from '../../lib/analytics/client';
import { FileTree } from './file-tree';
interface CodeModeProps {
@@ -19,38 +18,14 @@ const getTabLabel = (path: string): string => path.split('/').pop() ?? path;
function CodeFileContent({
path,
content,
- capability,
}: {
path: string;
content: string | undefined;
- capability?: string;
}) {
if (!content) {
- return No source available for {getTabLabel(path)}
; + returnNo source available for {getTabLabel(path)}
; } - - const label = getTabLabel(path); - const dotIdx = label.lastIndexOf('.'); - const ext = dotIdx > 0 ? label.slice(dotIdx + 1).toUpperCase() : ''; - - return ( -{content}
- ) : (
- No content for {getTabLabel(path)}
- )} -{content}
+ ) : (
+ No content for {getTabLabel(path)}
+ )}${escapeHtml(source)}`;
diff --git a/apps/cockpit/src/lib/render-markdown.ts b/apps/cockpit/src/lib/render-markdown.ts
index 0ac11cfe..e9718d2f 100644
--- a/apps/cockpit/src/lib/render-markdown.ts
+++ b/apps/cockpit/src/lib/render-markdown.ts
@@ -112,7 +112,7 @@ async function parseStepContent(
const codeToHighlight = filename ? cleanedCode : block.code;
let highlighted: string;
try {
- highlighted = await codeToHtml(codeToHighlight, { lang: block.lang, theme: 'tokyo-night' });
+ highlighted = await codeToHtml(codeToHighlight, { lang: block.lang, themes: { light: 'github-light', dark: 'tokyo-night' } });
} catch {
const escaped = codeToHighlight.replace(//g, '>');
highlighted = `${escaped}`;
@@ -169,7 +169,7 @@ export async function renderMarkdown(source: string): Promise${escaped}`;