The Open Standard for Generative UI
This report presents the forensic synthetic code analysis of thesysdev/openui, a TypeScript project with 8,009 GitHub stars. SynthScan v2.0 examined 182,944 lines of code across 1765 source files, recording 316 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 4.6 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 316 distinct pattern matches across 11 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 | docs/app/demo/github/constants.ts | 75 | // ── Chat message types (shared between page + ConversationPanel) ────────── | COMMENT |
| MEDIUM | docs/app/demo/github/page.tsx | 47 | // ── Helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/page.tsx | 103 | // ── Tool call tracking wrapper ─────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/page.tsx | 143 | // ── SSE streaming ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/page.tsx | 214 | // ── Main Page ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/page.tsx | 306 | // ── GitHub connect ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/page.tsx | 348 | // ── Send message ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/page.tsx | 509 | // ── Saved dashboards ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/page.tsx | 543 | // ── Render ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/types.ts | 3 | // ── Transformed GitHub data interfaces ──────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/types.ts | 65 | // ── ToolSpec definitions for system prompt ────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 12 | // ── Cache ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 80 | // ── Rate limit tracking ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 112 | // ── Retry for 202 (computing) ────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 130 | // ── Tool implementations ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 169 | // ── Profile ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 206 | // ── Repos ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 242 | // ── Languages (aggregated) ─────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 297 | // ── Events ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 342 | // ── Commit Activity (per repo) ─────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 372 | // ── Star History (per repo) ────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 407 | // ── Contributors (per repo) ────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/demo/github/github/tools.ts | 441 | // ── Bookmarks (localStorage) ───────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/api/demo/github/stream/route.ts | 18 | // ── Component spec from generated JSON ──────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/api/demo/github/stream/route.ts | 24 | // ── GitHub system prompt ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/app/api/demo/github/stream/route.ts | 46 | // ── Route handler ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-react-native/chat-app/library.tsx | 7 | // ─── Shared chart constants ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-react-native/chat-app/library.tsx | 23 | // ─── Text ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-react-native/chat-app/library.tsx | 44 | // ─── BarChart ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-react-native/chat-app/library.tsx | 99 | // ─── LineChart ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-react-native/chat-app/library.tsx | 160 | // ─── PieChart ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-react-native/chat-app/library.tsx | 233 | // ─── Card ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-react-native/chat-app/library.tsx | 265 | // ─── Library ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-react-native/chat-app/library.tsx | 278 | // ─── Styles ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …es/openui-react-native/chat-app/screens/ChatScreen.tsx | 11 | // ─── Message types ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …es/openui-react-native/chat-app/screens/ChatScreen.tsx | 20 | // ─── ChatScreen ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-dashboard/src/tools.ts | 11 | // ── Helpers ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-dashboard/src/tools.ts | 30 | // ── Mock data generators ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-dashboard/src/tools.ts | 134 | // ── Tool registry ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-dashboard/src/app/api/mcp/route.ts | 11 | // ── MCP Server factory ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-dashboard/src/app/api/mcp/route.ts | 30 | // ── Request handler ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/openui-dashboard/src/app/api/mcp/route.ts | 48 | // ── Next.js route exports ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nui-dashboard/src/components/OpenUIDashboard/index.tsx | 13 | // ── Internal layout ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nui-dashboard/src/components/OpenUIDashboard/index.tsx | 160 | // ── Public component ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …i-dashboard/src/components/OpenUIDashboard/context.tsx | 14 | // ── Context shape ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …i-dashboard/src/components/OpenUIDashboard/context.tsx | 38 | // ── Provider ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/supabase-chat/src/app/api/chat/route.ts | 61 | // ── Persist the full conversation ────────────────────────────────────── | COMMENT |
| MEDIUM | examples/form-generator/src/app/page.tsx | 145 | // ── Empty state ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/form-generator/src/app/page.tsx | 207 | // ── Form generation page ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/reactive.ts | 1 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/reactive.ts | 4 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/library.ts | 10 | // ─── Schema ID tagging ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/library.ts | 26 | // ─── Zod v3 detection ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/library.ts | 39 | // ─── Sub-component type ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/library.ts | 51 | // ─── Renderer types (framework-generic) ────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/library.ts | 68 | // ─── DefinedComponent (framework-generic) ──────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/library.ts | 106 | // ─── Groups & Prompt Options ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/library.ts | 136 | // ─── Zod introspection ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/library.ts | 287 | // ─── Field analysis & signature generation ────────────────────────────────── | COMMENT |
| MEDIUM | packages/lang-core/src/library.ts | 333 | // ─── Library ──────────────────────────────────────────────────────────────── | COMMENT |
| 168 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/app/components/blocks/accordion/page.tsx | 97 | function ConfigurableAccordionPreview({ variant, type }: { variant: VariantMode; type: TypeMode }) { | CODE |
| LOW | docs/app/components/blocks/text-items/page.tsx | 137 | function HighlightTextNumberSubtextPreview() { | CODE |
| LOW | docs/app/components/blocks/text-items/page.tsx | 182 | function HighlightTextNumberSubtextNegativePreview() { | CODE |
| LOW | docs/app/components/blocks/charts/area/page.tsx | 36 | function AreaChartCondensedPreview() { | CODE |
| LOW | docs/app/components/blocks/charts/line/page.tsx | 36 | function LineChartCondensedPreview() { | CODE |
| LOW | docs/app/components/blocks/radio-button-group/page.tsx | 16 | export default function BlocksRadioButtonGroupPage() { | CODE |
| LOW | …nts/components/preview/ColorSwatchesPreviewSection.tsx | 24 | export default function ColorSwatchesPreviewSection({ | CODE |
| LOW | …onents/components/preview/pages/ShadowsPreviewPage.tsx | 101 | function normalizeShadowValueToOklch(value: string) { | CODE |
| LOW | …tem/components/preview/ColorSwatchesPreviewSection.tsx | 24 | export default function ColorSwatchesPreviewSection({ | CODE |
| LOW | …system/components/preview/pages/ShadowsPreviewPage.tsx | 155 | function normalizeShadowValueToOklch(value) { | CODE |
| LOW | docs/lib/demo-credits.ts | 20 | export function createDemoCreditsErrorPayload(): DemoCreditsErrorPayload { | CODE |
| LOW | docs/lib/demo-credits.ts | 28 | export function isDemoCreditsErrorPayload(value: unknown): value is DemoCreditsErrorPayload { | CODE |
| LOW | docs/lib/demo-credits.ts | 53 | export function isDemoCreditsExhaustedError(error: unknown, status?: number): boolean { | CODE |
| LOW | docs/lib/demo-credits.ts | 58 | export function createDemoCreditsExhaustedResponse(): Response { | CODE |
| LOW | …es/langchain-chat/src/lib/langchain-stream-response.ts | 53 | export async function createLangChainStreamResponse( | CODE |
| LOW | …mples/harnesses/pi-agent-harness/src/lib/pi-session.ts | 133 | export async function getOrCreateSession( | CODE |
| LOW | …/multi-agent-chat/src/components/assistant-message.tsx | 36 | function isOpenUiToolOutputStreaming(part: UIMessage["parts"][number]): boolean { | CODE |
| LOW | examples/shadcn-chat/src/components/ui/chart.tsx | 294 | function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) { | CODE |
| LOW | packages/lang-core/src/parser/prompt.ts | 273 | function interactiveFiltersSection(): string { | CODE |
| LOW | packages/lang-core/src/parser/prompt.ts | 532 | function generateComponentSignatures( | CODE |
| LOW | packages/lang-core/src/parser/serialize.ts | 217 | function serializeStateDeclarations( | CODE |
| LOW | packages/react-ui/src/genui-lib/CheckBoxGroup/schema.ts | 14 | export function createCheckBoxGroupSchema(CheckBoxItem: RefComponent) { | CODE |
| LOW | packages/react-ui/src/utils/sentinelParser.ts | 41 | export function separateContentAndContext(raw: string): ParsedMessageContent { | CODE |
| LOW | packages/react-ui/src/components/Charts/Charts.tsx | 215 | function ChartTooltipContentRender( | CODE |
| LOW | packages/react-ui/src/components/Charts/Charts.tsx | 409 | function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) { | CODE |
| LOW | …s/Charts/shared/PortalTooltip/CustomTooltipContent.tsx | 27 | function CustomTooltipContentRender( | CODE |
| LOW | packages/react-headless/src/adapters/_defaultStorage.ts | 11 | export function createDefaultInMemoryStorage(): ChatStorage { | CODE |
| LOW | …eact-headless/src/hooks/useDetailedViewPortalTarget.ts | 37 | export function useDetailedViewPortalTarget() { | CODE |
| LOW | …s/react-headless/src/store/ArtifactRenderersContext.ts | 31 | export function buildArtifactRendererRegistry( | CODE |
| LOW | …s/react-headless/src/store/ArtifactRenderersContext.ts | 76 | export function lookupArtifactRendererByType( | CODE |
| LOW | packages/openui-cli/src/lib/detect-package-manager.ts | 18 | function detectInvokingPackageManager(): PackageManagerName | null { | CODE |
| LOW | packages/openui-cli/src/lib/detect-package-manager.ts | 36 | export function resolveInstallPackageManager(): PackageManager { | CODE |
| LOW | …enui-cli/src/templates/openui-cloud/src/lib/billing.ts | 13 | export function shouldShowBillingCreditsNotice(nodeEnv = process.env.NODE_ENV): boolean { | CODE |
| LOW | …enui-cli/src/templates/openui-cloud/src/lib/billing.ts | 17 | export function getBillingCreditsErrorMessage( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/app/docs/openui-lang/streaming-comparison.tsx | 31 | "placeholder": "Your full name", | CODE |
| LOW | docs/app/docs/openui-lang/streaming-comparison.tsx | 49 | "placeholder": "you@example.com", | CODE |
| LOW | docs/app/docs/openui-lang/streaming-comparison.tsx | 67 | "placeholder": "e.g., +1 555 123 4567", | CODE |
| LOW | docs/app/docs/openui-lang/streaming-comparison.tsx | 123 | "placeholder": "Select a subject...", | CODE |
| LOW | docs/app/docs/openui-lang/streaming-comparison.tsx | 139 | "placeholder": "How can we help?", | CODE |
| LOW | benchmarks/schema.json | 900 | "placeholder": { | CODE |
| LOW | benchmarks/schema.json | 924 | "placeholder": { | CODE |
| LOW | benchmarks/schema.json | 953 | "placeholder": { | CODE |
| LOW | benchmarks/samples/contact-form.c1.json | 26 | "placeholder": "Your full name", | CODE |
| LOW | benchmarks/samples/contact-form.c1.json | 41 | "placeholder": "you@example.com", | CODE |
| LOW | benchmarks/samples/contact-form.c1.json | 56 | "placeholder": "e.g., +1 555 123 4567", | CODE |
| LOW | benchmarks/samples/contact-form.c1.json | 108 | "placeholder": "Select a subject...", | CODE |
| LOW | benchmarks/samples/contact-form.c1.json | 122 | "placeholder": "How can we help?", | CODE |
| LOW | benchmarks/samples/settings-panel.c1.json | 47 | "placeholder": "e.g., Alex Johnson", | CODE |
| LOW | benchmarks/samples/settings-panel.c1.json | 62 | "placeholder": "https://example.com/avatar.png", | CODE |
| LOW | benchmarks/samples/e-commerce-product.c1.json | 202 | "placeholder": "Select your size...", | CODE |
| LOW | packages/react-email/src/library.ts | 387 | footer = EmailFooterTwoColumn("https://picsum.photos/seed/acme-icon/42/42", "Acme", "Acme Corp", "Innovation first", "12 | CODE |
| LOW | packages/react-email/src/library.ts | 397 | "Use realistic, professional placeholder text — never use lorem ipsum.", | CODE |
| LOW | …src/components/ListBlock/stories/ListBlock.stories.tsx | 98 | <ListItem icon={<User size={16} />} title="John Doe" subtitle="Software Engineer" /> | CODE |
| LOW | …src/components/ListBlock/stories/ListBlock.stories.tsx | 108 | <ListItem icon={<User size={16} />} title="John Doe" /> | CODE |
| LOW | …src/components/ListBlock/stories/ListBlock.stories.tsx | 120 | title="John Doe" | CODE |
| LOW | …src/components/ListBlock/stories/ListBlock.stories.tsx | 124 | onClick={() => alert("John Doe")} | CODE |
| LOW | …src/components/ListBlock/stories/ListBlock.stories.tsx | 151 | title="John Doe" | CODE |
| LOW | …src/components/ListBlock/stories/ListBlock.stories.tsx | 171 | <ListItem image={{ src: "https://i.pravatar.cc/40?img=1", alt: "John" }} title="John Doe" /> | CODE |
| LOW | …src/components/ListBlock/stories/ListBlock.stories.tsx | 183 | title="John Doe" | CODE |
| LOW | …src/components/ListBlock/stories/ListBlock.stories.tsx | 186 | onClick={() => alert("John Doe")} | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/react-email/README.md | 42 | OPENAI_API_KEY=sk-your-api-key-here | CODE |
| HIGH | examples/openui-chat/README.md | 59 | docker run --rm -p 3000:3000 -e OPENAI_API_KEY=your_api_key openui-chat | CODE |
| HIGH | examples/openui-chat/README.md | 66 | docker run --rm -p 3000:3000 -e OPENAI_API_KEY=your_api_key openui-chat | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 164 | │ └── openui-cli/ # CLI for scaffolding & prompt generation | CODE |
| MEDIUM | README.md | 209 | OpenUI ships an [Agent Skill](https://agentskills.io) so AI coding assistants (Claude Code, Codex, Cursor, Copilot, etc. | CODE |
| MEDIUM | examples/openui-chat/src/app/api/chat/route.ts | 185 | // Strip tool_calls (runTools re-runs the agentic loop server-side) | COMMENT |
| MEDIUM | examples/material-ui-chat/src/app/api/chat/route.ts | 294 | // Strip tool_calls (runTools re-runs the agentic loop server-side) | COMMENT |
| MEDIUM | examples/shadcn-chat/src/app/api/chat/route.ts | 262 | // Strip tool_calls (runTools re-runs the agentic loop server-side) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/react-email/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | examples/openui-react-native/backend/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | examples/harnesses/vercel-eve/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | examples/material-ui-chat/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | examples/shadcn-chat/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | examples/form-generator/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | packages/react-ui/.storybook/preview.tsx | 61 | // // // value: `production-${theme}`, | COMMENT |
| LOW | packages/react-ui/.storybook/preview.tsx | 81 | COMMENT | |
| LOW | …onents/Charts/shared/LineInBarShape/LineInBarShape.tsx | 121 | // - No category is being hovered (hoveredCategory is null) | COMMENT |
| LOW | …onents/Charts/shared/LineInBarShape/LineInBarShape.tsx | 221 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/public/openclaw-os/install.sh | 185 | # the URL is the last http-shaped line. `tail -n1` is more robust than | COMMENT |
| MEDIUM | …les/react-email/src/components/composePage/starters.ts | 6 | prompt: `Create a beautiful launch announcement email for OpenUI — the open standard for Generative UI. OpenUI lets | CODE |
| MEDIUM | …/src/components/Charts/PieChart/utils/PieChartUtils.ts | 63 | const baseRadiusPercentage = 0.45; // Prefer a larger base to better utilize available width | CODE |
| MEDIUM | …/src/components/Charts/PieChart/utils/PieChartUtils.ts | 84 | const baseRadiusPercentage = 0.45; // Prefer a larger base to better utilize available width | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | benchmarks/README.md | 34 | Measured with `tiktoken` (`gpt-5` model encoder). Generated by GPT-5.2 at temperature 0. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …src/components/CodeBlock/stories/CodeBlock.stories.tsx | 65 | print(greet("World"))`, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …les/hands-on-table-chat/src/app/api/chat/tableStore.ts | 71 | // Step 1: Expand range end-refs (e.g. B1:B5 → B1:B6 when inserting at position 5) | COMMENT |
| LOW | …les/hands-on-table-chat/src/app/api/chat/tableStore.ts | 95 | // Step 2: Shift standalone (non-range) refs past the insert point. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …les/hands-on-table-chat/src/app/api/chat/tableStore.ts | 71 | // Step 1: Expand range end-refs (e.g. B1:B5 → B1:B6 when inserting at position 5) | COMMENT |
| LOW | …les/hands-on-table-chat/src/app/api/chat/tableStore.ts | 95 | // Step 2: Shift standalone (non-range) refs past the insert point. | COMMENT |