Free, open-source AI Office suite: Docs, Sheets, Slides, PDF, Markdown and HTML editors with a built-in AI agent, plus a `genoffice` CLI and agent skill so Claude Code, Codex and Cursor can create and edit real .docx/.xlsx/.pptx files locally. Bring your own key. macOS, Windows & Linux.
This report summarizes scanner evidence for genspark-ai/genoffice, a TypeScript project with 11,458 GitHub stars. SynthScan examined 1,391,847 lines of code across 4950 source files, recording 1207 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 1.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 615 finding(s).
Are imports declared and package/API names verified? 133 finding(s).
Are wrappers, guards, and repeated structures necessary? 881 finding(s).
Which changes need focused human review? 1207 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 1207 distinct pattern matches across 16 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/pptx-engine/tests/align.test.ts | 8 | // ── Helpers ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/align.test.ts | 12 | // ── Alignment tests ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/align.test.ts | 100 | // ── Distribution tests ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/format-brush.test.ts | 8 | // ── Helpers ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/format-brush.test.ts | 20 | // ── extractFormat ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/format-brush.test.ts | 90 | // ── applyFormat ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/group.test.ts | 29 | // ── Unit tests: calcBoundingBox ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/group.test.ts | 56 | // ── Unit tests: buildGrpSpXml ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/group.test.ts | 93 | // ── Integration tests: groupElements + ungroupElement ──────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/group.test.ts | 255 | // ── mixed-type group children keep document order ──────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/picture-crop.test.ts | 19 | // ── Unit tests: patchPictureSrcRect ───────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/picture-crop.test.ts | 104 | // ── Integration tests: editPictureSrcRect + savePptx ─────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/connector-parse.test.ts | 24 | // ── 1. straight connector (line/straightConnector1) ─────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/connector-parse.test.ts | 70 | // ── 2. bent connector (bentConnector3) ─────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/connector-parse.test.ts | 100 | // ── 3. curved connector (curvedConnector3) ─────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/connector-parse.test.ts | 128 | // ── 4. Fallback to a visible stroke when ln is absent ──────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/tests/connector-parse.test.ts | 147 | // ── 5. Roundtrip: byte fidelity after parse + reassemble ───────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/parse.ts | 459 | // ── p:sp (text box / shape) ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/parse.ts | 718 | // ── p:cxnSp (connector) ───────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/parse.ts | 877 | // ── p:grpSp (group) ──────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/parse.ts | 1139 | // ── p:pic (picture) ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/parse.ts | 3176 | // ── Table (a:tbl) ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/parse.ts | 3388 | // ── Geometry ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/parse.ts | 3426 | // ── Fill ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/parse.ts | 3678 | // ── Text ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/parse.ts | 4328 | // ── master/layout decoration layer ─────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/theme-apply.ts | 93 | // ── Explicit color remapping ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/insert.ts | 111 | // ── Line / connector insertion ───────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/insert.ts | 270 | // ── Table insertion (graphicFrame + a:tbl) ───────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/insert.ts | 484 | // ── Picture insertion (media part surgery) ───────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/insert.ts | 640 | // ── Grouping (p:grpSp) ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/animation.ts | 133 | // ── Write: SlideAnimation[] → <p:timing> ─────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/animation.ts | 794 | // ── Read: <p:timing> → SlideAnimation[] ──────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/animation.ts | 896 | // ── Incremental write-back (keeps unmodeled timing nodes) ────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/format-brush.ts | 16 | // ── Format containers ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/format-brush.ts | 50 | // ── Extraction (source element → CopiedFormat) ───────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/format-brush.ts | 87 | // ── Application (CopiedFormat → target element delta) ────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/types.ts | 21 | // ── Geometry ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/types.ts | 42 | // ── Color / fill / stroke (inheritance resolved to final values) ──────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/types.ts | 152 | // ── Text ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/types.ts | 431 | // ── Elements ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/types.ts | 665 | // ── Table (p:graphicFrame → a:tbl) ─────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/types.ts | 716 | // ── Chart (p:graphicFrame → c:chart reference) ─────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/types.ts | 729 | // ── Slide / presentation ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/layout.ts | 16 | // ── Layout placeholder summary ───────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/layout.ts | 127 | // ── Blank slide insertion (with a given layout) ───────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/media-insert.ts | 87 | // ── Shared part / rels surgery ───────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/media-insert.ts | 141 | // ── Audio/video ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/media-insert.ts | 213 | // ── 3D models ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/table-edit.ts | 40 | // ── Preset styles ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/table-edit.ts | 198 | // ── 1. Replace <a:tblPr> ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/table-edit.ts | 235 | // ── 2. Shading / borders: patch the targeted <a:tcPr> nodes ──────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/generate.ts | 986 | // ── Fill patch (dirtyFill) ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/generate.ts | 1225 | // ── Stroke patch (dirtyStroke) ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/generate.ts | 1357 | // ── Slide background patch ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/generate.ts | 1359 | // ── Picture crop patch (dirtySrcRect) ─────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/generate.ts | 1478 | // ── Slide transition patch ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/generate.ts | 1622 | // ── Hidden slide patch (<p:sld show="0">, skipped during slideshow) ───── | COMMENT |
| MEDIUM | packages/pptx-engine/src/generate.ts | 1641 | // ── Geometry patch (dirtyTransform) ───────────────────────────────────── | COMMENT |
| MEDIUM | packages/pptx-engine/src/index.ts | 1924 | // ── New slides (duplicate an existing slide / blank slide) ──────────── | COMMENT |
| 389 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/pptx-engine/tests/embedded-fonts.test.ts | 149 | function sfntWithHostileRangeOffset(): Uint8Array { | CODE |
| LOW | packages/pptx-engine/src/resource-cleanup.ts | 118 | function removeContentTypeOverrides( | CODE |
| LOW | packages/pptx-engine/src/resource-cleanup.ts | 162 | function removeUnreferencedOwnedParts( | CODE |
| LOW | packages/pptx-engine/src/resource-cleanup.ts | 237 | function removeRelationshipsAndCollectOwnedTargets( | CODE |
| LOW | packages/pptx-engine/src/resource-cleanup.ts | 277 | export function cleanupSupersededSlideResources( | CODE |
| LOW | packages/pptx-engine/src/resource-cleanup.ts | 316 | export function cleanupDeletedElementResources( | CODE |
| LOW | packages/pptx-engine/src/resource-cleanup.ts | 330 | export function removeRelationshipAndCollectOwnedTarget( | CODE |
| LOW | packages/pptx-engine/src/resource-cleanup.ts | 342 | export function removePartWithOwnedResources( | CODE |
| LOW | packages/pptx-engine/src/comments.ts | 78 | function commentsRelationshipForSlide( | CODE |
| LOW | packages/pptx-engine/src/builtin-layouts.ts | 114 | export function shouldOfferBuiltinLayouts( | CODE |
| LOW | packages/pptx-engine/src/parse.ts | 905 | function groupScaleWithinWriteRange(groupExt: EmuRect, childExt: EmuRect): boolean { | CODE |
| LOW | packages/pptx-engine/src/background-promote.ts | 60 | function isPromotableBackgroundShape(el: SlideElement, size: SlideSize): el is TextElement { | CODE |
| LOW | packages/pptx-engine/src/animation.ts | 709 | function rebuildTimingPreservingXml(timing: string, anims: SlideAnimation[]): string | null { | CODE |
| LOW | packages/pptx-engine/src/animation.ts | 1023 | export function patchSlideTimingIncrementalXml( | CODE |
| LOW | packages/pptx-engine/src/layout.ts | 185 | function buildSlideXmlWithPlaceholders(placeholders: LayoutPlaceholder[]): string { | CODE |
| LOW | packages/pptx-engine/src/layout.ts | 206 | export function prepareInsertSlideWithLayout( | CODE |
| LOW | packages/pptx-engine/src/generate.ts | 1466 | export function patchSlideShowMasterSpXml(bodyPrefix: string, hidden: boolean): string { | CODE |
| LOW | packages/pptx-engine/src/index.ts | 1337 | export function autofitGeneratedTextBoxes(slide: Slide): number { | CODE |
| LOW | packages/pptx-engine/src/index.ts | 3591 | export function setElementParagraphFormat( | CODE |
| LOW | packages/pptx-engine/src/index.ts | 3629 | export function setGroupChildParagraphFormat( | CODE |
| LOW | packages/pptx-engine/src/index.ts | 4712 | export function setGroupChildShapeAdjustValues( | CODE |
| LOW | packages/pptx-engine/src/index.ts | 4735 | export function setGroupChildShapePresetGeometry( | CODE |
| LOW | packages/pptx-engine/src/index.ts | 4761 | export function setGroupChildShapeCustomGeometry( | CODE |
| LOW | packages/pptx-engine/src/table-style.ts | 214 | export function resolveBuiltinTableStyleId(nameOrId: string): string | undefined { | CODE |
| LOW | packages/pptx-engine/src/placeholder.ts | 595 | export function resolvePlaceholderAnchorCtr( | CODE |
| LOW | packages/pptx-engine/src/placeholder.ts | 762 | export function resolvePlaceholderFillSpPr( | CODE |
| LOW | packages/pptx-engine/src/placeholder.ts | 796 | export function resolvePlaceholderTransform( | CODE |
| LOW | packages/pptx-engine/src/placeholder.ts | 810 | export function resolvePlaceholderPresetGeom( | CODE |
| LOW | packages/ui/src/wheel-zoom.ts | 130 | export function createZoomWheelClassifier(): { | CODE |
| LOW | packages/ui/src/font-list.ts | 162 | export function systemFamiliesBesidesCandidates( | CODE |
| LOW | packages/docx-engine/tests/metafile-render.test.ts | 1074 | function buildEmfPlusRegionClipFile(): ArrayBuffer { | CODE |
| LOW | packages/docx-engine/src/resource-cleanup.ts | 140 | function referencedRelationshipIds(xml: string): Set<string> { | CODE |
| LOW | packages/docx-engine/src/resource-cleanup.ts | 235 | export async function cleanupDocxOwnedResources(zip: JSZip, documentPath: string): Promise<void> { | CODE |
| LOW | packages/docx-engine/src/parse-block-passes.ts | 26 | function hostParagraphBreaksBefore(xml: string): boolean { | CODE |
| LOW | packages/docx-engine/src/parse-block-passes.ts | 33 | export function applyProtectedLeadingBreaks(blocks: Block[]): void { | CODE |
| LOW | packages/docx-engine/src/parse-block-passes.ts | 216 | export function bandWrappedBoxesBeforeTables(blocks: Block[]): void { | CODE |
| LOW | packages/docx-engine/src/blank.ts | 198 | export function customLevelFromNumberingLevel(level: NumberingLevel): CustomNumberingLevel { | CODE |
| LOW | packages/docx-engine/src/parse.ts | 1712 | function crossParagraphZoteroFields( | CODE |
| LOW | packages/docx-engine/src/parse.ts | 7721 | export function standaloneNoteParagraphReader(): NoteParagraphReader { | CODE |
| LOW | packages/docx-engine/src/resolve-props.ts | 486 | function resolveParagraphPropsUncached( | CODE |
| LOW | packages/docx-engine/src/zip-load.ts | 27 | function neutralizeUnicodePathFields(bytes: Uint8Array): Uint8Array { | CODE |
| LOW | packages/docx-engine/src/style-upsert.ts | 130 | export function builtInHeadingStyleUpsert( | CODE |
| LOW | packages/docx-engine/src/generate.ts | 3948 | export function buildAnchoredTextboxParagraphXml(opts: AnchoredTextboxOptions): string { | CODE |
| LOW | packages/docx-engine/src/watermark.ts | 146 | export function pictureWatermarkPreviewImage( | CODE |
| LOW | packages/docx-engine/src/watermark.ts | 231 | export function pictureWatermarkParagraphXml( | CODE |
| LOW | packages/docx-engine/src/parse-package.ts | 40 | export function resolveRelationshipTargetPath(sourcePath: string, target: string): string | null { | CODE |
| LOW | packages/docx-engine/src/ink.ts | 138 | export function injectInkRunsIntoParagraph(xml: string, runsXml: string): string | null { | CODE |
| LOW | packages/docx-engine/src/zotero-doc-props.ts | 41 | export function parseZoteroDocumentDataXml(xml: string): string { | CODE |
| LOW | packages/docx-engine/src/zotero-doc-props.ts | 64 | export function patchZoteroDocumentDataXml(xml: string | null, data: string): string { | CODE |
| LOW | packages/docx-engine/src/patch.ts | 2287 | function removeDeletedCommentMarkers(xml: string, liveIds: Set<string>): string { | CODE |
| LOW | packages/docx-engine/src/patch.ts | 2794 | function replaceQualifiedAttributes( | CODE |
| LOW | packages/docx-engine/src/patch.ts | 2816 | function replaceUnqualifiedAttributes( | CODE |
| LOW | packages/docx-engine/src/patch.ts | 2850 | function scrubWordprocessingMetadata(xml: string): string { | CODE |
| LOW | packages/pdf2docx/tests/links.test.ts | 74 | async function buildBlankSectionTargetPdf(): Promise<Uint8Array> { | CODE |
| LOW | packages/pdf2docx/tests/helpers/fixtures.ts | 800 | export async function buildFormMirroredImagePdf(): Promise<Uint8Array> { | CODE |
| LOW | packages/pdf2docx/src/pipeline.ts | 241 | export function stitchCrossPageParagraphs(pages: IrPage[]): void { | CODE |
| LOW | packages/pdf2docx/src/analyze/rtl.ts | 50 | export function repairArabicJunkLigatures(visual: PdfChar[], lineGap: number): void { | CODE |
| LOW | packages/pdf2docx/src/analyze/table.ts | 674 | function augmentGridColumnBoundaries( | CODE |
| LOW | packages/pdf2docx/src/analyze/chars.ts | 203 | export function normalizeRegionalFontArtifacts(chars: ExtractedPage['chars']): void { | CODE |
| LOW | packages/pdf2docx/src/rebuild/fontmap.ts | 145 | export function applyOutputFontSubstitutions( | CODE |
| 361 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | apps/shell/tests/tab-manager.test.ts | 324 | const homeLoaded = shellWindow.webContents.once.mock.calls.find( | CODE |
| CRITICAL | apps/shell/tests/tab-manager.test.ts | 393 | const gone = spare.webContents.once.mock.calls.find( | CODE |
| CRITICAL | apps/shell/tests/tab-manager.test.ts | 1012 | view.webContents.on.mock.calls.filter(([event]) => event === 'enter-html-full-screen').length | CODE |
| CRITICAL | apps/docs/tests/nav-outline.test.ts | 45 | editor.state.doc.content.content.map((n) => | CODE |
| CRITICAL | apps/docs/tests/redact-image-mark.test.ts | 97 | const mark = editor.state.schema.marks.redaction.create({ label: 'id-photo' }) | CODE |
| CRITICAL | apps/docs/tests/format-painter-undo.test.ts | 17 | const types = (editor: Editor) => editor.state.doc.content.content.map((n) => n.type.name) | CODE |
| CRITICAL | apps/docs/tests/image-wrap.test.ts | 108 | expect(editor.state.doc.content.content.map((node) => node.type.name)).toEqual([ | CODE |
| CRITICAL | apps/docs/tests/image-wrap.test.ts | 169 | expect(editor.state.doc.content.content.map((node) => node.type.name)).toEqual([ | CODE |
| CRITICAL | apps/docs/tests/paste-options.test.ts | 360 | editor.state.doc.content.content.map((node) => node.type.name) | CODE |
| CRITICAL | apps/docs/tests/zotero-controller.test.ts | 150 | expect(editor.state.doc.content.content.map((block) => block.textContent)).toEqual([ | CODE |
| CRITICAL | apps/docs/tests/zotero-controller.test.ts | 172 | expect(editor.state.doc.content.content.map((block) => block.textContent)).toEqual([ | CODE |
| CRITICAL | apps/docs/tests/zotero-controller.test.ts | 303 | expect(editor.state.doc.content.content.map((block) => block.textContent)).toEqual([ | CODE |
| CRITICAL | apps/docs/tests/zotero-controller.test.ts | 394 | expect(editor.state.doc.content.content.map((block) => block.textContent)).toEqual([ | CODE |
| CRITICAL | apps/docs/tests/heading-enter-next-style.test.ts | 24 | editor.state.doc.content.content.map((n) => `${n.type.name}:${n.attrs.styleId}:${n.textContent}`) | CODE |
| CRITICAL | apps/docs/tests/table-trailing-paragraph.test.ts | 17 | const topLevel = (editor: Editor) => editor.state.doc.content.content.map((n) => n.type.name) | CODE |
| CRITICAL | apps/docs/tests/list-keyboard-word-model.test.ts | 58 | editor.state.doc.content.content.map((n) => ({ | CODE |
| CRITICAL | apps/docs/tests/image-drop.test.ts | 106 | const names = editor.state.doc.content.content.map((n) => | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/ui/src/provider-logos.tsx | 1 | import { useId } from 'react' | COMMENT |
| LOW | packages/ui/src/wheel-zoom.ts | 1 | // Wheel-stream intent for zoom and paging, shared by the Docs/Sheets/Slides | COMMENT |
| LOW | packages/docx-engine/src/parse.ts | 1001 | // DrawingML shape (mc:Choice) with a legacy VML twin (<mc:Fallback><w:pict>), | COMMENT |
| LOW | packages/docx-engine/src/parse.ts | 1321 | } | COMMENT |
| LOW | packages/docx-engine/src/parse.ts | 1581 | // the text stays readable/editable. The shape lives in runs we do not | COMMENT |
| LOW | packages/docx-engine/src/parse.ts | 6781 | watermarkPicture: PictureWatermarkInfo | null | COMMENT |
| LOW | packages/docx-engine/src/patch.ts | 1861 | // editor-generated formulas need the math namespace on the document root; | COMMENT |
| LOW | packages/pdf2docx/src/analyze/blocks.ts | 361 | // ending in a hyphen after a Latin letter whose NEXT line starts with a | COMMENT |
| LOW | packages/pdf2docx/src/extract/index.ts | 241 | italicFromPsName(psName) | COMMENT |
| LOW | packages/pdf2docx/src/rebuild/index.ts | 1961 | // and the page's first flow block joins the before_space chain here, where | COMMENT |
| LOW | packages/pdf2docx/src/rebuild/index.ts | 2021 | // budget below — single-column flow only (a multi-column page pays its | COMMENT |
| LOW | packages/pdf2docx/src/rebuild/index.ts | 2081 | bodyWrapRiskPt = Math.min(bodyWrapRiskPt, BODY_WRAP_RISK_CAP_PT) | COMMENT |
| LOW | packages/pdf2docx/src/rebuild/index.ts | 2181 | } | COMMENT |
| LOW | packages/pdf2docx/src/rebuild/index.ts | 2301 | colConsumedPt += spacingC + cardHeightPt | COMMENT |
| LOW | packages/electron-utils/src/drop-open.ts | 1 | /// Drag & drop a local document file anywhere in the app window to open it. | COMMENT |
| LOW | packages/electron-utils/src/safe-remote-url.ts | 1 | /// SSRF gate for main-process fetches whose target is influenced by untrusted | COMMENT |
| LOW | packages/electron-utils/src/navigation-guard.ts | 1 | /// App-wide navigation lockdown for every webContents in the suite. | COMMENT |
| LOW | packages/xlsx-gateway/src/domain/pivot-engine.ts | 541 | /// axis/report-filter fields that are missing from the cache, refresh is no | COMMENT |
| LOW | packages/xlsx-gateway/src/domain/formula-shift.ts | 81 | } | COMMENT |
| LOW | packages/xlsx-gateway/src/domain/pivot-grouping.ts | 1 | /// Pure-function model for pivot grouped fields (date/numeric ranges): groups a | COMMENT |
| LOW | packages/xlsx-gateway/src/domain/pivot-filters.ts | 1 | /// Shared model for pivot filters: label filters (by row/column field member | COMMENT |
| LOW | packages/xlsx-gateway/src/domain/chart-visual.ts | 201 | /// 1200 step 200, 289753.76 → 350000 step 50000 (real-run1 + prod corpora). | COMMENT |
| LOW | packages/xlsx-gateway/src/domain/pivot-chart.ts | 1 | /// PivotChart data assembly: turns a pivot definition + the output area's current | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-pivot-add.ts | 101 | /// Selected member per page field (index into pageLevelItems[p]); null = (All). | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-pivot-add.ts | 121 | readonly colLevelItems?: readonly (readonly string[])[] | undefined | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-notes.ts | 181 | /// its proportions. The two travel together — a fill without the size would | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-redaction.ts | 1 | import { shiftCellArea, type StructuralOp } from './xlsx-structure' | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-redaction.ts | 21 | /// mirror is not the record — the part is, and stays authoritative whenever it | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-redaction.ts | 341 | if (!contentTypes.includes(`PartName="/${REDACTION_PART_PATH}"`)) { | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-redaction.ts | 361 | /// readable it wins and these are ignored, and when it is gone the marks are | COMMENT |
| LOW | …ckages/xlsx-gateway/src/gateway/xlsx-default-styles.ts | 1 | /// Minimal workbook stylesheet for workbooks the gateway creates from scratch. | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-pivot-expand.ts | 21 | /// xl/pivotCache/pivotCacheDefinitionN.xml | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-pivot-expand.ts | 181 | } | COMMENT |
| LOW | packages/xlsx-gateway/src/gateway/xlsx-styles.ts | 261 | if (delta.fontColor !== undefined) { | COMMENT |
| LOW | packages/ai-provider/src/custom-models.ts | 1 | // Live model list for the `custom` provider — a user-hosted endpoint (OMLX, | COMMENT |
| LOW | packages/ai-provider/src/custom-profile.ts | 1 | // The declarative profile of a user-hosted endpoint, resolved into the request | COMMENT |
| LOW | packages/html2docx/src/browser/pages.js | 741 | // one-page design; Word's layout runs a few percent taller (table | COMMENT |
| LOW | packages/html2docx/src/generate/table-renderers.ts | 181 | // No synthesized default border: a cell without computed CSS borders is | COMMENT |
| LOW | packages/agent-core/src/loop.ts | 1101 | // final turn: no tools requested, the user stopped the run, or the | COMMENT |
| LOW | e2e/docs-simple-markup.spec.ts | 121 | // no bubble column: the comment collapses to a glyph in the right page margin | COMMENT |
| LOW | e2e/open-focus-typing.spec.ts | 261 | ) | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/.cargo/config.toml | 1 | # Statically link the MSVC CRT so the shipped xlsx-sidecar.exe has no | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 21 | #[serde(skip_serializing_if = "Option::is_none")] | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 61 | pub struct SheetMetadata { | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 101 | /// sheetView/@showFormulas: the sheet opens in formula view (#188). | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 121 | pub tables: Vec<TableInfo>, | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 181 | pub output_ref: String, | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 301 | pub total_row_fill: Option<String>, | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 361 | /// The picture the note's shape is showing, when it has one. | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 541 | /// (`<customFilters>`). Color/icon/dynamic/top10 criteria have no renderer | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 641 | pub scale: Option<u32>, | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 661 | pub different_odd_even: bool, | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/types.rs | 801 | pub gradient: Option<bool>, | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/recalc.rs | 441 | COMMENT | |
| LOW | apps/sheets/native/xlsx-engine/src/xls_biff.rs | 1 | //! The binary layer of an .xls workbook (BIFF8 inside an OLE2 container), | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/stream_patch.rs | 1 | //! Streaming cell upserts for worksheet parts above the host's patch cap. | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/odf.rs | 1 | //! ODF (`of:`) formula translation for the legacy import path. | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/visuals.rs | 61 | /// theme changes. Absent for literal rgb / indexed colors. | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/visuals.rs | 101 | #[serde(skip_serializing_if = "Option::is_none")] | COMMENT |
| LOW | apps/sheets/native/xlsx-engine/src/visuals.rs | 181 | pub categories: Vec<String>, | COMMENT |
| 105 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/pptx-engine/tests/speaker-notes.test.ts | 40 | setSlideNotes(opened, 0, 'placeholder') | CODE |
| LOW | packages/docx-engine/tests/sdt.test.ts | 99 | expect(block.runs?.some((r) => r.text.includes('Jane Doe'))).toBe(true) | CODE |
| LOW | packages/docx-engine/tests/sdt.test.ts | 117 | expect(reparsed.blocks[0].runs?.some((r) => r.text.includes('Jane Doe'))).toBe(true) | CODE |
| LOW | packages/docx-engine/tests/sdt.test.ts | 121 | expect(reparsed.internal.documentXml).toContain('Jane Doe') | CODE |
| LOW | packages/docx-engine/tests/inline-image-mixed.test.ts | 72 | const bodyXml = `<w:p>${ANCHORED_IMAGE_RUN}<w:r><w:t>Lorem ipsum body text</w:t></w:r></w:p>` | CODE |
| LOW | packages/docx-engine/tests/inline-image-mixed.test.ts | 76 | expect(block.runs!.map((r) => r.text).join('')).toBe('Lorem ipsum body text') | CODE |
| LOW | packages/docx-engine/tests/dropcap.test.ts | 13 | '<w:r><w:t xml:space="preserve">Lorem ipsum dolor sit amet.</w:t></w:r>' + | CODE |
| LOW | packages/docx-engine/tests/dropcap.test.ts | 13 | '<w:r><w:t xml:space="preserve">Lorem ipsum dolor sit amet.</w:t></w:r>' + | CODE |
| LOW | packages/pdf2docx/tests/rebuild.test.ts | 209 | const bar = textBlock([line([span('placeholder')], 700)], { | CODE |
| LOW | …es/xlsx-gateway/tests/pivot-relayout-roundtrip.test.ts | 108 | name: 'placeholder', | CODE |
| LOW | packages/html2docx/src/browser/forms-media.js | 107 | const value = el.value || el.getAttribute('placeholder') || ''; | CODE |
| LOW | packages/pipelines/tests/deck-spec.test.ts | 156 | expect(issues.some((i) => i.level === 'error' && i.message.includes('placeholder'))).toBe(true) | CODE |
| LOW | packages/cli/src/check.ts | 26 | export const PLACEHOLDER = /\{\{[^}]*\}\}|\bXX+%?\b|\blorem ipsum\b|\bTBD\b|\bTODO\b|\[insert\b/i | CODE |
| LOW | packages/cli/src/formats/xlsx-check.ts | 573 | message: `${hits.length} cell(s) contain placeholder text (template keys, TODO/TBD, lorem ipsum)`, | CODE |
| LOW | packages/cli/src/formats/docx-check.ts | 340 | message: `${hits.length} block(s) contain placeholder text (template keys, TODO/TBD, lorem ipsum, [insert …])`, | CODE |
| LOW | packages/cli/src/commands/merge.ts | 202 | function hits(text: string): Array<Pick<Hit, 'placeholder' | 'key'>> { | CODE |
| LOW | packages/pptx-ops/src/prompts/ops/deck.md | 45 | "find": "Acme Corp", | CODE |
| LOW | e2e/author-name-setting.spec.ts | 20 | await expect(field).toHaveAttribute('placeholder', /.+/) | CODE |
| LOW | apps/sheets/tests/redact-view.test.ts | 23 | A1: { value: 'Acme Ltd' }, | CODE |
| LOW | apps/sheets/tests/redact-view.test.ts | 80 | expect(out).not.toContain('Acme Ltd') | CODE |
| LOW | apps/sheets/tests/redact-view.test.ts | 95 | sheets: [{ id: '', name: 'Customers', cells: { A1: { value: 'Acme Ltd' } } }], | CODE |
| LOW | apps/sheets/tests/redact-view.test.ts | 98 | expect(out).not.toContain('Acme Ltd') | CODE |
| LOW | apps/sheets/tests/ole-visual.test.ts | 59 | expect(oleRenderKind({}, false)).toBe('placeholder') | CODE |
| LOW | apps/sheets/tests/ole-visual.test.ts | 60 | expect(oleRenderKind({ mediaPath: 'xl/media/image1.emf' }, true)).toBe('placeholder') | CODE |
| LOW | apps/sheets/tests/redact-read.test.ts | 199 | aggregator.addWithheld(7) // seven cells all reading "Acme Ltd" | CODE |
| LOW | apps/sheets/scripts/generate-large-xlsx.ts | 57 | Array.from({ length: SHARED }, (_, i) => `<si><t>Item ${i} lorem ipsum</t></si>`).join('') + | CODE |
| LOW | apps/sheets/src/renderer/ole-visual.ts | 13 | export type OleRenderKind = 'preview' | 'placeholder' | CODE |
| LOW | apps/sheets/src/renderer/ole-visual.ts | 22 | return visual.mediaPath !== undefined && !previewFailed ? 'preview' : 'placeholder' | CODE |
| LOW | apps/shell/tests/mcp/mcp-http-surface.test.ts | 389 | await writeFile(openableDocx, 'placeholder') | CODE |
| LOW | apps/shell/tests/mcp/document-tools.test.ts | 139 | await writeFile(target, 'placeholder') | CODE |
| LOW | apps/shell/tests/mcp/document-tools.test.ts | 168 | await writeFile(join(dir, 'doc.docx'), 'placeholder') | CODE |
| LOW | apps/shell/tests/mcp/document-tools.test.ts | 199 | await writeFile(join(dir, 'open.docx'), 'placeholder') | CODE |
| LOW | apps/markdown/tests/ai-tools.test.ts | 216 | const editor = createEditor(`# T\n\n${'lorem ipsum '.repeat(3000)}`) | CODE |
| LOW | apps/markdown/tests/bounded-tokenizers.test.ts | 116 | const filler = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. '.repeat(20) | CODE |
| LOW | apps/markdown/tests/bounded-tokenizers.test.ts | 116 | const filler = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. '.repeat(20) | CODE |
| LOW | apps/markdown/src/renderer/editor/extensions.ts | 179 | Placeholder.configure({ placeholder: () => t('placeholder') }), | CODE |
| LOW | apps/pdf/tests/ai-context.test.ts | 52 | const ctx = contextOf({ selection: () => ({ page: 2, lastPage: 2, text: 'lorem ipsum' }) }) | CODE |
| LOW | apps/pdf/tests/ai-context.test.ts | 54 | expect(ctx).toContain('lorem ipsum') | CODE |
| LOW | apps/pdf/tests/ai-tools.test.ts | 2248 | call('insert_text', { page: 1, text: 'John Doe', anchor_text: 'World' }), | CODE |
| LOW | apps/html/tests/edit-queue.test.ts | 53 | expect(excerpt).not.toContain('555-0100') | CODE |
| LOW | apps/docs/tests/hyperlink-rels-save.test.ts | 100 | expect(first.textContent).toBe('Jane Doe') | CODE |
| LOW | apps/docs/tests/hyperlink-rels-save.test.ts | 126 | expect(first.textContent).toBe('Jane Doe') | CODE |
| LOW | apps/docs/tests/redaction-docx.test.ts | 297 | const long = 'lorem ipsum dolor sit amet '.repeat(400) | CODE |
| LOW | apps/docs/tests/redaction-docx.test.ts | 297 | const long = 'lorem ipsum dolor sit amet '.repeat(400) | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 8 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 8 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 9 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 9 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 10 | "Lorem ipsum dolor sit amet consectetur a" | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 10 | "Lorem ipsum dolor sit amet consectetur a" | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 48 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 48 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 49 | "Lorem ipsum dolor sit amet consectetur a" | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 49 | "Lorem ipsum dolor sit amet consectetur a" | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 199 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 199 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 200 | "Lorem ipsum dolor sit amet consectetur a" | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 200 | "Lorem ipsum dolor sit amet consectetur a" | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 214 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| LOW⚡ | apps/docs/tests/pagination-corpus/baseline-lo.json | 214 | "Lorem ipsum dolor sit amet consectetur a", | CODE |
| 48 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/pptx-engine/src/theme-apply.ts | 94 | // Real-world decks (especially AI-generated/exported ones) use almost exclusively | COMMENT |
| HIGH | packages/pdf2docx/tests/spans.test.ts | 366 | // AI-generated pattern: 15pt declared, loose (advance) box only 0.65 em | COMMENT |
| HIGH | packages/pdf2docx/src/ir.ts | 90 | // ── character-compression restore (P5): AI-generated documents squeeze text | COMMENT |
| HIGH | packages/electron-utils/src/generated-images.ts | 1 | /// Local store for AI-generated images that arrive as bytes (BYOK image | COMMENT |
| HIGH | packages/electron-utils/src/default-save-dir.ts | 2 | /// save and where AI-generated drafts go. Historically hardcoded to | COMMENT |
| HIGH | packages/electron-utils/src/navigation-guard.ts | 6 | /// hostile document content or AI-generated markup. The guard blocks all of | COMMENT |
| HIGH | apps/sheets/src/shared/desktop-api.ts | 3165 | /// Rename a still-untitled workbook after AI-generated content (no-op unless | COMMENT |
| HIGH | apps/sheets/src/main/sheets-main.ts | 3833 | // Content-derived naming for AI-generated workbooks (sheets' analog of slides' | COMMENT |
| HIGH | apps/html/src/main/html-main.ts | 1668 | // remote pictures (AI-generated or hot-linked) are downloaded here: the frame's fetch is | COMMENT |
| HIGH | apps/html/src/main/html-main.ts | 1723 | // AI-generated markup with a script that never yields keeps | COMMENT |
| HIGH | apps/docs/src/main/docs-main.ts | 4805 | // An AI-generated page whose scripts never yield must not strand the hidden | COMMENT |
| HIGH | apps/slides/tests/theme.test.ts | 145 | // Shape with an explicit dark-green fill + explicit white background (typical AI-generated deck palette) | COMMENT |
| HIGH | apps/slides/src/main/slides-main.ts | 1362 | // AI-generated slide pages land in app-owned temp directories; sweep | COMMENT |
| HIGH | apps/slides/src/main/slides-main.ts | 2820 | // Decks whose own layouts carry no placeholders (AI-generated single blank layout) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/electron-utils/src/print-window.ts | 10 | print( | CODE |
| HIGH | apps/sheets/src/renderer/page-layout-actions.ts | 441 | print(job: PrintJob, output: PrintOutputSettings): Promise<string> | CODE |
| HIGH | apps/shell/src/main/tab-menu.ts | 31 | print(id: string): void | CODE |
| HIGH | apps/pdf/src/shared/ipc.ts | 1190 | print(job: PrintJobOptions): Promise<{ ok: boolean; error?: string }> | CODE |
| HIGH | apps/docs/src/shared/ipc.ts | 564 | print(scale?: number, job?: PrintJobOptions): Promise<{ ok: boolean; error?: string }> | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package-lock.json | 13127 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | packages/ui/tests/ai-naming-client.test.ts | 37 | // the bug this whole helper exists to be robust against: an empty name | COMMENT |
| MEDIUM | packages/html2docx/src/browser/pages.js | 272 | // Absolutely-positioned multi-page canvases are authored in exact | COMMENT |
| MEDIUM | packages/html2docx/src/browser/core/layouts-controls.js | 963 | // Absolutely-positioned full-height painted strip hugging the card's left | COMMENT |
| MEDIUM | packages/html2docx/src/generate/table-renderers.ts | 572 | // Absolutely positioned decorations measured inside the card's box (banner | COMMENT |
| MEDIUM | apps/sheets/src/renderer/univer-sync.ts | 2422 | /// Values for a chart data range, robust to streaming: journal edits win, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/build-gothic-kr-font.py | 41 | except UnicodeDecodeError: | CODE |
| HIGH | tools/build-word-faces.py | 47 | except Exception: | CODE |
| HIGH | tools/build-stand-in-boxes.py | 56 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/build-word-faces.py | 47 | except Exception: | CODE |
| LOW | tools/build-word-faces.py | 78 | except Exception as e: | CODE |
| LOW | tools/build-word-faces.py | 84 | except Exception as e: | CODE |
| LOW | tools/build-stand-in-boxes.py | 56 | except Exception: | CODE |
| LOW | tools/build-stand-in-boxes.py | 73 | except Exception as e: | CODE |
| LOW | tools/build-stand-in-boxes.py | 81 | except Exception as e: | CODE |
| LOW | tools/build-stand-in-boxes.py | 138 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/pptx-engine/src/parse.ts | 379 | // or editing canvas) — consulting templates hide whole scaffold layers this way. | COMMENT |
| MEDIUM | packages/ai-provider/src/providers.ts | 284 | // agentic tier; codestral is a code-completion/FIM model, not an agent driver. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/build-word-faces.py | 73 | CODE | |
| LOW | tools/build-stand-in-boxes.py | 67 | CODE | |
| LOW | tools/build-bengali-font.py | 85 | CODE | |
| LOW | tools/build-tamil-font.py | 57 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apps/docs/tests/pagination-corpus/geometry/build.py | 17 | CODE | |
| LOW | apps/docs/tests/pagination-corpus/geometry/build.py | 17 | CODE | |
| LOW | apps/docs/tests/pagination-corpus/geometry/build.py | 17 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | apps/html/src/renderer/ai/html-skill.ts | 33 | '## Creating a new page: questionnaire → brief → the system writes the page', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/mcp-stdio-bridge.js | 264 | async function handleRequest(request) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apps/docs/tests/pagination-corpus/geometry/build.py | 70 | CODE |