ClawX is a desktop app that provides a graphical interface for OpenClaw AI agents. It turns CLI-based AI orchestration into a desktop experience without using the terminal. China website is https://clawx.com.cn.
This report presents the forensic synthetic code analysis of ValueCell-ai/ClawX, a TypeScript project with 7,544 GitHub stars. SynthScan v2.0 examined 158,978 lines of code across 696 source files, recording 862 pattern matches distributed across 9 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 862 distinct pattern matches across 9 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 |
|---|---|---|---|---|
| LOW | tests/unit/chat-page-execution-graph.test.tsx | 142 | function timelineWithProcessBlocks(): AcpTimelineSnapshot { | CODE |
| LOW | tests/unit/gateway-rpc-test-utils.ts | 17 | export function installGatewayRpcDefaults(mock: GatewayRpcMock): void { | CODE |
| LOW | tests/unit/gateway-rpc-test-utils.ts | 36 | export async function prewarmChatHistoryMaxCharsCache(): Promise<void> { | CODE |
| LOW | tests/unit/chat-history-reply-while-sending.test.tsx | 125 | function timelineWithAssistantReply(): AcpTimelineSnapshot { | CODE |
| LOW | tests/unit/history-transcript-fa3ccd85-fixture.test.ts | 38 | function buildLongAssistantMessage(): RawMessage { | CODE |
| LOW | tests/unit/history-transcript-fa3ccd85-fixture.test.ts | 59 | function simulateGatewayHistoryTruncation(text: string, maxChars = OPENCLAW_DEFAULT_HISTORY_TEXT_MAX_CHARS): string { | CODE |
| LOW | tests/unit/history-transcript-fa3ccd85-fixture.test.ts | 64 | function simulateGatewayHistoryTruncationContent( | CODE |
| LOW | tests/unit/comms-scripts.test.ts | 9 | function buildPassingScenarioMetrics() { | CODE |
| LOW | tests/unit/whatsapp-login.test.ts | 66 | function cleanupWhatsAppLoginCredentials(accountId: string): void { | CODE |
| LOW | tests/unit/chat-input.test.tsx | 155 | function configureAgentAndModelPickers() { | CODE |
| LOW⚡ | tests/e2e/chat-new-session-date.spec.ts | 11 | function defaultWorkspaceSessionGroupTestId(): string { | CODE |
| LOW⚡ | tests/e2e/chat-new-session-date.spec.ts | 15 | function defaultWorkspaceSessionGroupToggleTestId(): string { | CODE |
| LOW⚡ | tests/e2e/chat-new-session-date.spec.ts | 19 | function defaultWorkspaceSessionLoadMoreTestId(): string { | CODE |
| LOW | tests/e2e/token-usage.spec.ts | 12 | async function seedTokenUsageTranscripts(homeDir: string): Promise<void> { | CODE |
| LOW | tests/e2e/chat-acp-inline-timeline.spec.ts | 25 | function defaultWorkspaceSessionGroupTestId(): string { | CODE |
| LOW | tests/e2e/chat-acp-inline-timeline.spec.ts | 100 | async function installAcpLoadRecorderMock(app: ElectronApplication) { | CODE |
| LOW | tests/e2e/chat-acp-inline-timeline.spec.ts | 146 | async function getRecordedAcpLoadSessionKeys(app: ElectronApplication) { | CODE |
| LOW | tests/e2e/chat-acp-inline-timeline.spec.ts | 177 | async function getRecordedMediaSaveImagePayloads(app: ElectronApplication) { | CODE |
| LOW | tests/e2e/chat-acp-inline-timeline.spec.ts | 183 | async function installAcpPromptSuccessMock(app: ElectronApplication) { | CODE |
| LOW | tests/e2e/chat-acp-inline-timeline.spec.ts | 199 | async function installAcpPromptFailureMock(app: ElectronApplication, error: string) { | CODE |
| LOW | tests/e2e/chat-acp-inline-timeline.spec.ts | 215 | async function installAcpPromptDeferredMock(app: ElectronApplication) { | CODE |
| LOW | tests/e2e/chat-workspace-context.spec.ts | 36 | function workspaceSessionGroupTestId(workspacePath: string): string { | CODE |
| LOW | tests/e2e/openclaw-dreams.spec.ts | 13 | function buildDreamingEnabledPatchRaw(enabled: boolean): string { | CODE |
| LOW | tests/e2e/dialog-transitions.spec.ts | 11 | function defaultWorkspaceSessionGroupTestId(): string { | CODE |
| LOW | tests/e2e/dialog-transitions.spec.ts | 24 | async function expectSubtleDialogAnimation(locator: Locator): Promise<void> { | CODE |
| LOW | tests/e2e/chat-question-directory.spec.ts | 47 | async function installQuestionDirectoryMocks( | CODE |
| LOW⚡ | shared/sidebar-layout.ts | 27 | export function getMacTrafficLightFrameHeight(darwinMajor: number): number { | CODE |
| LOW⚡ | shared/sidebar-layout.ts | 34 | export function getMacTrafficLightChromeOffset( | CODE |
| LOW⚡ | shared/sidebar-layout.ts | 41 | export function getMacTrafficLightPosition(options: { | CODE |
| LOW⚡ | shared/chat/openclaw-internal.ts | 4 | export function containsOpenClawHeartbeatPollSentinel(value: string | null | undefined): boolean { | CODE |
| LOW⚡ | shared/chat/openclaw-internal.ts | 8 | export function isOpenClawHeartbeatPollText(value: string | null | undefined): boolean { | CODE |
| LOW⚡ | shared/chat/openclaw-internal.ts | 12 | export function isOpenClawHeartbeatAckText(value: string | null | undefined): boolean { | CODE |
| LOW | shared/chat/session-title.ts | 4 | export function stripAcpWorkingDirectoryPrefix(text: string): string { | CODE |
| LOW | shared/chat/session-title.ts | 8 | export function isAcpWorkingDirectoryTruncatedTitle(text: string): boolean { | CODE |
| LOW | shared/host-events/contract.ts | 154 | export function buildHostChannelEventName( | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 57 | export function isControlUiBrowserPairingRequest(request: PendingDevicePairingRequest): boolean { | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 62 | export function isLocalLoopbackDeviceAutoApprovalRequest(request: PendingDevicePairingRequest): boolean { | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 86 | export async function readLocalPendingPairingRequests(): Promise<PendingDevicePairingRequest[]> { | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 98 | async function listPendingPairingRequests(gateway: GatewayPairingRpcClient): Promise<PendingDevicePairingRequest[]> { | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 230 | export async function approvePendingLocalDeviceRequests( | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 267 | export async function approvePendingControlUiPairingRequests( | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 274 | async function watchLocalDeviceApprovals( | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 294 | export function cancelLocalDeviceAutoApproval(): void { | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 303 | export function scheduleLocalDeviceAutoApproval( | CODE |
| LOW | electron/utils/control-ui-device-pairing.ts | 339 | export function scheduleControlUiDeviceAutoApproval( | CODE |
| LOW | electron/utils/uv-env.ts | 159 | export async function warmupNetworkOptimization(): Promise<void> { | CODE |
| LOW⚡ | electron/utils/plugin-install.ts | 676 | export function ensureDingTalkPluginInstalled(): { installed: boolean; warning?: string } { | CODE |
| LOW⚡ | electron/utils/plugin-install.ts | 680 | export function ensureWeComPluginInstalled(): { installed: boolean; warning?: string } { | CODE |
| LOW⚡ | electron/utils/plugin-install.ts | 684 | export function ensureFeishuPluginInstalled(): { installed: boolean; warning?: string } { | CODE |
| LOW⚡ | electron/utils/plugin-install.ts | 694 | export function ensureWeChatPluginInstalled(): { installed: boolean; warning?: string } { | CODE |
| LOW⚡ | electron/utils/plugin-install.ts | 698 | export function ensureDiscordPluginInstalled(): { installed: boolean; warning?: string } { | CODE |
| LOW⚡ | electron/utils/plugin-install.ts | 702 | export function ensureQQBotPluginInstalled(): { installed: boolean; warning?: string } { | CODE |
| LOW⚡ | electron/utils/plugin-install.ts | 706 | export function ensureWhatsAppPluginInstalled(): { installed: boolean; warning?: string } { | CODE |
| LOW⚡ | electron/utils/plugin-install.ts | 710 | export function ensureClawXOpenAiImagePluginInstalled(): { installed: boolean; warning?: string } { | CODE |
| LOW | electron/utils/plugin-install.ts | 17 | function normalizeFsPathForWindows(filePath: string): string { | CODE |
| LOW | electron/utils/plugin-install.ts | 268 | function normalizePluginInstallPathForRecord(targetDir: string): string | null { | CODE |
| LOW | electron/utils/plugin-install.ts | 277 | function buildTrustedOfficialPluginInstallRecord( | CODE |
| LOW | electron/utils/plugin-install.ts | 300 | function persistTrustedOfficialPluginInstallRecordsToSqlite( | CODE |
| LOW | electron/utils/plugin-install.ts | 306 | function trustedInstallRecordMatches( | CODE |
| LOW | electron/utils/plugin-install.ts | 328 | export function syncTrustedOfficialPluginInstallRecord( | CODE |
| 582 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tailwind.config.js | 225 | // ── B. ClawX brand tokens ──────────────────────────────────── | COMMENT |
| MEDIUM | tailwind.config.js | 246 | // ── C. ClawX neutral surfaces ──────────────────────────────── | COMMENT |
| MEDIUM | tailwind.config.js | 258 | // ── D. ClawX usage accents ────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/sanitize-config.test.ts | 878 | // ── plugins.load.paths regression tests (issue #607) ────────── | COMMENT |
| MEDIUM | tests/unit/sanitize-config.test.ts | 878 | // ── plugins.load.paths regression tests (issue #607) ────────── | COMMENT |
| MEDIUM | tests/unit/sanitize-config.test.ts | 1111 | // ── bundled plugin allowlist reconciliation tests ────────────── | COMMENT |
| MEDIUM | .github/workflows/release.yml | 295 | # ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/release.yml | 297 | # ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/release.yml | 379 | # ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/release.yml | 390 | # ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/release.yml | 569 | # ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/release.yml | 576 | # ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | electron/utils/plugin-install.ts | 674 | // ── Per-channel plugin helpers ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | electron/utils/plugin-install.ts | 718 | // ── Bulk startup installer ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/plugin-install.ts | 114 | // ── Known plugin-ID corrections ───────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/plugin-install.ts | 229 | // ── Plugin npm name mapping ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/plugin-install.ts | 419 | // ── pnpm-aware node_modules copy helpers ───────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/plugin-install.ts | 527 | // ── Core install / upgrade logic ───────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/plugin-install.ts | 653 | // ── Candidate source path builder ──────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-cli.ts | 20 | // ── Quoting helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-cli.ts | 40 | // ── CLI command string (for display / copy) ────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-cli.ts | 253 | // ── Packaged CLI wrapper path ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-cli.ts | 289 | // ── macOS / Linux install ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-cli.ts | 334 | // ── Auto-install on first launch ───────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-cli.ts | 494 | // ── Completion helpers ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/minimax-oauth.ts | 16 | // ── Constants ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/minimax-oauth.ts | 44 | // ── Types ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/minimax-oauth.ts | 87 | // ── OAuth flow steps ───────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/minimax-oauth.ts | 211 | // ── Public API ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-workspace.ts | 19 | // ── Helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-workspace.ts | 119 | // ── Pure helpers (no I/O) ──────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-workspace.ts | 196 | // ── Workspace directory resolution ─────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-workspace.ts | 263 | // ── Bootstrap file repair ──────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-workspace.ts | 307 | // ── Context merging ────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/logger.ts | 46 | // ── Async write buffer ─────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/logger.ts | 86 | // ── Initialisation ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/logger.ts | 115 | // ── Level / path accessors ─────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/logger.ts | 129 | // ── Formatting ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/logger.ts | 150 | // ── Core write ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/logger.ts | 178 | // ── Public log methods ─────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/logger.ts | 212 | // ── Log retrieval (for UI / diagnostics) ───────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 282 | // ── Helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 318 | // ── Types ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 415 | // ── Auth Profiles I/O ──────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 509 | // ── Agent Discovery ────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 521 | // ── OpenClaw Config Helpers ────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 948 | // ── Exported Functions (all async) ─────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 2926 | // ── skills section ────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 2945 | // ── plugins section ────────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3014 | // ── commands section ─────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3028 | // ── tools.web.search.kimi ───────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3069 | // ── tools.profile & sessions.visibility ─────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3119 | // ── tools.exec approvals (OpenClaw 3.28+) ────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3139 | // ── session.dmScope ───────────────────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3157 | // ── Skill Workshop hard-disable (OpenClaw 6.10+) ───────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3247 | // ── plugins.entries.feishu cleanup ────────────────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3267 | // ── MiniMax merged-plugin compatibility cleanup ───────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3295 | // ── acpx legacy config/install cleanup ───────────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3403 | // ── wecom-openclaw-plugin → wecom migration ──────────────── | COMMENT |
| MEDIUM | electron/utils/openclaw-auth.ts | 3428 | // ── qqbot built-in channel cleanup ────────────────────────── | COMMENT |
| 38 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/provider-runtime-sync.test.ts | 251 | email: 'user@example.com', | CODE |
| LOW | tests/e2e/image-generation-settings.spec.ts | 105 | await expect(page.getByTestId('image-generation-relay-api-key')).toHaveAttribute('placeholder', /.+/); | CODE |
| LOW⚡ | shared/i18n/locales/ja/channels.json | 156 | "placeholder": "Discord ボットトークン" | CODE |
| LOW⚡ | shared/i18n/locales/ja/channels.json | 160 | "placeholder": "例: 123456789012345678", | CODE |
| LOW⚡ | shared/i18n/locales/ja/channels.json | 165 | "placeholder": "例: 123456789012345678", | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 134 | "placeholder": "123456:ABC-DEF..." | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 138 | "placeholder": "例: 123456789, 987654321", | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 204 | "placeholder": "dingxxxxxx" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 208 | "placeholder": "アプリのシークレット" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 222 | "placeholder": "+1234567890" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 238 | "placeholder": "cli_xxxxxx" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 242 | "placeholder": "アプリのシークレット" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 258 | "placeholder": "ww_xxxxxx" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 262 | "placeholder": "WeCom Bot のシークレット" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 276 | "placeholder": "http://localhost:1234" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 280 | "placeholder": "サーバーのパスワード" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 295 | "placeholder": "https://matrix.org" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 299 | "placeholder": "アクセストークン" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 314 | "placeholder": "LINE チャンネルアクセストークン" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 318 | "placeholder": "LINE チャンネルシークレット" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 333 | "placeholder": "Microsoft App ID" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 337 | "placeholder": "Microsoft App Password" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 353 | "placeholder": "/path/to/service-account.json" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 369 | "placeholder": "https://your-mattermost.com" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 373 | "placeholder": "ボットアクセストークン" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 388 | "placeholder": "QQ ボットの App ID" | CODE |
| LOW | shared/i18n/locales/ja/channels.json | 392 | "placeholder": "QQ ボットの Client Secret" | CODE |
| LOW⚡ | shared/i18n/locales/ru/channels.json | 156 | "placeholder": "Токен вашего Discord-бота" | CODE |
| LOW⚡ | shared/i18n/locales/ru/channels.json | 160 | "placeholder": "напр., 123456789012345678", | CODE |
| LOW⚡ | shared/i18n/locales/ru/channels.json | 165 | "placeholder": "напр., 123456789012345678", | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 134 | "placeholder": "123456:ABC-DEF..." | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 138 | "placeholder": "напр., 123456789, 987654321", | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 204 | "placeholder": "dingxxxxxx" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 208 | "placeholder": "Секрет вашего приложения" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 223 | "placeholder": "+1234567890" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 238 | "placeholder": "cli_xxxxxx" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 242 | "placeholder": "Секрет вашего приложения" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 258 | "placeholder": "ww_xxxxxx" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 262 | "placeholder": "Секрет вашего WeCom бота" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 277 | "placeholder": "http://localhost:1234" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 281 | "placeholder": "Пароль вашего сервера" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 296 | "placeholder": "https://matrix.org" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 300 | "placeholder": "Ваш access token" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 315 | "placeholder": "Ваш LINE channel access token" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 319 | "placeholder": "Ваш LINE channel secret" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 334 | "placeholder": "Ваш Microsoft App ID" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 338 | "placeholder": "Ваш Microsoft App Password" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 354 | "placeholder": "/path/to/service-account.json" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 370 | "placeholder": "https://your-mattermost.com" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 374 | "placeholder": "Ваш bot access token" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 389 | "placeholder": "Ваш QQ Bot App ID" | CODE |
| LOW | shared/i18n/locales/ru/channels.json | 393 | "placeholder": "Ваш QQ Bot Client Secret" | CODE |
| LOW⚡ | shared/i18n/locales/zh/channels.json | 156 | "placeholder": "您的 Discord 机器人令牌" | CODE |
| LOW⚡ | shared/i18n/locales/zh/channels.json | 160 | "placeholder": "例如 123456789012345678", | CODE |
| LOW⚡ | shared/i18n/locales/zh/channels.json | 165 | "placeholder": "例如 123456789012345678", | CODE |
| LOW | shared/i18n/locales/zh/channels.json | 134 | "placeholder": "123456:ABC-DEF..." | CODE |
| LOW | shared/i18n/locales/zh/channels.json | 138 | "placeholder": "例如 123456789, 987654321", | CODE |
| LOW | shared/i18n/locales/zh/channels.json | 204 | "placeholder": "dingxxxxxx" | CODE |
| LOW | shared/i18n/locales/zh/channels.json | 208 | "placeholder": "您的应用密钥" | CODE |
| LOW | shared/i18n/locales/zh/channels.json | 223 | "placeholder": "+1234567890" | CODE |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | electron-builder.yml | 41 | # lru-cache CJS/ESM interop: older CJS versions (v5, v6, v7) don't export | COMMENT |
| LOW | .github/workflows/release.yml | 201 | } | COMMENT |
| LOW | electron/utils/channel-config.ts | 21 | COMMENT | |
| LOW | electron/main/index.ts | 61 | app.commandLine.appendSwitch('remote-debugging-port', requestedRemoteDebuggingPort); | COMMENT |
| LOW | electron/gateway/process-launcher.ts | 121 | const runtimeEnv = { ...forkEnv }; | COMMENT |
| LOW | src/stores/chat.ts | 3921 | // Mark this session as most recently active | COMMENT |
| LOW | src/stores/chat.ts | 4461 | if (clearLifecycle && !toolOnly) { | COMMENT |
| LOW | src/stores/chat.ts | 4481 | // `chat.history`, and the persistence runs on the order of | COMMENT |
| LOW | src/stores/chat/helpers.ts | 801 | // so we want them recognised even though the leading colon would | COMMENT |
| LOW | src/stores/chat/helpers.ts | 1201 | // The renderer cannot fetch the URL directly, so we surface it as an | COMMENT |
| LOW | src/stores/chat/session-actions.ts | 381 | })); | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/crop_qr.py | 46 | except Exception as e: | CODE |
| MEDIUM | scripts/crop_qr.py | 47 | print(f"Error processing {path}: {e}") | CODE |
| MEDIUM | scripts/crop_qr.py | 14 | def process_image(path): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/pages/Setup/index.tsx | 676 | // Step 1: Initialize all skills to 'installing' state for UI | COMMENT |
| LOW⚡ | src/pages/Setup/index.tsx | 680 | // Step 2: Call the backend to install uv and setup Python | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/pages/Setup/index.tsx | 676 | // Step 1: Initialize all skills to 'installing' state for UI | COMMENT |
| LOW⚡ | src/pages/Setup/index.tsx | 680 | // Step 2: Call the backend to install uv and setup Python | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/stores/chat/runtime-send-actions.ts | 141 | // entire agentic conversation finishes — the poll must run in parallel. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | electron/utils/uv-env.ts | 22 | '# This file is managed by ClawX.', | CODE |