Jetbrains Claude Code and Codex GUI Plugin
This report summarizes scanner evidence for zhukunpenglinyutong/jetbrains-cc-gui, a Java project with 6,909 GitHub stars. SynthScan examined 443,113 lines of code across 1965 source files, recording 813 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 6.1 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 507 finding(s).
Are imports declared and package/API names verified? 277 finding(s).
Are wrappers, guards, and repeated structures necessary? 372 finding(s).
Which changes need focused human review? 813 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 813 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ndler/history/SubagentHistoryServiceReadJsonlTest.java | 105 | Files.setLastModifiedTime(file, java.nio.file.attribute.FileTime.fromMillis( | CODE |
| CRITICAL | …odegui/handler/history/HistoryMessageInjectorTest.java | 667 | assertTrue(com.github.claudecodegui.util.JsUtils.escapeJs( | CODE |
| CRITICAL | …odegui/handler/history/HistoryMessageInjectorTest.java | 691 | assertTrue(com.github.claudecodegui.util.JsUtils.escapeJs(chunk).length() | CODE |
| CRITICAL | …odegui/handler/history/HistoryMessageInjectorTest.java | 705 | assertTrue(com.github.claudecodegui.util.JsUtils.escapeJs(chunk).length() | CODE |
| CRITICAL | …degui/provider/claude/ClaudeSDKBridgeRefactorTest.java | 208 | com.intellij.openapi.diagnostic.Logger.getInstance(ClaudeDaemonRequestExecutor.class), | CODE |
| CRITICAL⚡ | …hub/claudecodegui/provider/grok/GrokSDKBridgeTest.java | 116 | int limit = com.github.claudecodegui.handler.provider.ModelProviderHandler.getModelContextLimit("grok-2"); | CODE |
| CRITICAL⚡ | …hub/claudecodegui/provider/grok/GrokSDKBridgeTest.java | 123 | assertEquals(500000, com.github.claudecodegui.handler.provider.ModelProviderHandler.getModelContextLimit("grok") | CODE |
| CRITICAL⚡ | …hub/claudecodegui/provider/grok/GrokSDKBridgeTest.java | 124 | assertEquals(128000, com.github.claudecodegui.handler.provider.ModelProviderHandler.getModelContextLimit("grok-2 | CODE |
| CRITICAL⚡ | …hub/claudecodegui/provider/grok/GrokSDKBridgeTest.java | 125 | assertEquals(500000, com.github.claudecodegui.handler.provider.ModelProviderHandler.getModelContextLimit("grok-4 | CODE |
| CRITICAL⚡ | …hub/claudecodegui/provider/grok/GrokSDKBridgeTest.java | 126 | assertEquals(500000, com.github.claudecodegui.handler.provider.ModelProviderHandler.getModelContextLimit("grok-b | CODE |
| CRITICAL | …degui/provider/common/PaginatedSessionLoadingTest.java | 33 | new com.github.claudecodegui.provider.claude.ClaudeSessionLiteReader(); | CODE |
| CRITICAL | …degui/provider/common/PaginatedSessionLoadingTest.java | 76 | new com.github.claudecodegui.provider.claude.ClaudeSessionLiteReader(); | CODE |
| CRITICAL | src/main/resources/libs/marked.min.js | 47 | `+s.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(s);continue}if(e){let r="Infinite loop on byt | CODE |
| CRITICAL | …ithub/claudecodegui/handler/PermissionModeHandler.java | 111 | com.github.claudecodegui.notifications.ClaudeNotifier.setMode(this.context.getProject(), effectiveMode); | CODE |
| CRITICAL⚡ | …ava/com/github/claudecodegui/handler/AgentHandler.java | 283 | com.github.claudecodegui.notifications.ClaudeNotifier.setAgent(context.getProject(), agentName); | CODE |
| CRITICAL⚡ | …ava/com/github/claudecodegui/handler/AgentHandler.java | 285 | com.github.claudecodegui.notifications.ClaudeNotifier.setAgent(context.getProject(), ""); | CODE |
| CRITICAL⚡ | …ava/com/github/claudecodegui/handler/AgentHandler.java | 288 | com.github.claudecodegui.notifications.ClaudeNotifier.setAgent(context.getProject(), ""); | CODE |
| CRITICAL | …ava/com/github/claudecodegui/handler/AgentHandler.java | 380 | com.github.claudecodegui.notifications.ClaudeNotifier.showSuccess( | CODE |
| CRITICAL | …ava/com/github/claudecodegui/handler/AgentHandler.java | 390 | com.github.claudecodegui.notifications.ClaudeNotifier.showError( | CODE |
| CRITICAL | …ava/com/github/claudecodegui/handler/AgentHandler.java | 488 | com.github.claudecodegui.notifications.ClaudeNotifier.showError( | CODE |
| CRITICAL | …ava/com/github/claudecodegui/handler/AgentHandler.java | 528 | com.github.claudecodegui.notifications.ClaudeNotifier.showSuccess( | CODE |
| CRITICAL | …ava/com/github/claudecodegui/handler/AgentHandler.java | 544 | com.github.claudecodegui.notifications.ClaudeNotifier.showError( | CODE |
| CRITICAL | …github/claudecodegui/handler/SoundSettingsHandler.java | 202 | com.intellij.openapi.fileChooser.FileChooser.chooseFile( | CODE |
| CRITICAL | …com/github/claudecodegui/handler/McpServerHandler.java | 274 | String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("mcp.addServerFaile | CODE |
| CRITICAL | …com/github/claudecodegui/handler/McpServerHandler.java | 297 | String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("mcp.updateServerFa | CODE |
| CRITICAL⚡ | …com/github/claudecodegui/handler/McpServerHandler.java | 321 | String reason = com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("mcp.serverNotFound"); | CODE |
| CRITICAL⚡ | …com/github/claudecodegui/handler/McpServerHandler.java | 322 | String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message( | CODE |
| CRITICAL⚡ | …com/github/claudecodegui/handler/McpServerHandler.java | 330 | String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("mcp.deleteServerFa | CODE |
| CRITICAL | …ava/com/github/claudecodegui/handler/SkillHandler.java | 433 | .finishOnUiThread(com.intellij.openapi.application.ModalityState.defaultModalityState(), virtualFile -> | CODE |
| CRITICAL | …ithub/claudecodegui/handler/CodexMcpServerHandler.java | 168 | sendToolsError("", com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.codexLocalAccessNotA | CODE |
| CRITICAL | …ithub/claudecodegui/handler/CodexMcpServerHandler.java | 259 | com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.codexLocalAccessNotAuthorized") | CODE |
| CRITICAL | …laudecodegui/handler/context/JavaContextCollector.java | 516 | PsiClass cls = com.intellij.psi.util.PsiUtil.resolveClassInType(type); | CODE |
| CRITICAL | …laudecodegui/handler/context/JavaContextCollector.java | 527 | return com.intellij.openapi.roots.ProjectFileIndex.getInstance(project).isInContent(vFile); | CODE |
| CRITICAL | …thub/claudecodegui/handler/file/FileExportHandler.java | 47 | handleSaveFile(content, ".md", com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveMarkdownD | CODE |
| CRITICAL | …thub/claudecodegui/handler/file/FileExportHandler.java | 51 | handleSaveFile(content, ".json", com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveJsonDia | CODE |
| CRITICAL⚡ | …thub/claudecodegui/handler/file/FileExportHandler.java | 123 | notifySuccess(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saved")); | CODE |
| CRITICAL⚡ | …thub/claudecodegui/handler/file/FileExportHandler.java | 126 | String errorDetail = e.getMessage() != null ? e.getMessage() : com.github.claudecodegui.i18n.ClaudeCodeG | CODE |
| CRITICAL⚡ | …thub/claudecodegui/handler/file/FileExportHandler.java | 127 | notifyError(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveFailedWithReason", error | CODE |
| CRITICAL | …thub/claudecodegui/handler/file/FileExportHandler.java | 143 | String errorDetail = message != null ? message : com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message(" | CODE |
| CRITICAL | …thub/claudecodegui/handler/file/FileExportHandler.java | 144 | String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveFailedWithRea | CODE |
| CRITICAL | …ecodegui/handler/provider/CodexProviderOperations.java | 73 | context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiB | CODE |
| CRITICAL | …ecodegui/handler/provider/CodexProviderOperations.java | 107 | context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiB | CODE |
| CRITICAL | …ecodegui/handler/provider/CodexProviderOperations.java | 126 | context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCode | CODE |
| CRITICAL | …ecodegui/handler/provider/CodexProviderOperations.java | 152 | context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiB | CODE |
| CRITICAL⚡ | …ecodegui/handler/provider/CodexProviderOperations.java | 182 | if (com.github.claudecodegui.settings.CodexProviderManager.CODEX_CLI_LOGIN_PROVIDER_ID.equals(id)) { | CODE |
| CRITICAL⚡ | …ecodegui/handler/provider/CodexProviderOperations.java | 191 | String successMsg = com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.providerSwitchSucce | CODE |
| CRITICAL⚡ | …ecodegui/handler/provider/CodexProviderOperations.java | 192 | + com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.switchSyncCodex"); | CODE |
| CRITICAL⚡ | …ecodegui/handler/provider/CodexProviderOperations.java | 201 | context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiB | CODE |
| CRITICAL | …ecodegui/handler/provider/CodexProviderOperations.java | 234 | com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.codexLocalConfigAuthorizationRe | CODE |
| CRITICAL | …ecodegui/handler/provider/CodexProviderOperations.java | 243 | com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.providerSwitchFailed") + ": " + | CODE |
| CRITICAL | …ecodegui/handler/provider/CodexProviderOperations.java | 261 | com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.codexCliLoginSwitchSuccess"))); | CODE |
| CRITICAL | …ecodegui/handler/provider/CodexProviderOperations.java | 270 | com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.providerSwitchFailed") + ": " + | CODE |
| CRITICAL | …codegui/handler/provider/ClaudeProviderOperations.java | 134 | context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiB | CODE |
| CRITICAL | …codegui/handler/provider/ClaudeProviderOperations.java | 173 | context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiB | CODE |
| CRITICAL | …codegui/handler/provider/ClaudeProviderOperations.java | 192 | context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCode | CODE |
| CRITICAL | …codegui/handler/provider/ClaudeProviderOperations.java | 221 | context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiB | CODE |
| CRITICAL | …codegui/handler/provider/ClaudeProviderOperations.java | 259 | context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.providerDi | CODE |
| CRITICAL | …codegui/handler/provider/ClaudeProviderOperations.java | 282 | context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.localP | CODE |
| CRITICAL | …codegui/handler/provider/ClaudeProviderOperations.java | 295 | context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.localP | CODE |
| CRITICAL | …codegui/handler/provider/ClaudeProviderOperations.java | 314 | context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.localProvi | CODE |
| 111 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | webview/e2e/menu-viewports.spec.ts | 173 | async function expectSubmenuAnchoredToRow(page: Page, trigger: Locator, submenu: Locator, label: string) { | CODE |
| LOW | webview/e2e/menu-viewports.spec.ts | 239 | async function expectCodexQuotaToLeaveRowsClickable(page: Page) { | CODE |
| LOW | webview/src/main.tsx | 53 | function createBridgeHeartbeatStarter() { | CODE |
| LOW | webview/src/main.tsx | 388 | function applyEditorTypographyConfig(config: { | CODE |
| LOW | webview/src/types/aiFeatureConfig.ts | 165 | export function pickAutoAiFeatureProvider( | CODE |
| LOW | webview/src/types/provider.ts | 152 | export function validateCodexCustomModels(models: unknown): CodexCustomModel[] { | CODE |
| LOW | webview/src/types/provider.ts | 379 | export function buildCodexProviderConfigToml( | CODE |
| LOW | webview/src/types/promptEnhancer.ts | 29 | export function normalizePromptEnhancerConfig( | CODE |
| LOW | webview/src/utils/sessionFileLedger.ts | 108 | export function reconstructBaselineAndCurrent(ops: LedgerOp[]): ReconstructResult { | CODE |
| LOW | webview/src/utils/linkifyCapabilities.ts | 14 | function normalizeLinkifyCapabilities(value: unknown): LinkifyCapabilities { | CODE |
| LOW | webview/src/utils/linkifyCapabilities.ts | 56 | export function applyLinkifyCapabilitiesPayload(json: string): LinkifyCapabilities { | CODE |
| LOW | webview/src/utils/linkifyCapabilities.ts | 64 | export function subscribeLinkifyCapabilities( | CODE |
| LOW | webview/src/utils/streamLifecycle.ts | 39 | export function isPendingStreamStartActive(): boolean { | CODE |
| LOW | webview/src/utils/skipNewSessionConfirm.ts | 72 | export function isNewSessionConfirmEnabled(): boolean { | CODE |
| LOW | webview/src/utils/skipNewSessionConfirm.ts | 82 | export function setNewSessionConfirmEnabled(enabled: boolean): void { | CODE |
| LOW | webview/src/utils/betaProviderNotice.ts | 14 | export function hasSeenBetaProviderNotice(): boolean { | CODE |
| LOW | webview/src/utils/betaProviderNotice.ts | 27 | export function markBetaProviderNoticeSeen(): void { | CODE |
| LOW | webview/src/utils/taskNotificationMessage.ts | 70 | export function collectTaskEventsFromMessages(messages: ClaudeMessage[]): TaskEventMap { | CODE |
| LOW | webview/src/utils/runtimeProviderCapabilities.ts | 38 | export function installRuntimeProviderDispatchers(): void { | CODE |
| LOW | webview/src/utils/runtimeProviderCapabilities.ts | 83 | export function subscribeCodexProviderList(listener: ProviderListListener): () => void { | CODE |
| LOW | webview/src/utils/runtimeProviderCapabilities.ts | 91 | export function subscribeActiveCodexProvider(listener: ActiveProviderListener): () => void { | CODE |
| LOW | webview/src/utils/subagentResult.ts | 186 | export function isSpawnAgentArgumentFailureNoise( | CODE |
| LOW | webview/src/utils/linkify.ts | 477 | export function normalizeFileNavigationTarget(href: string): string | null { | CODE |
| LOW | webview/src/utils/linkify.ts | 490 | export function isMarkdownFileNavigationHref(href: string): boolean { | CODE |
| LOW | webview/src/utils/codexSubscriptionQuotaCapabilities.ts | 61 | export function installCodexSubscriptionQuotaDispatchers(): void { | CODE |
| LOW | webview/src/utils/codexSubscriptionQuotaCapabilities.ts | 74 | export function subscribeCodexSubscriptionQuota(listener: QuotaListener): () => void { | CODE |
| LOW | webview/src/utils/codexSubscriptionQuotaCapabilities.ts | 82 | export function fetchCodexSubscriptionQuota(): void { | CODE |
| LOW | webview/src/utils/cliProviderVisibility.ts | 54 | export function subscribeCliProviderVisibility(listener: () => void): () => void { | CODE |
| LOW | webview/src/utils/toolConstants.ts | 89 | export function isTransientInternalToolName(toolName: string | undefined): boolean { | CODE |
| LOW | webview/src/utils/expandedState.ts | 18 | export function clearAllPersistedExpanded(): void { | CODE |
| LOW | webview/src/utils/contentBlockNormalize.ts | 156 | export function formatTaskNotificationForDisplay( | CODE |
| LOW | webview/src/utils/contentBlockNormalize.ts | 189 | export function createTaskNotificationBlock(text: string): ClaudeContentBlock | null { | CODE |
| LOW | webview/src/utils/contentBlockNormalize.ts | 205 | export function extractCommandMessageContent(text: string): string { | CODE |
| LOW | webview/src/utils/contentBlockNormalize.ts | 245 | export function isSyntheticToolMessageContent( | CODE |
| LOW | webview/src/utils/turnScope.ts | 3 | export function isToolResultOnlyUserMessage(message: ClaudeMessage): boolean { | CODE |
| LOW | webview/src/utils/turnScope.ts | 18 | export function findLatestConversationTurnStart(messages: ClaudeMessage[]): number { | CODE |
| LOW | webview/src/utils/turnScope.ts | 28 | export function sliceLatestConversationTurn(messages: ClaudeMessage[]): ClaudeMessage[] { | CODE |
| LOW | webview/src/utils/turnScope.ts | 43 | export function computeStatusScopeMessages( | CODE |
| LOW | webview/src/utils/turnScope.ts | 55 | function findConversationTurnStartAt(messages: ClaudeMessage[], messageIndex: number): number { | CODE |
| LOW | webview/src/utils/turnScope.ts | 85 | export function finalizeTodosForSettledTurn( | CODE |
| LOW | webview/src/utils/turnScope.ts | 98 | export function finalizeSubagentsForSettledTurn(subagents: SubagentInfo[], _isStreaming: boolean): SubagentInfo[] { | CODE |
| LOW | webview/src/utils/bridge.ts | 46 | function installResolveFilePathHandler() { | CODE |
| LOW | webview/src/utils/bridgeStartup.ts | 62 | function startDependencyStatusRequest(force: boolean): () => void { | CODE |
| LOW⚡ | webview/src/utils/bridgeStartup.ts | 131 | export function requestDependencyStatusUntilSettled(): () => void { | CODE |
| LOW⚡ | webview/src/utils/bridgeStartup.ts | 135 | export function retryDependencyStatusRequest(): () => void { | CODE |
| LOW⚡ | webview/src/utils/bridgeStartup.ts | 140 | export function requestFreshDependencyStatus(): () => void { | CODE |
| LOW⚡ | webview/src/utils/bridgeStartup.ts | 150 | export function settleDependencyStatusRequest(state: 'ready' | 'error'): void { | CODE |
| LOW | webview/src/utils/bridgeStartup.ts | 167 | export function isDependencyStatusResponse(payload: unknown): boolean { | CODE |
| LOW | webview/src/utils/messageUtils.ts | 225 | export function isTaskNotificationOnlyMessage(message: ClaudeMessage): boolean { | CODE |
| LOW | webview/src/utils/messageUtils.ts | 295 | export function attachCompactBoundaryMetadata(messages: ClaudeMessage[]): ClaudeMessage[] { | CODE |
| LOW | webview/src/utils/messageUtils.ts | 680 | export function mergeConsecutiveAssistantMessages( | CODE |
| LOW | webview/src/utils/codexStatusRequestTracker.ts | 14 | export function isLatestCodexStatusRequest(requestId: string | undefined): boolean { | CODE |
| LOW | webview/src/utils/nodeProcessCapabilities.ts | 93 | export function installNodeProcessDispatchers(): void { | CODE |
| LOW | webview/src/utils/nodeProcessCapabilities.ts | 119 | export function subscribeNodeProcessKillResult(listener: KillResultListener): () => void { | CODE |
| LOW | webview/src/utils/permissionDialogTimeout.ts | 9 | export function clampPermissionDialogTimeoutSeconds(value: unknown): number { | CODE |
| LOW | webview/src/utils/customClaudeModels.ts | 57 | export function normalizeClaudeModelForBridge(modelId: string): string { | CODE |
| LOW | webview/src/utils/surfaceDamagePulse.ts | 43 | function getOrCreateSentinel(): HTMLElement | null { | CODE |
| LOW | webview/src/utils/surfaceDamagePulse.ts | 125 | export function replaceSurfaceDamagePulse(previousToken: string, nextToken: string): boolean { | CODE |
| LOW | webview/src/utils/surfaceDamagePulse.ts | 143 | export function advanceSurfaceDamagePulse(token: string): boolean { | CODE |
| LOW⚡ | webview/src/utils/surfaceDamagePulse.ts | 174 | export function isSurfaceDamagePulseActive(): boolean { | CODE |
| 283 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/components/ChatInputBox/hooks/usePasteAndDrop.test.ts | 93 | const mixedText = 'const email = "user@example.com"; @/workspace/src/index.vue'; | CODE |
| LOW | webview/src/i18n/locales/zh.json | 126 | "placeholder": "在对话中搜索…", | CODE |
| LOW | webview/src/i18n/locales/zh.json | 405 | "placeholder": "Windows: C:\\Program Files\\nodejs\\node.exe (必须以 .exe 结尾) | macOS/Linux: /usr/local/bin/node", | CODE |
| LOW | webview/src/i18n/locales/zh.json | 417 | "placeholder": "例如 /usr/local/bin/claude — 留空则使用内置 SDK", | CODE |
| LOW | webview/src/i18n/locales/zh.json | 422 | "placeholder": "例如 project1 或留空使用项目根目录", | CODE |
| LOW | webview/src/i18n/locales/zh.json | 737 | "placeholder": "例如 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/zh.json | 823 | "placeholder": "在此添加您的额外要求,例如:使用中文生成 commit、包含 issue 编号,使用表情符号等等...", | CODE |
| LOW⚡ | webview/src/i18n/locales/zh.json | 828 | "placeholder": "在此添加当前项目的专属要求,例如:scope 必须使用模块名、commit body 需包含影响范围等...", | CODE |
| LOW⚡ | webview/src/i18n/locales/zh.json | 834 | "placeholder": "此功能正在开发中,敬请期待...", | CODE |
| LOW | webview/src/i18n/locales/zh.json | 1589 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/zh.json | 2316 | "placeholder": "文件上下文", | CODE |
| LOW | webview/src/i18n/locales/ja.json | 107 | "placeholder": "会話内を検索...", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 166 | "placeholder": "例: C:\\Program Files\\nodejs\\node.exe または /usr/local/bin/node", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 174 | "placeholder": "例: /usr/local/bin/claude — 空欄の場合は内蔵 SDK を使用", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 179 | "placeholder": "例: project1 または空欄でプロジェクトルートを使用", | CODE |
| LOW | webview/src/i18n/locales/ja.json | 377 | "placeholder": "例: 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 445 | "placeholder": "Add your extra requirements here, e.g., generate commit in English, include issue number, etc... | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 450 | "placeholder": "現在のプロジェクト固有の要件をここに追加してください。例:scopeにはモジュール名を使用、commit bodyに影響範囲を含めるなど...", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 456 | "placeholder": "This feature is under development, stay tuned...", | CODE |
| LOW | webview/src/i18n/locales/ja.json | 1151 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/ja.json | 1815 | "placeholder": "ファイルコンテキスト", | CODE |
| LOW | webview/src/i18n/locales/ru.json | 107 | "placeholder": "Поиск в беседе…", | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 166 | "placeholder": "например, C:\\Program Files\\nodejs\\node.exe или /usr/local/bin/node", | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 174 | "placeholder": "напр. /usr/local/bin/claude — оставьте пустым для использования встроенного SDK", | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 179 | "placeholder": "например, project1 или оставьте пустым для корня проекта", | CODE |
| LOW | webview/src/i18n/locales/ru.json | 377 | "placeholder": "например, 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 445 | "placeholder": "Добавьте дополнительные требования, например, генерировать коммит на английском, включать номер | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 450 | "placeholder": "Добавьте здесь требования, специфичные для проекта, например: scope должен содержать имя модуля, | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 456 | "placeholder": "Эта функция в разработке, следите за обновлениями...", | CODE |
| LOW | webview/src/i18n/locales/ru.json | 1173 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/ru.json | 1836 | "placeholder": "Файловый контекст", | CODE |
| LOW | webview/src/i18n/locales/en.json | 126 | "placeholder": "Search in conversation…", | CODE |
| LOW | webview/src/i18n/locales/en.json | 405 | "placeholder": "Windows: C:\\Program Files\\nodejs\\node.exe (must end with .exe) | macOS/Linux: /usr/local/bin/ | CODE |
| LOW | webview/src/i18n/locales/en.json | 417 | "placeholder": "e.g. /usr/local/bin/claude — leave empty to use the bundled SDK", | CODE |
| LOW | webview/src/i18n/locales/en.json | 422 | "placeholder": "e.g. project1 or leave empty to use project root", | CODE |
| LOW | webview/src/i18n/locales/en.json | 737 | "placeholder": "e.g. 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/en.json | 823 | "placeholder": "Add your extra requirements here, e.g., generate commit in English, include issue number, etc... | CODE |
| LOW⚡ | webview/src/i18n/locales/en.json | 828 | "placeholder": "Add project-specific requirements here, e.g., scope must use module name, commit body should inc | CODE |
| LOW⚡ | webview/src/i18n/locales/en.json | 834 | "placeholder": "This feature is under development, stay tuned...", | CODE |
| LOW | webview/src/i18n/locales/en.json | 1584 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/en.json | 2310 | "placeholder": "File Context", | CODE |
| LOW | webview/src/i18n/locales/fr.json | 107 | "placeholder": "Rechercher dans la conversation…", | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 166 | "placeholder": "ex. C:\\Program Files\\nodejs\\node.exe ou /usr/local/bin/node", | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 174 | "placeholder": "ex. /usr/local/bin/claude — laissez vide pour utiliser le SDK intégré", | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 179 | "placeholder": "e.g. project1 or leave empty to use project root", | CODE |
| LOW | webview/src/i18n/locales/fr.json | 377 | "placeholder": "ex. 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 445 | "placeholder": "Add your extra requirements here, e.g., generate commit in English, include issue number, etc... | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 450 | "placeholder": "Ajoutez ici les exigences spécifiques au projet, par exemple : le scope doit utiliser le nom du | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 456 | "placeholder": "This feature is under development, stay tuned...", | CODE |
| LOW | webview/src/i18n/locales/fr.json | 1146 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/fr.json | 1810 | "placeholder": "Contexte de fichier", | CODE |
| LOW | webview/src/i18n/locales/hi.json | 107 | "placeholder": "बातचीत में खोजें...", | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 166 | "placeholder": "जैसे C:\\Program Files\\nodejs\\node.exe या /usr/local/bin/node", | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 174 | "placeholder": "उदा. /usr/local/bin/claude — अंतर्निहित SDK का उपयोग करने के लिए खाली छोड़ें", | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 179 | "placeholder": "e.g. project1 or leave empty to use project root", | CODE |
| LOW | webview/src/i18n/locales/hi.json | 377 | "placeholder": "उदा. 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 445 | "placeholder": "Add your extra requirements here, e.g., generate commit in English, include issue number, etc... | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 450 | "placeholder": "यहाँ प्रोजेक्ट-विशिष्ट आवश्यकताएँ जोड़ें, जैसे: scope में मॉड्यूल नाम का उपयोग करें, commit body | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 456 | "placeholder": "This feature is under development, stay tuned...", | CODE |
| LOW | webview/src/i18n/locales/hi.json | 1146 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| 39 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 5 | // ── 基本路径匹配 ────────────────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 49 | // ── 行号 ────────────────────────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 65 | // ── 路径含空格 ──────────────────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 109 | // ── 路径含 # 但不匹配行号 ───────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 109 | // ── 路径含 # 但不匹配行号 ───────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 131 | // ── 非路径 @mention 不匹配 ──────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 166 | // ── @@ 转义 ─────────────────────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 185 | // ── 混合文本 ────────────────────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 216 | // ── 边界条件 ────────────────────────────────────── | COMMENT |
| MEDIUM | …ponents/ConversationSearch/ConversationSearch.test.tsx | 159 | // ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ponents/ConversationSearch/ConversationSearch.test.tsx | 161 | // ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | webview/src/hooks/useMessageProcessing.ts | 127 | // ── Compact summary → notification ───────────────────────────────── | COMMENT |
| MEDIUM | webview/src/hooks/useMessageProcessing.ts | 143 | // ── Standard visibility + type transforms ────────────────────────── | COMMENT |
| MEDIUM | ai-bridge/services/dsh/events.test.js | 264 | // ── Answer mapping ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ub/claudecodegui/ui/toolwindow/DeferredReloadTest.java | 38 | // ── Park + take-and-clear ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ub/claudecodegui/ui/toolwindow/DeferredReloadTest.java | 67 | // ── Coalescing (last writer wins) ──────────────────────────────────────── | COMMENT |
| MEDIUM | …ub/claudecodegui/ui/toolwindow/DeferredReloadTest.java | 82 | // ── Disposed gate ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ub/claudecodegui/ui/toolwindow/DeferredReloadTest.java | 108 | // ── Thread-safety: concurrent defer/take never loses or duplicates ─────── | COMMENT |
| MEDIUM | …ub/claudecodegui/ui/toolwindow/DeferredReloadTest.java | 166 | // ── Safety backstop decision (decideDeferredReloadSafety) ──────────────── | COMMENT |
| MEDIUM | …decodegui/provider/opencode/OpenCodeHistoryReader.java | 163 | // ── SQLite (OpenCode 1.x) ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …decodegui/provider/opencode/OpenCodeHistoryReader.java | 496 | // ── Legacy JSON storage ───────────────────────────────────────────────── | STRING |
| MEDIUM | …github/claudecodegui/permission/PermissionService.java | 47 | // ── Enums & Inner Types ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …github/claudecodegui/permission/PermissionService.java | 111 | // ── Constructor & Factory Methods ────────────────────────────────── | COMMENT |
| MEDIUM | …github/claudecodegui/permission/PermissionService.java | 160 | // ── Public API ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …github/claudecodegui/permission/PermissionService.java | 238 | // ── Common Helpers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …github/claudecodegui/permission/PermissionService.java | 304 | // ── Permission Request Handling ──────────────────────────────────── | COMMENT |
| MEDIUM | …github/claudecodegui/permission/PermissionService.java | 437 | // ── AskUserQuestion Request Handling ─────────────────────────────── | COMMENT |
| MEDIUM | …github/claudecodegui/permission/PermissionService.java | 513 | // ── PlanApproval Request Handling ────────────────────────────────── | COMMENT |
| MEDIUM | …github/claudecodegui/permission/PermissionService.java | 576 | // ── Diff Review ──────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | webview/src/components/AnimatedText/index.tsx | 23 | // Step 1: Animate out current text (Right to Left) | COMMENT |
| LOW⚡ | webview/src/components/AnimatedText/index.tsx | 33 | // Step 2: Swap content and animate in (Left to Right) | COMMENT |
| LOW⚡ | webview/src/hooks/useScrollBehavior.ts | 98 | // Step 1: deterministic scrollTop adjustment. | COMMENT |
| LOW⚡ | webview/src/hooks/useScrollBehavior.ts | 103 | // Step 2: native end-positioning (handles late-arriving layout). | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1355 | // Step 1: Frontend begins session transition | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1358 | // Step 2: During transition, stale messages are blocked | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1364 | // Step 3: Java calls historyLoadComplete (failure path also calls this before addErrorMessage) | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1370 | // Step 4: Java calls addErrorMessage | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1376 | // Step 5: After guard release, new messages work | COMMENT |
| LOW | ai-bridge/services/claude/permission-mode.js | 157 | // Step 1: ExitPlanMode triggers plan approval dialog (must check BEFORE safe tools | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 195 | // Step 2: Safe always-allow tools yield to SDK so settings.json deny rules can fire. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 200 | // Step 3: Agent/Task are auto-approved in plan mode, matching CLI behavior. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 210 | // Step 4: Edit/Write tools allow PLAN.md only; other writes require permission. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 284 | // Step 5: Plan mode specific allowed tools (read-only exploration tools) | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 289 | // Step 6: Yield known read-only MCP tools to the SDK (see isReadOnlyMcpTool). | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 294 | // Step 7: Unknown MCP tools cannot be proven side-effect free from their | COMMENT |
| LOW | ai-bridge/services/claude/mcp-status/sse-verifier.js | 57 | // Step 1: GET the SSE endpoint to establish event stream | COMMENT |
| LOW | ai-bridge/services/claude/mcp-status/sse-verifier.js | 75 | // Step 2: Wait for endpoint event | COMMENT |
| LOW | ai-bridge/services/claude/mcp-status/sse-verifier.js | 87 | // Step 3: POST initialize request to the discovered endpoint | COMMENT |
| LOW | ai-bridge/services/claude/mcp-status/sse-verifier.js | 108 | // Step 4: Read initialize response | COMMENT |
| LOW | …-bridge/services/claude/mcp-status/sse-tools-getter.js | 54 | // Step 1: Establish SSE connection | COMMENT |
| LOW | …-bridge/services/claude/mcp-status/sse-tools-getter.js | 72 | // Step 2: Wait for endpoint event | COMMENT |
| LOW | …-bridge/services/claude/mcp-status/sse-tools-getter.js | 84 | // Step 3: Send initialize request | COMMENT |
| LOW | …-bridge/services/claude/mcp-status/sse-tools-getter.js | 123 | // Step 4: Send tools/list request | COMMENT |
| LOW | docs/codex/MULTI-PROVIDER-ARCHITECTURE.md | 171 | ### Step 1: Create Service Module | COMMENT |
| LOW | docs/codex/MULTI-PROVIDER-ARCHITECTURE.md | 178 | ### Step 2: Implement Message Service | COMMENT |
| LOW | docs/codex/MULTI-PROVIDER-ARCHITECTURE.md | 202 | ### Step 3: Add Permission Mapper | COMMENT |
| LOW | docs/codex/MULTI-PROVIDER-ARCHITECTURE.md | 222 | ### Step 4: Update Router | COMMENT |
| LOW | docs/codex/MULTI-PROVIDER-ARCHITECTURE.md | 242 | ### Step 5: Create Java Bridge | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 146 | // Step 1: Locate SKILL.md | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 152 | // Step 2: Extract frontmatter YAML text | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 158 | // Step 3: Parse YAML | COMMENT |
| LOW | …github/claudecodegui/skill/SkillFrontmatterParser.java | 177 | // Step 4: Extract name (optional per docs, falls back to directory name) | COMMENT |
| LOW | …github/claudecodegui/skill/SkillFrontmatterParser.java | 196 | // Step 5: Extract description (optional per docs, falls back to first paragraph) | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 212 | // Step 6: Extract optional fields | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 217 | // Step 7: Extract user-invocable (default true per docs) | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 224 | // Step 8: Extract paths (conditional skills - glob patterns for file matching) | COMMENT |
| LOW⚡ | …ava/com/github/claudecodegui/util/EditorFileUtils.java | 219 | // Step 1: Refresh file system on UI thread (not under read lock) | COMMENT |
| LOW⚡ | …ava/com/github/claudecodegui/util/EditorFileUtils.java | 225 | // Step 2: Find the file in a non-blocking read action | COMMENT |
| LOW | …ava/com/github/claudecodegui/util/EditorFileUtils.java | 237 | // Step 3: Handle the result on UI thread | COMMENT |
| LOW⚡ | …hub/claudecodegui/terminal/TerminalMonitorService.java | 427 | // Step 1: Get Terminal object | COMMENT |
| LOW⚡ | …hub/claudecodegui/terminal/TerminalMonitorService.java | 431 | // Step 2: Get TextBuffer | COMMENT |
| LOW⚡ | …hub/claudecodegui/terminal/TerminalMonitorService.java | 435 | // Step 3: Scrape lines | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | webview/src/components/AnimatedText/index.tsx | 23 | // Step 1: Animate out current text (Right to Left) | COMMENT |
| LOW⚡ | webview/src/components/AnimatedText/index.tsx | 33 | // Step 2: Swap content and animate in (Left to Right) | COMMENT |
| LOW⚡ | webview/src/hooks/useScrollBehavior.ts | 98 | // Step 1: deterministic scrollTop adjustment. | COMMENT |
| LOW⚡ | webview/src/hooks/useScrollBehavior.ts | 103 | // Step 2: native end-positioning (handles late-arriving layout). | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1355 | // Step 1: Frontend begins session transition | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1358 | // Step 2: During transition, stale messages are blocked | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1364 | // Step 3: Java calls historyLoadComplete (failure path also calls this before addErrorMessage) | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1370 | // Step 4: Java calls addErrorMessage | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1376 | // Step 5: After guard release, new messages work | COMMENT |
| LOW | ai-bridge/services/claude/permission-mode.js | 157 | // Step 1: ExitPlanMode triggers plan approval dialog (must check BEFORE safe tools | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 195 | // Step 2: Safe always-allow tools yield to SDK so settings.json deny rules can fire. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 200 | // Step 3: Agent/Task are auto-approved in plan mode, matching CLI behavior. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 210 | // Step 4: Edit/Write tools allow PLAN.md only; other writes require permission. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 284 | // Step 5: Plan mode specific allowed tools (read-only exploration tools) | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 289 | // Step 6: Yield known read-only MCP tools to the SDK (see isReadOnlyMcpTool). | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 294 | // Step 7: Unknown MCP tools cannot be proven side-effect free from their | COMMENT |
| LOW | ai-bridge/services/claude/mcp-status/sse-verifier.js | 57 | // Step 1: GET the SSE endpoint to establish event stream | COMMENT |
| LOW | ai-bridge/services/claude/mcp-status/sse-verifier.js | 75 | // Step 2: Wait for endpoint event | COMMENT |
| LOW | ai-bridge/services/claude/mcp-status/sse-verifier.js | 87 | // Step 3: POST initialize request to the discovered endpoint | COMMENT |
| LOW | ai-bridge/services/claude/mcp-status/sse-verifier.js | 108 | // Step 4: Read initialize response | COMMENT |
| LOW | …-bridge/services/claude/mcp-status/sse-tools-getter.js | 54 | // Step 1: Establish SSE connection | COMMENT |
| LOW | …-bridge/services/claude/mcp-status/sse-tools-getter.js | 72 | // Step 2: Wait for endpoint event | COMMENT |
| LOW | …-bridge/services/claude/mcp-status/sse-tools-getter.js | 84 | // Step 3: Send initialize request | COMMENT |
| LOW | …-bridge/services/claude/mcp-status/sse-tools-getter.js | 123 | // Step 4: Send tools/list request | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 146 | // Step 1: Locate SKILL.md | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 152 | // Step 2: Extract frontmatter YAML text | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 158 | // Step 3: Parse YAML | COMMENT |
| LOW | …github/claudecodegui/skill/SkillFrontmatterParser.java | 177 | // Step 4: Extract name (optional per docs, falls back to directory name) | COMMENT |
| LOW | …github/claudecodegui/skill/SkillFrontmatterParser.java | 196 | // Step 5: Extract description (optional per docs, falls back to first paragraph) | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 212 | // Step 6: Extract optional fields | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 217 | // Step 7: Extract user-invocable (default true per docs) | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 224 | // Step 8: Extract paths (conditional skills - glob patterns for file matching) | COMMENT |
| LOW⚡ | …ava/com/github/claudecodegui/util/EditorFileUtils.java | 219 | // Step 1: Refresh file system on UI thread (not under read lock) | COMMENT |
| LOW⚡ | …ava/com/github/claudecodegui/util/EditorFileUtils.java | 225 | // Step 2: Find the file in a non-blocking read action | COMMENT |
| LOW | …ava/com/github/claudecodegui/util/EditorFileUtils.java | 237 | // Step 3: Handle the result on UI thread | COMMENT |
| LOW⚡ | …hub/claudecodegui/terminal/TerminalMonitorService.java | 427 | // Step 1: Get Terminal object | COMMENT |
| LOW⚡ | …hub/claudecodegui/terminal/TerminalMonitorService.java | 431 | // Step 2: Get TextBuffer | COMMENT |
| LOW⚡ | …hub/claudecodegui/terminal/TerminalMonitorService.java | 435 | // Step 3: Scrape lines | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | webview/src/useAppGlobalEffects.ts | 81 | COMMENT | |
| LOW | webview/src/contexts/SubagentContext.tsx | 21 | currentProvider: 'claude', | COMMENT |
| LOW | webview/src/utils/linkify.ts | 81 | // Ruby | COMMENT |
| LOW | webview/src/utils/messageUtils.ts | 501 | }; | COMMENT |
| LOW | webview/src/components/ChatScreen.tsx | 201 | // length + last timestamp + streaming flag + last-message content size. | COMMENT |
| LOW | webview/src/components/MarkdownBlock.tsx | 721 | // Capture the selection as character offsets over the whole message | COMMENT |
| LOW | webview/src/components/toolBlocks/taskExecutionMeta.ts | 201 | taskEvent, | COMMENT |
| LOW | webview/src/components/mcp/McpServerDialog.tsx | 21 | const [jsonContent, setJsonContent] = useState(''); | COMMENT |
| LOW | webview/src/components/mcp/McpServerDialog.tsx | 41 | // "mcpServers": { | COMMENT |
| LOW | …eStatistics/tokentracker-dashboard/lib/tt-transport.ts | 1 | // Vendored addition (not from upstream): JCEF transport for the embedded | COMMENT |
| LOW | webview/src/hooks/useScrollBehavior.ts | 61 | COMMENT | |
| LOW | webview/src/hooks/useMessageQueue.ts | 101 | // effect cleanup, cancel the timer, and silently drop the already-dequeued | COMMENT |
| LOW | webview/src/hooks/useSessionManagement.ts | 141 | setStreamingActive(false); | COMMENT |
| LOW | webview/src/hooks/useStreamingMessages.ts | 281 | COMMENT | |
| LOW | webview/src/hooks/useChatComputations.ts | 281 | // While streaming, focus on the current turn's task progress; once settled | COMMENT |
| LOW | webview/src/hooks/windowCallbacks/messageSync.ts | 121 | break; | COMMENT |
| LOW | webview/src/hooks/windowCallbacks/messageSync.ts | 381 | COMMENT | |
| LOW | webview/src/hooks/windowCallbacks/registerCallbacks.ts | 181 | // Cross-session safety is enforced by three layers, so this handler does | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 621 | COMMENT | |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 661 | // Mark that streaming just ended - used by mergeConsecutiveAssistantMessages to | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 681 | let newMessages = prev; | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 781 | // tool cards remain stuck in "pending" spinner state. | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 841 | // fully-resolved turn it returns [] and the for-loop below is a no-op. | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 901 | if (isStreamingRef.current && window.__lastStreamActivityAt !== undefined) { | COMMENT |
| LOW | …rc/hooks/windowCallbacks/__tests__/messageSync.test.ts | 1101 | const { list, streamingIndex } = ensureStreamingAssistantInList(prev, result, false, 0); | COMMENT |
| LOW | ai-bridge/permission-handler.js | 21 | // READ_ONLY tools: pure read operations with no side effects. | COMMENT |
| LOW | ai-bridge/daemon.js | 101 | COMMENT | |
| LOW | ai-bridge/daemon.js | 121 | // don't source the user's shell init files, so the daemon inherits a minimal | COMMENT |
| LOW | ai-bridge/daemon.js | 461 | COMMENT | |
| LOW | ai-bridge/daemon.js | 901 | clearTimeout(forceExitTimer); | COMMENT |
| LOW | ai-bridge/config/api-config.js | 541 | // Configuration priority: only read from settings.json, ignore system environment variables. | COMMENT |
| LOW | …-bridge/services/claude/stream-event-processor.test.js | 561 | assert.match(deltaLines[0], /"Hello"/); | COMMENT |
| LOW | …-bridge/services/claude/stream-event-processor.test.js | 701 | // Concatenated stream of block 1 must equal the expected content exactly | COMMENT |
| LOW | …-bridge/services/claude/stream-event-processor.test.js | 801 | // - eb1786 routed the snapshot path through normalizeStreamDelta, which locks | COMMENT |
| LOW | …-bridge/services/claude/stream-event-processor.test.js | 1041 | assert.equal(blockResetLines.length, 2, 'BLOCK_RESET must be emitted at each message_start in multi-turn loop'); | COMMENT |
| LOW | …-bridge/services/claude/stream-event-processor.test.js | 1141 | COMMENT | |
| LOW | ai-bridge/services/claude/permission-mode.js | 321 | // | COMMENT |
| LOW | ai-bridge/services/claude/stream-delta-normalizer.js | 41 | if (!previous) { | COMMENT |
| LOW | ai-bridge/services/claude/stream-delta-normalizer.js | 81 | // "150") would falsely absorb legitimate characters — producing the exact | COMMENT |
| LOW | ai-bridge/services/claude/message-sender.js | 181 | const event = msg.event; | COMMENT |
| LOW | ai-bridge/services/claude/stale-turn-isolation.test.js | 381 | await assert.rejects(turn2Promise, /Turn aborted/); | COMMENT |
| LOW | ai-bridge/services/claude/persistent-query-service.js | 281 | const turnState = createTurnState(requestContext, runtime); | COMMENT |
| LOW | ai-bridge/services/claude/persistent-query-service.js | 341 | // Subagent (sidechain) messages carry a non-null parent_tool_use_id pointing | COMMENT |
| LOW | ai-bridge/services/claude/runtime-lifecycle.js | 141 | effort: options.effort || '', | COMMENT |
| LOW | ai-bridge/services/claude/runtime-lifecycle.js | 481 | const msg = next.value; | COMMENT |
| LOW | ai-bridge/services/claude/runtime-lifecycle.js | 521 | } else { | COMMENT |
| LOW | ai-bridge/services/claude/runtime-lifecycle.js | 541 | // risks JsonNull handling on the Java side. Silently consume instead. | COMMENT |
| LOW | ai-bridge/services/claude/session-service.js | 221 | // real last message. The live stream never carries them (the daemon | COMMENT |
| LOW | ai-bridge/services/dsh/message-service.js | 401 | // (there is no IPC to dismiss that dialog from here). Cancel frames | COMMENT |
| LOW | docs/codex/docs/example-config.md | 1 | # Example config.toml | COMMENT |
| LOW | docs/codex/docs/example-config.md | 21 | # Primary model used by Codex. Default: "gpt-5.1-codex-max" on all platforms. | COMMENT |
| LOW | docs/codex/docs/example-config.md | 61 | COMMENT | |
| LOW | docs/codex/docs/example-config.md | 81 | COMMENT | |
| LOW | docs/codex/docs/example-config.md | 161 | # hide_rate_limit_model_nudge = true | COMMENT |
| LOW | docs/codex/docs/example-config.md | 221 | # Experimental toggles (legacy; prefer [features]) | COMMENT |
| LOW | docs/codex/docs/example-config.md | 241 | # disabled_tools = ["slow-tool"] # optional deny-list (applied after allow-list) | COMMENT |
| LOW | docs/codex/docs/example-config.md | 261 | [model_providers] | COMMENT |
| LOW | docs/codex/docs/example-config.md | 281 | # query_params = { api-version = "2025-04-01-preview" } | COMMENT |
| LOW | docs/codex/docs/example-config.md | 301 | # model = "gpt-5.1-codex-max" | COMMENT |
| LOW | docs/codex/docs/example-config.md | 321 | [projects] | COMMENT |
| 16 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | webview/src/components/mcp/McpServerDialog.tsx | 46 | // "CONTEXT7_API_KEY": "your-api-key" | COMMENT |
| HIGH | docs/codex/docs/exec.md | 111 | CODEX_API_KEY=your-api-key-here codex exec "Fix merge conflict" | CODE |
| HIGH | docs/sdk/codex-cli-sdk.md | 86 | export OPENAI_API_KEY="your-api-key-here" | CODE |
| HIGH | docs/sdk/codex-cli-sdk.md | 92 | > OPENAI_API_KEY=your-api-key-here | CODE |
| HIGH | docs/sdk/codex-cli-sdk.md | 117 | > export <provider>_API_KEY="your-api-key-here" | CODE |
| HIGH | docs/sdk/codex-cli-sdk.md | 484 | export OPENAI_API_KEY="your-api-key-here" | CODE |
| HIGH | docs/sdk/codex-sdk.md | 172 | CODEX_API_KEY=your-api-key codex exec --json "triage open bug reports" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | webview/src/hooks/useSessionManagement.ts | 490 | // AI-generated titles are already persisted by saveAiTitle to the JSONL | COMMENT |
| HIGH | …/windowCallbacks/registerCallbacks/sessionCallbacks.ts | 55 | // AI-generated titles can exceed the backend limit. Fall back to | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | webview/package-lock.json | 6183 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 642 | // - Benefit: More robust handling of async callback ordering, especially important | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | webview/src/ARCHITECTURE.md | 51 | ├── App.tsx # Main orchestration component | CODE |
| MEDIUM | …ithub/claudecodegui/session/SessionContextService.java | 167 | // Path references only: CLI providers are agentic and read files | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ithub/claudecodegui/handler/PermissionModeHandler.java | 138 | // TODO: implement live permission-mode switch for the Codex provider | COMMENT |