Jetbrains Claude Code and Codex GUI Plugin
This report presents the forensic synthetic code analysis of zhukunpenglinyutong/jetbrains-cc-gui, a Java project with 5,642 GitHub stars. SynthScan v2.0 examined 392,657 lines of code across 1545 source files, recording 762 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 6.5 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 762 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …odegui/handler/history/HistoryMessageInjectorTest.java | 655 | assertTrue(com.github.claudecodegui.util.JsUtils.escapeJs( | CODE |
| CRITICAL | …odegui/handler/history/HistoryMessageInjectorTest.java | 679 | assertTrue(com.github.claudecodegui.util.JsUtils.escapeJs(chunk).length() | CODE |
| CRITICAL | …odegui/handler/history/HistoryMessageInjectorTest.java | 693 | 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 | 84 | com.github.claudecodegui.notifications.ClaudeNotifier.setMode(this.context.getProject(), mode); | CODE |
| CRITICAL | …om/github/claudecodegui/handler/PermissionHandler.java | 279 | com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow.getChatWindow(targetProject); | 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 |
| 103 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/src/main.tsx | 48 | function createBridgeHeartbeatStarter() { | CODE |
| LOW | webview/src/main.tsx | 394 | function applyEditorTypographyConfig(config: { | CODE |
| LOW | webview/src/types/aiFeatureConfig.ts | 159 | 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 | 27 | export function normalizePromptEnhancerConfig( | CODE |
| LOW | webview/src/utils/sessionFileLedger.ts | 90 | 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/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 | 187 | 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/toolConstants.ts | 85 | 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 | 239 | 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 | 43 | 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 | 224 | export function isTaskNotificationOnlyMessage(message: ClaudeMessage): boolean { | CODE |
| LOW | webview/src/utils/messageUtils.ts | 294 | export function attachCompactBoundaryMetadata(messages: ClaudeMessage[]): ClaudeMessage[] { | CODE |
| LOW | webview/src/utils/messageUtils.ts | 676 | 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/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 |
| LOW⚡ | webview/src/utils/surfaceDamagePulse.ts | 179 | export function runAfterSurfaceDamagePulse(waiter: () => void): boolean { | CODE |
| LOW⚡ | webview/src/utils/surfaceDamagePulse.ts | 189 | export function performGenericSurfaceDamage(app: HTMLElement, restoreScale: string): boolean { | CODE |
| LOW | webview/src/components/MessageList.tsx | 40 | function getFirstMessageBoundaryKey(message: ClaudeMessage | undefined): string | undefined { | CODE |
| LOW | webview/src/components/MessageList.tsx | 67 | function getMessageToolResultSignature( | CODE |
| 243 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/components/ChatInputBox/hooks/usePasteAndDrop.test.ts | 89 | const mixedText = 'const email = "user@example.com"; @/workspace/src/index.vue'; | CODE |
| LOW | webview/src/i18n/locales/zh.json | 127 | "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 | 723 | "placeholder": "例如 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/zh.json | 809 | "placeholder": "在此添加您的额外要求,例如:使用中文生成 commit、包含 issue 编号,使用表情符号等等...", | CODE |
| LOW⚡ | webview/src/i18n/locales/zh.json | 814 | "placeholder": "在此添加当前项目的专属要求,例如:scope 必须使用模块名、commit body 需包含影响范围等...", | CODE |
| LOW⚡ | webview/src/i18n/locales/zh.json | 820 | "placeholder": "此功能正在开发中,敬请期待...", | CODE |
| LOW | webview/src/i18n/locales/zh.json | 1564 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/zh.json | 2219 | "placeholder": "文件上下文", | CODE |
| LOW | webview/src/i18n/locales/ja.json | 108 | "placeholder": "会話内を検索...", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 167 | "placeholder": "例: C:\\Program Files\\nodejs\\node.exe または /usr/local/bin/node", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 175 | "placeholder": "例: /usr/local/bin/claude — 空欄の場合は内蔵 SDK を使用", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 180 | "placeholder": "例: project1 または空欄でプロジェクトルートを使用", | CODE |
| LOW | webview/src/i18n/locales/ja.json | 376 | "placeholder": "例: 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 444 | "placeholder": "Add your extra requirements here, e.g., generate commit in English, include issue number, etc... | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 449 | "placeholder": "現在のプロジェクト固有の要件をここに追加してください。例:scopeにはモジュール名を使用、commit bodyに影響範囲を含めるなど...", | CODE |
| LOW⚡ | webview/src/i18n/locales/ja.json | 455 | "placeholder": "This feature is under development, stay tuned...", | CODE |
| LOW | webview/src/i18n/locales/ja.json | 1127 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/ja.json | 1719 | "placeholder": "ファイルコンテキスト", | CODE |
| LOW | webview/src/i18n/locales/ru.json | 108 | "placeholder": "Поиск в беседе…", | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 167 | "placeholder": "например, C:\\Program Files\\nodejs\\node.exe или /usr/local/bin/node", | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 175 | "placeholder": "напр. /usr/local/bin/claude — оставьте пустым для использования встроенного SDK", | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 180 | "placeholder": "например, project1 или оставьте пустым для корня проекта", | CODE |
| LOW | webview/src/i18n/locales/ru.json | 376 | "placeholder": "например, 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 444 | "placeholder": "Добавьте дополнительные требования, например, генерировать коммит на английском, включать номер | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 449 | "placeholder": "Добавьте здесь требования, специфичные для проекта, например: scope должен содержать имя модуля, | CODE |
| LOW⚡ | webview/src/i18n/locales/ru.json | 455 | "placeholder": "Эта функция в разработке, следите за обновлениями...", | CODE |
| LOW | webview/src/i18n/locales/ru.json | 1149 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/ru.json | 1740 | "placeholder": "Файловый контекст", | CODE |
| LOW | webview/src/i18n/locales/en.json | 127 | "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 | 723 | "placeholder": "e.g. 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/en.json | 809 | "placeholder": "Add your extra requirements here, e.g., generate commit in English, include issue number, etc... | CODE |
| LOW⚡ | webview/src/i18n/locales/en.json | 814 | "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 | 820 | "placeholder": "This feature is under development, stay tuned...", | CODE |
| LOW | webview/src/i18n/locales/en.json | 1559 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/en.json | 2213 | "placeholder": "File Context", | CODE |
| LOW | webview/src/i18n/locales/fr.json | 108 | "placeholder": "Rechercher dans la conversation…", | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 167 | "placeholder": "ex. C:\\Program Files\\nodejs\\node.exe ou /usr/local/bin/node", | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 175 | "placeholder": "ex. /usr/local/bin/claude — laissez vide pour utiliser le SDK intégré", | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 180 | "placeholder": "e.g. project1 or leave empty to use project root", | CODE |
| LOW | webview/src/i18n/locales/fr.json | 376 | "placeholder": "ex. 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 444 | "placeholder": "Add your extra requirements here, e.g., generate commit in English, include issue number, etc... | CODE |
| LOW⚡ | webview/src/i18n/locales/fr.json | 449 | "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 | 455 | "placeholder": "This feature is under development, stay tuned...", | CODE |
| LOW | webview/src/i18n/locales/fr.json | 1122 | "placeholder": "{\n \"servers\": {\n \"my-server\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \ | CODE |
| LOW | webview/src/i18n/locales/fr.json | 1714 | "placeholder": "Contexte de fichier", | CODE |
| LOW | webview/src/i18n/locales/hi.json | 108 | "placeholder": "बातचीत में खोजें...", | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 167 | "placeholder": "जैसे C:\\Program Files\\nodejs\\node.exe या /usr/local/bin/node", | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 175 | "placeholder": "उदा. /usr/local/bin/claude — अंतर्निहित SDK का उपयोग करने के लिए खाली छोड़ें", | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 180 | "placeholder": "e.g. project1 or leave empty to use project root", | CODE |
| LOW | webview/src/i18n/locales/hi.json | 376 | "placeholder": "उदा. 500", | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 444 | "placeholder": "Add your extra requirements here, e.g., generate commit in English, include issue number, etc... | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 449 | "placeholder": "यहाँ प्रोजेक्ट-विशिष्ट आवश्यकताएँ जोड़ें, जैसे: scope में मॉड्यूल नाम का उपयोग करें, commit body | CODE |
| LOW⚡ | webview/src/i18n/locales/hi.json | 455 | "placeholder": "This feature is under development, stay tuned...", | CODE |
| LOW | webview/src/i18n/locales/hi.json | 1122 | "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 | 143 | // ── @@ 转义 ─────────────────────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 162 | // ── 混合文本 ────────────────────────────────────── | COMMENT |
| MEDIUM | webview/src/components/CollapsibleTextBlock.test.ts | 194 | // ── 边界条件 ────────────────────────────────────── | 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 | …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 | 1316 | // Step 1: Frontend begins session transition | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1319 | // Step 2: During transition, stale messages are blocked | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1325 | // Step 3: Java calls historyLoadComplete (failure path also calls this before addErrorMessage) | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1331 | // Step 4: Java calls addErrorMessage | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1337 | // Step 5: After guard release, new messages work | COMMENT |
| LOW | ai-bridge/services/claude/permission-mode.js | 155 | // Step 1: ExitPlanMode triggers plan approval dialog (must check BEFORE safe tools | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 193 | // 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 | 198 | // Step 3: Agent/Task are auto-approved in plan mode, matching CLI behavior. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 208 | // Step 4: Edit/Write tools allow PLAN.md only; other writes require permission. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 282 | // Step 5: Plan mode specific allowed tools (read-only exploration tools) | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 287 | // Step 6: Auto-approve read-only MCP tools (positive verb allowlist; see isReadOnlyMcpTool). | 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 | 124 | // Step 1: Locate SKILL.md | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 130 | // Step 2: Extract frontmatter YAML text | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 136 | // Step 3: Parse YAML | COMMENT |
| LOW | …github/claudecodegui/skill/SkillFrontmatterParser.java | 155 | // Step 4: Extract name (optional per docs, falls back to directory name) | COMMENT |
| LOW | …github/claudecodegui/skill/SkillFrontmatterParser.java | 170 | // Step 5: Extract description (optional per docs, falls back to first paragraph) | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 186 | // Step 6: Extract optional fields | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 191 | // Step 7: Extract user-invocable (default true per docs) | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 198 | // 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/App.tsx | 221 | // handle Cmd+F there. | 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 | // - <command-message> → UserCommandMessage (skill/slash command) | COMMENT |
| LOW | webview/src/components/ChatScreen.tsx | 201 | // stay the same — without this sub-signal the hook would never re-scan the | COMMENT |
| LOW | webview/src/components/MarkdownBlock.tsx | 701 | ); | COMMENT |
| LOW | …bview/src/components/toolBlocks/TaskExecutionBlock.tsx | 81 | const historyDescription = isSpawnAgent | 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/useStreamingMessages.ts | 241 | // let the next backend snapshot author the correct blocks. Overwriting a | COMMENT |
| LOW | webview/src/hooks/useChatComputations.ts | 201 | COMMENT | |
| LOW | webview/src/hooks/useChatComputations.ts | 221 | // would lose its task and subagent lists entirely. | COMMENT |
| LOW | webview/src/hooks/windowCallbacks/messageSync.ts | 121 | } | COMMENT |
| LOW | webview/src/hooks/windowCallbacks/messageSync.ts | 381 | // (prev starts with next: the same segment, grown further on the frontend). | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 301 | // If the last streaming assistant belongs to an OLDER turn, its onStreamEnd | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 581 | // Initialize denied tool ids set if not exists | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 621 | window.__lastStreamEndedTurnId = endedStreamingTurnId; | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 681 | COMMENT | |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 741 | // | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 801 | }; | COMMENT |
| LOW | …indowCallbacks/registerCallbacks/streamingCallbacks.ts | 821 | return; | COMMENT |
| LOW | …/windowCallbacks/registerCallbacks/messageCallbacks.ts | 961 | window.__lastStreamEndedAt = undefined; | COMMENT |
| LOW | …rc/hooks/windowCallbacks/__tests__/messageSync.test.ts | 1101 | expect(streamingIndex).toBe(-1); | COMMENT |
| LOW | ai-bridge/permission-handler.js | 21 | // READ_ONLY tools: pure read operations with no side effects. | COMMENT |
| LOW | ai-bridge/daemon.js | 61 | // BEFORE SDK preloading or any other network activity, but only for explicitly | COMMENT |
| LOW | ai-bridge/daemon.js | 81 | COMMENT | |
| LOW | ai-bridge/daemon.js | 101 | // don't source the user's shell init files, so the daemon inherits a minimal | COMMENT |
| LOW | ai-bridge/daemon.js | 721 | } catch (e) { | COMMENT |
| LOW | ai-bridge/daemon.js | 741 | // Tuning guide: | 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 | 301 | } | 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 | 441 | COMMENT | |
| LOW | ai-bridge/services/claude/persistent-query-service.js | 301 | // after an interrupt, or sendInternal would misclassify the new turn's | COMMENT |
| LOW | ai-bridge/services/claude/persistent-query-service.js | 461 | // take(), which cancels remaining tests with | COMMENT |
| LOW | ai-bridge/services/claude/runtime-lifecycle.js | 141 | effort: options.effort || '', | COMMENT |
| LOW | ai-bridge/services/claude/runtime-lifecycle.js | 381 | } | COMMENT |
| LOW | ai-bridge/services/claude/runtime-lifecycle.js | 421 | // Validate sessionId: only emit events for registered runtimes | COMMENT |
| LOW | ai-bridge/services/claude/runtime-lifecycle.js | 441 | if (msg?.type === 'system' && typeof msg.subtype === 'string' && msg.subtype.startsWith('task_')) { | COMMENT |
| LOW | ai-bridge/services/claude/session-service.js | 121 | * when the file is missing. | 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 |
| 15 more matches not shown… | ||||
| 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 | 1316 | // Step 1: Frontend begins session transition | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1319 | // Step 2: During transition, stale messages are blocked | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1325 | // Step 3: Java calls historyLoadComplete (failure path also calls this before addErrorMessage) | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1331 | // Step 4: Java calls addErrorMessage | COMMENT |
| LOW⚡ | webview/src/hooks/useWindowCallbacks.test.ts | 1337 | // Step 5: After guard release, new messages work | COMMENT |
| LOW | ai-bridge/services/claude/permission-mode.js | 155 | // Step 1: ExitPlanMode triggers plan approval dialog (must check BEFORE safe tools | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 193 | // 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 | 198 | // Step 3: Agent/Task are auto-approved in plan mode, matching CLI behavior. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 208 | // Step 4: Edit/Write tools allow PLAN.md only; other writes require permission. | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 282 | // Step 5: Plan mode specific allowed tools (read-only exploration tools) | COMMENT |
| LOW⚡ | ai-bridge/services/claude/permission-mode.js | 287 | // Step 6: Auto-approve read-only MCP tools (positive verb allowlist; see isReadOnlyMcpTool). | 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 | 124 | // Step 1: Locate SKILL.md | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 130 | // Step 2: Extract frontmatter YAML text | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 136 | // Step 3: Parse YAML | COMMENT |
| LOW | …github/claudecodegui/skill/SkillFrontmatterParser.java | 155 | // Step 4: Extract name (optional per docs, falls back to directory name) | COMMENT |
| LOW | …github/claudecodegui/skill/SkillFrontmatterParser.java | 170 | // Step 5: Extract description (optional per docs, falls back to first paragraph) | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 186 | // Step 6: Extract optional fields | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 191 | // Step 7: Extract user-invocable (default true per docs) | COMMENT |
| LOW⚡ | …github/claudecodegui/skill/SkillFrontmatterParser.java | 198 | // 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 |
|---|---|---|---|---|
| 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 | 471 | 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 | 463 | // 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 | 601 | // - Benefit: More robust handling of async callback ordering, especially important | COMMENT |
| MEDIUM | ai-bridge/services/grok/acp-terminal-host.js | 319 | // Execution strategy (robust against noexec): | 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 | 111 | // TODO: implement live permission-mode switch for the Codex provider | COMMENT |