Free, local, open-source 24/7 Cowork app for OpenClaw, Hermes Agent, Claude Code, Codex, OpenCode, Gemini CLI and 20+ more CLI | Customize your assistants | Star if you like it!
This report presents the forensic synthetic code analysis of iOfficeAI/AionUi, a TypeScript project with 30,009 GitHub stars. SynthScan v2.0 examined 322,840 lines of code across 1776 source files, recording 940 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 5.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 940 distinct pattern matches across 11 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 |
|---|---|---|---|---|
| MEDIUM | tests/e2e/fixtures.ts | 321 | // ── Cleanup ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/feedback-scenarios.e2e.ts | 47 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/feedback-scenarios.e2e.ts | 49 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/e2e/specs/feedback-scenarios.e2e.ts | 65 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/e2e/specs/feedback-scenarios.e2e.ts | 73 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/e2e/specs/feedback-scenarios.e2e.ts | 75 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/e2e/specs/feedback-scenarios.e2e.ts | 81 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/e2e/specs/feedback-scenarios.e2e.ts | 83 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/e2e/specs/feedback-scenarios.e2e.ts | 85 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/feedback-scenarios.e2e.ts | 109 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/feedback-scenarios.e2e.ts | 111 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/feedback-scenarios.e2e.ts | 133 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/feedback-scenarios.e2e.ts | 135 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/e2e/specs/webui.e2e.ts | 20 | // ── Page loads ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/e2e/specs/webui.e2e.ts | 27 | // ── Enable toggle ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/e2e/specs/webui.e2e.ts | 36 | // ── Port & URL ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/webui.e2e.ts | 61 | // ── Allow remote toggle ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/webui.e2e.ts | 72 | // ── Start / Stop lifecycle ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/webui.e2e.ts | 122 | // ── Screenshot ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/cron-crud.e2e.ts | 57 | // ── Bridge helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/cron-crud.e2e.ts | 71 | // ── Conversation helpers ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/cron-crud.e2e.ts | 118 | // ── UI helpers ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/cron-crud.e2e.ts | 133 | // ── Tests ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/navigation.e2e.ts | 10 | // ── Guid Page ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/navigation.e2e.ts | 40 | // ── Settings Pages ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/navigation.e2e.ts | 72 | // ── Cross-page navigation ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 14 | // ── ACP Adapters ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 43 | // ── MCP Servers ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 62 | // ── Assistants ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 82 | // ── Agents ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 106 | // ── Skills ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 126 | // ── Themes ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 146 | // ── Settings Tabs ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 177 | // ── WebUI Contributions ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 211 | // ── Channel Plugins ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-ipc-queries.e2e.ts | 238 | // ── Performance Budget ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/team-describe-assistant.e2e.ts | 211 | // ── 1. Create team through the assistant-only UI flow ───────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/team-describe-assistant.e2e.ts | 226 | // ── 2. Read the port + auth token from the leader conversation ─────── | COMMENT |
| MEDIUM | tests/e2e/specs/team-describe-assistant.e2e.ts | 255 | // ── 3a. Resolve a preset that's currently enabled in this env ──────── | COMMENT |
| MEDIUM | tests/e2e/specs/team-describe-assistant.e2e.ts | 283 | // ── 3b. Reject bogus auth token (defence-in-depth smoke test) ──────── | COMMENT |
| MEDIUM | tests/e2e/specs/team-describe-assistant.e2e.ts | 303 | // ── 3c. Surface a useful error when preset id is unknown ───────────── | COMMENT |
| MEDIUM | tests/e2e/specs/team-describe-assistant.e2e.ts | 310 | // ── 4. team_spawn_agent using the same assistant_id ────────────────── | COMMENT |
| MEDIUM | tests/e2e/specs/ext-themes-stability.e2e.ts | 10 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/e2e/specs/ext-themes-stability.e2e.ts | 12 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/e2e/specs/ext-themes-stability.e2e.ts | 40 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/e2e/specs/ext-themes-stability.e2e.ts | 42 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/e2e/specs/ext-themes-stability.e2e.ts | 70 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/e2e/specs/ext-themes-stability.e2e.ts | 72 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …sts/e2e/features/settings/system/timeout-config.e2e.ts | 66 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sts/e2e/features/settings/system/timeout-config.e2e.ts | 68 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sts/e2e/features/settings/system/timeout-config.e2e.ts | 88 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sts/e2e/features/settings/system/timeout-config.e2e.ts | 90 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sts/e2e/features/settings/system/timeout-config.e2e.ts | 110 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sts/e2e/features/settings/system/timeout-config.e2e.ts | 112 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sts/e2e/features/settings/system/timeout-config.e2e.ts | 136 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …sts/e2e/features/settings/system/timeout-config.e2e.ts | 138 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/features/settings/system/preferences.e2e.ts | 20 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/features/settings/system/preferences.e2e.ts | 22 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/features/settings/system/preferences.e2e.ts | 65 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/e2e/features/settings/system/preferences.e2e.ts | 67 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| 162 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/e2e/features/settings/skills/batch-import.e2e.ts | 74 | // Step 2: Click "Import All" button | COMMENT |
| LOW | tests/e2e/features/settings/skills/edge-cases.e2e.ts | 152 | // Step 1: Add highlight parameter to current URL via history API | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 86 | // Step 2: Locate "My Skills" section | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 90 | // Step 4: Verify skill count badge (should show 2) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 147 | // Step 2: Locate target skill card in My Skills section | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 151 | // Step 3: Hover to show delete button (may require actual hover) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 158 | // Step 4: Click delete button | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 162 | // Step 5: Verify confirmation modal appears | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 172 | // Step 6: Click confirm button (Arco Modal confirm button) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 233 | // Step 2: Locate the builtin skill card | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 237 | // Step 3: Hover to card to reveal buttons | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 274 | // Step 2: Locate "Discovered External Skills" section | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 281 | // Step 4: Click Tab button for this test's specific source. | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 335 | // Step 2: Locate external skill card | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 344 | // Step 3: Click the card to import (entire card is clickable) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 390 | // Step 2: Locate "Add Path" button in External Skills section | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 397 | // Step 3: Click "Add Path" button | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 407 | // Step 4: Enter source name and path | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 417 | // Step 5: Click confirm (Arco Modal OK button) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 490 | // Step 2: Locate skill card in "My Skills" | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 494 | // Step 3: Hover to show "Export" button and wait | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 501 | // Step 4: Click "Export" button to open Dropdown (force click to avoid hover issues) | COMMENT |
| LOW | tests/e2e/features/settings/skills/core-ui.e2e.ts | 293 | // Step 5: Verify skill card is displayed | COMMENT |
| LOW | tests/e2e/features/settings/skills/core-ui.e2e.ts | 512 | // Step 5: Select target source from dropdown menu | COMMENT |
| LOW | tests/e2e/features/settings/skills/url-highlight.e2e.ts | 58 | // Step 1: Add highlight parameter via history API | COMMENT |
| LOW | tests/e2e/features/settings/skills/url-highlight.e2e.ts | 99 | // Step 2: Wait for highlight to disappear (2 seconds) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 72 | // Step 2: Dynamically add new skill to external source directory | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 79 | // Step 3: Click external refresh button | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 129 | // Step 3: Fill in duplicate path | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 136 | // Step 4: Click Confirm button (use Arco's OK button class) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 188 | // Step 2: Fill only Name field | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 197 | // Step 3: Clear Name, fill only Path field | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 207 | // Step 4: Fill both fields | COMMENT |
| LOW | tests/e2e/features/settings/skills/path-export.e2e.ts | 117 | // Step 2: Try to add the same path again via UI | COMMENT |
| LOW | tests/e2e/features/settings/skills/path-export.e2e.ts | 169 | // Step 1: Open add custom path modal | COMMENT |
| LOW | tests/e2e/features/settings/skills/path-export.e2e.ts | 250 | // Step 2: Try to export the skill | COMMENT |
| LOW | tests/e2e/features/settings/skills/path-export.e2e.ts | 263 | // Step 3: Select target source from dropdown | COMMENT |
| LOW | tests/e2e/features/settings/skills/manual-import.e2e.ts | 41 | // Step 1: Mock dialog.showOpenDialog to return test skill path | COMMENT |
| LOW | tests/e2e/features/settings/skills/manual-import.e2e.ts | 61 | // Step 2: Click "Import from Folder" button | COMMENT |
| LOW | tests/e2e/features/settings/skills/search.e2e.ts | 76 | // Step 2: Enter search keyword in My Skills search box | COMMENT |
| LOW | tests/e2e/features/settings/skills/search.e2e.ts | 118 | // Step 2: Search with non-existent keyword | COMMENT |
| LOW | tests/e2e/features/settings/skills/search.e2e.ts | 164 | // Step 2: Search external skills | COMMENT |
| LOW | tests/e2e/features/settings/skills/search.e2e.ts | 213 | // Step 2: Search with non-existent keyword | COMMENT |
| LOW | tests/e2e/features/settings/skills/special-cases.e2e.ts | 164 | // Step 1: Click refresh button rapidly 3 times | COMMENT |
| LOW⚡ | …e2e/features/settings/skills/refresh-empty-tabs.e2e.ts | 60 | // Step 2: Dynamically add new skill via Bridge | COMMENT |
| LOW⚡ | …e2e/features/settings/skills/refresh-empty-tabs.e2e.ts | 69 | // Step 3: Click refresh button | COMMENT |
| LOW | …e2e/features/settings/skills/refresh-empty-tabs.e2e.ts | 159 | // Step 2: Verify default tab (first source) is active | COMMENT |
| LOW | …e2e/features/settings/skills/refresh-empty-tabs.e2e.ts | 176 | // Step 3: Click tab B | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 85 | // Step 1: Screenshot initial guid page | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 90 | // Step 2: Create conversation via bridge (uses prioritized aionrs-compatible provider) | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 99 | // Step 3: Send simple message | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 103 | // Step 4: Wait for AI reply | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 159 | // Step 1: Create temp directory with test folder | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 167 | // Step 2: Create conversation via bridge with workspace pre-configured | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 175 | // Step 3: Send message asking about folder (via bridge, no UI interaction needed) | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 181 | // Step 4: Wait for AI reply | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 228 | // Step 1: Create test file in workspace | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 235 | // Step 2: Create conversation via bridge (Electron mode) | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 245 | // Step 3: Send message about file (via bridge) | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 255 | // Step 4: Wait for AI reply | COMMENT |
| 130 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/e2e/features/settings/skills/batch-import.e2e.ts | 74 | // Step 2: Click "Import All" button | COMMENT |
| LOW | tests/e2e/features/settings/skills/edge-cases.e2e.ts | 152 | // Step 1: Add highlight parameter to current URL via history API | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 86 | // Step 2: Locate "My Skills" section | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 90 | // Step 4: Verify skill count badge (should show 2) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 147 | // Step 2: Locate target skill card in My Skills section | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 151 | // Step 3: Hover to show delete button (may require actual hover) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 158 | // Step 4: Click delete button | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 162 | // Step 5: Verify confirmation modal appears | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 172 | // Step 6: Click confirm button (Arco Modal confirm button) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 233 | // Step 2: Locate the builtin skill card | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 237 | // Step 3: Hover to card to reveal buttons | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 274 | // Step 2: Locate "Discovered External Skills" section | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 281 | // Step 4: Click Tab button for this test's specific source. | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 335 | // Step 2: Locate external skill card | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 344 | // Step 3: Click the card to import (entire card is clickable) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 390 | // Step 2: Locate "Add Path" button in External Skills section | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 397 | // Step 3: Click "Add Path" button | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 407 | // Step 4: Enter source name and path | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 417 | // Step 5: Click confirm (Arco Modal OK button) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 490 | // Step 2: Locate skill card in "My Skills" | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 494 | // Step 3: Hover to show "Export" button and wait | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/core-ui.e2e.ts | 501 | // Step 4: Click "Export" button to open Dropdown (force click to avoid hover issues) | COMMENT |
| LOW | tests/e2e/features/settings/skills/core-ui.e2e.ts | 293 | // Step 5: Verify skill card is displayed | COMMENT |
| LOW | tests/e2e/features/settings/skills/core-ui.e2e.ts | 512 | // Step 5: Select target source from dropdown menu | COMMENT |
| LOW | tests/e2e/features/settings/skills/url-highlight.e2e.ts | 58 | // Step 1: Add highlight parameter via history API | COMMENT |
| LOW | tests/e2e/features/settings/skills/url-highlight.e2e.ts | 99 | // Step 2: Wait for highlight to disappear (2 seconds) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 72 | // Step 2: Dynamically add new skill to external source directory | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 79 | // Step 3: Click external refresh button | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 129 | // Step 3: Fill in duplicate path | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 136 | // Step 4: Click Confirm button (use Arco's OK button class) | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 188 | // Step 2: Fill only Name field | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 197 | // Step 3: Clear Name, fill only Path field | COMMENT |
| LOW⚡ | tests/e2e/features/settings/skills/path-export.e2e.ts | 207 | // Step 4: Fill both fields | COMMENT |
| LOW | tests/e2e/features/settings/skills/path-export.e2e.ts | 117 | // Step 2: Try to add the same path again via UI | COMMENT |
| LOW | tests/e2e/features/settings/skills/path-export.e2e.ts | 169 | // Step 1: Open add custom path modal | COMMENT |
| LOW | tests/e2e/features/settings/skills/path-export.e2e.ts | 250 | // Step 2: Try to export the skill | COMMENT |
| LOW | tests/e2e/features/settings/skills/path-export.e2e.ts | 263 | // Step 3: Select target source from dropdown | COMMENT |
| LOW | tests/e2e/features/settings/skills/manual-import.e2e.ts | 41 | // Step 1: Mock dialog.showOpenDialog to return test skill path | COMMENT |
| LOW | tests/e2e/features/settings/skills/manual-import.e2e.ts | 61 | // Step 2: Click "Import from Folder" button | COMMENT |
| LOW | tests/e2e/features/settings/skills/search.e2e.ts | 76 | // Step 2: Enter search keyword in My Skills search box | COMMENT |
| LOW | tests/e2e/features/settings/skills/search.e2e.ts | 118 | // Step 2: Search with non-existent keyword | COMMENT |
| LOW | tests/e2e/features/settings/skills/search.e2e.ts | 164 | // Step 2: Search external skills | COMMENT |
| LOW | tests/e2e/features/settings/skills/search.e2e.ts | 213 | // Step 2: Search with non-existent keyword | COMMENT |
| LOW | tests/e2e/features/settings/skills/special-cases.e2e.ts | 164 | // Step 1: Click refresh button rapidly 3 times | COMMENT |
| LOW⚡ | …e2e/features/settings/skills/refresh-empty-tabs.e2e.ts | 60 | // Step 2: Dynamically add new skill via Bridge | COMMENT |
| LOW⚡ | …e2e/features/settings/skills/refresh-empty-tabs.e2e.ts | 69 | // Step 3: Click refresh button | COMMENT |
| LOW | …e2e/features/settings/skills/refresh-empty-tabs.e2e.ts | 159 | // Step 2: Verify default tab (first source) is active | COMMENT |
| LOW | …e2e/features/settings/skills/refresh-empty-tabs.e2e.ts | 176 | // Step 3: Click tab B | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 85 | // Step 1: Screenshot initial guid page | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 90 | // Step 2: Create conversation via bridge (uses prioritized aionrs-compatible provider) | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 99 | // Step 3: Send simple message | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 103 | // Step 4: Wait for AI reply | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 159 | // Step 1: Create temp directory with test folder | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 167 | // Step 2: Create conversation via bridge with workspace pre-configured | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 175 | // Step 3: Send message asking about folder (via bridge, no UI interaction needed) | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 181 | // Step 4: Wait for AI reply | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 228 | // Step 1: Create test file in workspace | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 235 | // Step 2: Create conversation via bridge (Electron mode) | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 245 | // Step 3: Send message about file (via bridge) | COMMENT |
| LOW⚡ | …ts/e2e/features/conversations/aionrs/basic-flow.e2e.ts | 255 | // Step 4: Wait for AI reply | COMMENT |
| 102 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/renderer/messageMerging.dom.test.tsx | 66 | function createThinkingDoneMessage(msgId: string, duration: number): IMessageThinking { | CODE |
| LOW | tests/unit/renderer/cron/CreateTaskDialog.dom.test.tsx | 358 | function legacyJobWithoutAssistantId(): ICronJob { | CODE |
| LOW | tests/unit/bootstrap/buildWithBuilder.test.ts | 24 | function readInstallerErrorDefinitions(): Array<{ defineName: string; code: string }> { | CODE |
| LOW | tests/unit/bootstrap/buildWithBuilder.test.ts | 32 | function resolveAppBuilderInstallUtil(): string { | CODE |
| LOW | tests/unit/common/chatLib.test.ts | 37 | function createThinkingDoneMessage(msgId: string, duration: number): IMessageThinking { | CODE |
| LOW | tests/unit/previews/HTMLViewer.dom.test.tsx | 44 | function createConsoleMessageEvent({ | CODE |
| LOW | …sts/unit/assets/verifyBundledAioncoreResources.test.ts | 40 | function createManagedAcpToolFixture({ | CODE |
| LOW | tests/e2e/fixtures.ts | 46 | function attachRendererDiagnostics(page: Page): void { | CODE |
| LOW | tests/e2e/fixtures.ts | 65 | async function getRendererReadinessSnapshot(page: Page): Promise<Record<string, unknown>> { | CODE |
| LOW | tests/e2e/specs/ext-no-extensions.e2e.ts | 34 | async function launchAppWithoutExtensions(): Promise<ElectronApplication> { | CODE |
| LOW | tests/e2e/specs/ext-settings-tabs.e2e.ts | 25 | async function waitForExtensionSettingsTabs(page: Page, timeout = 10_000): Promise<string[]> { | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 54 | async function resolveFullAutoModeFromAgentMetadata( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 122 | async function refreshAssistantForBackend( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 136 | async function requireOnlineAssistantForBackend( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 199 | async function selectPreferredCronDialogAgent( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 206 | async function selectCronDialogAgentByPattern( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 245 | async function waitForCronCreateDialogToClose( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 376 | async function listAutoInjectBuiltinSkills( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 385 | async function expectCronBuiltinAutoSkill(page: import('@playwright/test').Page): Promise<void> { | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 444 | async function waitForCronCreationConfirmation( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 480 | async function waitForSkillSuggestMessage( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 517 | async function assertNoSkillSuggestMessageWithin( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 587 | async function waitForConversationWorkspace( | CODE |
| LOW | tests/e2e/specs/conversation-full-cycle.e2e.ts | 603 | async function removeConversationViaBridge( | CODE |
| LOW | …/specs/assistant-settings-conversation-defaults.e2e.ts | 186 | function querySnapshotByConversationId(dbPath: string, conversationId: string): SnapshotRow { | CODE |
| LOW | …/specs/assistant-settings-conversation-defaults.e2e.ts | 207 | function queryPreferencesByAssistantKey(dbPath: string, assistantKey: string): PreferenceRow { | CODE |
| LOW | …/specs/assistant-settings-conversation-defaults.e2e.ts | 225 | function queryOptionalPreferencesByAssistantKey(dbPath: string, assistantKey: string): PreferenceRow | null { | CODE |
| LOW | …/specs/assistant-settings-conversation-defaults.e2e.ts | 359 | async function sendGuidMessageCapturingCreateRequest( | CODE |
| LOW | …/specs/assistant-settings-conversation-defaults.e2e.ts | 405 | function locateConversationModelButton(page: Page) { | CODE |
| LOW | …/specs/assistant-settings-conversation-defaults.e2e.ts | 426 | async function captureConversationUiState(page: Page): Promise<ConversationUiState> { | CODE |
| LOW | …/specs/assistant-settings-conversation-defaults.e2e.ts | 443 | async function queryConversationLoadedState( | CODE |
| LOW | …/specs/assistant-settings-conversation-defaults.e2e.ts | 485 | async function reopenConversationFromHistory(page: Page, conversationId: string): Promise<void> { | CODE |
| LOW | …ts/e2e/features/settings/display/css-theme-crud.e2e.ts | 39 | async function deleteCustomThemeViaModal(page: import('@playwright/test').Page, name: string) { | CODE |
| LOW | …builtin-skill-migration/builtin-skill-migration.e2e.ts | 79 | async function listAutoInjectBuiltinSkills(page: Parameters<typeof httpGet>[0]): Promise<BuiltinAutoSkill[]> { | CODE |
| LOW | …es/conversations/message-list-real-conversation.e2e.ts | 35 | function createFakeClaudeConversation(id: string, assistantId: string) { | CODE |
| LOW | …es/conversations/message-list-real-conversation.e2e.ts | 239 | async function startScenarioInBackground( | CODE |
| LOW | …es/conversations/message-list-real-conversation.e2e.ts | 271 | async function waitForBackgroundScenario(page: Page): Promise<void> { | CODE |
| LOW | …es/conversations/message-list-real-conversation.e2e.ts | 297 | async function simulateManualScrollIntervention( | CODE |
| LOW | …features/conversations/acp/send-error-surfacing.e2e.ts | 101 | async function expectLatestErrorTipToContain( | CODE |
| LOW | …e/features/conversations/acp/empty-turn-warning.e2e.ts | 79 | async function waitForEmptyTurnController(page: Page, conversationId: string): Promise<void> { | CODE |
| LOW | tests/e2e/features/previews/preview-panel.e2e.ts | 36 | function makeExternalWorkspaceFile(ext: string, body: string): { filePath: string; workspace: string } { | CODE |
| LOW | tests/e2e/features/previews/preview-auto-open.e2e.ts | 21 | async function enableAutoPreviewOfficeFiles(page: import('@playwright/test').Page): Promise<void> { | CODE |
| LOW | tests/e2e/features/previews/preview-auto-open.e2e.ts | 41 | async function installWorkspaceOfficeWatchDebug(page: import('@playwright/test').Page): Promise<void> { | CODE |
| LOW | tests/e2e/features/previews/preview-auto-open.e2e.ts | 102 | async function getWorkspaceOfficeWatchDebug( | CODE |
| LOW | tests/e2e/features/previews/preview-auto-open.e2e.ts | 152 | async function createConversationWithWorkspace( | CODE |
| LOW | tests/e2e/cases/teams/team-tab-context.e2e.ts | 35 | async function waitForConversationMessage( | CODE |
| LOW | tests/e2e/helpers/navigation.ts | 163 | export async function resetGuidLastSelectedAgent(page: Page, _agentKey = 'aionrs'): Promise<void> { | CODE |
| LOW | tests/e2e/helpers/permissions.ts | 5 | async function clickPreferredPermissionOption(card: Locator): Promise<boolean> { | CODE |
| LOW | tests/e2e/helpers/permissions.ts | 52 | export function startAutoApprovePermissionMessages(page: Page, intervalMs = 500): () => void { | CODE |
| LOW | tests/e2e/helpers/permissions.ts | 81 | export async function waitForPermissionMessageCard( | CODE |
| LOW | tests/e2e/helpers/chatAionrs.ts | 155 | export async function resolveAionrsPreconditions(page: Page): Promise<{ | CODE |
| LOW | tests/e2e/helpers/chatAionrs.ts | 170 | export async function createAionrsConversationViaBridge( | CODE |
| LOW | tests/e2e/helpers/assistantSettings.ts | 10 | function waitForAssistantDetailResponse(page: Page, assistantId: string): Promise<unknown> { | CODE |
| LOW | tests/e2e/helpers/assistantSettings.ts | 199 | export async function waitForAssistantEditorClose(page: Page): Promise<void> { | CODE |
| LOW | tests/e2e/helpers/selectors.ts | 143 | export function assistantOverflowPillById(id: string): string { | CODE |
| LOW | tests/e2e/helpers/skillsHub.ts | 185 | export async function createTempExternalSourceDir(): Promise<{ path: string; cleanup: () => Promise<void> }> { | CODE |
| LOW | tests/e2e/helpers/conversation.ts | 149 | export async function findAssistantIdForBackend( | CODE |
| LOW | tests/e2e/helpers/conversation.ts | 158 | export async function selectAssistantForBackend(page: Page, backend: string): Promise<string | null> { | CODE |
| LOW | public/sw.js | 94 | function isAssetContentTypeMismatch(request, response) { | CODE |
| LOW | mobile/src/services/pendingInitialMessages.ts | 12 | export function consumePendingInitialMessage(conversationId: string): string | undefined { | CODE |
| 220 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/renderer/hooks/teamCreateModal.dom.test.tsx | 209 | expect(searchInput).toHaveAttribute('placeholder', 'Search'); | CODE |
| LOW | scripts/install-web.sh | 167 | # reliable marker of "placeholder". We avoid literal "__VERSION__" here | COMMENT |
| LOW | …sktop/src/renderer/components/base/AionSearchInput.tsx | 42 | 'value' | 'onChange' | 'placeholder' | 'disabled' | 'autoFocus' | 'className' | CODE |
| LOW | …src/renderer/components/base/AionInlineSearchInput.tsx | 41 | 'value' | 'onChange' | 'placeholder' | 'disabled' | 'autoFocus' | 'className' | CODE |
| LOW | …renderer/services/i18n/locales/tr-TR/conversation.json | 4 | "placeholder": "Mesaj gönder, dosya yükle veya klasör aç...", | CODE |
| LOW | …renderer/services/i18n/locales/tr-TR/conversation.json | 82 | "placeholder": "Mesaj içeriğini ara...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/tr-TR/team.json | 33 | "placeholder": "Takım lideri asistana mesaj gönder..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/tr-TR/acp.json | 11 | "placeholder": "{{backend}}'a mesaj gönder..." | CODE |
| LOW | …renderer/services/i18n/locales/fr-FR/conversation.json | 4 | "placeholder": "Envoyez un message, téléversez des fichiers, ouvrez un dossier ou créez une tâche planifiée...", | CODE |
| LOW | …renderer/services/i18n/locales/fr-FR/conversation.json | 82 | "placeholder": "Rechercher dans le contenu des messages...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/fr-FR/team.json | 33 | "placeholder": "Envoyer un message à l'agent coordinateur..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/fr-FR/acp.json | 11 | "placeholder": "Envoyer un message à {{backend}}..." | CODE |
| LOW | …renderer/services/i18n/locales/de-DE/conversation.json | 4 | "placeholder": "Nachricht senden, Dateien hochladen, Ordner öffnen oder geplante Aufgabe erstellen...", | CODE |
| LOW | …renderer/services/i18n/locales/de-DE/conversation.json | 82 | "placeholder": "Nachrichteninhalt suchen...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/de-DE/team.json | 33 | "placeholder": "Nachricht an Dispatch-Agenten..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/de-DE/acp.json | 11 | "placeholder": "Nachricht an {{backend}} senden..." | CODE |
| LOW | …renderer/services/i18n/locales/es-ES/conversation.json | 4 | "placeholder": "Envía un mensaje, sube archivos, abre una carpeta o crea una tarea programada...", | CODE |
| LOW | …renderer/services/i18n/locales/es-ES/conversation.json | 82 | "placeholder": "Buscar en el contenido de mensajes...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/es-ES/team.json | 33 | "placeholder": "Mensaje al agente coordinador..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/es-ES/acp.json | 11 | "placeholder": "Enviar mensaje a {{backend}}..." | CODE |
| LOW | …renderer/services/i18n/locales/ru-RU/conversation.json | 4 | "placeholder": "Отправьте сообщение, загрузите файлы, откройте папку или создайте запланированную задачу...", | CODE |
| LOW | …renderer/services/i18n/locales/ru-RU/conversation.json | 82 | "placeholder": "Поиск по сообщениям...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/ru-RU/team.json | 33 | "placeholder": "Сообщение ассистенту-лидеру команды..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/ru-RU/acp.json | 11 | "placeholder": "Отправить сообщение {{backend}}..." | CODE |
| LOW | …renderer/services/i18n/locales/ja-JP/conversation.json | 4 | "placeholder": "メッセージの送信、ファイルの追加、フォルダーの追加、またはスケジュールタスクの作成...", | CODE |
| LOW | …renderer/services/i18n/locales/ja-JP/conversation.json | 82 | "placeholder": "メッセージ内容を検索...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/ja-JP/team.json | 33 | "placeholder": "チームリーダーアシスタントにメッセージを送信..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/ja-JP/acp.json | 11 | "placeholder": "{{backend}}にメッセージを送信..." | CODE |
| LOW | …renderer/services/i18n/locales/zh-CN/conversation.json | 4 | "placeholder": "发消息、上传文件、打开文件夹或创建定时任务...", | CODE |
| LOW | …renderer/services/i18n/locales/zh-CN/conversation.json | 82 | "placeholder": "搜索消息内容...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/zh-CN/team.json | 33 | "placeholder": "向团队 Leader 助手发消息..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/zh-CN/acp.json | 11 | "placeholder": "发送消息到 {{backend}}..." | CODE |
| LOW | …renderer/services/i18n/locales/zh-TW/conversation.json | 4 | "placeholder": "發送訊息、上傳檔案、開啟資料夾或建立定時任務...", | CODE |
| LOW | …renderer/services/i18n/locales/zh-TW/conversation.json | 82 | "placeholder": "搜尋訊息內容...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/zh-TW/team.json | 33 | "placeholder": "向團隊 Leader 助手發訊息..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/zh-TW/acp.json | 11 | "placeholder": "發送訊息到 {{backend}}..." | CODE |
| LOW | …renderer/services/i18n/locales/ko-KR/conversation.json | 4 | "placeholder": "메시지 전송, 파일 업로드, 폴더 열기 또는 예약 작업 만들기...", | CODE |
| LOW | …renderer/services/i18n/locales/ko-KR/conversation.json | 82 | "placeholder": "메시지 내용 검색...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/ko-KR/team.json | 33 | "placeholder": "팀 리더 어시스턴트에게 메시지 보내기..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/ko-KR/acp.json | 11 | "placeholder": "{{backend}}에게 메시지 보내기..." | CODE |
| LOW | …renderer/services/i18n/locales/pt-BR/conversation.json | 4 | "placeholder": "Envie uma mensagem, faça upload de arquivos, abra uma pasta, ou crie uma tarefa agendada...", | CODE |
| LOW | …renderer/services/i18n/locales/pt-BR/conversation.json | 82 | "placeholder": "Pesquisar conteúdo da mensagem...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/pt-BR/team.json | 33 | "placeholder": "Enviar mensagem ao assistente líder da equipe..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/pt-BR/acp.json | 11 | "placeholder": "Enviar mensagem para {{backend}}..." | CODE |
| LOW | …renderer/services/i18n/locales/en-US/conversation.json | 4 | "placeholder": "Send a message, upload files, open a folder, or create a scheduled task...", | CODE |
| LOW | …renderer/services/i18n/locales/en-US/conversation.json | 82 | "placeholder": "Search message content...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/en-US/team.json | 33 | "placeholder": "Message the team leader assistant..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/en-US/acp.json | 11 | "placeholder": "Send message to {{backend}}..." | CODE |
| LOW | …renderer/services/i18n/locales/uk-UA/conversation.json | 4 | "placeholder": "Надішліть повідомлення, завантажте файли, відкрийте папку або створіть заплановане завдання...", | CODE |
| LOW | …renderer/services/i18n/locales/uk-UA/conversation.json | 82 | "placeholder": "Пошук за повідомленнями...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/uk-UA/team.json | 33 | "placeholder": "Повідомлення для диспетчера..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/uk-UA/acp.json | 11 | "placeholder": "Надіслати повідомлення до {{backend}}..." | CODE |
| LOW | …renderer/services/i18n/locales/fa-IR/conversation.json | 4 | "placeholder": "پیام بفرستید، فایل آپلود کنید، پوشه باز کنید یا کار زمانبندیشده ایجاد کنید...", | CODE |
| LOW | …renderer/services/i18n/locales/fa-IR/conversation.json | 82 | "placeholder": "جستجوی محتوای پیام...", | CODE |
| LOW | …top/src/renderer/services/i18n/locales/fa-IR/team.json | 33 | "placeholder": "ارسال پیام به عامل ارسال..." | CODE |
| LOW | …ktop/src/renderer/services/i18n/locales/fa-IR/acp.json | 11 | "placeholder": "ارسال پیام به {{backend}}..." | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | .github/workflows/project-automation.yml | 131 | const item = result.organization.projectV2.items.nodes.find(i => i.content?.id === contentId); | CODE |
| CRITICAL | .github/workflows/project-automation.yml | 197 | const item = result.organization.projectV2.items.nodes.find(i => i.content?.id === contentId); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .pre-commit-config.yaml | 1 | # Pre-commit configuration for AionUi | COMMENT |
| LOW | tests/e2e/specs/feedback-scenarios.e2e.ts | 61 | await expect(page.locator(MODAL_BODY)).toBeVisible({ timeout: 5_000 }); | COMMENT |
| LOW | …builtin-skill-migration/builtin-skill-migration.e2e.ts | 441 | }); | COMMENT |
| LOW | …builtin-skill-migration/builtin-skill-migration.e2e.ts | 461 | test('S8: legacy {cacheDir}/builtin-skills/ is gone after the current Electron boot', async () => { | COMMENT |
| LOW | …builtin-skill-migration/builtin-skill-migration.e2e.ts | 481 | COMMENT | |
| LOW | tests/e2e/helpers/skillsHub.ts | 421 | * (TC-S-27 Option A - not used in current v1.3, uses Option B instead) | COMMENT |
| LOW | tests/e2e/helpers/skillsHub.ts | 441 | // } | COMMENT |
| LOW | tests/e2e/helpers/skillsHub.ts | 461 | // | COMMENT |
| LOW | public/pet-states/preview.html | 141 | <script> | COMMENT |
| LOW | scripts/install-web.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/prepare-release-assets.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/install-ubuntu.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | packages/desktop/src/renderer/pet/petHitRenderer.ts | 81 | document.addEventListener('contextmenu', (e) => e.preventDefault()); | COMMENT |
| LOW | packages/desktop/src/common/platform/index.ts | 21 | if (!_services) { | COMMENT |
| LOW | packages/desktop/src/process/utils/configureChromium.ts | 41 | } | COMMENT |
| LOW | packages/desktop/src/process/pet/petConfirmManager.ts | 101 | // off-screen — the card visually sits ~4px from the screen corner. | COMMENT |
| LOW | packages/desktop/src/process/pet/petManager.ts | 61 | // — even one with a pause to think — completes well before then. | COMMENT |
| LOW | …ges/desktop/src/process/services/autoUpdaterService.ts | 41 | // macOS → "-mac" (e.g. "latest" → "latest-mac.yml") | COMMENT |
| LOW | .github/workflows/release-distribute.yml | 1 | name: Distribute Release Assets | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …unit/assets/verifyBundledAioncoreInstallScript.test.ts | 7 | it('checks the Codex ACP platform binary path generated by aioncore', () => { | CODE |
| HIGH | .github/workflows/gpt-review.yml | 219 | '*🤖 This review was generated by AI and may contain inaccuracies. Please focus on issues you agree with an | CODE |
| HIGH | .github/workflows/gpt-pr-assessment.yml | 304 | '*🤖 This assessment was generated by AI and serves as a reference for maintainers. Please use your own jud | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/install-web.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/prepare-release-assets.sh | 7 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/e2e/specs/team-describe-assistant.e2e.ts | 257 | // payload wins. This keeps the test robust against user config drift. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/install-web.sh | 371 | # Check if BIN_DIR is already in PATH | COMMENT |
| LOW | scripts/install-web.sh | 412 | # Check if configuration already exists | COMMENT |
| LOW | .github/workflows/_build-reusable.yml | 467 | # Check if DMG was created (most important artifact) | COMMENT |