tsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website. Ready to use components available for React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Solid, Riot and Web Components.
This report summarizes scanner evidence for tsparticles/tsparticles, a TypeScript project with 9,066 GitHub stars. SynthScan examined 718,408 lines of code across 11171 source files, recording 439 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 0.8 (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? 389 finding(s).
Are imports declared and package/API names verified? 2 finding(s).
Are wrappers, guards, and repeated structures necessary? 326 finding(s).
Which changes need focused human review? 439 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 439 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wrappers/inferno/src/initParticlesEngine.ts | 40 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/inferno/src/initParticlesEngine.ts | 44 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/inferno/src/ParticlesProvider.tsx | 29 | export function subscribeToParticlesProvider(cb: (loaded: boolean) => void): () => void { | CODE |
| LOW | wrappers/webcomponents/src/web-particles.ts | 65 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/webcomponents/src/web-particles.ts | 74 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/svelte/src/lib/utils.ts | 47 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/svelte/src/lib/utils.ts | 51 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/lit/src/lit-tsparticles.ts | 48 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/lit/src/lit-tsparticles.ts | 52 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/stencil/src/initParticlesEngine.ts | 46 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/stencil/src/initParticlesEngine.ts | 50 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/jquery/src/particles.ts | 44 | function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/jquery/src/particles.ts | 48 | async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/angular/scripts/prebuild.js | 7 | function resolveWorkspaceDependency(spec, fallbackVersion) { | CODE |
| LOW | wrappers/solid/src/initParticlesEngine.ts | 48 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/solid/src/initParticlesEngine.ts | 52 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | …s/qwik/src/components/particles/initParticlesEngine.ts | 49 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | …s/qwik/src/components/particles/initParticlesEngine.ts | 53 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/preact/src/initParticlesEngine.ts | 48 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/preact/src/initParticlesEngine.ts | 52 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/vue2/src/Particles/event-bus.ts | 9 | export function ensureParticlesInitialization(init?: ParticlesPluginRegistrar): Promise<void> { | CODE |
| LOW | wrappers/vue2/src/Particles/event-bus.ts | 41 | export function waitForParticlesInitialization(): Promise<void> { | CODE |
| LOW | wrappers/vue3/src/components/particles-provider.ts | 24 | function getGlobalInitializationState(): IParticlesInitializationState { | CODE |
| LOW | wrappers/vue3/src/components/particles-provider.ts | 36 | export function createParticlesProviderContext(): IParticlesProviderContext { | CODE |
| LOW | wrappers/angular-fireworks/scripts/prebuild.js | 7 | function resolveWorkspaceDependency(spec, fallbackVersion) { | CODE |
| LOW | wrappers/ember/addon/utils/init-particles-engine.ts | 49 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/ember/addon/utils/init-particles-engine.ts | 53 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/astro/src/initParticlesEngine.ts | 47 | export function isParticlesEngineInitialized(): boolean { | CODE |
| LOW | wrappers/astro/src/initParticlesEngine.ts | 51 | export async function waitForParticlesEngineInitialization(): Promise<void> { | CODE |
| LOW | wrappers/astro/src/initParticlesEngine.js | 49 | export function isParticlesEngineInitialized() { | CODE |
| LOW | wrappers/astro/src/initParticlesEngine.js | 53 | export async function waitForParticlesEngineInitialization() { | CODE |
| LOW | wrappers/angular-confetti/scripts/prebuild.js | 7 | function resolveWorkspaceDependency(spec, fallbackVersion) { | CODE |
| LOW | interactions/particles/collisions/src/index.lazy.ts | 17 | export async function loadParticlesCollisionsInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/particles/collisions/src/index.ts | 19 | export async function loadParticlesCollisionsInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/particles/repulse/src/index.lazy.ts | 9 | export async function loadParticlesRepulseInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/particles/repulse/src/index.ts | 10 | export async function loadParticlesRepulseInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/particles/links/src/index.lazy.ts | 10 | export async function loadParticlesLinksInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/particles/links/src/index.ts | 12 | export async function loadParticlesLinksInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/particles/attract/src/index.lazy.ts | 9 | export async function loadParticlesAttractInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/particles/attract/src/index.ts | 10 | export async function loadParticlesAttractInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/pause/src/index.lazy.ts | 9 | export async function loadExternalPauseInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/pause/src/index.ts | 10 | export async function loadExternalPauseInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/grab/src/index.lazy.ts | 9 | export async function loadExternalGrabInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/grab/src/index.ts | 10 | export async function loadExternalGrabInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/destroy/src/index.lazy.ts | 10 | export async function loadExternalDestroyInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/destroy/src/index.ts | 11 | export async function loadExternalDestroyInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/pop/src/index.lazy.ts | 9 | export async function loadExternalPopInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/pop/src/index.ts | 10 | export async function loadExternalPopInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/remove/src/index.lazy.ts | 9 | export async function loadExternalRemoveInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/remove/src/index.ts | 10 | export async function loadExternalRemoveInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/trail/src/index.lazy.ts | 9 | export async function loadExternalTrailInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/trail/src/index.ts | 10 | export async function loadExternalTrailInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/slow/src/index.lazy.ts | 9 | export async function loadExternalSlowInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/slow/src/index.ts | 10 | export async function loadExternalSlowInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/parallax/src/index.lazy.ts | 9 | export async function loadExternalParallaxInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/parallax/src/index.ts | 10 | export async function loadExternalParallaxInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/repulse/src/index.lazy.ts | 9 | export async function loadExternalRepulseInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/repulse/src/index.ts | 10 | export async function loadExternalRepulseInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/drag/src/index.lazy.ts | 16 | export async function loadExternalDragInteraction(engine: Engine): Promise<void> { | CODE |
| LOW | interactions/external/drag/src/index.ts | 16 | export async function loadExternalDragInteraction(engine: Engine): Promise<void> { | CODE |
| 218 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | interactions/external/cannon/src/Cannoner.ts | 230 | // ── Private helpers ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/validation.ts | 3 | // ── Shared primitives ────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/index.ts | 29 | // ── Module constants ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/index.ts | 63 | // ── CLI args ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/index.ts | 146 | // ── Tool dispatch ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/index.ts | 164 | // ── Server factory ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/index.ts | 195 | // ── Tools ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/index.ts | 274 | // ── Resources ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/index.ts | 317 | // ── Prompts ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/index.ts | 350 | // ── Start Server: stdio ───────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/index.ts | 362 | // ── Entry point ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 70 | // ── No Plugins Loaded (most common issue) ─────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 95 | // ── Canvas / Container ────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 105 | // ── Particle Visibility ───────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 133 | // ── Missing Move Plugin ───────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 146 | // ── Missing Color Plugin ──────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 180 | // ── Missing Shape Plugin ──────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 218 | // ── Missing Interactivity Plugin ──────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 231 | // ── Missing Interaction Packages ──────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 246 | // ── Links plugin needed ───────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 258 | // ── Missing Emitters Plugin ───────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 269 | // ── Missing Absorbers Plugin ──────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 280 | // ── Background Mask ───────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 291 | // ── Options Structure Issues ──────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 309 | // ── Low particle count ────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 321 | // ── Full-screen not set ───────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 333 | // ── Preset usage ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 343 | // ── Emitter shape ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/diagnoseIssues.ts | 370 | // ── Performance Warnings ──────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 6 | // ── Base templates ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 50 | // ── Stopwords (EN + IT) ─────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 204 | // ── Keyword feature sets ────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 329 | // ── Framework metadata ──────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 349 | // ── Specialized / preset rules (priority-ordered) ───────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 420 | // ── Small helpers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 474 | // ── Keyword extraction ──────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 488 | // ── Bundle matching ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 575 | // ── Options generation ──────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 734 | // ── Framework codegen ───────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 1136 | // ── HTML / install command ──────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 1158 | // ── Notes ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/tools/generateCode.ts | 1219 | // ── Orchestrator ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/prompts/generateOptions.ts | 3 | // ── Prompt arguments ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | integrations/mcp-server/src/prompts/generateOptions.ts | 16 | // ── Prompt system text ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/update-template-versions.sh | 2 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | scripts/update-template-versions.sh | 8 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/run-template.sh | 2 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/run-template.sh | 25 | # ============================================================================= | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .cursor/commands/monitor-ci.md | 32 | ### Step 0: Verify Nx Cloud Connection | COMMENT |
| LOW | .cursor/commands/monitor-ci.md | 133 | ### Step 1: Initialize Tracking | COMMENT |
| LOW | .cursor/commands/monitor-ci.md | 153 | ### Step 2: Polling Loop | COMMENT |
| LOW | .cursor/commands/monitor-ci.md | 206 | ### Step 3: Handle Actionable Status | COMMENT |
| LOW | .cursor/commands/monitor-ci.md | 244 | ### Step 4: Cycle Classification and Progress Tracking | COMMENT |
| LOW | .cursor/skills/monitor-ci/SKILL.md | 41 | ### Step 0: Verify Nx Cloud Connection | COMMENT |
| LOW | .cursor/skills/monitor-ci/SKILL.md | 142 | ### Step 1: Initialize Tracking | COMMENT |
| LOW | .cursor/skills/monitor-ci/SKILL.md | 162 | ### Step 2: Polling Loop | COMMENT |
| LOW | .cursor/skills/monitor-ci/SKILL.md | 215 | ### Step 3: Handle Actionable Status | COMMENT |
| LOW | .cursor/skills/monitor-ci/SKILL.md | 253 | ### Step 4: Cycle Classification and Progress Tracking | COMMENT |
| LOW | .gemini/commands/monitor-ci.toml | 38 | ### Step 0: Verify Nx Cloud Connection | COMMENT |
| LOW | .gemini/commands/monitor-ci.toml | 139 | ### Step 1: Initialize Tracking | COMMENT |
| LOW | .gemini/commands/monitor-ci.toml | 159 | ### Step 2: Polling Loop | COMMENT |
| LOW | .gemini/commands/monitor-ci.toml | 215 | ### Step 3: Handle Actionable Status | COMMENT |
| LOW | .gemini/commands/monitor-ci.toml | 253 | ### Step 4: Cycle Classification and Progress Tracking | COMMENT |
| LOW | .opencode/commands/monitor-ci.md | 41 | ### Step 0: Verify Nx Cloud Connection | COMMENT |
| LOW | .opencode/commands/monitor-ci.md | 142 | ### Step 1: Initialize Tracking | COMMENT |
| LOW | .opencode/commands/monitor-ci.md | 162 | ### Step 2: Polling Loop | COMMENT |
| LOW | .opencode/commands/monitor-ci.md | 218 | ### Step 3: Handle Actionable Status | COMMENT |
| LOW | .opencode/commands/monitor-ci.md | 256 | ### Step 4: Cycle Classification and Progress Tracking | COMMENT |
| LOW | .opencode/skills/monitor-ci/SKILL.md | 41 | ### Step 0: Verify Nx Cloud Connection | COMMENT |
| LOW | .opencode/skills/monitor-ci/SKILL.md | 142 | ### Step 1: Initialize Tracking | COMMENT |
| LOW | .opencode/skills/monitor-ci/SKILL.md | 162 | ### Step 2: Polling Loop | COMMENT |
| LOW | .opencode/skills/monitor-ci/SKILL.md | 218 | ### Step 3: Handle Actionable Status | COMMENT |
| LOW | .opencode/skills/monitor-ci/SKILL.md | 256 | ### Step 4: Cycle Classification and Progress Tracking | COMMENT |
| LOW | .agents/skills/monitor-ci/SKILL.md | 41 | ### Step 0: Verify Nx Cloud Connection | COMMENT |
| LOW | .agents/skills/monitor-ci/SKILL.md | 142 | ### Step 1: Initialize Tracking | COMMENT |
| LOW | .agents/skills/monitor-ci/SKILL.md | 162 | ### Step 2: Polling Loop | COMMENT |
| LOW | .agents/skills/monitor-ci/SKILL.md | 218 | ### Step 3: Handle Actionable Status | COMMENT |
| LOW | .agents/skills/monitor-ci/SKILL.md | 256 | ### Step 4: Cycle Classification and Progress Tracking | COMMENT |
| LOW | .github/prompts/monitor-ci.prompt.md | 41 | ### Step 0: Verify Nx Cloud Connection | COMMENT |
| LOW | .github/prompts/monitor-ci.prompt.md | 142 | ### Step 1: Initialize Tracking | COMMENT |
| LOW | .github/prompts/monitor-ci.prompt.md | 162 | ### Step 2: Polling Loop | COMMENT |
| LOW | .github/prompts/monitor-ci.prompt.md | 218 | ### Step 3: Handle Actionable Status | COMMENT |
| LOW | .github/prompts/monitor-ci.prompt.md | 256 | ### Step 4: Cycle Classification and Progress Tracking | COMMENT |
| LOW | .github/skills/monitor-ci/SKILL.md | 41 | ### Step 0: Verify Nx Cloud Connection | COMMENT |
| LOW | .github/skills/monitor-ci/SKILL.md | 142 | ### Step 1: Initialize Tracking | COMMENT |
| LOW | .github/skills/monitor-ci/SKILL.md | 162 | ### Step 2: Polling Loop | COMMENT |
| LOW | .github/skills/monitor-ci/SKILL.md | 218 | ### Step 3: Handle Actionable Status | COMMENT |
| LOW | .github/skills/monitor-ci/SKILL.md | 256 | ### Step 4: Cycle Classification and Progress Tracking | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | demo/angular/README.md | 9 | ## Code scaffolding | COMMENT |
| MEDIUM⚡ | scripts/update-template-versions.sh | 7 | # (or any version bump) to keep template scaffolding in sync. | COMMENT |
| MEDIUM | scripts/run-template.sh | 17 | # 2. Copies the scaffold + use-case template files to /tmp/ | COMMENT |
| MEDIUM | scripts/run-template.sh | 85 | # ---- 5. Copy scaffold + use-case files, replace placeholders ---- | COMMENT |
| MEDIUM | templates/scaffold/README.md | 1 | # @tsparticles/template-scaffold | COMMENT |
| MEDIUM | .planning/handovers/4.5.0_PLAN.md | 96 | ### Phase 0 — Baseline and guardrails | COMMENT |
| MEDIUM | websites/website/docs/options/index.md | 162 | ## Performance guardrails | COMMENT |
| MEDIUM | websites/website/docs/ja/options/index.md | 160 | ## Performance guardrails | COMMENT |
| MEDIUM | websites/website/docs/it/options/index.md | 160 | ## Performance guardrails | COMMENT |
| MEDIUM | websites/website/docs/ru/options/index.md | 160 | ## Performance guardrails | COMMENT |
| MEDIUM | websites/website/docs/pt/options/index.md | 160 | ## Performance guardrails | COMMENT |
| MEDIUM | websites/website/docs/zh/options/index.md | 160 | ## Performance guardrails | COMMENT |
| MEDIUM | websites/website/docs/hi/options/index.md | 160 | ## Performance guardrails | COMMENT |
| MEDIUM | websites/website/docs/de/options/index.md | 160 | ## Performance guardrails | COMMENT |
| MEDIUM | websites/website/docs/fr/options/index.md | 160 | ## Performance guardrails | COMMENT |
| MEDIUM | websites/website/docs/es/options/index.md | 160 | ## Performance guardrails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tsconfig.json | 1 | { | COMMENT |
| LOW | tsconfig.json | 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory func | COMMENT |
| LOW | tsconfig.json | 41 | /* JavaScript Support */ | COMMENT |
| LOW | tsconfig.json | 61 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of outpu | COMMENT |
| LOW | tsconfig.json | 81 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the | COMMENT |
| LOW | demo/svelte/src/global.d.ts | 1 | /// <reference types="svelte" /> | COMMENT |
| LOW | demo/vanilla/tsconfig.json | 1 | { | COMMENT |
| LOW | demo/vanilla/tsconfig.json | 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory func | COMMENT |
| LOW | demo/vanilla/tsconfig.json | 41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defau | COMMENT |
| LOW | demo/vanilla/tsconfig.json | 61 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project | COMMENT |
| LOW | demo/vanilla/tsconfig.json | 81 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlate | COMMENT |
| LOW | wrappers/jquery/README.md | 61 | // This must be called once before using the jQuery plugin. Many apps | COMMENT |
| LOW | wrappers/jquery/tsconfig.json | 61 | // "rootDirs": [], /* List of root folders whose combined content represents the structur | COMMENT |
| LOW | utils/tests/src/tests/ColorUtils.ts | 261 | // const color: IHsl = { | COMMENT |
| LOW | utils/tests/src/tests/ColorUtils.ts | 281 | // }; | COMMENT |
| LOW | utils/tests/src/tests/ColorUtils.ts | 301 | // }); | COMMENT |
| LOW | cli/utils/depcruise-config/src/defaultConfig.ts | 201 | }, | COMMENT |
| LOW | cli/utils/depcruise-config/src/defaultConfig.ts | 221 | // false: don't look at JSDoc imports (the default) | COMMENT |
| LOW | cli/utils/depcruise-config/src/defaultConfig.ts | 241 | // false (the default): ignore dependencies that only exist before typescript-to-javascript compilation | COMMENT |
| LOW | cli/utils/depcruise-config/src/defaultConfig.ts | 261 | // (2) resolution (e.g. with the paths property) | COMMENT |
| LOW | cli/utils/depcruise-config/src/defaultConfig.ts | 281 | // env: {}, | COMMENT |
| LOW | cli/utils/depcruise-config/src/defaultConfig.ts | 301 | // If you use webpack: you can also set these in webpack.conf.js. The set | COMMENT |
| LOW | cli/utils/depcruise-config/src/defaultConfig.ts | 321 | // A list of alias fields in package.jsons | COMMENT |
| LOW | cli/utils/depcruise-config/src/defaultConfig.ts | 341 | // Options to tweak the appearance of your graph. See | COMMENT |
| LOW | integrations/mcp-server/src/index.ts | 161 | return { content: [{ type: "text", text }], isError }; | COMMENT |
| LOW | integrations/mcp-server/src/http/constants.ts | 21 | export const RATE_LIMIT_MAX_REQUESTS_PER_WINDOW = 120; | COMMENT |
| LOW | integrations/mcp-server/src/prompts/generateOptions.ts | 1 | import { z } from "zod"; | COMMENT |
| LOW | scripts/run-template.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/workflows/codeql-analysis.yml | 1 | COMMENT | |
| LOW | .github/workflows/codeql-analysis.yml | 41 | # Initializes the CodeQL tools for scanning. | COMMENT |
| LOW | .github/scripts/retry_gh.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | templates/react-ts/template/src/index.tsx | 21 | // unregister() to register() below. Note this comes with some pitfalls. | COMMENT |
| LOW | templates/react-ts/template/src/serviceWorker.ts | 1 | // This optional code is used to register a service worker. | COMMENT |
| LOW | templates/react-ts/template/src/setupTests.ts | 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. | COMMENT |
| LOW | templates/react/template/src/serviceWorker.js | 1 | // This optional code is used to register a service worker. | COMMENT |
| LOW | templates/react/template/src/setupTests.js | 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. | COMMENT |
| LOW | engine/src/Core/ParticlesManager.ts | 41 | */ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cli/commands/create-utils/src/create-project.ts | 290 | // TODO: implement drawAfter | COMMENT |
| LOW⚡ | cli/commands/create-utils/src/create-project.ts | 379 | // TODO: implement clear | COMMENT |
| LOW⚡ | cli/commands/create-utils/src/create-project.ts | 383 | // TODO: implement init | COMMENT |
| LOW⚡ | cli/commands/create-utils/src/create-project.ts | 387 | // TODO: implement interact | COMMENT |
| LOW⚡ | cli/commands/create-utils/src/create-project.ts | 395 | // TODO: implement reset | COMMENT |
| LOW⚡ | cli/commands/create-utils/src/create-project.ts | 405 | // TODO: implement clear | COMMENT |
| LOW⚡ | cli/commands/create-utils/src/create-project.ts | 409 | // TODO: implement init | COMMENT |
| LOW⚡ | cli/commands/create-utils/src/create-project.ts | 413 | // TODO: implement interact | COMMENT |
| LOW⚡ | cli/commands/create-utils/src/create-project.ts | 421 | // TODO: implement reset | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .gemini/commands/monitor-ci.toml | 38 | ### Step 0: Verify Nx Cloud Connection | COMMENT |
| LOW | .gemini/commands/monitor-ci.toml | 139 | ### Step 1: Initialize Tracking | COMMENT |
| LOW | .gemini/commands/monitor-ci.toml | 159 | ### Step 2: Polling Loop | COMMENT |
| LOW | .gemini/commands/monitor-ci.toml | 215 | ### Step 3: Handle Actionable Status | COMMENT |
| LOW | .gemini/commands/monitor-ci.toml | 253 | ### Step 4: Cycle Classification and Progress Tracking | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/nextjs/pages/api/hello.ts | 12 | res.status(200).json({ name: 'John Doe' }) | CODE |
| LOW | demo/nextjs-legacy/pages/api/hello.js | 4 | res.status(200).json({ name: 'John Doe' }) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integrations/mcp-server/docker-compose.yml | 11 | # Set this to require an Authorization: Bearer <token> header on | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/run-template.sh | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integrations/mcp-server/src/http/server.ts | 458 | async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | engine/scripts/install.js | 322 | "Don't forget to star the tsParticles repository, if you like the project and want to support it: https://github.com | CODE |