Build infinite canvas apps in React with the tldraw SDK. World's best, top-most agent recommended #1 five star SDK.
This report summarizes scanner evidence for tldraw/tldraw, a TypeScript project with 51,167 GitHub stars. SynthScan examined 810,974 lines of code across 3944 source files, recording 1571 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 2.9 (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? 1047 finding(s).
Are imports declared and package/API names verified? 38 finding(s).
Are wrappers, guards, and repeated structures necessary? 1145 finding(s).
Which changes need focused human review? 1571 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 1571 distinct pattern matches across 13 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⚡ | packages/tldraw/src/test/groups.test.tsx | 880 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 882 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 886 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 887 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 979 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 981 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 986 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 987 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1142 | // ┌───────────┼────┼────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1144 | // │ ┌─────────┼────┼─────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1148 | // │ └─────────┼────┼─────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1149 | // └───────────┼────┼────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1167 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1169 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1174 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1175 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1614 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1616 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1621 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1622 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1723 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1725 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1730 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1731 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1955 | // // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1957 | // // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1962 | // // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 1963 | // // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 2040 | // ┌─────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 2042 | // │ ┌────────────────────────┐ ┌──────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 2047 | // │ └────────────────────────┘ └──────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/tldraw/src/test/groups.test.tsx | 2048 | // └─────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 948 | // ┌──────────────────┐ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 953 | // └──────────────────┘ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 1286 | // ┌──────────────────────────────┐ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 1298 | // └──────────────────────────────┘ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 1851 | // ┌──────────────────────────────┐ | COMMENT |
| MEDIUM | packages/tldraw/src/test/groups.test.tsx | 1863 | // └──────────────────────────────┘ | 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 |
| 426 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 | 46 | function getTempDeclarationFilename(packageName: string): string { | CODE |
| LOW | internal/scripts/refresh-assets.ts | 196 | async function optimizeAndMergeDotcomIcons() { | CODE |
| LOW | internal/scripts/refresh-assets.ts | 418 | async function writeUrlBasedAssetDeclarationFile() { | CODE |
| LOW | internal/scripts/refresh-assets.ts | 455 | async function writeImportBasedAssetDeclarationFile( | CODE |
| LOW | internal/scripts/refresh-assets.ts | 495 | async function writeSelfHostedAssetDeclarationFile(): Promise<void> { | CODE |
| LOW | internal/scripts/refresh-assets.ts | 532 | async function writeAssetDeclarationDTSFile() { | CODE |
| LOW | internal/scripts/trigger-sdk-hotfix.ts | 56 | async function cherryPickTakingReleaseNotesFromCommit(commitSha: string) { | 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 | 231 | async function deployWorkersInDependencyOrder({ | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 532 | async function deployTldrawUserContentWorker({ dryRun }: { dryRun: boolean }) { | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 802 | function renderFlyioReplicationManagerToml(appName: string, backupPath: string): string { | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 830 | function renderFlyioViewSyncerToml( | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 878 | async function deployZeroViaFlyIoMultiNode() { | CODE |
| LOW | internal/scripts/deploy-dotcom.ts | 1022 | async function coalesceWithPreviousAssets(assetsDir: string) { | CODE |
| LOW | internal/scripts/export-template.ts | 151 | async function setWorkspaceDependenciesToLatest(dependencies?: Record<string, string>) { | CODE |
| LOW | internal/scripts/prune-preview-deploys.ts | 71 | async function listPreviewWorkerDeployments() { | CODE |
| LOW | internal/scripts/prune-preview-deploys.ts | 192 | 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 | 307 | export async function publishProductionDocsAndExamplesAndBemo({ | CODE |
| LOW | internal/scripts/lib/publishing.ts | 338 | 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 | 1297 | export function defaultHandleExternalExcalidrawContent(editor: Editor, { point, content }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1303 | export function defaultHandleExternalFileAsset(editor: Editor, { file, assetId }: TLFileExternalAsset, options: TLDefaul | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1306 | export function defaultHandleExternalFileContent(editor: Editor, { point, files }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1312 | export function defaultHandleExternalFileReplaceContent(editor: Editor, { file, shapeId }: TLFileReplaceExternalContent, | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1315 | export function defaultHandleExternalSvgTextContent(editor: Editor, { point, text }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1321 | export function defaultHandleExternalTextContent(editor: Editor, { point, text, html }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1328 | export function defaultHandleExternalTldrawContent(editor: Editor, { point, content }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1334 | export function defaultHandleExternalUrlAsset(editor: Editor, { url }: TLUrlExternalAsset, { toasts, msg }: TLDefaultExt | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1337 | export function defaultHandleExternalUrlContent(editor: Editor, { point, url, shapeId }: { | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 1347 | export function DefaultHelperButtonsContent(): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 3321 | export function renderHtmlFromRichTextForMeasurement(editor: Editor, richText: TLRichText_2): string; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 3324 | export function renderHtmlFromRichTextWithExtensions(richText: TLRichText_2, extensions: Extensions): string; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 3327 | export function renderPlaintextFromRichText(editor: Editor, richText: TLRichText_2): string; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4263 | export function TldrawUiComponentsProvider({ overrides, children, }: TLUiComponentsProviderProps): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4269 | export function TldrawUiContextualToolbar({ children, className, isMousingDown, getSelectionBounds, changeOnlyWhenYChang | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4275 | export function TldrawUiDialogCloseButton(): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4290 | export function TldrawUiDropdownMenuCheckboxItem({ children, onSelect, ...rest }: TLUiDropdownMenuCheckboxItemProps): JS | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4293 | export function TldrawUiDropdownMenuContent({ className, side, align, sideOffset, alignOffset, collisionPadding, childre | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4296 | export function TldrawUiDropdownMenuGroup({ className, children }: TLUiDropdownMenuGroupProps): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4299 | export function TldrawUiDropdownMenuIndicator(): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4311 | export function TldrawUiDropdownMenuSubContent({ id, alignOffset, sideOffset, size, children, }: TLUiDropdownMenuSubCont | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4314 | export function TldrawUiDropdownMenuSubTrigger({ id, label, title, disabled, }: TLUiDropdownMenuSubTriggerProps): JSX.El | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4317 | export function TldrawUiDropdownMenuTrigger({ children, ...rest }: TLUiDropdownMenuTriggerProps): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4329 | export function TldrawUiInFrontOfTheCanvas(): JSX.Element; | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4338 | export function TldrawUiMenuActionCheckboxItem({ actionId, whenDisabled, disabled, checked, ...rest }: TLUiMenuActionChe | CODE |
| LOW⚡ | packages/tldraw/api-report.api.md | 4347 | export function TldrawUiMenuContextProvider({ type, sourceId, children, }: TLUiMenuContextProviderProps): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 662 | export function CenteredTopPanelContainer({ maxWidth, ignoreRightWidth, stylePanelWidth, marginBetweenZones, squeezeAmou | CODE |
| LOW | packages/tldraw/api-report.api.md | 681 | export function centerSelectionAroundPoint(editor: Editor, position: VecLike): void; | CODE |
| LOW | packages/tldraw/api-report.api.md | 802 | export function ConvertToBookmarkMenuItem(): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1131 | export function DefaultActionsMenuContent(): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1148 | export function DefaultContextMenuContent(): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1172 | export function DefaultFollowingIndicator(): JSX.Element | null; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1379 | export function DefaultKeyboardShortcutsDialogContent(): JSX.Element; | CODE |
| LOW | packages/tldraw/api-report.api.md | 1397 | export function DefaultNoteShapeAttribution({ name, firstName, color, scale, variant, }: TLNoteShapeAttributionProps): J | CODE |
| LOW | packages/tldraw/api-report.api.md | 1423 | export function DefaultPeopleMenuFacePile({ userIds, userName, userColor, }: TLUiPeopleMenuFacePileProps): JSX.Element; | CODE |
| 599 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 | COMMENT | |
| LOW | internal/scripts/i18n-extract.ts | 1 | import { execFileSync } from 'child_process' | COMMENT |
| LOW | internal/scripts/deploy-dotcom.ts | 281 | env.MULTIPLAYER_SERVER = `https://${previewId}-tldraw-multiplayer.tldraw.workers.dev` | COMMENT |
| LOW | internal/scripts/i18n-upload-strings.ts | 1 | import fs from 'fs' | COMMENT |
| LOW | internal/scripts/lib/didAnyPackageChange.ts | 61 | filePath: string | COMMENT |
| LOW | internal/scripts/lib/publishing.ts | 141 | // short-lived publish token automatically. | COMMENT |
| LOW | packages/tldraw/src/test/TldrawEditor.test.tsx | 121 | // shapeUtils={[GroupShapeUtil]} | COMMENT |
| LOW | packages/tldraw/src/test/TldrawEditor.test.tsx | 141 | // ErrorFallback: ({ error }) => { | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 941 | COMMENT | |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1061 | COMMENT | |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1101 | expect(editor.getFocusedGroupId()).toBe(editor.getCurrentPageId()) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1141 | // group C │ │ | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1281 | COMMENT | |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1721 | beforeEach(() => { | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1841 | COMMENT | |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1941 | w: 130, | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1961 | // // │ │ └───┘ └───┘ │ │ └───┘ └───┘ │ │ | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 1981 | // editor.select(groupAId, groupBId) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 2001 | // editor.select(groupAId) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 2021 | // editor.select(ids.boxA) | COMMENT |
| LOW | packages/tldraw/src/test/groups.test.tsx | 2041 | // │ group A group B │ | 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 |
| 210 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 | 282 | // Step 1: Compute (x1', y1') - transform from ellipse coordinate system to unit circle | COMMENT |
| LOW | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 296 | // Step 2: Compute (cx', cy') - center of ellipse in transformed system | COMMENT |
| LOW⚡ | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 310 | // Step 3: Compute (cx, cy) from (cx', cy') - transform back to original coordinate system | COMMENT |
| LOW⚡ | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 314 | // Step 4: Compute the start and end angles | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 152 | // Step 1: seed the dirty set from the record diffs. | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 206 | // Step 2: a moved record moves the page transforms of all its | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 222 | // Step 3: expand to a fixpoint. Any shape whose bounds may have changed | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 240 | // Step 4: recheck only the dirty shapes' bounds. The batch stays empty | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 673 | // Step 1: Find the best anchor point on the shape | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 679 | // Step 2: Convert anchor point to normalized coordinates (0-1 range within shape bounds) | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 685 | // Step 3: Clamp normalized coordinates to valid range [0, 1] | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 691 | // 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 | 117 | ### 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 | 96 | ## Step 5: Fix deprecations | COMMENT |
| LOW | skills/tldraw-migrate/SKILL.md | 126 | ## Step 6: Verify | COMMENT |
| LOW | skills/tldraw-migrate/SKILL.md | 149 | ## 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 | 1218 | // Step 1: Find all groups the user is the only owner of | COMMENT |
| LOW | apps/dotcom/sync-worker/src/adminRoutes.ts | 1253 | // Step 2: Soft delete groups (the cleanup_deleted_group_trigger will soft delete their files) | COMMENT |
| LOW | apps/dotcom/sync-worker/src/adminRoutes.ts | 1284 | // Step 5: Hard delete groups and user in a transaction | COMMENT |
| 7 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 | 986 | const user = this.store.props.users.currentUser.get() | CODE |
| CRITICAL | packages/editor/src/lib/editor/Editor.ts | 4445 | const user = this.store.props.users.currentUser.get() | CODE |
| CRITICAL | packages/editor/src/lib/editor/Editor.ts | 6847 | 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 | 101 | const user = editor.store.props.users.currentUser.get() | 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 | 73 | // 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 | 642 | // we need to check if the canvas was initially selecting something before continuing. | COMMENT |
| LOW | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 282 | // Step 1: Compute (x1', y1') - transform from ellipse coordinate system to unit circle | COMMENT |
| LOW | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 296 | // Step 2: Compute (cx', cy') - center of ellipse in transformed system | COMMENT |
| LOW⚡ | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 310 | // Step 3: Compute (cx, cy) from (cx', cy') - transform back to original coordinate system | COMMENT |
| LOW⚡ | packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx | 314 | // 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 | 152 | // Step 1: seed the dirty set from the record diffs. | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 206 | // Step 2: a moved record moves the page transforms of all its | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 222 | // Step 3: expand to a fixpoint. Any shape whose bounds may have changed | COMMENT |
| LOW | …or/managers/SpatialIndexManager/SpatialIndexManager.ts | 240 | // Step 4: recheck only the dirty shapes' bounds. The batch stays empty | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 673 | // Step 1: Find the best anchor point on the shape | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 679 | // Step 2: Convert anchor point to normalized coordinates (0-1 range within shape bounds) | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 685 | // Step 3: Clamp normalized coordinates to valid range [0, 1] | COMMENT |
| LOW⚡ | …gent/shared/format/convertFocusedShapeToTldrawShape.ts | 691 | // 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 | 1218 | // Step 1: Find all groups the user is the only owner of | COMMENT |
| LOW | apps/dotcom/sync-worker/src/adminRoutes.ts | 1253 | // Step 2: Soft delete groups (the cleanup_deleted_group_trigger will soft delete their files) | COMMENT |
| LOW | apps/dotcom/sync-worker/src/adminRoutes.ts | 1284 | // 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 | 222 | expect(fullName.get()).toBe('John Doe') | CODE |
| LOW | packages/dotcom-shared/src/mutators.test.ts | 24 | email: 'test@test.com', | CODE |
| LOW | packages/worker-shared/src/bookmarks.test.ts | 204 | author: 'John Doe', | CODE |
| LOW | packages/worker-shared/src/bookmarks.test.ts | 240 | 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 | 200 | store.put([Author.create({ name: 'J.R.R Tolkein' }), Visit.create({ visitorName: 'John Doe' })]) | CODE |
| LOW | packages/store/src/lib/Store.test.ts | 275 | Visit.create({ visitorName: 'John Doe', id: Visit.createId('doe') }), | CODE |
| LOW | packages/store/src/lib/StoreSchema.ts | 374 | * { id: 'book:1', typeName: 'book', title: '', author: 'Jane Doe' }, | COMMENT |
| LOW | apps/dotcom/sync-worker/src/utils/featureFlags.test.ts | 234 | expect(parseAllowlistEmails(['a@example.com', 'b@example.org'])).toEqual([ | CODE |
| LOW | apps/dotcom/sync-worker/src/utils/featureFlags.test.ts | 236 | 'b@example.org', | CODE |
| 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 | 62 | # 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 | apps/dotcom/client/public/robots.txt | 16 | # include providing AI-generated search summaries. | 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 |