From 8b0d4aa21ea41a3f0323c9526c3a1b4d5a2df1b4 Mon Sep 17 00:00:00 2001 From: Hoshino Date: Wed, 5 Aug 2026 18:50:24 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=88=B0=20cph?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/CLAUDE.md | 75 +++++++++++++++++++ apps/vscode-extension/src/atcoder.ts | 35 +++++++++ apps/vscode-extension/src/extension.ts | 15 +++- apps/vscode-extension/src/tools/command.ts | 8 ++- apps/vscode-extension/src/tools/cph.ts | 84 ++++++++++++++++++++++ packages/webview/src/WebviewApp.tsx | 14 ++++ packages/webview/src/types.ts | 4 +- 7 files changed, 232 insertions(+), 3 deletions(-) create mode 100644 .claude/CLAUDE.md create mode 100644 apps/vscode-extension/src/tools/cph.ts diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md new file mode 100644 index 0000000..4079ae4 --- /dev/null +++ b/.claude/CLAUDE.md @@ -0,0 +1,75 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +A VS Code extension called "AtCoder Helper neo" for browsing AtCoder competitive programming contest problems, with LaTeX rendering, DeepL translation, code submission, and contest registration. Chinese-language UI and documentation. + +## Commands + +```bash +pnpm install # Install dependencies +pnpm build # Build all packages (turbo) +pnpm dev # Dev watch mode (extension + webview) +pnpm lint # ESLint all packages +pnpm format # Prettier format +pnpm test # Run all tests + +# Run unit tests directly +cd apps/vscode-extension && pnpm test + +# Package extension +cd apps/vscode-extension && pnpm package +# Output: release/extension.vsix +``` + +Debug: press F5 in VS Code to launch Extension Host (preLaunchTask runs `pnpm dev`). + +## Architecture + +Monorepo with pnpm workspaces + Turborepo. Webpack dual-config builds both the Node extension and the React webview into `apps/vscode-extension/dist/`. + +**Dependency flow:** `apps/vscode-extension` → `packages/webview` → `packages/ui` + `packages/core` + +Webpack resolves `@template/ui` and `@template/core` via path aliases directly to source — no need to pre-build packages during development. + +### Extension host (Node, CommonJS) + +Entry: `apps/vscode-extension/src/extension.ts` — registers commands, creates WebView panel, routes messages. + +Communication protocol: WebView sends `{ command: "..." }`, Extension responds with `{ type: "..." }`. Message types defined in `packages/webview/src/types.ts` (`WebviewMessage` union). Adding a new message requires updating both `types.ts` and the `switch` in `extension.ts`. + +Network layer (`tools/fetch.ts`): custom HTTP client using Node https/http/zlib, no external deps. Three error classes: `CfError` (Cloudflare), `ProxyError`, `LoginRequiredError` — handled uniformly by `handleErrorWithCfAndLogin()`. + +### WebView frontend (React, browser target) + +Entry: `packages/webview/src/index.tsx` → `WebviewApp.tsx`. Uses Tailwind CSS with `var(--vscode-*)` variables for theme adaptation. KaTeX math is pre-rendered server-side in the extension host. + +### Shared packages + +- `packages/core` — `MessageBus` (pub/sub) and `StateManager` +- `packages/ui` — Button, Card, Input, Spinner components styled with VS Code CSS variables + +## Code Conventions + +- 4-space indent, no `export default`, prefer `interface` over `type` +- No `any` — use `unknown` instead +- Functions max 120 lines (CI enforces 130 hard limit) +- Import order: external deps → `@template/*` packages → relative paths +- Component files: PascalCase. Tool/utility files: camelCase +- Error handling: use `CfError`/`ProxyError`/`LoginRequiredError`, never bare `throw new Error()` +- Git branches: `feat/xxx`, `fix/xxx`, `refactor/xxx`, `docs/xxx` +- Main branch: `main`, development branch: `dev` + +## CI + +PR to `main` triggers: lint → build → test → function length check (>130 lines fails). Results posted as PR comment. + +## Git Branch Rules (Claude MUST follow) + +- **NEVER** commit, push, or merge to `main` branch directly +- **NEVER** run `git checkout main` or `git push origin main` +- **ALWAYS** work on `dev` branch or feature branches (`feat/*`, `fix/*`, `refactor/*`, `docs/*`) +- Before any Git operation, confirm current branch with `git branch --show-current` +- If user asks to modify `main`, remind them to use `dev` instead \ No newline at end of file diff --git a/apps/vscode-extension/src/atcoder.ts b/apps/vscode-extension/src/atcoder.ts index 81318a5..e3d5817 100644 --- a/apps/vscode-extension/src/atcoder.ts +++ b/apps/vscode-extension/src/atcoder.ts @@ -18,6 +18,8 @@ export interface AtCoderProblem { outputFormat: string; samples: SampleCase[]; sampleUrl?: string; + timeLimit?: number; + memoryLimit?: number; } function decodeEntities(text: string): string { @@ -148,6 +150,37 @@ function getLangContent(html: string, lang: "en" | "ja"): string { return html.slice(start); } +function extractHeaderValue(html: string, labels: string[]): string | undefined { + const rowRegex = /]*>([\s\S]*?)<\/tr>/gi; + let rowMatch: RegExpExecArray | null; + for (; (rowMatch = rowRegex.exec(html)) !== null;) { + const row = rowMatch[1]; + if (!labels.some((label) => row.includes(label))) continue; + const tds = Array.from(row.matchAll(/]*>([\s\S]*?)<\/td>/gi)); + if (tds.length === 0) continue; + const value = cleanText(tds[tds.length - 1][1]); + return value || undefined; + } + return undefined; +} + +function extractTimeLimit(html: string): number | undefined { + const value = extractHeaderValue(html, ["Time Limit", "時間制限"]); + const match = value && value.match(/(\d+(?:\.\d+)?)/); + if (!match) return undefined; + const ms = value!.toLowerCase().includes("sec") + ? parseFloat(match[1]) * 1000 + : parseFloat(match[1]); + return Math.round(ms); +} + +function extractMemoryLimit(html: string): number | undefined { + const value = extractHeaderValue(html, ["Memory Limit", "メモリ制限"]); + const match = value && value.match(/(\d+(?:\.\d+)?)/); + if (!match) return undefined; + return Math.round(parseFloat(match[1])); +} + export function parseProblemPage(html: string, url: string): AtCoderProblem { const titleMatch = html.match(/([^<]+)<\/title>/i); const title = titleMatch ? cleanText(titleMatch[1]) : "Untitled"; @@ -208,6 +241,8 @@ export function parseProblemPage(html: string, url: string): AtCoderProblem { outputFormat, samples, sampleUrl, + timeLimit: extractTimeLimit(html), + memoryLimit: extractMemoryLimit(html), }; } diff --git a/apps/vscode-extension/src/extension.ts b/apps/vscode-extension/src/extension.ts index 2600c91..06d2bb8 100644 --- a/apps/vscode-extension/src/extension.ts +++ b/apps/vscode-extension/src/extension.ts @@ -1,12 +1,14 @@ import * as vscode from "vscode"; import * as path from "path"; -import { fetchAtCoderProblem, fetchAtCoderTasks } from "./atcoder"; +import { AtCoderProblem, fetchAtCoderProblem, fetchAtCoderTasks } from "./atcoder"; import { CfError, ProxyError, LoginRequiredError, setSessionCookie, fetchSubStatus, fetchSubmitHistory } from "./tools/fetch"; import { fetchContest, signedUpContest } from "./tools/SignUpContest"; import { translateTextRaw, translateTextFree } from "./tools/deepl"; import { runCommand } from "./tools/command"; import { fetchSubmitPage, submitCodeWithRedirect } from "./tools/submit"; +import { buildCphProblem, sendToCph } from "./tools/cph" import { IncomingMessage } from "./tools/types"; +import { send } from "process"; const log = { info: (...args: unknown[]) => { @@ -262,6 +264,17 @@ export async function handleFetchSubHistory(contest: string, send: (payload: Rec } } +export async function handleExportToCph(problem: AtCoderProblem, send: (payload: Record<string, unknown>) => void) { + try { + const payload = buildCphProblem(problem); + await sendToCph(payload); + send({ type: "cphExportResult", success: true, message: "success send to cph" }); + } catch (error) { + const message = error instanceof Error ? error.message : "fail to send cph"; + send({ type: "error", success: false, message: message }); + } +} + async function pullSubmitStatu(contest: string, taskName: string, send: (payload: Record<string, unknown>) => void,): Promise<void> { const maxSetp = 15; const judgeStatus = new Set(["AC", "WA", "TLE", "MLE", "RE", "CE", "OLE"]); diff --git a/apps/vscode-extension/src/tools/command.ts b/apps/vscode-extension/src/tools/command.ts index 6b342eb..3d635be 100644 --- a/apps/vscode-extension/src/tools/command.ts +++ b/apps/vscode-extension/src/tools/command.ts @@ -11,12 +11,13 @@ import { handleFetchSubmitPage, handleSubmitCode, handleFetchSubHistory, + handleExportToCph, } from "../extension"; const loadCommands = new Set(["loadContest", "loadProblem", "openBrowser"]); const deeplCommands = new Set(["translate", "setApiKey"]); const cookieCommands = new Set(["getCookie", "setCookie"]); -const problemCommands = new Set(["registerContest", "copyMarkdown", "alert"]); +const problemCommands = new Set(["registerContest", "copyMarkdown", "alert", "sendCph"]); const submitCommands = new Set(["fetchSubmitPage", "submitCode", "fetchSubmissionHistory", "fetchSubmissionDetail"]); export async function runCommand(message: IncomingMessage, context: vscode.ExtensionContext, sendToWebview: (payload: Record<string, unknown>) => void,) { @@ -63,6 +64,11 @@ async function runProblem(command: IncomingMessage, context: vscode.ExtensionCon vscode.window.showInformationMessage(command.text ?? ""); sendToWebview({ type: "update", text: `Extension received: ${command.text ?? ""}` }); return true; + case "sendCph": + if (command.problem) { + await handleExportToCph(command.problem, sendToWebview); + } + return true; default: return false; } diff --git a/apps/vscode-extension/src/tools/cph.ts b/apps/vscode-extension/src/tools/cph.ts new file mode 100644 index 0000000..930fc32 --- /dev/null +++ b/apps/vscode-extension/src/tools/cph.ts @@ -0,0 +1,84 @@ +import * as http from "http"; +import { AtCoderProblem } from "../atcoder"; + +export interface CphTestCase { + input: string; + output: string; + id: number; +} + +export interface CphProblem { + name: string; + url: string; + interactive: boolean; + memoryLimit: number; + timeLimit: number; + group: string; + tests: CphTestCase[]; + srcPath: string; + local: boolean; +} + +export class CphNotRunningError extends Error { + constructor() { + super( + "未检测到 CPH 插件(localhost:27121 无响应)。\n" + + "请安装并启用 Competitive Programming Helper 扩展后重试。" + ); + this.name = "CphNotRunningError"; + } +} + +export function buildCphProblem(problem: AtCoderProblem): CphProblem { + const tests = problem.samples.map((sample, index) => ({ + input: sample.input, + output: sample.output, + id: index + 1, + })); + return { + name: problem.title, + url: problem.url, + interactive: false, + memoryLimit: (problem.memoryLimit ?? 1024) * 1024 * 1024, + timeLimit: problem.timeLimit ?? 2000, + group: `AtCoder - ${problem.contest}`, + tests, + srcPath: "", + local: false, + }; +} + +export function sendToCph(problem: CphProblem): Promise<void> { + const body = JSON.stringify(problem); + return new Promise<void>((resolve, reject) => { + const req = http.request( + "http://localhost:27121", + { + method: "POST", + headers: { + "Content-Type": "application/json", + "Content-Length": Buffer.byteLength(body), + }, + }, + (res) => { + res.resume(); + res.on("end", () => { + if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) { + resolve(); + } else { + reject(new Error(`CPH 返回状态码 ${res.statusCode}`)); + } + }); + } + ); + req.on("error", (err) => { + if ((err as NodeJS.ErrnoException).code === "ECONNREFUSED") { + reject(new CphNotRunningError()); + } else { + reject(new Error(`连接 CPH 失败: ${err.message}`)); + } + }); + req.write(body); + req.end(); + }); +} diff --git a/packages/webview/src/WebviewApp.tsx b/packages/webview/src/WebviewApp.tsx index da02959..471c659 100644 --- a/packages/webview/src/WebviewApp.tsx +++ b/packages/webview/src/WebviewApp.tsx @@ -83,6 +83,12 @@ const WebviewApp: React.FC<WebviewAppProps> = ({ vscode.postMessage({ command: "translate", payload: texts, targetLang: "ZH", translationMode } as WebviewMessage); }; + const doExportToCph = () => { + if (!problem) return; + setStatus("正在导出到 CPH..."); + vscode.postMessage({ command: "sendCph", problem }); + }; + const handleFetchSubmitPage = () => { setSubmitResult(null); setSubmitTasks([]); @@ -157,6 +163,11 @@ const WebviewApp: React.FC<WebviewAppProps> = ({ setIsLoading(false); setTranslating(false); } + if (message.type === "cphExportResult") { + const ok = message.success === true; + setStatus(ok ? (message.message ?? "已发送到 CPH") : (message.message ?? "导出到 CPH 失败")); + setIsLoading(false); + } if (message.type === "cf_challenge") { setCfUrl(message.url ?? null); setIsLoading(false); @@ -619,6 +630,9 @@ const WebviewApp: React.FC<WebviewAppProps> = ({ <Button onClick={doCopyMarkdown} size="sm" variant="secondary" className="h-[26px] text-[11px]"> 复制 Markdown </Button> + <Button onClick={doExportToCph} size="sm" variant="secondary" className="h-[26px] text-[11px]" title="导出到 CPH(需已安装 Competitive Programming Helper)"> + 导出 CPH + </Button> </div> </div> diff --git a/packages/webview/src/types.ts b/packages/webview/src/types.ts index 5b9875b..ea68c3e 100644 --- a/packages/webview/src/types.ts +++ b/packages/webview/src/types.ts @@ -34,9 +34,11 @@ export interface SubmissionRecord { export interface WebviewMessage { type?: string; - command?: 'alert' | 'error' | 'loadContest' | 'loadProblem' | 'openBrowser' | 'translate' | 'setApiKey' | 'setCookie' | 'getCookie' | 'loginRequired' | 'registerContest' | 'copyMarkdown' | 'fetchSubmitPage' | 'submitCode' | 'fetchSubmissionHistory'; + command?: 'alert' | 'error' | 'loadContest' | 'loadProblem' | 'openBrowser' | 'translate' | 'setApiKey' | 'setCookie' | 'getCookie' | 'loginRequired' | 'registerContest' | 'copyMarkdown' | 'sendCph' | 'fetchSubmitPage' | 'submitCode' | 'fetchSubmissionHistory'; statusMessage?: string; text?: string; + success?: boolean; + message?: string; contest?: string; task?: string; taskScreenName?: string; From 87b5815860496f317bf6a9dd3af126436c4195a0 Mon Sep 17 00:00:00 2001 From: Hoshino <luogu_dnj@outlook.com> Date: Wed, 5 Aug 2026 20:13:26 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat(core,ui):=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BE=A7=E8=BE=B9=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- apps/vscode-extension/media/atcoder.svg | 3 + apps/vscode-extension/package.json | 25 ++++++- apps/vscode-extension/src/extension.ts | 27 +++----- apps/vscode-extension/src/tools/submit.ts | 2 +- apps/vscode-extension/src/tools/webview.ts | 17 +++++ apps/vscode-extension/src/viewProvider.ts | 72 +++++++++++++++++++++ packages/webview/src/WebviewApp.tsx | 4 +- release/extension.vsix | Bin 1128831 -> 1128855 bytes 9 files changed, 127 insertions(+), 25 deletions(-) create mode 100644 apps/vscode-extension/media/atcoder.svg create mode 100644 apps/vscode-extension/src/tools/webview.ts create mode 100644 apps/vscode-extension/src/viewProvider.ts diff --git a/.gitignore b/.gitignore index 2063f8a..4adc2ad 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,4 @@ node_modules/ .DS_Store .swc .vsix -DEEP.md \ No newline at end of file +ToDo.md \ No newline at end of file diff --git a/apps/vscode-extension/media/atcoder.svg b/apps/vscode-extension/media/atcoder.svg new file mode 100644 index 0000000..836637e --- /dev/null +++ b/apps/vscode-extension/media/atcoder.svg @@ -0,0 +1,3 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path d="M12 4l7 16h-3.2L14.7 17H9.3l-1.1 3H5L12 4zM10.1 14h3.8L12 8.2 10.1 14z" fill="#C5C5C5"/> +</svg> diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index fb55096..486fd36 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -16,14 +16,15 @@ "Other" ], "activationEvents": [ - "onCommand:extension.showWebview" + "onCommand:extension.showWebview", + "onView:atcoderHelper.webviewView" ], "main": "./dist/extension.js", "contributes": { "commands": [ { "command": "extension.showWebview", - "title": "AtCoder" + "title": "AtCoder Helper(编辑器)" }, { "command": "extension.setDeeplApiKey", @@ -33,7 +34,25 @@ "command": "extension.setAtCoderCookie", "title": "Set AtCoder Login Cookie" } - ] + ], + "viewsContainers": { + "activitybar": [ + { + "id": "atcoder-helper-container", + "title": "AtCoder Helper", + "icon": "media/atcoder.svg" + } + ] + }, + "views": { + "atcoder-helper-container": [ + { + "type": "webview", + "id": "atcoderHelper.webviewView", + "name": "AtCoder Helper" + } + ] + } }, "scripts": { "vscode:prepublish": "pnpm run build", diff --git a/apps/vscode-extension/src/extension.ts b/apps/vscode-extension/src/extension.ts index 06d2bb8..ba37321 100644 --- a/apps/vscode-extension/src/extension.ts +++ b/apps/vscode-extension/src/extension.ts @@ -8,7 +8,8 @@ import { runCommand } from "./tools/command"; import { fetchSubmitPage, submitCodeWithRedirect } from "./tools/submit"; import { buildCphProblem, sendToCph } from "./tools/cph" import { IncomingMessage } from "./tools/types"; -import { send } from "process"; +import { getWebviewContent } from "./tools/webview"; +import { AtCoderViewProvider } from "./viewProvider"; const log = { info: (...args: unknown[]) => { @@ -22,22 +23,6 @@ const log = { const sleep = (ms: number): Promise<void> => new Promise<void>(resolve => setTimeout(resolve, ms)); -function getWebviewContent(webviewJsSrc: vscode.Uri): string { - return `<!DOCTYPE html> - <html lang="en"> - <head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src vscode-resource: https:; script-src 'unsafe-eval' 'unsafe-inline' vscode-resource:; style-src vscode-resource: 'unsafe-inline';"> - <title>VSCode Boilerplate - - -
- - - `; -} - function handleErrorWithCfAndLogin(error: unknown, send: (payload: Record) => void): boolean { if (error instanceof CfError) { vscode.window.showErrorMessage(error.message, "在浏览器中打开").then((choice) => { @@ -271,7 +256,7 @@ export async function handleExportToCph(problem: AtCoderProblem, send: (payload: send({ type: "cphExportResult", success: true, message: "success send to cph" }); } catch (error) { const message = error instanceof Error ? error.message : "fail to send cph"; - send({ type: "error", success: false, message: message }); + send({ type: "cphExportResult", success: false, message: message }); } } @@ -390,6 +375,12 @@ export async function activate(context: vscode.ExtensionContext) { context.subscriptions.push( vscode.commands.registerCommand("extension.showWebview", createShowWebview(context)) ); + context.subscriptions.push( + vscode.window.registerWebviewViewProvider( + AtCoderViewProvider.viewType, + new AtCoderViewProvider(context) + ) + ); } catch (error) { log.error("Failed to activate extension:", error); } diff --git a/apps/vscode-extension/src/tools/submit.ts b/apps/vscode-extension/src/tools/submit.ts index d780ed8..b276045 100644 --- a/apps/vscode-extension/src/tools/submit.ts +++ b/apps/vscode-extension/src/tools/submit.ts @@ -46,7 +46,7 @@ function parseOptions(html: string): Array<{ value: string; label: string }> { const results: Array<{ value: string; label: string }> = []; const optionRegex = /]*value="([^"]*)"[^>]*>([^<]*)<\/option>/gi; let m: RegExpExecArray | null; - for (;(m = optionRegex.exec(html)) !== null;) { + for (; (m = optionRegex.exec(html)) !== null;) { const value = m[1]; if (value) results.push({ value, label: decodeHtmlEntities(m[2].trim()) }); } diff --git a/apps/vscode-extension/src/tools/webview.ts b/apps/vscode-extension/src/tools/webview.ts new file mode 100644 index 0000000..f150f8a --- /dev/null +++ b/apps/vscode-extension/src/tools/webview.ts @@ -0,0 +1,17 @@ +import * as vscode from "vscode"; + +export function getWebviewContent(webviewJsSrc: vscode.Uri): string { + return ` + + + + + + VSCode Boilerplate + + +
+ + + `; +} \ No newline at end of file diff --git a/apps/vscode-extension/src/viewProvider.ts b/apps/vscode-extension/src/viewProvider.ts new file mode 100644 index 0000000..cee26da --- /dev/null +++ b/apps/vscode-extension/src/viewProvider.ts @@ -0,0 +1,72 @@ +import * as vscode from "vscode"; +import * as path from "path"; + +import { runCommand } from "./tools/command"; +import { IncomingMessage } from "./tools/types"; +import { getWebviewContent } from "./tools/webview"; + +/** + * Provides the AtCoder helper webview view. + */ +export class AtCoderViewProvider implements vscode.WebviewViewProvider { + public static readonly viewType = "atcoderHelper.webviewView"; + + private webviewView: vscode.WebviewView | undefined; + + constructor(private readonly context: vscode.ExtensionContext) {} + + resolveWebviewView( + webviewView: vscode.WebviewView, + _context: vscode.WebviewViewResolveContext, + _token: vscode.CancellationToken, + ): void { + this.webviewView = webviewView; + this.initializeWebview(); + } + + private initializeWebview(): void { + if (!this.webviewView) { + return; + } + + const webview = this.webviewView.webview; + + webview.options = { + enableScripts: true, + // retainContextWhenHidden: true, + localResourceRoots: [ + vscode.Uri.file(path.join(this.context.extensionPath, "dist")), + ], + }; + + const webviewJsSrc = webview.asWebviewUri( + vscode.Uri.file(path.join(this.context.extensionPath, "dist", "webview.js")), + ); + + webview.html = getWebviewContent(webviewJsSrc); + + this.bindMessageHandlers(); + + this.webviewView.onDidDispose(() => { + this.webviewView = undefined; + }); + } + + private bindMessageHandlers(): void { + if (!this.webviewView) { + return; + } + + const webview = this.webviewView.webview; + + const onMessage = (message: IncomingMessage) => { + runCommand(message, this.context, (payload) => { + if (this.webviewView) { + this.webviewView.webview.postMessage(payload); + } + }); + }; + + webview.onDidReceiveMessage(onMessage, undefined, this.context.subscriptions); + } +} \ No newline at end of file diff --git a/packages/webview/src/WebviewApp.tsx b/packages/webview/src/WebviewApp.tsx index 471c659..8459352 100644 --- a/packages/webview/src/WebviewApp.tsx +++ b/packages/webview/src/WebviewApp.tsx @@ -336,7 +336,7 @@ const WebviewApp: React.FC = ({ )}
-
+
= ({
{problem.title}
{problem.url}
-
+
diff --git a/release/extension.vsix b/release/extension.vsix index a970f60243ab6e4033d32c058e02e12393d61d22..d89cc05b127dc1a3884ad21a1a4668fd151ce04a 100644 GIT binary patch delta 976139 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,j(?%+jhIyIQX4eVABLKTF>R{Q9eiWq`@agi5) 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