The verification layer for coding agents
This report presents the forensic synthetic code analysis of VibiumDev/vibium, a Go project with 2,913 GitHub stars. SynthScan v2.0 examined 101,165 lines of code across 517 source files, recording 432 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 6.1 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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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 432 distinct pattern matches across 13 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 | clients/java/src/main/java/com/vibium/Page.java | 68 | // ── Properties ────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 88 | // ── Navigation ────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 112 | // ── Page Info ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 132 | // ── Finding Elements ──────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 186 | // ── Screenshots & PDF ─────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 219 | // ── JavaScript Evaluation ─────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 280 | // ── Waiting ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 353 | // ── Viewport & Window ─────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 386 | // ── Emulation ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 415 | // ── Accessibility ─────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 435 | // ── Frames ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 463 | // ── Scrolling ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 481 | // ── Lifecycle ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 498 | // ── HTTP Headers ──────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 507 | // ── Network Interception ──────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 533 | // ── Event Listeners ───────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Page.java | 622 | // ── Internal ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Element.java | 43 | // ── Interaction ───────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Element.java | 140 | // ── State Queries ─────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Element.java | 247 | // ── Waiting ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Element.java | 269 | // ── Scoped Finding ────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/java/src/main/java/com/vibium/Element.java | 323 | // ── Internal ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/py/conftest.py | 10 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/py/conftest.py | 12 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/py/conftest.py | 22 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/py/conftest.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/py/conftest.py | 46 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/py/conftest.py | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/py/conftest.py | 63 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/py/conftest.py | 65 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/py/conftest.py | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/py/conftest.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 34 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 36 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 49 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 51 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 61 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 63 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 303 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 305 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 323 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 325 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 357 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 359 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 379 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 381 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 438 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 440 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 451 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 453 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 659 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 661 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 683 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 685 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 746 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 748 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 759 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/py/test_sync_api.py | 761 | # =========================================================================== | COMMENT |
| MEDIUM | tests/py/test_sync_api.py | 16 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/py/test_sync_api.py | 18 | # --------------------------------------------------------------------------- | COMMENT |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | clients/python/src/vibium/_types.py | 3 | CODE | |
| LOW | clients/python/src/vibium/client.py | 3 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 18 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 18 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 18 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 18 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 19 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 19 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 19 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 19 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 19 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 20 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 21 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 22 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 23 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 24 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 25 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 26 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 26 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 26 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 26 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 26 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 26 | CODE | |
| LOW | clients/python/src/vibium/__init__.py | 26 | CODE | |
| LOW | clients/python/src/vibium/_sync_base.py | 3 | CODE | |
| LOW | clients/python/src/vibium/errors.py | 3 | CODE | |
| LOW | clients/python/src/vibium/async_api/console.py | 3 | CODE | |
| LOW | clients/python/src/vibium/async_api/dialog.py | 3 | CODE | |
| LOW | clients/python/src/vibium/async_api/recording.py | 3 | CODE | |
| LOW | clients/python/src/vibium/async_api/clock.py | 3 | CODE | |
| LOW | clients/python/src/vibium/async_api/download.py | 3 | CODE | |
| LOW | clients/python/src/vibium/async_api/download.py | 6 | CODE | |
| LOW | clients/python/src/vibium/async_api/route.py | 3 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 11 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 11 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 11 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 11 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 12 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 12 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 12 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 12 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 13 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 14 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 15 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 16 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 16 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 17 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 18 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 19 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 19 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 20 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 21 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 22 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 23 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 23 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 23 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 23 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 23 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 23 | CODE | |
| LOW | clients/python/src/vibium/async_api/__init__.py | 23 | CODE | |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | clients/python/src/vibium/binary.py | 48 | def get_platform_package_name() -> str: | CODE |
| LOW⚡ | clients/python/src/vibium/async_api/page.py | 970 | def _handle_response_completed(self, params: Dict[str, Any]) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/async_api/page.py | 975 | def _handle_user_prompt_opened(self, params: Dict[str, Any]) -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 393 | async def _setup_capture_navigation(self, timeout: Optional[int] = None) -> Any: | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 939 | def _handle_before_request_sent(self, params: Dict[str, Any]) -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 1004 | def _handle_download_will_begin(self, params: Dict[str, Any]) -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 1016 | def _handle_download_completed(self, params: Dict[str, Any]) -> None: | CODE |
| LOW | tests/py/test_elements.py | 63 | async def test_find_role_text_combo(async_page, test_server): | CODE |
| LOW | tests/py/test_firefox.py | 59 | def test_firefox_recording_video(test_server, tmp_path): | CODE |
| LOW | tests/py/test_lifecycle.py | 6 | async def test_page_returns_default(fresh_async_browser): | CODE |
| LOW | tests/py/test_lifecycle.py | 56 | async def test_multiple_pages_independent(fresh_async_browser, test_server): | CODE |
| LOW | tests/py/test_lifecycle.py | 89 | async def test_remove_all_listeners(fresh_async_browser): | CODE |
| LOW | tests/py/test_lifecycle.py | 130 | def test_remove_all_listeners_sync(fresh_sync_browser): | CODE |
| LOW | tests/py/test_navigation.py | 59 | async def test_wait_until_url_timeout(async_page, test_server): | CODE |
| LOW⚡ | tests/py/test_auto_wait.py | 32 | async def test_timeout_error_message(fresh_async_browser, test_server): | CODE |
| LOW⚡ | tests/py/test_auto_wait.py | 44 | async def test_navigation_error_message(fresh_async_browser, test_server): | CODE |
| LOW | tests/py/test_frames.py | 6 | async def test_frames_returns_children(async_page, test_server): | CODE |
| LOW | tests/py/test_cookies.py | 100 | async def test_init_script_persists(fresh_async_browser, test_server): | CODE |
| LOW | tests/py/test_sync_download.py | 16 | def test_download_url_filename(sync_browser, test_server): | CODE |
| LOW | tests/py/test_sync_download.py | 30 | def test_remove_download_listeners(sync_browser, test_server): | CODE |
| LOW | tests/py/test_input_eval.py | 66 | async def test_screenshot_full_page(async_page, test_server): | CODE |
| LOW | tests/py/test_input_eval.py | 143 | async def test_eval_is_alias_for_evaluate(async_page, test_server): | CODE |
| LOW | tests/py/test_input_eval.py | 149 | async def test_large_message_does_not_crash_reader(async_page, test_server): | CODE |
| LOW | tests/py/test_errors.py | 11 | def test_errors_importable_from_vibium(): | CODE |
| LOW | tests/py/test_errors.py | 24 | def test_errors_importable_from_async_api(): | CODE |
| LOW | tests/py/test_errors.py | 39 | def test_errors_importable_from_sync_api(): | CODE |
| LOW⚡ | tests/py/test_errors.py | 54 | def test_timeout_is_builtin_subclass(): | CODE |
| LOW⚡ | tests/py/test_errors.py | 63 | def test_connection_is_builtin_subclass(): | CODE |
| LOW⚡ | tests/py/test_errors.py | 72 | def test_all_errors_subclass_vibium_error(): | CODE |
| LOW⚡ | tests/py/test_errors.py | 87 | def test_element_not_found_attributes(): | CODE |
| LOW⚡ | tests/py/test_errors.py | 96 | def test_bidi_error_attributes(): | CODE |
| LOW⚡ | tests/py/test_errors.py | 105 | def test_browser_crashed_attributes(): | CODE |
| LOW⚡ | tests/py/test_errors.py | 117 | async def test_element_not_found_raised(async_page, test_server): | CODE |
| LOW⚡ | tests/py/test_errors.py | 127 | def test_element_not_found_sync(sync_page, test_server): | CODE |
| LOW⚡ | tests/py/test_errors.py | 136 | async def test_timeout_error_is_catchable_as_builtin(async_page, test_server): | CODE |
| LOW | tests/py/test_network_dialog.py | 55 | async def test_route_fulfill_headers(net_browser, test_server): | CODE |
| LOW | tests/py/test_network_dialog.py | 129 | async def test_request_method_headers(net_browser, test_server): | CODE |
| LOW | tests/py/test_network_dialog.py | 331 | async def test_capture_event_response(net_browser, test_server): | CODE |
| LOW | tests/py/test_async_api.py | 6 | async def test_browser_start_returns_browser(async_browser): | CODE |
| LOW | tests/py/test_async_api.py | 17 | async def test_page_screenshot_returns_png(async_page, test_server): | CODE |
| LOW | tests/py/test_async_api.py | 29 | async def test_page_eval_executes_js(async_page, test_server): | CODE |
| LOW | tests/py/test_async_api.py | 35 | async def test_page_find_locates_element(async_page, test_server): | CODE |
| LOW | tests/py/test_interaction.py | 103 | async def test_find_all_nth_click_correct(async_page, test_server): | CODE |
| LOW | tests/py/test_interaction.py | 112 | async def test_login_flow_checkpoint(async_page, test_server): | CODE |
| LOW | tests/py/test_state.py | 73 | async def test_bounds_supports_dict_access(async_page, test_server): | CODE |
| LOW | tests/py/test_state.py | 176 | async def test_find_is_visible_chain(async_page, test_server): | CODE |
| LOW | tests/py/test_storage.py | 18 | async def test_set_storage_round_trip(fresh_async_browser, test_server): | CODE |
| LOW | tests/py/test_object_model.py | 15 | def test_launch_returns_browser(bro): | CODE |
| LOW | tests/py/test_emulation.py | 33 | async def test_set_content_with_title(async_page, test_server): | CODE |
| LOW⚡ | tests/py/test_emulation.py | 62 | async def test_emulate_media_reduced_motion(async_page, test_server): | CODE |
| LOW⚡ | tests/py/test_emulation.py | 69 | async def test_emulate_media_forced_colors(async_page, test_server): | CODE |
| LOW⚡ | tests/py/test_emulation.py | 76 | async def test_emulate_media_contrast(async_page, test_server): | CODE |
| LOW | tests/py/test_emulation.py | 140 | async def test_set_content_replaces(async_page, test_server): | STRING |
| LOW | tests/py/test_sync_network_events.py | 17 | def test_on_request_method_headers(sync_browser, test_server): | CODE |
| LOW | tests/py/test_sync_network_events.py | 46 | def test_on_response_url_status(sync_browser, test_server): | CODE |
| LOW | tests/py/test_sync_network_events.py | 66 | def test_remove_request_listeners(sync_browser, test_server): | CODE |
| LOW | tests/py/test_sync_network_events.py | 78 | def test_remove_response_listeners(sync_browser, test_server): | CODE |
| LOW | tests/py/test_sync_network_events.py | 90 | def test_on_request_post_data(sync_browser, test_server): | CODE |
| LOW | tests/py/test_sync_network_events.py | 129 | def test_capture_request_post_data(sync_browser, test_server): | CODE |
| LOW | tests/py/test_sync_network_events.py | 142 | def test_capture_response_body(sync_browser, test_server): | CODE |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/explanation/bidi-data-collector.md | 54 | ### Step 1: Register a collector | COMMENT |
| LOW | docs/explanation/bidi-data-collector.md | 83 | ### Step 2: Wait for a request to happen | COMMENT |
| LOW | docs/explanation/bidi-data-collector.md | 87 | ### Step 3: Retrieve the collected data | COMMENT |
| LOW | docs/explanation/sync-async-client-architecture.md | 581 | ### Step 1: Create the SyncBridge | COMMENT |
| LOW | docs/explanation/sync-async-client-architecture.md | 624 | ### Step 2: Create the worker with a dispatch table | COMMENT |
| LOW | docs/explanation/sync-async-client-architecture.md | 669 | ### Step 3: Create sync wrapper classes | COMMENT |
| LOW | docs/explanation/sync-async-client-architecture.md | 687 | ### Step 4: Configure the build | COMMENT |
| LOW | docs/explanation/sync-async-client-architecture.md | 712 | ### Step 5: Add callback support (if needed) | COMMENT |
| LOW | docs/tutorials/webdriver-bidi-raw.md | 45 | ## Step 1: Launch Firefox with BiDi Enabled | COMMENT |
| LOW | docs/tutorials/webdriver-bidi-raw.md | 71 | ## Step 2: Connect with websocat | COMMENT |
| LOW | docs/tutorials/webdriver-bidi-raw.md | 81 | ## Step 3: Start a Session | COMMENT |
| LOW | docs/tutorials/webdriver-bidi-raw.md | 102 | ## Step 4: Get the Browsing Context | COMMENT |
| LOW | docs/tutorials/webdriver-bidi-raw.md | 126 | ## Step 5: Navigate to a Page | COMMENT |
| LOW | docs/tutorials/webdriver-bidi-raw.md | 147 | ## Step 6: Get the Document Title | COMMENT |
| LOW | docs/tutorials/webdriver-bidi-raw.md | 171 | ## Step 7: Find and Click a Link | COMMENT |
| LOW | docs/tutorials/webdriver-bidi-raw.md | 209 | ## Step 8: Close the Browser | COMMENT |
| LOW | docs/tutorials/getting-started-java.md | 13 | ## Step 1: Install Java | COMMENT |
| LOW | docs/tutorials/getting-started-java.md | 50 | ## Step 2: Create a Project Folder | COMMENT |
| LOW | docs/tutorials/getting-started-java.md | 128 | ## Step 3: Write Your First Program | COMMENT |
| LOW | docs/tutorials/getting-started-java.md | 167 | ## Step 4: Run It | COMMENT |
| LOW | docs/tutorials/getting-started-js.md | 13 | ## Step 1: Install Node.js | COMMENT |
| LOW | docs/tutorials/getting-started-js.md | 56 | ## Step 2: Create a Project Folder | COMMENT |
| LOW | docs/tutorials/getting-started-js.md | 68 | ## Step 3: Install Vibium | COMMENT |
| LOW | docs/tutorials/getting-started-js.md | 89 | ## Step 4: Write Your First Script | COMMENT |
| LOW | docs/tutorials/getting-started-js.md | 133 | ## Step 5: Run It | COMMENT |
| LOW | docs/tutorials/getting-started-python.md | 13 | ## Step 1: Install Python | COMMENT |
| LOW | docs/tutorials/getting-started-python.md | 48 | ## Step 2: Create a Project Folder | COMMENT |
| LOW | docs/tutorials/getting-started-python.md | 59 | ## Step 3: Install Vibium | COMMENT |
| LOW | docs/tutorials/getting-started-python.md | 80 | ## Step 4: Write Your First Script | COMMENT |
| LOW | docs/tutorials/getting-started-python.md | 114 | ## Step 5: Run It | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | clients/python/src/vibium/__init__.py | 37 | __all__ = [ | CODE |
| LOW⚡ | clients/python/src/vibium/async_api/clock.py | 73 | async def set_fixed_time(self, time: Union[int, str]) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/async_api/clock.py | 80 | async def set_system_time(self, time: Union[int, str]) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/async_api/clock.py | 87 | async def set_timezone(self, timezone: str) -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/__init__.py | 33 | __all__ = [ | CODE |
| LOW⚡ | clients/python/src/vibium/async_api/page.py | 657 | async def set_content(self, html: str) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/async_api/page.py | 661 | async def set_geolocation(self, coords: Dict[str, float]) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/async_api/page.py | 667 | async def set_window(self, **options: Any) -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 624 | async def set_viewport(self, size: Dict[str, int]) -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 760 | async def set_headers(self, headers: Dict[str, str]) -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 869 | async def _setup() -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/element.py | 122 | async def set_files(self, files: List[str], timeout: Optional[int] = None) -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/context.py | 56 | async def set_cookies(self, cookies: List[SetCookieParam]) -> None: | CODE |
| LOW | clients/python/src/vibium/async_api/context.py | 75 | async def set_storage(self, state: StorageState) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/sync_api/clock.py | 34 | def set_fixed_time(self, time: Union[int, str]) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/sync_api/clock.py | 37 | def set_system_time(self, time: Union[int, str]) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/sync_api/clock.py | 40 | def set_timezone(self, timezone: str) -> None: | CODE |
| LOW | clients/python/src/vibium/sync_api/__init__.py | 22 | __all__ = [ | CODE |
| LOW | clients/python/src/vibium/sync_api/page.py | 229 | def set_viewport(self, size: Dict[str, int]) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/sync_api/page.py | 252 | def set_content(self, html: str) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/sync_api/page.py | 255 | def set_geolocation(self, coords: Dict[str, float]) -> None: | CODE |
| LOW⚡ | clients/python/src/vibium/sync_api/page.py | 258 | def set_window(self, **options: Any) -> None: | CODE |
| LOW | clients/python/src/vibium/sync_api/page.py | 355 | def set_headers(self, headers: Dict[str, str]) -> None: | CODE |
| LOW | clients/python/src/vibium/sync_api/element.py | 84 | def set_files(self, files: List[str], timeout: Optional[int] = None) -> None: | CODE |
| LOW | clients/python/src/vibium/sync_api/context.py | 45 | def set_cookies(self, cookies: List[SetCookieParam]) -> None: | CODE |
| LOW | clients/python/src/vibium/sync_api/context.py | 54 | def set_storage(self, state: StorageState) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | clients/python/src/vibium/async_api/page.py | 198 | ("placeholder", placeholder), ("alt", alt), ("title", title), | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 233 | ("placeholder", placeholder), ("alt", alt), ("title", title), | CODE |
| LOW | clients/python/src/vibium/async_api/element.py | 228 | ("placeholder", placeholder), ("alt", alt), ("title", title), | CODE |
| LOW | clients/python/src/vibium/async_api/element.py | 270 | ("placeholder", placeholder), ("alt", alt), ("title", title), | CODE |
| LOW | …va/src/main/java/com/vibium/types/SelectorOptions.java | 40 | if (placeholder != null) params.put("placeholder", placeholder); | CODE |
| LOW | clicker/cmd/clicker/fill.go | 16 | Example: ` vibium fill "input[name=email]" "user@example.com" | CODE |
| LOW | clicker/cmd/clicker/find.go | 152 | result, err := daemonCall("browser_find", map[string]interface{}{"placeholder": args[0], "timeout": float64(placehold | CODE |
| LOW | clicker/internal/agent/handlers.go | 1060 | placeholder, _ := args["placeholder"].(string) | CODE |
| LOW | clicker/internal/agent/handlers.go | 1081 | {"role", role}, {"text", text}, {"label", label}, {"placeholder", placeholder}, | CODE |
| LOW | clicker/internal/agent/handlers.go | 1235 | const ph = el.getAttribute('placeholder'); | CODE |
| LOW | clicker/internal/agent/handlers.go | 1261 | const ph = node.getAttribute('placeholder'); | CODE |
| LOW | clicker/internal/agent/handlers.go | 2842 | const placeholder = el.getAttribute('placeholder'); | CODE |
| LOW | clicker/internal/agent/schema.go | 137 | "placeholder": map[string]interface{}{ | CODE |
| LOW | clicker/internal/api/handlers_elements.go | 106 | placeholder, _ := params["placeholder"].(string) | CODE |
| LOW | clicker/internal/api/handlers_elements.go | 279 | if (placeholder && el.getAttribute('placeholder') !== placeholder) return false; | CODE |
| LOW | clicker/internal/api/handlers_elements.go | 436 | labels := []string{"role", "text", "label", "placeholder", "alt", "title", "testid", "xpath"} | CODE |
| LOW | clicker/internal/api/handlers_a11y.go | 87 | const placeholder = el.getAttribute('placeholder'); | CODE |
| LOW | clicker/internal/api/handlers_a11y.go | 235 | const placeholder = el.getAttribute('placeholder'); | CODE |
| LOW | clicker/internal/api/helpers.go | 182 | ep.Placeholder, _ = params["placeholder"].(string) | CODE |
| LOW | docs/explanation/actionability.md | 157 | await page.find('#login-form input[type="email"]').fill('user@example.com'); | CODE |
| LOW | docs/explanation/actionability.md | 181 | await page.find({ label: 'Email' }).fill('user@example.com'); | CODE |
| LOW | docs/explanation/bidi-data-collector.md | 204 | await page.find('#name').fill('Jane Doe'); | CODE |
| LOW | docs/specs/ai-native-methods.md | 62 | data: { name: 'Jane Doe', address: '123 Main St', zip: '60601' } | CODE |
| LOW | docs/specs/ai-native-methods.md | 62 | data: { name: 'Jane Doe', address: '123 Main St', zip: '60601' } | CODE |
| LOW | docs/specs/java-client-spec.md | 436 | vibe.find("#username").fill("user@example.com"); | CODE |
| LOW | skills/vibe-check/SKILL.md | 221 | vibium fill @e1 "user@example.com" | CODE |
| LOW | skills/vibe-check/SKILL.md | 251 | vibium fill "input[name=email]" "user@example.com" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | clients/python/src/vibium/client.py | 58 | except Exception: | CODE |
| LOW | clients/python/src/vibium/cli.py | 36 | except Exception as e: | CODE |
| MEDIUM | clients/python/src/vibium/cli.py | 37 | print(f"Error: {e}") | CODE |
| LOW | clients/python/src/vibium/async_api/dialog.py | 48 | except Exception as e: | CODE |
| LOW | clients/python/src/vibium/async_api/dialog.py | 60 | except Exception as e: | CODE |
| LOW | clients/python/src/vibium/async_api/route.py | 47 | except Exception as e: | CODE |
| LOW | clients/python/src/vibium/async_api/route.py | 71 | except Exception as e: | CODE |
| LOW | clients/python/src/vibium/async_api/route.py | 82 | except Exception as e: | CODE |
| MEDIUM | clients/python/src/vibium/async_api/page.py | 319 | def _wait() -> Response: | CODE |
| LOW⚡ | clients/python/src/vibium/async_api/page.py | 985 | except Exception: | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 876 | except Exception: | CODE |
| LOW | clients/python/src/vibium/async_api/page.py | 956 | except Exception: | CODE |
| LOW | clients/python/src/vibium/async_api/browser.py | 85 | except Exception: | CODE |
| LOW | clients/python/src/vibium/async_api/network.py | 57 | except Exception: | CODE |
| LOW | clients/python/src/vibium/async_api/network.py | 101 | except Exception: | CODE |
| LOW | clients/python/src/vibium/sync_api/page.py | 95 | except Exception: | CODE |
| LOW | clients/python/src/vibium/sync_api/page.py | 427 | except Exception as e: | CODE |
| LOW | clients/python/src/vibium/sync_api/page.py | 454 | except Exception as e: | CODE |
| LOW | clients/python/src/vibium/sync_api/page.py | 486 | except Exception as e: | CODE |
| MEDIUM | clients/python/src/vibium/sync_api/page.py | 90 | def __repr__(self) -> str: | CODE |
| LOW | tests/py/test_firefox.py | 66 | except Exception as err: | CODE |
| LOW⚡ | tests/py/test_auto_wait.py | 39 | except Exception as err: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | clients/python/src/vibium/async_api/recording.py | 70 | CODE | |
| LOW | clients/python/src/vibium/async_api/page.py | 176 | CODE | |
| LOW | clients/python/src/vibium/async_api/page.py | 211 | CODE | |
| LOW | clients/python/src/vibium/async_api/element.py | 203 | CODE | |
| LOW | clients/python/src/vibium/async_api/element.py | 245 | CODE | |
| LOW | clients/python/src/vibium/sync_api/recording.py | 21 | CODE | |
| LOW | clients/python/src/vibium/sync_api/page.py | 137 | CODE | |
| LOW | clients/python/src/vibium/sync_api/page.py | 159 | CODE | |
| LOW | clients/python/src/vibium/sync_api/element.py | 143 | CODE | |
| LOW | clients/python/src/vibium/sync_api/element.py | 165 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | clicker/cmd/clicker/helpers.go | 21 | // token that starts with '-' as a positional when it parses as a number. | COMMENT |
| LOW | clicker/internal/api/actionability.go | 161 | ` | COMMENT |
| LOW | clicker/internal/api/pierce.go | 1 | package api | COMMENT |
| LOW | clicker/internal/api/handlers_network.go | 221 | COMMENT | |
| LOW | clicker/internal/api/navigation.go | 1 | package api | COMMENT |
| LOW | scripts/mtl-verdict.sh | 1 | #!/bin/sh | COMMENT |
| LOW | scripts/mtlprobe.m | 1 | // Reports whether this machine pays the dead-virtual-GPU stall that | COMMENT |
| LOW | .github/workflows/test.yml | 141 | - name: Install Firefox | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | clicker/cmd/clicker/window.go | 19 | # Set window to 1920x1080 | COMMENT |
| LOW | clicker/cmd/clicker/window.go | 22 | # Set window to 1920x1080 at position (0, 0) | COMMENT |
| LOW | clicker/cmd/clicker/geolocation.go | 16 | # Set location to New York City | COMMENT |
| LOW | clicker/cmd/clicker/geolocation.go | 19 | # Set location to London with 10m accuracy`, | COMMENT |
| LOW | clicker/cmd/clicker/viewport.go | 19 | # Set viewport to 1280x720 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | clients/python/src/vibium/binary.py | 194 | CODE | |
| LOW | clients/python/src/vibium/client.py | 43 | CODE | |
| LOW | clients/python/src/vibium/async_api/page.py | 892 | CODE | |
| LOW | clients/python/src/vibium/async_api/page.py | 939 | CODE | |
| LOW | clients/python/src/vibium/async_api/page.py | 975 | CODE | |
| LOW | clients/python/src/vibium/sync_api/page.py | 304 | CODE | |
| LOW | tests/py/helpers/tutorial_runner.py | 24 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/py/test_emulation.py | 129 | () => resolve(null), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/helpers/test-server.js | 211 | function handleRequest(req, res) { | CODE |