AI-powered development workspaces with reusable components, architectural clarity and zero overhead.
This report summarizes scanner evidence for teambit/bit, a TypeScript project with 18,500 GitHub stars. SynthScan examined 366,807 lines of code across 3452 source files, recording 559 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 2.7 (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? 471 finding(s).
Are imports declared and package/API names verified? 34 finding(s).
Are wrappers, guards, and repeated structures necessary? 367 finding(s).
Which changes need focused human review? 559 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 559 distinct pattern matches across 15 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 |
|---|---|---|---|---|
| LOW | …ies/use-component-artifacts/use-component-artifacts.ts | 90 | export function useComponentArtifactFileContent( | CODE |
| LOW | …component-artifacts-model/component-artifacts.model.ts | 33 | export function getArtifactFileDetailsFromUrl( | CODE |
| LOW | …ponents/ui/artifacts/artifacts-tree/artifacts-tree.tsx | 159 | function fileTreeNodeWithArtifactFiles(artifactFiles: Array<ArtifactFile & { id: string }>) { | CODE |
| LOW | …mpare-editor-settings/code-compare-editor-settings.tsx | 26 | export function CodeCompareEditorSettings({ | CODE |
| LOW | …re/version-picker/component-compare-version-picker.tsx | 21 | export function ComponentCompareVersionPicker({ | CODE |
| LOW | …nent-compare/changelog/component-compare-changelog.tsx | 50 | export function ComponentCompareChangelog({ className }: ComponentCompareChangelogType) { | CODE |
| LOW | …ponent-compare/component-compare/component-compare.tsx | 57 | function deriveChangeTypeCssForNav(tab: TabItem, changed: ChangeType[] | null | undefined): string | null { | CODE |
| LOW | …ponent-compare/component-compare/component-compare.tsx | 894 | export function NewComponentFileRegistrar({ compareId }: { compareId: string }) { | CODE |
| LOW | …/component-compare/component-compare/file-registry.tsx | 187 | export function useAspectRegistryRegister(componentId: string | undefined, files: FileInfo[] | undefined) { | CODE |
| LOW | …/component-compare/component-compare/file-registry.tsx | 197 | export function useCompositionsRegistryRegister(componentId: string | undefined, hasCompositions: boolean | undefined) { | CODE |
| LOW | components/ui/api-diff-view/api-diff-view.tsx | 69 | function ComponentApiDiffContainer({ | CODE |
| LOW | …mponents-overview/components-overview-filter-panel.tsx | 24 | export function ComponentsOverviewFilterPanel({ | CODE |
| LOW | …i/components-overview/components-overview-skeleton.tsx | 23 | export function ComponentsOverviewSkeleton({ count = 12, header, className }: ComponentsOverviewSkeletonProps) { | CODE |
| LOW | …ponents/ui/composition-compare/composition-compare.tsx | 41 | function MissingCompositionTemplate({ message, title }: { message?: string; title?: string } = {}) { | CODE |
| LOW | …ponents/ui/composition-compare/composition-compare.tsx | 262 | function resolveRequestedCompositionId({ | CODE |
| LOW | components/ui/component-drawer/component-drawer.tsx | 171 | function ComponentsDrawerRenderFilters({ | CODE |
| LOW | components/ui/component-drawer/component-drawer.tsx | 211 | function ComponentsDrawerRenderTree({ | CODE |
| LOW | components/component-issues/untracked-dependencies.ts | 33 | function untrackedFilesComponentIssueToString(value: UntrackedFileDependencyEntry) { | CODE |
| LOW | …nents/component-issues/relative-components-authored.ts | 45 | function relativeComponentsAuthoredIssuesToString(relativeEntries: RelativeComponentsAuthoredEntry[]) { | CODE |
| LOW | components/legacy/logger/logger.ts | 398 | function determineWritingLogToScreen() { | CODE |
| LOW | components/legacy/logger/pino-logger.ts | 121 | export function getPinoLoggerWithoutWorkers( | CODE |
| LOW | components/legacy/bit-map/bit-map.ts | 1176 | export function normalizeBitmapContentForVersioning(rawContent: string): string { | CODE |
| LOW | components/legacy/bit-map/bit-map.ts | 1233 | export function readVersionedBitmapEntries(rawContent: string): VersionedBitmapEntry[] { | CODE |
| LOW | components/legacy/bit-map/bit-map.ts | 1258 | export function fileContentsForVersioning( | CODE |
| LOW | components/legacy/bit-map/component-map.ts | 170 | export function filterByScanIgnorePatterns( | CODE |
| LOW | …onents/legacy/component-diff/components-object-diff.ts | 27 | export function componentToPrintableForDiff(component: Component): Record<string, any> { | CODE |
| LOW | …onents/legacy/component-diff/components-object-diff.ts | 129 | function componentToPrintableForDiffCommand(component: Component, verbose = false): Record<string, any> { | CODE |
| LOW | …onents/legacy/component-diff/components-object-diff.ts | 175 | export async function diffBetweenComponentsObjects( | CODE |
| LOW | …onents/legacy/component-diff/components-object-diff.ts | 351 | async function getExtensionsConfigOutput(componentLeft: Component, componentRight: Component): Promise<ConfigDiff[]> { | CODE |
| LOW | components/legacy/component-diff/components-diff.ts | 210 | export function outputDiffResultsNameOnly(diffResults: DiffResults[]): string { | CODE |
| LOW | components/legacy/component-diff/components-diff.ts | 218 | export function outputDiffResultsFormatted(diffResults: DiffResults[], opts: DiffOutputOptions = {}): string { | CODE |
| LOW | …ents/legacy/utils/object-to-stringified-tuple-array.ts | 3 | export default function objectToStringifiedTupleArray(obj: { [key: string]: any }): [string | number][] { | CODE |
| LOW | components/legacy/utils/bit/component-placeholders.ts | 8 | export function replacePlaceHolderForPackageValue( | CODE |
| LOW | components/legacy/utils/bit/component-placeholders.ts | 36 | export function getMainFileWithoutExtension(mainFile: string) { | CODE |
| LOW | components/legacy/scope/version-validator.ts | 348 | function findCaseInsensitiveDuplicates(paths: string[]): string[] { | CODE |
| LOW | components/legacy/scope/version-dependencies.ts | 57 | export async function multipleVersionDependenciesToConsumer( | CODE |
| LOW | components/legacy/scope/lanes/remote-lanes.ts | 35 | function assertValidRemoteLaneSegment(value: unknown, kind: 'lane scope' | 'lane name'): void { | CODE |
| LOW | …ponents/legacy/scope/component-ops/import-artifacts.ts | 13 | export async function importMultipleDistsArtifacts(scope: Scope, components: Component[]) { | CODE |
| LOW | …ponents/legacy/scope/component-ops/import-artifacts.ts | 63 | export async function importAllArtifactsFromLane(scope: Scope, components: Component[], lane: Lane) { | CODE |
| LOW | …egacy/scope/component-ops/scope-components-importer.ts | 1227 | export function errorIsTypeOfMissingObject(err: Error) { | CODE |
| LOW | components/legacy/extension-data/extension-data-list.ts | 284 | export function removeInternalConfigFields(config?: ExtensionConfig): ExtensionConfig | undefined { | CODE |
| LOW | components/legacy/extension-data/extension-data-list.ts | 291 | export function removeInternalConfigFieldsWithMutation(config?: ExtensionConfig) { | CODE |
| LOW | components/legacy/consumer/consumer.ts | 645 | export function currentDateAndTimeToFileName() { | CODE |
| LOW | components/legacy/e2e-helper/e2e-scope-json-helper.ts | 26 | function composeScopePathForWorkspace(workspacePath: string) { | CODE |
| LOW | …invalid-jest-config-env/invalid-jest-config.bit-env.ts | 19 | function generateResolveSpecPathsFunc(pattern: string) { | CODE |
| LOW | …ulti-jest-testers-env/multi-jest-tester-env.bit-env.ts | 19 | function generateResolveSpecPathsFunc(pattern: string) { | CODE |
| LOW | …om-jest-resolve-env/custom-jest-resolve-env.bit-env.ts | 17 | function generateResolveSpecPathsFunc(pattern: string) { | CODE |
| LOW | …on-message-listener/use-navigation-message-listener.ts | 10 | export function useNavigationMessageListener({ origin = '*' }: NavigationMessageListenerProps = {}) { | CODE |
| LOW | …/component-package-name/component-node-modules-path.ts | 7 | export function getNodeModulesPathOfComponent({ | CODE |
| LOW | …component-package-name/component-id-to-package-name.ts | 81 | export function getBindingPrefixByDefaultScope(defaultScope: string): string { | CODE |
| LOW | …component-package-name/package-name-to-component-id.ts | 26 | export async function resolveComponentIdFromPackageName( | CODE |
| LOW | …dules/harmony-root-generator/harmony-root-generator.ts | 161 | function getRegularAspectIdentifier(aspectDef: AspectDefinition, suffix: string, pathProp?: string): string { | CODE |
| LOW | components/entities/semantic-schema/schema-diff.ts | 92 | export function typesAreSemanticallyEqual( | CODE |
| LOW | components/entities/semantic-schema-diff/utils.ts | 94 | export function collectUnresolvedInternalNames(internals: any[]): Set<string> { | CODE |
| LOW | scripts/cleanup-node-modules.js | 488 | function scanPackageForRedundantBuilds(packagePath) { | CODE |
| LOW | scripts/cleanup-node-modules.js | 677 | function cleanupDuplicateModuleFormats(nodeModulesPath) { | CODE |
| LOW | scripts/extensions-to-aspects.js | 94 | function moveExtensionToMainRuntime(extName) { | CODE |
| LOW | scripts/extensions-to-aspects.js | 100 | function moveManifestToMainRuntime(extName) { | CODE |
| LOW | scripts/extensions-to-aspects.js | 112 | function movePreviewToPreviewRuntime(extName) { | CODE |
| LOW | scripts/find-unused-packages.js | 99 | function deleteUnusedFromWorkspaceJsonc() { | CODE |
| 253 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …onents/semantics/doc-parser/jsdoc/jsdoc-parser.spec.ts | 89 | expect(doclets).to.have.length.of.at.least(2); | CODE |
| CRITICAL | scopes/workspace/workspace/workspace.ts | 1819 | const unmergedComps = this.scope.legacyScope.objects.unmergedComponents.getComponents(); | CODE |
| CRITICAL | scopes/workspace/workspace/workspace.ts | 1825 | const unmerged = this.scope.legacyScope.objects.unmergedComponents.getEntry(componentId); | CODE |
| CRITICAL | scopes/workspace/workspace/filter.ts | 130 | const unmergedComponents = this.workspace.scope.legacyScope.objects.unmergedComponents.getComponents(); | CODE |
| CRITICAL | scopes/workspace/workspace/filter.ts | 159 | const all = this.workspace.consumer.bitMap.components.filter((c) => c.nextVersion).map((c) => c.id); | CODE |
| CRITICAL | scopes/workspace/workspace/aspects-merger.ts | 229 | return this.workspace.scope.legacyScope.objects.unmergedComponents.getEntry(componentId); | CODE |
| CRITICAL | scopes/component/remove/remove.main.runtime.ts | 448 | const bitMapEntry = this.workspace.consumer.bitMap.components.find((compMap) => { | CODE |
| CRITICAL | scopes/component/checkout/checkout.main.runtime.ts | 109 | await this.workspace.scope.legacyScope.scopeImporter.importWithoutDeps(ComponentIdList.fromArray(toImport), { | CODE |
| CRITICAL | scopes/component/stash/stash.main.runtime.ts | 75 | await this.workspace.scope.legacyScope.objects.persist(); | CODE |
| CRITICAL | scopes/component/stash/stash.main.runtime.ts | 148 | await this.workspace.scope.legacyScope.sources.consumerComponentToVersion(consumerComponent); | CODE |
| CRITICAL | scopes/component/snapping/version-maker.ts | 261 | if (hash) this.workspace.scope.legacyScope.stagedSnaps.addSnap(hash.toString()); | CODE |
| CRITICAL | scopes/component/snapping/version-maker.ts | 266 | await this.workspace.scope.legacyScope.stagedSnaps.write(); | CODE |
| CRITICAL | scopes/component/snapping/snapping.main.runtime.ts | 992 | await this.workspace.scope.legacyScope.stagedSnaps.write(); | CODE |
| CRITICAL | scopes/component/snapping/snapping.main.runtime.ts | 1274 | const unmergedComponent = this.scope.legacyScope.objects.unmergedComponents.getEntry(component.toComponentId()); | CODE |
| CRITICAL | scopes/component/snapping/snapping.main.runtime.ts | 1317 | this.scope.legacyScope.objects.unmergedComponents.removeComponent(component.toComponentId()); | CODE |
| CRITICAL | scopes/component/merging/merging.main.runtime.ts | 717 | const remoteHead = await this.workspace.consumer.scope.objects.remoteLanes.getRef(remoteLaneId, bitId); | CODE |
| CRITICAL | scopes/component/merging/merging.main.runtime.ts | 744 | const unmergedComponents = this.scope.legacyScope.objects.unmergedComponents.getComponents(); | CODE |
| CRITICAL | scopes/component/merging/merging.main.runtime.ts | 771 | aspects: this.scope.legacyScope.objects.unmergedComponents.getEntry(id)?.mergedConfig, | CODE |
| CRITICAL | scopes/component/merging/merging.main.runtime.ts | 833 | const entry = this.workspace.consumer.scope.objects.unmergedComponents.getEntry(id); | CODE |
| CRITICAL | scopes/component/merging/merging.main.runtime.ts | 840 | const unresolvedComponents = this.workspace.consumer.scope.objects.unmergedComponents.getComponents(); | CODE |
| CRITICAL | scopes/component/merging/merge-status-provider.ts | 388 | const unmerged = this.scope.legacyScope.objects.unmergedComponents.getEntry(id); | CODE |
| CRITICAL | scopes/scope/export/export.main.runtime.ts | 272 | await this.workspace.scope.legacyScope.stagedSnaps.deleteFile(); | CODE |
| CRITICAL | scopes/lanes/lanes/switch-lanes.ts | 112 | await this.workspace.scope.legacyScope.scopeImporter.importWithoutDeps(allIds, { | CODE |
| CRITICAL | scopes/lanes/lanes/lanes.main.runtime.ts | 713 | await this.scope.legacyScope.objects.remoteLanes.renameRefByNewLaneName(laneNameWithoutScope, newName, lane.scope); | CODE |
| CRITICAL | scopes/lanes/merge-lanes/merge-lanes.main.runtime.ts | 547 | this.workspace.consumer.scope.objects.unmergedComponents.removeAllComponents(); | CODE |
| CRITICAL | scopes/lanes/merge-lanes/merge-lanes.main.runtime.ts | 548 | await this.workspace.consumer.scope.objects.unmergedComponents.write(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 39 | // ── summary bar ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 114 | // ── per-component section ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 205 | // ── change block ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 266 | // ── signatures + cause diffs (shared git-style diff block) ──────────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 272 | // ── member-cause clusters (severity groups + collapse-by-kind) ──────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 631 | // ── change category groups (breaking → minor → patch) ───────────────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 680 | // ── blank state: no API to compare (neither side exposes one) ───────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 718 | // ── unresolved exports (extraction gaps — distinct from real changes) ───────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 748 | // ── insights (slot-contributed) ────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 767 | // ── internal section ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 803 | // ── slim component-level rows ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 893 | // ── impact badges ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/api-diff-view/api-diff-view.module.scss | 914 | // ── whole-pane states ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …onents/ui/api-diff-view/component-api-diff-section.tsx | 186 | // ── member-cause grouping (severity clusters + collapse-by-kind) ────────────── | COMMENT |
| MEDIUM | components/ui/compare/lane-compare/lane-compare.tsx | 43 | // ── Types ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/compare/lane-compare/lane-compare.tsx | 148 | // ── Blank state ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/compare/lane-compare/lane-compare.tsx | 190 | // ── Main Component ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | components/ui/compare/lane-compare/lane-compare.tsx | 788 | // ── Wrapper ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ui/composition-compare/composition-compare.module.scss | 177 | // ─── Empty / missing states ───────────────────────────────────────────── | COMMENT |
| MEDIUM | e2e/harmony/dependencies/forked-env-missing-deps.e2e.ts | 41 | // ── Source workspace: create the env, tag, and export ────────────── | COMMENT |
| MEDIUM | e2e/harmony/dependencies/forked-env-missing-deps.e2e.ts | 77 | // ── Fresh workspace: fork the env ───────────────────────────────── | COMMENT |
| MEDIUM⚡ | .circleci/config.yml | 76 | # ======================================== | COMMENT |
| MEDIUM⚡ | .circleci/config.yml | 78 | # ======================================== | COMMENT |
| MEDIUM⚡ | .circleci/config.yml | 84 | # ======================================== | COMMENT |
| MEDIUM⚡ | .circleci/config.yml | 86 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 3 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 5 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 53 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 55 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 661 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 663 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 1555 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 1557 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 1850 | # ======================================== | COMMENT |
| MEDIUM | .circleci/config.yml | 1852 | # ======================================== | COMMENT |
| MEDIUM | …pes/compositions/compositions/compositions.module.scss | 73 | // ─── Toolbar ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …pes/compositions/compositions/compositions.module.scss | 118 | // ─── Preview + Controls Tray area ─────────────────────────────────────── | COMMENT |
| MEDIUM | …pes/compositions/compositions/compositions.module.scss | 141 | // ─── Controls Tray (bottom panel, like DevTools) ──────────────────────── | COMMENT |
| MEDIUM | …pes/compositions/compositions/compositions.module.scss | 164 | // ─── Two-zone header: resize strip on top, click-to-collapse below ───── | COMMENT |
| MEDIUM | …pes/compositions/compositions/compositions.module.scss | 293 | // ─── Splitter ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …pes/compositions/compositions/compositions.module.scss | 307 | // ─── Tabs ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …pes/compositions/compositions/compositions.module.scss | 339 | // ─── Empty / error states ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/ui/compositions-panel/compositions-panel.module.scss | 9 | // ─── Compositions list ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/ui/compositions-panel/compositions-panel.module.scss | 137 | // ─── Legacy compat ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scopes/lanes/diff/lane-diff-cache.ts | 116 | // ── snaps distance ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scopes/lanes/diff/lane-diff-cache.ts | 174 | // ── change types ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scopes/lanes/diff/lane-diff-cache.ts | 222 | // ── top-level diff-status result ────────────────────────────────────────── | COMMENT |
| MEDIUM | scopes/lanes/diff/lane-diff-cache.ts | 315 | // ── persistence ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …preview/ui/preview-placeholder/preview-placeholder.tsx | 11 | // ── BrowserSkeleton ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …preview/ui/preview-placeholder/preview-placeholder.tsx | 32 | // ── Prefetch helper ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …preview/ui/preview-placeholder/preview-placeholder.tsx | 55 | // ── ViewportGate ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …preview/ui/preview-placeholder/preview-placeholder.tsx | 117 | // ── PreviewPlaceholder ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ui/preview-placeholder/preview-placeholder.module.scss | 81 | // ── Viewport gate & skeleton overlay ──────────────────────────────────────── | COMMENT |
| MEDIUM | …ui/preview-placeholder/preview-placeholder.module.scss | 104 | // ── Browser-chrome skeleton ───────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/bit.js | 1 | #!/usr/bin/env node | COMMENT |
| LOW | .claude/hooks/check-e2e-only.sh | 21 | exit 0 | COMMENT |
| LOW | …/ui/hooks/use-bulk-paged-query/use-bulk-paged-query.ts | 141 | }, [sessionKey, skip]); | COMMENT |
| LOW | components/ui/inputs/lane-selector_1/lane-selector.tsx | 81 | // case LaneSelectorSortBy.CREATED: | COMMENT |
| LOW | components/ui/inputs/lane-selector_1/lane-selector.tsx | 181 | e.stopPropagation(); | COMMENT |
| LOW | components/legacy/scope/lanes/lanes.ts | 161 | } | COMMENT |
| LOW | components/legacy/dependency-graph/scope-graph.ts | 141 | // const allModelComponents: ModelComponent[] = await scope.list(); | COMMENT |
| LOW | …s/extensions/custom-react-env/typescript/tsconfig.json | 1 | { | COMMENT |
| LOW | …xtures/extensions/custom-react-env/jest/jest.config.js | 1 | COMMENT | |
| LOW | …xtensions/multi-jest-testers-env/config/jest.config.js | 1 | // @bit-no-check | COMMENT |
| LOW | …tensions/custom-jest-resolve-env/config/jest.config.js | 1 | // @bit-no-check | COMMENT |
| LOW | …r/excluded-fixtures/scopes/repository-hooks-fixture.js | 61 | // That's here for debug purpose | COMMENT |
| LOW | scripts/check-harmony-version-sync.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/workflows/merge-queue.yml | 1 | # Custom merge queue — see .github/scripts/merge-queue.js for the full design. | COMMENT |
| LOW | .github/workflows/merge-queue.yml | 21 | # repository_dispatch already cover master's transitions, and every bit_merge would otherwise | COMMENT |
| LOW | .github/workflows/merge-queue-review-ping.yml | 1 | # No-op bridge between review events and the merge-queue reconcile. | COMMENT |
| LOW | .github/scripts/merge-queue.js | 81 | const MERGE_JOB_NAME = 'bit_merge'; | COMMENT |
| LOW | .github/scripts/merge-queue.js | 601 | // Returns every open dashboard, oldest first. Oldest wins: the dashboard URL is the "Details" link | COMMENT |
| LOW | e2e/harmony/pkg.e2e.ts | 101 | }); | COMMENT |
| LOW | …harmony/import-resolves-missing-deps-from-model.e2e.ts | 1 | import { expect } from 'chai'; | COMMENT |
| LOW | e2e/harmony/dependency-resolver.e2e.ts | 201 | // ├── fs.realpath 1.0.0 | COMMENT |
| LOW | e2e/harmony/lanes/update-dependents-cascade.e2e.ts | 61 | COMMENT | |
| LOW | e2e/harmony/lanes/lane-export-skip-main-history.e2e.ts | 301 | // lives on scope-L and the client-side `collectLogs` fallback only retries against the | COMMENT |
| LOW | …/harmony/lanes/update-dependents-cascade-import.e2e.ts | 401 | // Scenario 20: importing a lane whose hidden updateDependent originates from a DIFFERENT scope | COMMENT |
| LOW | …e/harmony/lanes/update-dependents-cascade-reset.e2e.ts | 161 | expect(comp3OnRemote.head).to.equal(comp3HeadBeforeLocalSnap); | COMMENT |
| LOW | e2e/performance/filesystem-read.e2e.ts | 21 | // ZERO new logical modules — #10515's dependency change merely reshaped the released bundle's | COMMENT |
| LOW | .circleci/config.yml | 741 | # tracked changes) — without it, a duplicate user-agent line lands on master every | COMMENT |
| LOW | .circleci/config.yml | 921 | # --skip-tasks PublishComponents: a PR build validates the pipeline, it doesn't need the | COMMENT |
| LOW | .circleci/config.yml | 1501 | # We can't use Node.js newer than 16.13.2 due to this issue with npm: https://github.com/npm/cli/issues/4234 | COMMENT |
| LOW | .circleci/config.yml | 1541 | # # simple job just to print node version on windows | COMMENT |
| LOW | .circleci/config.yml | 1721 | branches: | COMMENT |
| LOW | .circleci/config.yml | 1741 | # requires: | COMMENT |
| LOW | .circleci/config.yml | 1861 | # # requires: | COMMENT |
| LOW | .circleci/config.yml | 1881 | COMMENT | |
| LOW | .circleci/config.yml | 1901 | # requires: | COMMENT |
| LOW | .circleci/config.yml | 1921 | # - bundle_version_macos | COMMENT |
| LOW | scopes/harmony/bit/bootstrap.ts | 21 | // eslint-disable-next-line @typescript-eslint/no-misused-promises | COMMENT |
| LOW | scopes/harmony/bit/bootstrap.ts | 41 | // on the bit repo we overriding the uri-js package with a fixed version (see overrides in workspace.jsonc) | COMMENT |
| LOW | scopes/harmony/graphql/logging.ts | 21 | // const promise = crossFetch(...p); | COMMENT |
| LOW | scopes/workspace/install/install.main.runtime.ts | 781 | aspects.map(async (aspectDef) => { | COMMENT |
| LOW | scopes/workspace/workspace/auto-tag.ts | 61 | } | COMMENT |
| LOW | scopes/workspace/workspace/workspace.ts | 1441 | // components (added via `bit add` on a feature branch but tagged only by CI) have | COMMENT |
| LOW | scopes/workspace/workspace/workspace.ts | 2321 | // source id : my-scope2/my-name1 | COMMENT |
| LOW | scopes/workspace/workspace/workspace-aspects-loader.ts | 741 | // acc = acc.concat(currIds); | COMMENT |
| LOW | …pes/workspace/config-merger/component-config-merger.ts | 221 | this.baseEnv.id !== this.currentEnv.id || | COMMENT |
| LOW | …/files-dependency-builder/filing-cabinet/index.spec.ts | 41 | // require('module-lookup-amd'); | COMMENT |
| LOW | …/files-dependency-builder/filing-cabinet/index.spec.ts | 141 | // it('uses the amd resolver', () => { | COMMENT |
| LOW | …/files-dependency-builder/filing-cabinet/index.spec.ts | 161 | // directory: `${UNIT_TEST_DIR}/js/amd/`, | COMMENT |
| LOW | …es/dependencies/dependencies-loader/apply-overrides.ts | 201 | this.makeLegacyAsPeer(); | COMMENT |
| LOW | scopes/component/isolator/isolator.main.runtime.ts | 381 | `isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify( | COMMENT |
| LOW | scopes/component/isolator/isolator.main.runtime.ts | 1741 | // Always include seeders (modified components and their dependents) | COMMENT |
| LOW | scopes/component/component/state.ts | 81 | // consumerComponent.version || 'new', | COMMENT |
| LOW | …opes/component/modules/merge-helper/three-way-merge.ts | 81 | baseComponent: Version; | COMMENT |
| LOW | scopes/component/snapping/snapping.main.runtime.ts | 621 | // load the aspects user configured to set on the components. it creates capsules if needed. | COMMENT |
| LOW | scopes/scope/objects/models/model-component.ts | 421 | // - same-scope forks: identical to the previous behavior. | COMMENT |
| LOW | scopes/lanes/lanes/lanes.ui.runtime.tsx | 261 | } | COMMENT |
| LOW | scopes/docs/docs/docs-compare-contain.module.scss | 1 | // Width containment for the inline-docs compare tab. OverviewCompare renders base/compare docs side by | COMMENT |
| LOW | …tor/templates/basic/template/files/workspace-config.ts | 21 | // 'teambit.node/node', | COMMENT |
| LOW | scopes/webpack/webpack/config/webpack-fallbacks.ts | 61 | // file: false, | COMMENT |
| LOW | scopes/webpack/webpack/config/webpack.dev.config.ts | 81 | // Don't be confused with `dev.publicPath`, it is `publicPath` for static directory | COMMENT |
| 20 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .claude/skills/generate-release-notes/SKILL.md | 23 | ### Step 1: Setup Temp Directory | COMMENT |
| LOW | .claude/skills/generate-release-notes/SKILL.md | 31 | ### Step 2: Determine the Commit Range | COMMENT |
| LOW | .claude/skills/generate-release-notes/SKILL.md | 57 | ### Step 3: Fetch Commits and Save to raw-commits.md | COMMENT |
| LOW | .claude/skills/generate-release-notes/SKILL.md | 87 | ### Step 4: Filter Commits and Save to filtered-commits.md | COMMENT |
| LOW | .claude/skills/generate-release-notes/SKILL.md | 137 | ### Step 5: Enrich Commit Information | COMMENT |
| LOW | .claude/skills/generate-release-notes/SKILL.md | 155 | ### Step 6: Categorize Changes | COMMENT |
| LOW | .claude/skills/generate-release-notes/SKILL.md | 167 | ### Step 7: Write Release Notes | COMMENT |
| LOW | .claude/skills/generate-release-notes/SKILL.md | 179 | ### Step 8: Save the Release Notes | COMMENT |
| LOW | …onents/mcp/mcp-config-writer/bit-git-rules-template.md | 38 | ### Step 1: Choose the Correct Generic Execution Tool | COMMENT |
| LOW | …onents/mcp/mcp-config-writer/bit-git-rules-template.md | 49 | ### Step 2: Check for Terminal Exceptions | COMMENT |
| LOW | …onents/mcp/mcp-config-writer/bit-git-rules-template.md | 61 | ### Step 3: Git-Integrated Workflow Restrictions | COMMENT |
| LOW | components/mcp/mcp-config-writer/bit-rules-template.md | 35 | ### Step 1: Choose the Correct Generic Execution Tool | COMMENT |
| LOW | components/mcp/mcp-config-writer/bit-rules-template.md | 41 | ### Step 2: Check for Terminal Exceptions | COMMENT |
| LOW | .github/instructions/bit.instructions.md | 42 | ### Step 1: Choose the Correct Generic Execution Tool | COMMENT |
| LOW | .github/instructions/bit.instructions.md | 48 | ### Step 2: Check for Terminal Exceptions | COMMENT |
| LOW | .github/instructions/bit.instructions.md | 60 | ### Step 3: Git-Integrated Workflow Restrictions | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 617 | // Step 1: Tag 0.0.1 and export | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 621 | // Step 2: Tag 2.0.0 but DON'T export (this sets head to 2.0.0) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 626 | // Step 3: Checkout to 0.0.1 | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 629 | // Step 4: Tag with --detach-head (creates a detached head 2.0.1) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 634 | // Step 5: Export - should export BOTH 2.0.0 (head) and 2.0.1 (detached head) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 674 | // Step 1: Tag 0.0.1 and export | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 678 | // Step 2: Tag 2.0.0 but DON'T export (this sets head to 2.0.0) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 683 | // Step 3: Snap but DON'T export (creates an untagged snap) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 688 | // Step 4: Tag 2.0.1 but DON'T export (this sets head to 2.0.1) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 694 | // Step 5: Checkout to 0.0.1 | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 697 | // Step 6: Tag with --detach-head (creates a detached head 2.0.2) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 702 | // Step 7: Export - should export 2.0.0, snap, 2.0.1 (head), and 2.0.2 (detached head) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 755 | // Step 1: Tag 1.0.0 and export | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 759 | // Step 2: Create a lane from 1.0.0 and make snaps | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 767 | // Step 3: Switch back to main and tag 2.0.0 (DON'T export - this is the key!) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 772 | // Step 4: Merge the lane with --detach-head | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 774 | // Step 5: Export - should export 2.0.0 (unexported main head) | COMMENT |
| LOW | e2e/harmony/lanes/lane-import-git-branch.e2e.ts | 77 | // Step 1: On main, populate components, tag, export | COMMENT |
| LOW⚡ | e2e/harmony/lanes/lane-import-git-branch.e2e.ts | 98 | // Step 2: Create lane, change comp1, snap, export | COMMENT |
| LOW⚡ | e2e/harmony/lanes/lane-import-git-branch.e2e.ts | 104 | // Step 3: Restore workspace to before lane creation | COMMENT |
| LOW⚡ | scopes/harmony/bit/server-forever.ts | 154 | // Step 1: Hash the workspace path using MD5 | COMMENT |
| LOW⚡ | scopes/harmony/bit/server-forever.ts | 157 | // Step 2: Convert a portion of the hash to an integer | COMMENT |
| LOW⚡ | scopes/harmony/bit/server-forever.ts | 161 | // Step 3: Map the integer to the port range 49152 to 65535 (these are dynamic ports not assigned by IANA) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 617 | // Step 1: Tag 0.0.1 and export | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 621 | // Step 2: Tag 2.0.0 but DON'T export (this sets head to 2.0.0) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 626 | // Step 3: Checkout to 0.0.1 | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 629 | // Step 4: Tag with --detach-head (creates a detached head 2.0.1) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 634 | // Step 5: Export - should export BOTH 2.0.0 (head) and 2.0.1 (detached head) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 674 | // Step 1: Tag 0.0.1 and export | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 678 | // Step 2: Tag 2.0.0 but DON'T export (this sets head to 2.0.0) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 683 | // Step 3: Snap but DON'T export (creates an untagged snap) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 688 | // Step 4: Tag 2.0.1 but DON'T export (this sets head to 2.0.1) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 694 | // Step 5: Checkout to 0.0.1 | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 697 | // Step 6: Tag with --detach-head (creates a detached head 2.0.2) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 702 | // Step 7: Export - should export 2.0.0, snap, 2.0.1 (head), and 2.0.2 (detached head) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 755 | // Step 1: Tag 1.0.0 and export | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 759 | // Step 2: Create a lane from 1.0.0 and make snaps | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 767 | // Step 3: Switch back to main and tag 2.0.0 (DON'T export - this is the key!) | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 772 | // Step 4: Merge the lane with --detach-head | COMMENT |
| LOW⚡ | e2e/harmony/tag-harmony.e2e.ts | 774 | // Step 5: Export - should export 2.0.0 (unexported main head) | COMMENT |
| LOW | e2e/harmony/lanes/lane-import-git-branch.e2e.ts | 77 | // Step 1: On main, populate components, tag, export | COMMENT |
| LOW⚡ | e2e/harmony/lanes/lane-import-git-branch.e2e.ts | 98 | // Step 2: Create lane, change comp1, snap, export | COMMENT |
| LOW⚡ | e2e/harmony/lanes/lane-import-git-branch.e2e.ts | 104 | // Step 3: Restore workspace to before lane creation | COMMENT |
| LOW⚡ | scopes/harmony/bit/server-forever.ts | 154 | // Step 1: Hash the workspace path using MD5 | COMMENT |
| LOW⚡ | scopes/harmony/bit/server-forever.ts | 157 | // Step 2: Convert a portion of the hash to an integer | COMMENT |
| LOW⚡ | scopes/harmony/bit/server-forever.ts | 161 | // Step 3: Map the integer to the port range 49152 to 65535 (these are dynamic ports not assigned by IANA) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | components/ui/diff-viewer/diff-viewer.composition.tsx | 79 | print("Hello, " + name) | CODE |
| HIGH | components/ui/diff-viewer/diff-viewer.composition.tsx | 86 | print(f"Hello, {name}!") | CODE |
| HIGH | scopes/harmony/bit/run-bit.ts | 70 | print(args[0]); | CODE |
| HIGH | scopes/harmony/bit/run-bit.ts | 77 | print(args[0]); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scopes/pipelines/builder/builder.service.ts | 130 | // dependents leverage project-references instead of resolving it as an installed package. | COMMENT |
| MEDIUM | scopes/react/react/webpack/webpack.config.base.ts | 364 | // Turn off performance processing because we utilize | COMMENT |
| MEDIUM | scopes/react/react/webpack/webpack.config.base.prod.ts | 123 | // Turn off performance processing because we utilize | COMMENT |
| MEDIUM | …pes/react/react/webpack/overlay/webpackHotDevClient.js | 48 | // Essentially, we cannot guarantee application state was not corrupted by the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …pace/workspace-component/workspace-component-loader.ts | 234 | // both forms, so that a component is treated as requested whenever there is any doubt - erring | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | e2e/harmony/ci-sync-main.e2e.ts | 379 | // single-quoted: see `yamlSingleQuoted` in init-scaffold.ts. | COMMENT |
| MEDIUM | scopes/harmony/host-initializer/agents-template-git.md | 113 | bit create <template> <name> # scaffold a new component | CODE |
| MEDIUM | scopes/harmony/host-initializer/agents-template.md | 109 | bit create <template> <name> # scaffold a new component | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | e2e/harmony/dependency-resolver.e2e.ts | 66 | // TODO: implement once we can extend a specific env with new methods (to apply config changes) | COMMENT |
| LOW | e2e/harmony/dependencies/env-jsonc-policies.e2e.ts | 159 | // TODO: implement if needed | COMMENT |
| LOW | scopes/workspace/workspace/workspace.ts | 1985 | // TODO: implement | COMMENT |
| LOW | …pace/workspace-component/workspace-component-loader.ts | 447 | // TODO: implement this function | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .circleci/config.yml | 543 | token: "fake-token" | CODE |
| LOW | .circleci/config.yml | 1519 | token: "fake-token" | CODE |
| LOW | …workspace/workspace/ui/workspace/workspace.module.scss | 155 | div[class*='placeholder'] { | CODE |
| LOW | …workspace/workspace/ui/workspace/workspace.module.scss | 164 | div[class*='placeholder'] { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scopes/harmony/cli-reference/cli-reference.json | 2128 | "the arguments passing to the app. for example, --args=\"--a=1 --b\". don't forget to use quotes to wrap the val | CODE |
| LOW | scopes/harmony/cli-reference/cli-reference.json | 2198 | "the arguments passing to the app. for example, --args=\"--a=1 --b\". don't forget to use quotes to wrap the | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | releases-docs/scripts/get-release-commits.sh | 28 | # Check if it's an annotated tag (points to tag object) or lightweight tag (points directly to commit) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check-harmony-version-sync.sh | 12 | # Usage: | COMMENT |