Turn any browser into your terminal & command your agents on the go.
This report presents the forensic synthetic code analysis of amantus-ai/vibetunnel, a TypeScript project with 4,596 GitHub stars. SynthScan v2.0 examined 267,141 lines of code across 1069 source files, recording 521 pattern matches distributed across 10 syntactic categories. The overall adjusted score of 3.4 places this repository in the Likely human-written 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 521 distinct pattern matches across 10 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 | web/src/client/services/ssh-agent.test.ts | 145 | // ── parsePrivateKey / addKey ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/client/services/ssh-agent.test.ts | 252 | // ── sign ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/client/services/ssh-agent.test.ts | 300 | // ── persistence ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | ios/scripts/common.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | ios/scripts/common.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | ios/scripts/common.sh | 21 | # ============================================================================= | COMMENT |
| MEDIUM | ios/scripts/lint.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM | ios/scripts/lint.sh | 4 | # ============================================================================= | COMMENT |
| MEDIUM | ios/scripts/lint.sh | 25 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/create-zip.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/create-zip.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/create-zip.sh | 20 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mac/scripts/common.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mac/scripts/common.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/common.sh | 21 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/create-dmg.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/create-dmg.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/create-dmg.sh | 23 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mac/scripts/find-changelog.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mac/scripts/find-changelog.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mac/scripts/find-changelog.sh | 15 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/update-appcast.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/update-appcast.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/update-appcast.sh | 18 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/changelog-to-html.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/changelog-to-html.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/changelog-to-html.sh | 25 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/lint.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/lint.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/lint.sh | 26 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 125 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 127 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 178 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 180 | # ======================================== | COMMENT |
| MEDIUM⚡ | mac/scripts/release-checklist.sh | 214 | # ======================================== | COMMENT |
| MEDIUM⚡ | mac/scripts/release-checklist.sh | 216 | # ======================================== | COMMENT |
| MEDIUM⚡ | mac/scripts/release-checklist.sh | 249 | # ======================================== | COMMENT |
| MEDIUM⚡ | mac/scripts/release-checklist.sh | 251 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 298 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 300 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 330 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 332 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 368 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 370 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 388 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 390 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 412 | # ======================================== | COMMENT |
| MEDIUM | mac/scripts/release-checklist.sh | 414 | # ======================================== | COMMENT |
| MEDIUM⚡ | mac/scripts/build.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mac/scripts/build.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/build.sh | 42 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/normalize-release-titles.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/normalize-release-titles.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/normalize-release-titles.sh | 17 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mac/scripts/preflight-check.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mac/scripts/preflight-check.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/preflight-check.sh | 44 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/notarize-app.sh | 3 | # ============================================================================= | COMMENT |
| MEDIUM | mac/scripts/notarize-app.sh | 5 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mac/scripts/notarize-app.sh | 24 | # ============================================================================= | COMMENT |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/server/utils/git-hooks.ts | 69 | # Check if vt command is available | COMMENT |
| LOW | web/src/server/utils/git-hooks.ts | 124 | # Check if vt command is available | COMMENT |
| LOW | ios/run-tests.sh | 42 | # Check if xcbeautify is available | COMMENT |
| LOW | ios/scripts/lint.sh | 38 | # Check if project has Swift files | COMMENT |
| LOW | ios/scripts/vtlog.sh | 309 | # Check if file was created and has content | COMMENT |
| LOW | ios/scripts/test-with-coverage.sh | 14 | # Check if we're in the right directory | COMMENT |
| LOW | ios/scripts/test-with-coverage.sh | 29 | # Check if simulator exists, if not use the latest available | COMMENT |
| LOW | ios/scripts/test-with-coverage.sh | 50 | # Check if tests passed | COMMENT |
| LOW | ios/scripts/test-with-coverage.sh | 78 | # Check if coverage meets threshold (75% as per CI) | COMMENT |
| LOW | ios/scripts/quick-test.sh | 8 | # Check if we're in the right directory | COMMENT |
| LOW | mac/scripts/verify-app.sh | 164 | # Check if signed | COMMENT |
| LOW | mac/scripts/sign-and-notarize.sh | 218 | # Check if the app bundle exists | COMMENT |
| LOW⚡ | mac/scripts/sign-and-notarize.sh | 293 | # Check if the app bundle exists | COMMENT |
| LOW⚡ | mac/scripts/sign-and-notarize.sh | 302 | # Check if we should do code signing | COMMENT |
| LOW⚡ | mac/scripts/sign-and-notarize.sh | 309 | # Check if we should do notarization | COMMENT |
| LOW | mac/scripts/node-path-setup.sh | 14 | # Check if we're in a build context that needs to avoid Homebrew library contamination | COMMENT |
| LOW | mac/scripts/create-dmg.sh | 258 | # Check if secrets are available (without exposing their values) | COMMENT |
| LOW | mac/scripts/create-dmg.sh | 276 | # Check if specific keychain exists | COMMENT |
| LOW | mac/scripts/create-dmg.sh | 308 | # Check if we're in CI and have a specific keychain | COMMENT |
| LOW | mac/scripts/create-dmg.sh | 336 | # Check if any signing identity is available | COMMENT |
| LOW | mac/scripts/create-dmg.sh | 344 | # Check if our specific identity exists | COMMENT |
| LOW | mac/scripts/update-appcast.sh | 79 | # Check if there are changes to commit | COMMENT |
| LOW | mac/scripts/verify-appcast.sh | 34 | # Check if valid XML | COMMENT |
| LOW | mac/scripts/verify-appcast.sh | 84 | # Check if release exists on GitHub | COMMENT |
| LOW | mac/scripts/install-node.sh | 42 | # Check if pnpm is available | COMMENT |
| LOW | mac/scripts/build-web-frontend.sh | 108 | # Check if we need to rebuild | COMMENT |
| LOW | mac/scripts/build-web-frontend.sh | 111 | # Check if previous hash exists and matches current | COMMENT |
| LOW | mac/scripts/build-web-frontend.sh | 150 | # Check if pnpm is available (skip in CI when web artifacts are pre-built) | COMMENT |
| LOW | mac/scripts/build-web-frontend.sh | 179 | # Check if web directory exists | COMMENT |
| LOW⚡ | mac/scripts/build-web-frontend.sh | 456 | # Check if vibetunnel is executable | COMMENT |
| LOW⚡ | mac/scripts/build-web-frontend.sh | 461 | # Check if spawn-helper is executable | COMMENT |
| LOW⚡ | mac/scripts/build-web-frontend.sh | 466 | # Check if vibetunnel-fwd is executable | COMMENT |
| LOW⚡ | mac/scripts/build-web-frontend.sh | 476 | # Check if vt script is executable | COMMENT |
| LOW | mac/scripts/release-improved.sh | 79 | # Check if process is still running | COMMENT |
| LOW | mac/scripts/release-improved.sh | 142 | # Check if release is stale (>2 hours old) | COMMENT |
| LOW | mac/scripts/calculate-web-hash.sh | 23 | # Check if web directory exists | COMMENT |
| LOW | mac/scripts/lint.sh | 39 | # Check if project has Swift files | COMMENT |
| LOW | mac/scripts/validate-sparkle-signature.sh | 49 | # Check if sign_update is available | COMMENT |
| LOW | mac/scripts/notarize-dmg.sh | 50 | # Check if notarization was successful | COMMENT |
| LOW⚡ | mac/scripts/release-checklist.sh | 207 | # Check if this is a pre-release | COMMENT |
| LOW⚡ | mac/scripts/release-checklist.sh | 240 | # Check if release already exists | COMMENT |
| LOW | mac/scripts/build.sh | 151 | # Check if xcbeautify is available | COMMENT |
| LOW | mac/scripts/normalize-release-titles.sh | 105 | # Check if title needs updating | COMMENT |
| LOW | mac/scripts/release-state.sh | 195 | # Check if release can be resumed | COMMENT |
| LOW | mac/scripts/release-state.sh | 201 | # Check if any step is in progress or if there are pending steps after completed ones | COMMENT |
| LOW | mac/scripts/preflight-check.sh | 89 | # Check if on main branch | COMMENT |
| LOW | mac/scripts/preflight-check.sh | 97 | # Check if up to date with remote | COMMENT |
| LOW⚡ | mac/scripts/preflight-check.sh | 181 | # Check if monotonically increasing | COMMENT |
| LOW⚡ | mac/scripts/preflight-check.sh | 191 | # Check if Xcode project uses version.xcconfig | COMMENT |
| LOW⚡ | mac/scripts/preflight-check.sh | 198 | # Check if MARKETING_VERSION uses variable expansion | COMMENT |
| LOW⚡ | mac/scripts/preflight-check.sh | 206 | # Check if CURRENT_PROJECT_VERSION uses variable expansion | COMMENT |
| LOW⚡ | mac/scripts/preflight-check.sh | 372 | # Check if IS_PRERELEASE_BUILD is configured in Info.plist | COMMENT |
| LOW⚡ | mac/scripts/preflight-check.sh | 379 | # Check if UpdateChannel.swift has the flag detection logic | COMMENT |
| LOW⚡ | mac/scripts/preflight-check.sh | 386 | # Check if release script sets the environment variable | COMMENT |
| LOW⚡ | mac/scripts/preflight-check.sh | 393 | # Check if AppBehaviorSettingsManager uses defaultChannel | COMMENT |
| LOW | mac/scripts/notarize-app.sh | 67 | # Check if app bundle exists | COMMENT |
| LOW⚡ | mac/scripts/notarize-app.sh | 301 | # Check if notarytool is available | COMMENT |
| LOW | mac/scripts/test-vt-aliases.sh | 54 | # Check if vibetunnel exists | COMMENT |
| LOW | mac/scripts/generate-appcast.sh | 107 | # Check if cache file exists and has the signature | COMMENT |
| LOW | mac/scripts/generate-appcast.sh | 131 | # Check if we have a cached signature first | COMMENT |
| 43 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/node-pty/src/win/conpty.h | 1 | // Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | web/src/server/utils/prompt-patterns.ts | 21 | // biome-ignore lint/suspicious/noControlCharactersInRegex: Terminal prompts may contain escape sequences | COMMENT |
| LOW | web/src/server/utils/ansi-title-filter.ts | 61 | filter(chunk: string): string { | COMMENT |
| LOW | web/src/server/routes/git.test.ts | 281 | COMMENT | |
| LOW | web/src/client/utils/url-highlighter.ts | 21 | // Pattern breakdown: | COMMENT |
| LOW | ios/VibeTunnelTests/APIErrorTests.swift | 301 | COMMENT | |
| LOW | ios/VibeTunnelTests/SessionListViewModelTests.swift | 1 | import Foundation | COMMENT |
| LOW | ios/VibeTunnelTests/SessionListViewModelTests.swift | 81 | #expect(viewModel.isLoading == false) | COMMENT |
| LOW | ios/VibeTunnelTests/EdgeCaseTests.swift | 61 | } | COMMENT |
| LOW | ios/VibeTunnelTests/Mocks/MockKeychainService.swift | 61 | /// Generate a storage key with test isolation | COMMENT |
| LOW | ios/VibeTunnelTests/Mocks/MockKeychainService.swift | 101 | /// - Parameters: | COMMENT |
| LOW | ios/VibeTunnelTests/Utils/JSONValueTests.swift | 21 | #expect(object["name"]?.string == "VibeTunnel") | COMMENT |
| LOW | ios/VibeTunnelTests/Utils/LoggerTests.swift | 101 | logger.debug(makeMessage()) | COMMENT |
| LOW | ios/VibeTunnelTests/Models/ServerConfigTests.swift | 141 | // @Test("IPv6 with zone identifiers") | COMMENT |
| LOW | ios/VibeTunnelTests/Models/ServerProfileTests.swift | 21 | isPublic: false, | COMMENT |
| LOW | ios/VibeTunnelTests/Models/CastFileTests.swift | 21 | #expect(player.header.version == 2) | COMMENT |
| LOW | ios/VibeTunnelTests/Models/CastFileTests.swift | 201 | #expect(recorder.isRecording == true) | COMMENT |
| LOW | ios/VibeTunnelTests/Models/SessionTests.swift | 21 | "width": 80, | COMMENT |
| LOW | ios/VibeTunnelTests/Models/TerminalWidthTests.swift | 21 | } | COMMENT |
| LOW | ios/VibeTunnelTests/Models/TerminalWidthTests.swift | 41 | #expect(TerminalWidth.ultraWide160.description == "Ultra-wide") | COMMENT |
| LOW | ios/VibeTunnelTests/Models/TerminalWidthTests.swift | 61 | #expect(TerminalWidth.from(value: 100) == .modern100) | COMMENT |
| LOW | ios/VibeTunnelTests/Models/TerminalSnapshotTests.swift | 201 | COMMENT | |
| LOW | …/VibeTunnelTests/Services/ConnectionManagerTests.swift | 341 | #expect(mockStorage.bool(forKey: "connectionState") == true) | COMMENT |
| LOW | ios/scripts/common.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ios/scripts/lint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ios/VibeTunnel/Configuration/AppConfig.swift | 1 | import Foundation | COMMENT |
| LOW | ios/VibeTunnel/Models/FileEntry.swift | 21 | let isDir: Bool | COMMENT |
| LOW | ios/VibeTunnel/Models/CastFile.swift | 41 | let type: String // "o" for output, "i" for input, "r" for resize | COMMENT |
| LOW | ios/VibeTunnel/Models/CastFile.swift | 201 | /// ```swift | COMMENT |
| LOW | ios/VibeTunnel/Models/CastFile.swift | 261 | } | COMMENT |
| LOW | ios/VibeTunnel/Views/FileBrowserView.swift | 181 | self.showingFilePreview = true | COMMENT |
| LOW | ios/VibeTunnel/Views/FileBrowserView.swift | 261 | // Button(action: { showingNewFileAlert = true }, label: { | COMMENT |
| LOW | ios/VibeTunnel/Services/KeychainServiceProtocol.swift | 1 | import Foundation | COMMENT |
| LOW | ios/VibeTunnel/Services/KeychainServiceProtocol.swift | 21 | /// Delete a password for a server profile | COMMENT |
| LOW | mac/VibeTunnelTests/CLIInstallerTests.swift | 321 | COMMENT | |
| LOW | mac/VibeTunnelTests/SessionIdHandlingTests.swift | 161 | // Verify the session ID is a proper UUID | COMMENT |
| LOW | mac/VibeTunnelTests/SessionIdHandlingTests.swift | 181 | COMMENT | |
| LOW | mac/VibeTunnelTests/DashboardKeychainTests.swift | 341 | #expect(keychain.hasPassword()) | COMMENT |
| LOW | mac/VibeTunnelTests/ServerManagerTests.swift | 421 | // In CI with working binary, server behavior may vary | COMMENT |
| LOW | mac/VibeTunnelTests/SessionMonitorTests.swift | 101 | """ | COMMENT |
| LOW | mac/VibeTunnelTests/SessionMonitorTests.swift | 281 | COMMENT | |
| LOW | mac/VibeTunnelTests/NotificationServiceTests.swift | 61 | // This test verifies that NotificationPreferences correctly loads values from ConfigManager | COMMENT |
| LOW | mac/VibeTunnelTests/ServerEventTests.swift | 61 | COMMENT | |
| LOW | mac/VibeTunnelTests/ServerEventTests.swift | 81 | COMMENT | |
| LOW | …nelTests/Views/Settings/GeneralSettingsViewTests.swift | 21 | COMMENT | |
| LOW | …nelTests/Views/Settings/GeneralSettingsViewTests.swift | 81 | COMMENT | |
| LOW | mac/scripts/create-zip.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/common.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/create-dmg.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/find-changelog.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/update-appcast.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/changelog-to-html.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/release-improved.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/lint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/build.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/build.sh | 21 | # IS_PRERELEASE_BUILD=YES|NO Sets pre-release flag in Info.plist | COMMENT |
| LOW | mac/scripts/normalize-release-titles.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/preflight-check.sh | 1 | #!/bin/bash | COMMENT |
| LOW | mac/scripts/preflight-check.sh | 21 | # | COMMENT |
| LOW | mac/scripts/notarize-app.sh | 1 | #!/bin/bash | COMMENT |
| 79 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apple/docs/logging-private-fix.md | 52 | ### Step 1: Edit sudoers file | COMMENT |
| LOW | apple/docs/logging-private-fix.md | 58 | ### Step 2: Add the NOPASSWD rule | COMMENT |
| LOW | apple/docs/logging-private-fix.md | 71 | ### Step 3: Save and exit | COMMENT |
| LOW | apple/docs/logging-private-fix.md | 77 | ### Step 4: Test it | COMMENT |
| LOW | apple/docs/swift-concurrency.md | 727 | ### Step 1: Enable Warnings in Swift 5 Mode | COMMENT |
| LOW | apple/docs/swift-concurrency.md | 745 | ### Step 2: Fix Global Variables | COMMENT |
| LOW | apple/docs/swift-concurrency.md | 772 | ### Step 3: Add Sendable Conformances | COMMENT |
| LOW | apple/docs/swift-concurrency.md | 794 | ### Step 4: Isolate UI Code | COMMENT |
| LOW | apple/docs/swift-concurrency.md | 819 | ### Step 5: Handle Callbacks and Delegates | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 823 | // Step 0: Clean previous build | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 830 | // Step 1: Standard build process | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 940 | // Step 4: Bundle node-pty with dependencies | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 943 | // Step 5: Don't copy authenticate-pam - it's an optionalDependency that will be installed by npm | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 946 | // Step 6: Use package.npm.json if available, otherwise create clean package.json | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 1142 | // Step 9: Validate package with our comprehensive checks | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 1145 | // Step 10: Create npm package | COMMENT |
| LOW | web/scripts/build-npm.js | 851 | // Step 2: Multi-platform native module builds (unless current-only) | COMMENT |
| LOW | web/scripts/build-npm.js | 874 | // Step 3: Copy necessary files to dist-npm | COMMENT |
| LOW | web/scripts/build-npm.js | 1061 | // Step 6: Fix the CLI structure and bin scripts | COMMENT |
| LOW | web/scripts/build-npm.js | 1091 | // Step 7: Copy README files | COMMENT |
| LOW | web/scripts/build-npm.js | 1122 | // Step 8: Clean up test files in dist-npm | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 131 | // Step 1: Check if it's an alias and resolve it | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 163 | // Step 2: Resolve the full path if it's not already absolute | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 197 | // Step 3: Check if it's a symlink and resolve it | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 208 | // Step 4: Check if this is the Claude CLI binary | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 252 | // Step 5: It's Claude! Patch it | COMMENT |
| LOW | web/src/client/components/vibe-terminal-buffer.ts | 119 | // Step 1: Calculate font size to fit horizontally | COMMENT |
| LOW | web/src/client/components/vibe-terminal-buffer.ts | 139 | // Step 2: Calculate how many lines fit vertically with this font size | COMMENT |
| LOW⚡ | web/src/client/components/settings.ts | 307 | // Step 1: Check service worker | COMMENT |
| LOW⚡ | web/src/client/components/settings.ts | 313 | // Step 2: Check permissions | COMMENT |
| LOW⚡ | web/src/client/components/settings.ts | 320 | // Step 3: Check subscription | COMMENT |
| LOW⚡ | web/src/client/components/settings.ts | 327 | // Step 4: Check server status | COMMENT |
| LOW | web/src/client/components/settings.ts | 338 | // Step 5: Send test notification | COMMENT |
| LOW | docs/RELEASE.md | 239 | ### Step 1: Pre-flight Check | COMMENT |
| LOW | docs/RELEASE.md | 249 | ### Step 2: CRITICAL Pre-Release Version Check | COMMENT |
| LOW | docs/RELEASE.md | 263 | ### Step 3: Create/Update CHANGELOG.md | COMMENT |
| LOW | docs/RELEASE.md | 292 | ### Step 4: Create the Release | COMMENT |
| LOW | docs/RELEASE.md | 337 | ### Step 5: Verify Success | COMMENT |
| LOW⚡ | ios/docs/tailscale-guide.md | 28 | ### Step 1: Access Tailscale Admin Console | COMMENT |
| LOW⚡ | ios/docs/tailscale-guide.md | 33 | ### Step 2: Generate OAuth Client | COMMENT |
| LOW⚡ | ios/docs/tailscale-guide.md | 41 | ### Step 3: Save Your Credentials | COMMENT |
| LOW⚡ | mac/scripts/release-improved.sh | 198 | # Step 2: Clean build | COMMENT |
| LOW⚡ | mac/scripts/release-improved.sh | 207 | # Step 3: Set version | COMMENT |
| LOW | mac/scripts/release-improved.sh | 186 | # Step 1: Pre-flight check | COMMENT |
| LOW | mac/scripts/release-improved.sh | 218 | # Step 4: Build application | COMMENT |
| LOW | mac/scripts/release-improved.sh | 236 | # Step 5: Sign and notarize | COMMENT |
| LOW | mac/scripts/release-improved.sh | 253 | # Step 6: Create DMG and ZIP | COMMENT |
| LOW | mac/scripts/release-improved.sh | 273 | # Step 7: GitHub release | COMMENT |
| LOW | mac/scripts/release-improved.sh | 291 | # Step 8: Update appcast | COMMENT |
| LOW | mac/scripts/release-improved.sh | 312 | # Step 9: Commit and push | COMMENT |
| LOW⚡ | mac/scripts/release.sh | 423 | # Step 2: Clean build directory | COMMENT |
| LOW⚡ | mac/scripts/release.sh | 431 | # Step 3: Update version in version.xcconfig | COMMENT |
| LOW⚡ | mac/scripts/release.sh | 803 | # Step 6: Create GitHub release | COMMENT |
| LOW | mac/scripts/release.sh | 338 | # Step 1: Run pre-flight check | COMMENT |
| LOW | mac/scripts/release.sh | 482 | # Step 4: Build the app | COMMENT |
| LOW | mac/scripts/release.sh | 593 | # Step 5: Sign and notarize | COMMENT |
| LOW | mac/scripts/release.sh | 648 | # Step 6: Create DMG and ZIP | COMMENT |
| LOW | mac/scripts/release.sh | 930 | # Step 7: Update appcast | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | web/scripts/build-npm.js | 823 | // Step 0: Clean previous build | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 830 | // Step 1: Standard build process | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 940 | // Step 4: Bundle node-pty with dependencies | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 943 | // Step 5: Don't copy authenticate-pam - it's an optionalDependency that will be installed by npm | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 946 | // Step 6: Use package.npm.json if available, otherwise create clean package.json | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 1142 | // Step 9: Validate package with our comprehensive checks | COMMENT |
| LOW⚡ | web/scripts/build-npm.js | 1145 | // Step 10: Create npm package | COMMENT |
| LOW | web/scripts/build-npm.js | 851 | // Step 2: Multi-platform native module builds (unless current-only) | COMMENT |
| LOW | web/scripts/build-npm.js | 874 | // Step 3: Copy necessary files to dist-npm | COMMENT |
| LOW | web/scripts/build-npm.js | 1061 | // Step 6: Fix the CLI structure and bin scripts | COMMENT |
| LOW | web/scripts/build-npm.js | 1091 | // Step 7: Copy README files | COMMENT |
| LOW | web/scripts/build-npm.js | 1122 | // Step 8: Clean up test files in dist-npm | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 131 | // Step 1: Check if it's an alias and resolve it | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 163 | // Step 2: Resolve the full path if it's not already absolute | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 197 | // Step 3: Check if it's a symlink and resolve it | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 208 | // Step 4: Check if this is the Claude CLI binary | COMMENT |
| LOW | web/src/server/utils/claude-patcher.ts | 252 | // Step 5: It's Claude! Patch it | COMMENT |
| LOW | web/src/client/components/vibe-terminal-buffer.ts | 119 | // Step 1: Calculate font size to fit horizontally | COMMENT |
| LOW | web/src/client/components/vibe-terminal-buffer.ts | 139 | // Step 2: Calculate how many lines fit vertically with this font size | COMMENT |
| LOW⚡ | web/src/client/components/settings.ts | 307 | // Step 1: Check service worker | COMMENT |
| LOW⚡ | web/src/client/components/settings.ts | 313 | // Step 2: Check permissions | COMMENT |
| LOW⚡ | web/src/client/components/settings.ts | 320 | // Step 3: Check subscription | COMMENT |
| LOW⚡ | web/src/client/components/settings.ts | 327 | // Step 4: Check server status | COMMENT |
| LOW | web/src/client/components/settings.ts | 338 | // Step 5: Send test notification | COMMENT |
| LOW⚡ | mac/scripts/release-improved.sh | 198 | # Step 2: Clean build | COMMENT |
| LOW⚡ | mac/scripts/release-improved.sh | 207 | # Step 3: Set version | COMMENT |
| LOW | mac/scripts/release-improved.sh | 186 | # Step 1: Pre-flight check | COMMENT |
| LOW | mac/scripts/release-improved.sh | 218 | # Step 4: Build application | COMMENT |
| LOW | mac/scripts/release-improved.sh | 236 | # Step 5: Sign and notarize | COMMENT |
| LOW | mac/scripts/release-improved.sh | 253 | # Step 6: Create DMG and ZIP | COMMENT |
| LOW | mac/scripts/release-improved.sh | 273 | # Step 7: GitHub release | COMMENT |
| LOW | mac/scripts/release-improved.sh | 291 | # Step 8: Update appcast | COMMENT |
| LOW | mac/scripts/release-improved.sh | 312 | # Step 9: Commit and push | COMMENT |
| LOW⚡ | mac/scripts/release.sh | 423 | # Step 2: Clean build directory | COMMENT |
| LOW⚡ | mac/scripts/release.sh | 431 | # Step 3: Update version in version.xcconfig | COMMENT |
| LOW⚡ | mac/scripts/release.sh | 803 | # Step 6: Create GitHub release | COMMENT |
| LOW | mac/scripts/release.sh | 338 | # Step 1: Run pre-flight check | COMMENT |
| LOW | mac/scripts/release.sh | 482 | # Step 4: Build the app | COMMENT |
| LOW | mac/scripts/release.sh | 593 | # Step 5: Sign and notarize | COMMENT |
| LOW | mac/scripts/release.sh | 648 | # Step 6: Create DMG and ZIP | COMMENT |
| LOW | mac/scripts/release.sh | 930 | # Step 7: Update appcast | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs.json | 178 | "placeholder": "Search documentation" | CODE |
| LOW | …src/test/integration/tailscale-websocket-basic.test.ts | 34 | const userId = 'user@example.com'; | CODE |
| LOW | …src/test/integration/tailscale-websocket-basic.test.ts | 64 | const userId = 'user@example.com'; | CODE |
| LOW | …src/test/integration/tailscale-websocket-basic.test.ts | 148 | expect(() => mockAuthService.generateTokenForUser('user@example.com')).toThrow( | CODE |
| LOW⚡ | web/src/server/middleware/auth.test.ts | 90 | .set('tailscale-user-login', 'user@example.com') | CODE |
| LOW⚡ | web/src/server/middleware/auth.test.ts | 100 | userId: 'user@example.com', | CODE |
| LOW⚡ | web/src/server/middleware/auth.test.ts | 103 | login: 'user@example.com', | CODE |
| LOW | web/src/server/middleware/auth.test.ts | 121 | .set('tailscale-user-login', 'user@example.com') | CODE |
| LOW | web/src/server/middleware/auth.test.ts | 137 | 'tailscale-user-login': 'user@example.com', | CODE |
| LOW | web/src/server/middleware/auth.test.ts | 192 | .set('tailscale-user-login', 'user@example.com') | CODE |
| LOW | web/src/server/middleware/auth.test.ts | 201 | userId: 'user@example.com', | CODE |
| LOW | web/src/server/middleware/auth.test.ts | 484 | 'tailscale-user-login': 'user@example.com', | CODE |
| LOW | web/src/server/middleware/auth.test.ts | 510 | 'tailscale-user-login': 'user@example.com', | CODE |
| LOW | web/src/server/utils/vapid-manager.ts | 40 | * contactEmail: 'admin@example.com', | COMMENT |
| LOW | web/src/server/utils/vapid-manager.ts | 54 | * await manager.rotateKeys('admin@example.com'); | COMMENT |
| LOW | web/src/server/routes/auth.test.ts | 126 | req.userId = 'user@example.com'; | CODE |
| LOW | web/src/server/routes/auth.test.ts | 128 | login: 'user@example.com', | CODE |
| LOW⚡ | web/src/server/routes/auth.test.ts | 143 | .set('tailscale-user-login', 'user@example.com'); | CODE |
| LOW⚡ | web/src/server/routes/auth.test.ts | 149 | userId: 'user@example.com', | CODE |
| LOW⚡ | web/src/server/routes/auth.test.ts | 153 | expect(mockAuthService.generateTokenForUser).toHaveBeenCalledWith('user@example.com'); | CODE |
| LOW | web/src/server/routes/auth.test.ts | 171 | req.userId = 'user@example.com'; | CODE |
| LOW | web/src/server/routes/auth.test.ts | 173 | login: 'user@example.com', | CODE |
| LOW | web/src/server/routes/auth.test.ts | 184 | .set('tailscale-user-login', 'user@example.com'); | CODE |
| LOW | web/src/server/routes/auth.test.ts | 208 | req.userId = 'user@example.com'; | CODE |
| LOW | web/src/server/routes/auth.test.ts | 210 | login: 'user@example.com', | CODE |
| LOW | web/src/server/routes/auth.test.ts | 224 | .set('tailscale-user-login', 'user@example.com'); | CODE |
| LOW | web/src/server/routes/auth.test.ts | 248 | req.userId = 'user@example.com'; | CODE |
| LOW | web/src/server/routes/auth.test.ts | 250 | login: 'user@example.com', | CODE |
| LOW | web/src/server/routes/auth.test.ts | 281 | req.userId = 'user@example.com'; | CODE |
| LOW | web/src/server/routes/auth.test.ts | 341 | req.userId = 'user@example.com'; | CODE |
| LOW | web/src/server/routes/auth.test.ts | 353 | .set('tailscale-user-login', 'user@example.com'); | CODE |
| LOW | web/src/server/routes/auth.test.ts | 359 | expect(mockAuthService.generateTokenForUser).toHaveBeenCalledWith('user@example.com'); | CODE |
| LOW | web/src/client/components/auth-login.test.ts | 410 | const hasPlaceholder = passwordInput?.getAttribute('placeholder'); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | native/vt-fwd/test/e2e.py | 217 | def test_rust_min_stack_is_child_only(binary, env): | CODE |
| LOW | native/vt-fwd/test/e2e.py | 231 | def test_shutdown_interrupts_backpressured_ipc(binary, control_dir, env): | CODE |
| LOW | native/vt-fwd/test/e2e.py | 313 | def test_signal_during_shutdown_cleanup(binary, control_dir, env): | CODE |
| LOW | web/build-native.js | 57 | function assertSupportedNodeVersion(versionText, label) { | CODE |
| LOW | web/build-custom-node.js | 50 | function verifyCustomNodeDependencies(customNodePath, platform) { | CODE |
| LOW | web/docs/asciicast-pruning.md | 75 | function calculateSequenceBytePosition( | CODE |
| LOW | web/docs/asciicast-pruning.md | 289 | export function detectLastPruningSequence(data: string): PruningDetectionResult | null { | CODE |
| LOW | web/docs/asciicast-pruning.md | 307 | export function calculateSequenceBytePosition( | CODE |
| LOW | web/src/test/playwright/helpers/performance-utils.ts | 44 | export async function waitForNetworkIdleWithTimeout( | CODE |
| LOW | …rc/test/playwright/helpers/session-lifecycle.helper.ts | 31 | export async function createAndNavigateToSession( | CODE |
| LOW | …/src/test/playwright/helpers/wait-strategies.helper.ts | 128 | export async function waitForElementInteractive( | CODE |
| LOW | …/src/test/playwright/helpers/common-patterns.helper.ts | 49 | export async function clickSessionCardWithRetry(page: Page, sessionName: string): Promise<void> { | CODE |
| LOW | …/src/test/playwright/helpers/common-patterns.helper.ts | 418 | export async function verifyMultipleSessionsInList( | CODE |
| LOW | web/src/test/playwright/helpers/ui-state.helper.ts | 9 | export async function getExitedSessionsVisibility(page: Page): Promise<{ | CODE |
| LOW | web/src/test/playwright/helpers/ui-state.helper.ts | 66 | export async function ensureExitedSessionsVisible(page: Page): Promise<void> { | CODE |
| LOW | web/src/test/playwright/helpers/ui-state.helper.ts | 88 | export async function ensureExitedSessionsHidden(page: Page): Promise<void> { | CODE |
| LOW | web/src/test/playwright/helpers/terminal.helper.ts | 83 | export async function executeCommandIntelligent( | CODE |
| LOW | web/src/test/playwright/helpers/terminal.helper.ts | 160 | export async function executeCommandsWithExpectedOutputs( | CODE |
| LOW | web/src/test/playwright/helpers/assertion.helper.ts | 182 | export async function assertTerminalNotContains( | CODE |
| LOW | web/src/test/e2e/vt-wrapper.e2e.test.ts | 61 | function createVibetunnelCliWrapper(homeDir: string): string { | CODE |
| LOW | web/src/test/e2e/vt-wrapper-extra.e2e.test.ts | 41 | function createVibetunnelCliWrapper(homeDir: string): string { | CODE |
| LOW | web/src/server/pty/process-utils.ts | 259 | function isInteractiveShellCommand(cmdName: string, args: string[]): boolean { | CODE |
| LOW | web/src/server/utils/git-status.ts | 50 | async function countUntrackedFileInsertions(workingDir: string, relativePath: string) { | CODE |
| LOW | web/src/server/utils/pruning-detector.ts | 48 | export function detectLastPruningSequence(data: string): PruningDetectionResult | null { | CODE |
| LOW | web/src/server/utils/pruning-detector.ts | 109 | export function calculateSequenceBytePosition( | CODE |
| LOW | web/src/server/utils/pruning-detector.ts | 136 | export function checkAsciinemaEventForPruning(line: string): { | CODE |
| LOW | web/src/server/utils/pruning-detector.ts | 185 | export function calculatePruningPositionInFile( | CODE |
| LOW | web/src/server/routes/repositories.ts | 307 | async function createDiscoveredRepository(repoPath: string): Promise<DiscoveredRepository> { | CODE |
| LOW | web/src/server/routes/test-notification.ts | 19 | export function createTestNotificationRouter(options: TestNotificationOptions): Router { | CODE |
| LOW | web/src/server/routes/sessions.ts | 1159 | function generateTailscaleRecommendations( | CODE |
| LOW | web/src/server/routes/auth.ts | 35 | function getConfiguredPasswordUserId(): string | undefined { | CODE |
| LOW | web/src/server/services/systemd-installer.ts | 153 | function checkVibetunnelAndCreateWrapper(): string { | CODE |
| LOW | web/src/client/utils/theme-utils.ts | 73 | export function createSystemThemeListener(callback: (isDark: boolean) => void): MediaQueryList { | CODE |
| LOW | web/src/client/utils/terminal-utils.ts | 31 | export function createDebouncedTerminalResize(delay = 100) { | CODE |
| LOW | web/src/client/utils/quick-keys-layout.ts | 174 | export function subscribeToQuickKeysLayout(listener: () => void): () => void { | CODE |
| LOW | …/scripts/web/src/server/api-socket.integration.test.ts | 144 | async function sendMessageAndGetResponse( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | web/test-beta15-simple.sh | 7 | # Create a temporary directory | COMMENT |
| MEDIUM⚡ | ios/scripts/common.sh | 7 | # This file provides common functions and utilities for all VibeTunnel scripts | COMMENT |
| MEDIUM⚡ | mac/scripts/common.sh | 7 | # This file provides common functions and utilities for all VibeTunnel scripts | COMMENT |
| MEDIUM⚡ | mac/scripts/sign-and-notarize.sh | 315 | # Create a simple ZIP file if signing only and zip creation is requested | COMMENT |
| MEDIUM | mac/scripts/validate-sparkle-signature.sh | 142 | # Create a test file | COMMENT |
| MEDIUM | mac/scripts/notarize-dmg.sh | 31 | # Create a temporary file for the API key | COMMENT |
| MEDIUM | mac/scripts/test-vt-integration.sh | 80 | # Create a temporary directory with zsh config | COMMENT |
| MEDIUM | mac/scripts/test-vt-integration.sh | 91 | # Create a temporary directory with bash config | COMMENT |
| MEDIUM | .github/workflows/npm-test.yml | 78 | # Create a test directory | COMMENT |
| MEDIUM | .github/workflows/node.yml | 79 | # Create a temporary directory for outputs | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | web/index.html | 42 | */var Td;function Tm(){if(Td)return ot;Td=1;var l=va(),s=jm();function r(e){for(var t="https://reactjs.org/docs/error-d | COMMENT |
| MEDIUM | web/index.html | 42 | */var Td;function Tm(){if(Td)return ot;Td=1;var l=va(),s=jm();function r(e){for(var t="https://reactjs.org/docs/error-d | COMMENT |
| MEDIUM | web/scripts/check-fix-sequential.sh | 3 | # Based on best practices to prevent race conditions | COMMENT |
| MEDIUM | web/src/test/playwright/helpers/assertion.helper.ts | 338 | // Check for prompt - with more robust detection and debugging | COMMENT |
| MEDIUM | mac/scripts/check-node-simple.sh | 5 | # This is a simpler version that's more robust and easier to debug | COMMENT |
| MEDIUM⚡ | mac/scripts/build.sh | 9 | # It includes comprehensive error checking and reports | COMMENT |
| MEDIUM⚡ | mac/scripts/preflight-check.sh | 8 | # performing comprehensive checks on git status, build configuration, tools, | COMMENT |
| MEDIUM | mac/VibeTunnel/Core/Services/WindowTracker.swift | 54 | /// making the system robust against tab reordering and window manipulation. | COMMENT |
| MEDIUM | mac/VibeTunnel/Core/Services/WindowTracker.swift | 231 | /// making it robust against tab reordering and window manipulation. | COMMENT |
| MEDIUM | mac/VibeTunnel/Core/Services/WindowTracker.swift | 237 | /// - **iTerm2**: Uses window ID with robust matching | COMMENT |
| MEDIUM | mac/VibeTunnel/Core/Services/WindowTracker.swift | 267 | // iTerm2's window IDs can be tricky, so we use a more robust approach | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/client/test/monaco-editor-test.ts | 108 | # Example usage | COMMENT |
| LOW | mac/VibeTunnel/Core/Accessibility/AXElement.swift | 448 | /// Example usage: | COMMENT |