Skip to content
CAI
Software that uses CAICheck a score

catdad/canvas-confetti

44.2

Weak · 2 October 2026

822

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the canvas-confetti library, a client-side JavaScript component that renders high-performance confetti animations on HTML5 canvases. It supports various particle shapes, custom configurations, and Web Workers for improved performance, with automatic fallbacks for compatibility. The project includes a build system for multiple module formats, a demo site, and a test suite for visual and server-side validation.

Features

Automated image upload on CI failure

A new \bin/on\_failure.sh\ script has been added to the project to handle failure scenarios. When triggered, it scans the \shots\ directory for PNG files and automatically uploads them to transfer.sh, printing the resulting download URLs in green for easy access.

bin · high confidence

Initial release of canvas-confetti with Web Worker and OffscreenCanvas support

This entry introduces the core \src/confetti.js\ library, enabling high-performance confetti animations via Web Workers and OffscreenCanvas where available, with automatic fallback to the main thread. It adds support for custom canvas elements, various particle shapes (rectangles, circles, stars, emoji, and text paths), and configurable options including gravity, drift, scalar size, and reduced-motion preferences. The implementation includes a reset method to clear existing confetti, promise-based completion handling, and robust environment detection for SSR and module bundlers.

src · high confidence

Initial release of canvas-confetti with demo site and configuration

This entry introduces the canvas-confetti library, providing a client-side component for drawing confetti animations on an HTML5 canvas. The release includes the core library, a comprehensive demo page (index.html) featuring various animation modes (snow, fireworks, random cannon), theme switching (dark/light/auto), and code editors. It also establishes project standards via .editorconfig, .eslintrc.yml, and .brackets.json, and documents the API in README.md, including options for reduced motion, custom shapes, and web workers.

(repo-wide) · high confidence

New build and development server scripts

Added a new build script (build.js) that generates both CommonJS and ES module outputs in the dist folder, and a development server (serve.js) that serves static files on port 9001 with a restrictive Content Security Policy and logs all network interfaces for easier access.

build · high confidence

Test coverage

Added debug and test harness pages for confetti rendering; Initial test suite for visual rendering and server-side module evaluation.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 45 → 44 (-0.7)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 48 → 70 (+21.5)
  • Architecture 69 → 69 (+0.0)
  • Maturity 59 → 59 (+0.6)
  • Readiness 47 → 36 (-11.0)
  • Security 75 → 75 (+0.0)
  • Accessibility 37 → 37 (+0.0)

Resolved (2)

  • Documentation: no architecture or design documentation (README.md)
  • Hotspot: src/confetti.js (src/confetti.js)

New (4)

  • FileTooLong: src/confetti.js (src/confetti.js)
  • FunctionTooLong: confetti.confettiCannon (src/confetti.js)
  • confetti.confettiCannon (cognitive 33) (src/confetti.js)
  • confetti.confettiCannon (cyclomatic 34) (src/confetti.js)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

catdad/canvas-confetti was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 20eebad51dde793070c373d594099a7ed8d96e22 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.