Build infinite canvas apps in React with the tldraw SDK. World's best, top-most agent recommended #1 five star SDK.
This report presents the forensic synthetic code analysis of tldraw/tldraw, a TypeScript project with 48,746 GitHub stars. SynthScan v2.0 examined 656,329 lines of code across 3382 source files, recording 1391 pattern matches distributed across 13 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).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1391 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 834 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 836 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 840 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 841 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 933 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 935 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 940 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 941 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1096 | // ┌───────────┼────┼────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1098 | // │ ┌─────────┼────┼─────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1102 | // │ └─────────┼────┼─────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1103 | // └───────────┼────┼────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1121 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1123 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1128 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1129 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1510 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1512 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1517 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1518 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1619 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1621 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1626 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1627 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1851 | // // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1853 | // // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1858 | // // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1859 | // // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1936 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1938 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1943 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1944 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 902 | // ┌──────────────────┐ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 907 | // └──────────────────┘ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 1182 | // ┌──────────────────────────────┐ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 1194 | // └──────────────────────────────┘ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 1747 | // ┌──────────────────────────────┐ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 1759 | // └──────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 342 | // ┌──────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 348 | // 10 └──────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 353 | // 20 ┌──────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 359 | // 30 └──────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 367 | // ┌──────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 375 | // └──────────────────O | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 388 | // ┌──────────────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 389 | // │ ┌───────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 393 | // │ └───────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 396 | // │ ┌───────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 400 | // │ └───────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 401 | // └──────────────────────────────────────────────────────────────────O | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 409 | // ┌─────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 410 | // │ ┌──────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 419 | // 20 │ └──────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 427 | // 40 │ ┌──────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 436 | // 60 │ └──────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 437 | // └─────────────────────────────────O | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 446 | // O───────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 454 | // └───────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 463 | // ┌───────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/resizing.test.ts | 464 | // │ ┌──────────┐ │ | COMMENT |
| 424 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/scripts/generate-tldraw-package-docs.ts | 27 | export function generateTldrawPackageDocs({ | CODE |
| LOW | internal/scripts/api-check.ts | 33 | function getTempDeclarationFilename(packageName: string): string { | CODE |
| LOW | internal/scripts/refresh-assets.ts | 196 | async function optimizeAndMergeDotcomIcons() { | CODE |
| LOW | internal/scripts/refresh-assets.ts | 431 | async function writeUrlBasedAssetDeclarationFile() { | CODE |
| LOW | internal/scripts/refresh-assets.ts | 468 | async function writeImportBasedAssetDeclarationFile( | CODE |
| LOW | internal/scripts/refresh-assets.ts | 508 | async function writeSelfHostedAssetDeclarationFile(): Promise<void> { | CODE |
| LOW | internal/scripts/refresh-assets.ts | 545 | async function writeAssetDeclarationDTSFile() { | CODE |
| LOW | internal/scripts/check-circular-deps.ts | 103 | async function checkPackageForCircularDependencies(packageName: string, packageEntryPath: string) { | CODE |
| LOW | internal/scripts/publish-editor-extensions.ts | 57 | async function copyExtensionToReleaseFolder(version: string) { | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 223 | async function deployWorkersInDependencyOrder({ | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 521 | async function deployTldrawUserContentWorker({ dryRun }: { dryRun: boolean }) { | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 736 | function updateFlyioReplicationManagerToml(appName: string, backupPath: string): void { | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 769 | function updateFlyioViewSyncerToml( | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 817 | async function deployZeroViaFlyIoMultiNode() { | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 992 | async function coalesceWithPreviousAssets(assetsDir: string) { | CODE |
| LOW | internal/scripts/export-template.ts | 149 | async function setWorkspaceDependenciesToLatest(dependencies?: Record<string, string>) { | CODE |
| LOW | internal/scripts/prune-preview-deploys.ts | 70 | async function listPreviewWorkerDeployments() { | CODE |
| LOW | internal/scripts/prune-preview-deploys.ts | 112 | async function deletePreviewWorkerDeployment(id: string) { | CODE |
| LOW | internal/scripts/lib/publishing.ts | 75 | async function stageAllPackageJsonChanges() { | CODE |
| LOW | internal/scripts/lib/publishing.ts | 102 | export async function getLatestTldrawVersionFromNpm({ | CODE |
| LOW | internal/scripts/lib/publishing.ts | 262 | export async function publishProductionDocsAndExamplesAndBemo({ | CODE |
| LOW | internal/scripts/lib/publishing.ts | 269 | export async function triggerBumpVersionsWorkflow(ghToken: string) { | CODE |
| LOW | internal/scripts/lib/labels.ts | 42 | export function formatLabelOptionsForPRTemplate() { | CODE |
| LOW | packages/validate/DOCS.md | 808 | function validateAndProcess(data: unknown) { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1285 | export function defaultHandleExternalExcalidrawContent(editor: Editor, { point, content }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1291 | export function defaultHandleExternalFileAsset(editor: Editor, { file, assetId }: TLFileExternalAsset, options: TLDefaul | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1294 | export function defaultHandleExternalFileContent(editor: Editor, { point, files }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1300 | export function defaultHandleExternalFileReplaceContent(editor: Editor, { file, shapeId }: TLFileReplaceExternalContent, | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1303 | export function defaultHandleExternalSvgTextContent(editor: Editor, { point, text }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1309 | export function defaultHandleExternalTextContent(editor: Editor, { point, text, html }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1316 | export function defaultHandleExternalTldrawContent(editor: Editor, { point, content }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1322 | export function defaultHandleExternalUrlAsset(editor: Editor, { url }: TLUrlExternalAsset, { toasts, msg }: TLDefaultExt | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1325 | export function defaultHandleExternalUrlContent(editor: Editor, { point, url }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1334 | export function DefaultHelperButtonsContent(): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4195 | export function TldrawUiComponentsProvider({ overrides, children }: TLUiComponentsProviderProps): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4201 | export function TldrawUiContextualToolbar({ children, className, isMousingDown, getSelectionBounds, changeOnlyWhenYChang | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4207 | export function TldrawUiDialogCloseButton(): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4222 | export function TldrawUiDropdownMenuCheckboxItem({ children, onSelect, ...rest }: TLUiDropdownMenuCheckboxItemProps): JS | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4225 | export function TldrawUiDropdownMenuContent({ className, side, align, sideOffset, alignOffset, collisionPadding, childre | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4228 | export function TldrawUiDropdownMenuGroup({ className, children }: TLUiDropdownMenuGroupProps): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4231 | export function TldrawUiDropdownMenuIndicator(): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4243 | export function TldrawUiDropdownMenuSubContent({ id, alignOffset, sideOffset, size, children }: TLUiDropdownMenuSubConte | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4246 | export function TldrawUiDropdownMenuSubTrigger({ id, label, title, disabled }: TLUiDropdownMenuSubTriggerProps): JSX.Ele | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4249 | export function TldrawUiDropdownMenuTrigger({ children, ...rest }: TLUiDropdownMenuTriggerProps): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4261 | export function TldrawUiInFrontOfTheCanvas(): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4270 | export function TldrawUiMenuActionCheckboxItem({ actionId, ...rest }: TLUiMenuActionCheckboxItemProps): JSX.Element | nu | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4279 | export function TldrawUiMenuContextProvider({ type, sourceId, children }: TLUiMenuContextProviderProps): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 654 | export function CenteredTopPanelContainer({ maxWidth, ignoreRightWidth, stylePanelWidth, marginBetweenZones, squeezeAmou | CODE |
| LOW | packages/tldraw/api-report.api.md | 673 | export function centerSelectionAroundPoint(editor: Editor, position: VecLike): void; | CODE |
| LOW | packages/tldraw/api-report.api.md | 791 | export function ConvertToBookmarkMenuItem(): JSX.Element | null; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1119 | export function DefaultActionsMenuContent(): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1136 | export function DefaultContextMenuContent(): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1160 | export function DefaultFollowingIndicator(): JSX.Element | null; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1366 | export function DefaultKeyboardShortcutsDialogContent(): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1407 | export function DefaultPeopleMenuFacePile({ userIds, userName, userColor }: TLUiPeopleMenuFacePileProps): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1424 | export function DefaultQuickActionsContent(): JSX.Element | undefined; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1430 | export function DefaultRichTextToolbarContent({ textEditor, onEditLinkStart }: DefaultRichTextToolbarContentProps): JSX. | CODE |
| LOW | packages/tldraw/api-report.api.md | 1484 | export function DefaultUserPresenceEditor(): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1962 | export function FitFrameToContentMenuItem(): JSX.Element | null; | CODE |
| LOW | packages/tldraw/api-report.api.md | 2331 | export function getArrowTerminalsInArrowSpace(editor: Editor, shape: TLArrowShape, bindings: TLArrowBindings): { | CODE |
| 475 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | socket.yml | 1 | version: 2 | COMMENT |
| LOW | internal/scripts/i18n-fix-strings.ts | 1 | import { Key, LokaliseApi } from '@lokalise/node-api' | COMMENT |
| LOW | internal/scripts/publish-patch.ts | 61 | if (process.env.GITHUB_OUTPUT) { | COMMENT |
| LOW | internal/scripts/deploy-dotcom.ts | 281 | // Zero connection limits per environment. | COMMENT |
| LOW | internal/scripts/lib/didAnyPackageChange.ts | 61 | filePath: string | COMMENT |
| LOW | packages/tldraw/src/test/TldrawEditor.test.tsx | 101 | // render( | COMMENT |
| LOW | packages/tldraw/src/test/TldrawEditor.test.tsx | 121 | // store={createTLStore({ shapeUtils: [GroupShapeUtil] })} | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 901 | // C - fill: none | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1021 | COMMENT | |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1061 | // ! Removed: pointing a group is impossible; you'd be pointing the selection instead. | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1081 | expect(editor.getSelectedShapeIds().includes(ids.boxB)).toBe(true) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1181 | // group A | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1501 | }) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1621 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1741 | }) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1841 | }) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1861 | // // 20 ┌───┐ | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1881 | // }) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1901 | // expect(editor.focusedGroupId).toBe(editor.currentPageId) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1921 | // expect(onlySelectedId()).not.toBe(groupCId) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 341 | // | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 361 | }) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 381 | expect(roundedPageBounds(ids.boxA)).toMatchObject({ x: 0, y: 0, w: 5, h: 5 }) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 401 | // └──────────────────────────────────────────────────────────────────O | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 421 | // │ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 441 | expect(roundedPageBounds(ids.boxB)).toMatchObject({ x: 20, y: 40, w: 10, h: 20 }) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 461 | COMMENT | |
| LOW | packages/tldraw/src/test/resizing.test.ts | 481 | w: 60, | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 501 | COMMENT | |
| LOW | packages/tldraw/src/test/resizing.test.ts | 581 | // │ │ │ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 601 | // │ │ │ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 621 | // │ │ │ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 641 | // │ │ A │ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 681 | // │ ┌───┐ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 701 | // │ ┌──────────┐ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 721 | }) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1241 | COMMENT | |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1281 | `) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1321 | // x ┌────────────────────┐ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1361 | // │ │ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1381 | // │ │ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1401 | // │ │ │ X │ │ │ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1421 | expect(editor.getShape(ids.boxX)).toMatchObject({ x: 80, y: 80, props: { w: 80, h: 80 } }) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1461 | describe('snapping while resizing from center', () => { | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1541 | }) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1581 | // 40 │ │ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1601 | [ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1641 | ] | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1681 | // 20 └───┘ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1741 | "20,20 60,20 80,20 120,20", | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1781 | // 0 ┌───┐ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1821 | // | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1841 | }) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1901 | }) | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 1961 | ] | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 2001 | // 40 ┌──────────────────┐ | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 2021 | "120,40 120,60 120,80 120,120", | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 2061 | // 20 x────┬────x───x────x | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 2121 | '20,20 60,20 80,20 120,20', | COMMENT |
| LOW | packages/tldraw/src/test/resizing.test.ts | 2181 | COMMENT | |
| 153 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/scripts/profile-typescript.ts | 52 | // Step 1: Count files being processed | COMMENT |
| LOW | internal/scripts/profile-typescript.ts | 66 | // Step 2: Calculate tsbuildinfo cache size | COMMENT |
| LOW | internal/scripts/profile-typescript.ts | 101 | // Step 3: Run extended diagnostics | COMMENT |
| LOW | internal/scripts/profile-typescript.ts | 130 | // Step 4: Generate trace file | COMMENT |
| LOW | internal/scripts/profile-typescript.ts | 179 | // Step 5: Generate markdown report | COMMENT |
| LOW | internal/scripts/profile-tsserver.ts | 66 | // Step 1: Get project info | COMMENT |
| LOW | internal/scripts/profile-tsserver.ts | 91 | // Step 2: Check for existing TSServer logs | COMMENT |
| LOW | internal/scripts/profile-tsserver.ts | 118 | // Step 3: Start a TSServer instance for profiling | COMMENT |
| LOW | internal/scripts/profile-tsserver.ts | 249 | // Step 4: Generate report | COMMENT |
| LOW | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 280 | // Step 1: Compute (x1', y1') - transform from ellipse coordinate system to unit circle | COMMENT |
| LOW | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 294 | // Step 2: Compute (cx', cy') - center of ellipse in transformed system | COMMENT |
| LOW⚡ | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 308 | // Step 3: Compute (cx, cy) from (cx', cy') - transform back to original coordinate system | COMMENT |
| LOW⚡ | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 312 | // Step 4: Compute the start and end angles | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 143 | // Step 1: seed the dirty set from the record diffs. | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 197 | // Step 2: a moved record moves the page transforms of all its | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 213 | // Step 3: expand to a fixpoint. Any shape whose bounds may have changed | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 231 | // Step 4: recheck only the dirty shapes' bounds. The batch stays empty | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 671 | // Step 1: Find the best anchor point on the shape | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 677 | // Step 2: Convert anchor point to normalized coordinates (0-1 range within shape bounds) | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 683 | // Step 3: Clamp normalized coordinates to valid range [0, 1] | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 689 | // Step 4: Validate that the clamped anchor point is still within the shape geometry. This is necessary because the abo | COMMENT |
| LOW | skills/review-docs/SKILL.md | 86 | ## Step 1: Initial evaluation | COMMENT |
| LOW | skills/review-docs/SKILL.md | 188 | ## Step 2: Summarize and prompt user | COMMENT |
| LOW | skills/review-docs/SKILL.md | 219 | ## Step 3: Triage (before improvement) | COMMENT |
| LOW | skills/review-docs/SKILL.md | 230 | ## Step 4: Improve | COMMENT |
| LOW | skills/review-docs/SKILL.md | 296 | ## Step 5: Verification evaluation | COMMENT |
| LOW | skills/review-docs/SKILL.md | 371 | ## Step 6: Loop | COMMENT |
| LOW | skills/pr-walkthrough/SKILL.md | 31 | ### Step 1: Understand the PR | COMMENT |
| LOW | skills/pr-walkthrough/SKILL.md | 56 | ### Step 2: Write the narration | COMMENT |
| LOW | skills/pr-walkthrough/SKILL.md | 68 | ### Step 3: Generate audio and timestamps | COMMENT |
| LOW | skills/pr-walkthrough/SKILL.md | 111 | ### Step 4: Write the manifest | COMMENT |
| LOW | skills/pr-walkthrough/SKILL.md | 249 | ### Step 5: Render the video | COMMENT |
| LOW | skills/skill-creator/SKILL.md | 215 | ### Step 1: Understanding the Skill with Concrete Examples | COMMENT |
| LOW | skills/skill-creator/SKILL.md | 232 | ### Step 2: Planning the Reusable Skill Contents | COMMENT |
| LOW | skills/skill-creator/SKILL.md | 256 | ### Step 3: Initializing the Skill | COMMENT |
| LOW | skills/skill-creator/SKILL.md | 279 | ### Step 4: Edit the Skill | COMMENT |
| LOW | skills/skill-creator/SKILL.md | 320 | ### Step 5: Packaging a Skill | COMMENT |
| LOW | skills/skill-creator/SKILL.md | 346 | ### Step 6: Iterate | COMMENT |
| LOW | skills/tldraw-migrate/SKILL.md | 44 | ## Step 1: Understand the environment | COMMENT |
| LOW | skills/tldraw-migrate/SKILL.md | 57 | ## Step 2: Upgrade packages | COMMENT |
| LOW | skills/tldraw-migrate/SKILL.md | 66 | ## Step 3: Identify all TypeScript errors | COMMENT |
| LOW | skills/tldraw-migrate/SKILL.md | 82 | ## Step 4: Fix errors in order of impact | COMMENT |
| LOW | skills/tldraw-migrate/SKILL.md | 156 | ## Step 5: Fix deprecations | COMMENT |
| LOW | skills/tldraw-migrate/SKILL.md | 186 | ## Step 6: Verify | COMMENT |
| LOW | skills/tldraw-migrate/SKILL.md | 209 | ## Step 7: Report | COMMENT |
| LOW | apps/mcp-app/.claude/skills/add-app-to-server/SKILL.md | 58 | ## Step 1: Analyze Existing Tools | COMMENT |
| LOW | apps/mcp-app/.claude/skills/add-app-to-server/SKILL.md | 77 | ## Step 2: Add Dependencies | COMMENT |
| LOW | apps/mcp-app/.claude/skills/add-app-to-server/SKILL.md | 88 | ## Step 3: Set Up the Build Pipeline | COMMENT |
| LOW | apps/mcp-app/.claude/skills/add-app-to-server/SKILL.md | 143 | ## Step 4: Convert Tools to App Tools | COMMENT |
| LOW | apps/mcp-app/.claude/skills/add-app-to-server/SKILL.md | 192 | ## Step 5: Register Resources | COMMENT |
| LOW | apps/mcp-app/.claude/skills/add-app-to-server/SKILL.md | 221 | ## Step 6: Build the UI | COMMENT |
| LOW | apps/mcp-app/.claude/skills/convert-web-app/SKILL.md | 63 | ## Step 1: Analyze the Existing Web App | COMMENT |
| LOW | apps/mcp-app/.claude/skills/convert-web-app/SKILL.md | 90 | ## Step 2: Investigate CSP Requirements | COMMENT |
| LOW | apps/mcp-app/.claude/skills/convert-web-app/SKILL.md | 111 | ## Step 3: Set Up the MCP Server | COMMENT |
| LOW | apps/mcp-app/.claude/skills/convert-web-app/SKILL.md | 201 | ## Step 4: Adapt the Build Pipeline | COMMENT |
| LOW | apps/mcp-app/.claude/skills/convert-web-app/SKILL.md | 252 | ## Step 5: Add MCP App Initialization Alongside Existing Logic | COMMENT |
| LOW | apps/mcp-app/.claude/skills/convert-web-app/SKILL.md | 407 | ## Step 6: Add Host Styling Integration (MCP Mode Only) | COMMENT |
| LOW | apps/dotcom/sync-worker/src/adminRoutes.ts | 340 | // Step 1: Find all groups the user is the only owner of | COMMENT |
| LOW⚡ | apps/dotcom/sync-worker/src/adminRoutes.ts | 373 | // Step 2: Soft delete groups (the cleanup_deleted_group_trigger will soft delete their files) | COMMENT |
| LOW⚡ | apps/dotcom/sync-worker/src/adminRoutes.ts | 379 | // Step 3: Get all files to hard delete | COMMENT |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ages/tldraw/src/lib/ui/hooks/useCollaborationStatus.ts | 18 | return editor.store.props.collaboration.status.get() | CODE |
| CRITICAL | packages/editor/src/lib/editor/Editor.ts | 944 | const user = this.store.props.users.currentUser.get() | CODE |
| CRITICAL | packages/editor/src/lib/editor/Editor.ts | 4419 | const user = this.store.props.users.currentUser.get() | CODE |
| CRITICAL | packages/editor/src/lib/editor/Editor.ts | 6824 | const binding = this.store.schema.types.binding.create({ | CODE |
| CRITICAL | apps/dotcom/client/src/tla/utils/slurping.tsx | 88 | if (this.opts.editor.store.query.records('shape').get().length === 0) { | CODE |
| CRITICAL | …rs/attribution-timeline/AttributionTimelineExample.tsx | 123 | const user = editor.store.props.users.currentUser.get() | CODE |
| CRITICAL | …s/src/examples/users/custom-user/CustomUserExample.tsx | 89 | const currentUser = useValue('current-user', () => editor.store.props.users.currentUser.get(), [ | CODE |
| CRITICAL | …/src/examples/users/attribution/AttributionExample.tsx | 102 | const currentUser = useValue('current-user', () => editor.store.props.users.currentUser.get(), [ | CODE |
| CRITICAL | …/src/examples/users/attribution/AttributionExample.tsx | 221 | The panel reads `editor.store.props.users.currentUser.get()` to show who is | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/scripts/profile-typescript.ts | 52 | // Step 1: Count files being processed | COMMENT |
| LOW | internal/scripts/profile-typescript.ts | 66 | // Step 2: Calculate tsbuildinfo cache size | COMMENT |
| LOW | internal/scripts/profile-typescript.ts | 101 | // Step 3: Run extended diagnostics | COMMENT |
| LOW | internal/scripts/profile-typescript.ts | 130 | // Step 4: Generate trace file | COMMENT |
| LOW | internal/scripts/profile-typescript.ts | 179 | // Step 5: Generate markdown report | COMMENT |
| LOW | internal/scripts/profile-tsserver.ts | 66 | // Step 1: Get project info | COMMENT |
| LOW | internal/scripts/profile-tsserver.ts | 91 | // Step 2: Check for existing TSServer logs | COMMENT |
| LOW | internal/scripts/profile-tsserver.ts | 118 | // Step 3: Start a TSServer instance for profiling | COMMENT |
| LOW | internal/scripts/profile-tsserver.ts | 249 | // Step 4: Generate report | COMMENT |
| LOW | …w/src/lib/tools/SelectTool/childStates/EditingShape.ts | 65 | // In the case where on pointer down we hit a shape's label, we need to check if the user is dragging. | COMMENT |
| LOW | …es/tldraw/src/lib/tools/SelectTool/childStates/Idle.ts | 655 | // we need to check if the canvas was initially selecting something before continuing. | COMMENT |
| LOW | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 280 | // Step 1: Compute (x1', y1') - transform from ellipse coordinate system to unit circle | COMMENT |
| LOW | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 294 | // Step 2: Compute (cx', cy') - center of ellipse in transformed system | COMMENT |
| LOW⚡ | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 308 | // Step 3: Compute (cx, cy) from (cx', cy') - transform back to original coordinate system | COMMENT |
| LOW⚡ | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 312 | // Step 4: Compute the start and end angles | COMMENT |
| LOW | packages/tlschema/src/records/TLBinding.ts | 78 | ? // if it's a default binding type we need to check if it's been overridden | CODE |
| LOW | packages/tlschema/src/records/TLShape.ts | 107 | ? // if it's a default shape type we need to check if it's been overridden | CODE |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 143 | // Step 1: seed the dirty set from the record diffs. | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 197 | // Step 2: a moved record moves the page transforms of all its | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 213 | // Step 3: expand to a fixpoint. Any shape whose bounds may have changed | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 231 | // Step 4: recheck only the dirty shapes' bounds. The batch stays empty | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 671 | // Step 1: Find the best anchor point on the shape | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 677 | // Step 2: Convert anchor point to normalized coordinates (0-1 range within shape bounds) | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 683 | // Step 3: Clamp normalized coordinates to valid range [0, 1] | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 689 | // Step 4: Validate that the clamped anchor point is still within the shape geometry. This is necessary because the abo | COMMENT |
| LOW | apps/dotcom/sync-worker/src/adminRoutes.ts | 340 | // Step 1: Find all groups the user is the only owner of | COMMENT |
| LOW⚡ | apps/dotcom/sync-worker/src/adminRoutes.ts | 373 | // Step 2: Soft delete groups (the cleanup_deleted_group_trigger will soft delete their files) | COMMENT |
| LOW⚡ | apps/dotcom/sync-worker/src/adminRoutes.ts | 379 | // Step 3: Get all files to hard delete | COMMENT |
| LOW | apps/dotcom/sync-worker/src/adminRoutes.ts | 410 | // Step 5: Hard delete groups and user in a transaction | COMMENT |
| LOW | …les/e2e/tests/test-a11y-style-panel-navigation.spec.ts | 32 | // Step 1: Press Enter to start editing the label | COMMENT |
| LOW⚡ | …les/e2e/tests/test-a11y-style-panel-navigation.spec.ts | 43 | // Step 2: Press Escape to exit editing mode | COMMENT |
| LOW⚡ | …les/e2e/tests/test-a11y-style-panel-navigation.spec.ts | 50 | // Step 3: Press Cmd+Enter to focus the style panel | COMMENT |
| LOW | …les/e2e/tests/test-a11y-style-panel-navigation.spec.ts | 63 | // Step 4: Use arrow keys to navigate to a different color (assuming color buttons are first) | COMMENT |
| LOW⚡ | …les/e2e/tests/test-a11y-style-panel-navigation.spec.ts | 76 | // Step 5: Press Enter to select the color | COMMENT |
| LOW⚡ | …les/e2e/tests/test-a11y-style-panel-navigation.spec.ts | 79 | // Step 6: Press Escape to return focus to the shape. The Escape keydown | COMMENT |
| LOW⚡ | …les/e2e/tests/test-a11y-style-panel-navigation.spec.ts | 84 | // Step 7: Press Enter again to edit the label. Selecting a colour above makes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/validate/DOCS.md | 566 | phone: '555-1234', | CODE |
| LOW | packages/state/README.md | 95 | console.log(fullName.get()) // "John Doe" | CODE |
| LOW | packages/state/README.md | 98 | console.log(fullName.get()) // "Jane Doe" - automatically updated! | CODE |
| LOW | packages/state/DOCS.md | 135 | console.log(fullName.get()) // "John Doe" | CODE |
| LOW | packages/state/DOCS.md | 141 | console.log(fullName.get()) // "Jane Doe" | CODE |
| LOW⚡ | packages/state/DOCS.md | 180 | console.log(user.getFullName()) // "John Doe" | CODE |
| LOW⚡ | packages/state/DOCS.md | 183 | console.log(user.getFullName()) // "Jane Doe" | CODE |
| LOW⚡ | packages/state/DOCS.md | 191 | console.log(fullNameComputed.get()) // "John Doe" | CODE |
| LOW | packages/state/src/lib/Computed.ts | 186 | * console.log(fullName.get()) // "John Doe" | COMMENT |
| LOW | packages/state/src/lib/Computed.ts | 188 | * console.log(fullName.get()) // "Jane Doe" | COMMENT |
| LOW⚡ | packages/state/src/lib/__tests__/transactions.test.ts | 30 | expect(name).toBe('John Doe') | CODE |
| LOW⚡ | packages/state/src/lib/__tests__/transactions.test.ts | 37 | expect(name).toBe('John Doe') | CODE |
| LOW⚡ | packages/state/src/lib/__tests__/transactions.test.ts | 41 | expect(name).toBe('John Doe') | CODE |
| LOW⚡ | packages/state/src/lib/__tests__/transactions.test.ts | 47 | expect(name).toBe('John Doe') | CODE |
| LOW⚡ | packages/state/src/lib/__tests__/transactions.test.ts | 56 | expect(fullName.get()).toBe('John Doe') | CODE |
| LOW⚡ | packages/state/src/lib/__tests__/transactions.test.ts | 57 | expect(name).toBe('John Doe') | CODE |
| LOW | packages/state/src/lib/__tests__/transactions.test.ts | 199 | expect(fullName.get()).toBe('John Doe') | CODE |
| LOW | packages/dotcom-shared/src/mutators.test.ts | 21 | email: 'test@test.com', | CODE |
| LOW | packages/worker-shared/src/bookmarks.test.ts | 200 | author: 'John Doe', | CODE |
| LOW | packages/worker-shared/src/bookmarks.test.ts | 236 | author: 'John Doe', | CODE |
| LOW | packages/store/src/lib/StoreListeners.test.ts | 211 | const visit = Visit.create({ visitorName: 'John Doe' }) | CODE |
| LOW | packages/store/src/lib/Store.test.ts | 199 | store.put([Author.create({ name: 'J.R.R Tolkein' }), Visit.create({ visitorName: 'John Doe' })]) | CODE |
| LOW | packages/store/src/lib/Store.test.ts | 246 | Visit.create({ visitorName: 'John Doe', id: Visit.createId('doe') }), | CODE |
| LOW | packages/store/src/lib/StoreSchema.ts | 359 | * { id: 'book:1', typeName: 'book', title: '', author: 'Jane Doe' }, | COMMENT |
| LOW | …rc/examples/shapes/tools/layout-bindings/snapshot.json | 122 | "placeholder": false | CODE |
| LOW | …rc/examples/shapes/tools/layout-bindings/snapshot.json | 134 | "placeholder": false | CODE |
| LOW | …rc/examples/shapes/tools/layout-bindings/snapshot.json | 146 | "placeholder": false | CODE |
| LOW | …rc/examples/shapes/tools/layout-bindings/snapshot.json | 158 | "placeholder": false | CODE |
| LOW | …rc/examples/shapes/tools/layout-bindings/snapshot.json | 170 | "placeholder": false | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/utils/src/lib/version.test.ts | 417 | // This test checks that the system is robust against different global contexts | COMMENT |
| MEDIUM | .github/workflows/e2e-device.yml | 9 | # It currently covers multi-touch gestures (pinch), but the harness is meant to | COMMENT |
| MEDIUM | apps/examples/e2e/tests/test-page-menu.spec.ts | 287 | // Wait for edit mode and use robust input handling | COMMENT |
| MEDIUM | apps/examples/e2e/tests/test-page-menu.spec.ts | 316 | // Wait for edit mode and use robust input handling | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/i18n-download-strings.yml | 52 | # Check if there are any changes to JSON files | COMMENT |
| LOW | …s/update-release-notes/scripts/get-changelog-status.sh | 52 | # Check if the archive file already exists | COMMENT |
| LOW | …s/update-release-notes/scripts/get-changelog-status.sh | 61 | # Check if next.mdx has content (more than just frontmatter) | COMMENT |
| LOW | apps/mcp-app/wrangler.toml | 28 | # Set this to the public URL of the worker. Used for constructing absolute image URLs. | COMMENT |
| LOW | apps/dotcom/snapshot-state.sh | 49 | # Check if volume exists | COMMENT |
| LOW | apps/dotcom/restore-state.sh | 61 | # Check if dev-app is running | COMMENT |
| LOW | apps/dotcom/restore-state.sh | 102 | # Check if containers are using the volume | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/tlschema/src/records/TLPageState.ts | 142 | // rather than replace it, I've added another migration below that fixes it. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/tldraw/src/test/testutils/pretty.ts | 30 | print() { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/pr-walkthrough/video/render.sh | 10 | # Usage: | COMMENT |
| LOW | skills/pr-walkthrough/scripts/make-video.sh | 4 | # Usage: | COMMENT |
| LOW | skills/pr-walkthrough/scripts/generate-audio.sh | 7 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …es/collaboration/user-presence/UserPresenceExample.tsx | 118 | This is just for demonstration purposes. | CODE |