Turn any browser into your terminal & command your agents on the go.
This report summarizes scanner evidence for amantus-ai/vibetunnel, a TypeScript project with 4,708 GitHub stars. SynthScan examined 267,141 lines of code across 1069 source files, recording 523 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 3.4 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 400 finding(s).
Are imports declared and package/API names verified? 33 finding(s).
Are wrappers, guards, and repeated structures necessary? 126 finding(s).
Which changes need focused human review? 523 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 523 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| 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 |
|---|---|---|---|---|
| HIGH | native/vt-fwd/test/e2e.py | 294 | except ProcessLookupError: | CODE |
| HIGH | native/vt-fwd/test/e2e.py | 352 | except ProcessLookupError: | CODE |
| 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 |