Skip to content
CAI
Software that uses CAICheck a score

twostraws/Vortex

55.7

Adequate · 1 October 2026

1.8k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Vortex is a SwiftUI particle system library designed to generate visual effects such as confetti and sparkles. It provides a configurable particle generator that supports custom color palettes, global state overrides, and timing offsets. The system simplifies integration by offering default symbol assets and views that function without requiring custom closures.

Features

Add customizable confetti preset with user-defined colors

A new \confetti\ preset is now available for Vortex that allows users to specify a custom array of SwiftUI colors. When triggered, this effect generates confetti particles using the provided color palette, offering greater visual flexibility compared to the previous static implementation.

Sources/Vortex/Presets · high confidence

Default symbol images added to Vortex resources

The Vortex library now includes a default set of three 16x16 symbol images—circle, confetti, and sparkle—within its resource bundle. These assets are exposed via the \Image\ extension in \DefaultSymbols.swift\, allowing consumers to reference these specific icons directly without needing to provide custom symbol closures or define their own assets.

Sources/Vortex/Resources · high confidence

Behavioural changes

VortexSystem gains global active override, start time offset, and simplified configuration

The VortexSystem particle generator now supports a global \isActive\ boolean that can force the system to emit or stop regardless of other settings, and a \startTimeOffset\ property that allows animations to begin at a specific time offset. The system also conforms to \Identifiable\ with a public \id\, and manual \Codable\ implementation has been removed in favor of automatic conformance (supported by new \Codable\ conformance for \Angle\). Additionally, the \createParticle\ method now respects the \isActive\ state, and documentation/comments have been corrected to clarify that birth rates below 1 (not 0) are used for sub-second particle creation.

Sources/Vortex/System · high confidence

VortexView now supports default symbols when no closure is provided

VortexView can now be initialized without specifying a symbols closure. If no symbols are provided, the view automatically uses a default set of three 16x16 particle images: circle, confetti, and sparkle. This simplifies usage for apps that do not require custom particle views, while existing code continues to work as before.

Sources/Vortex/Views · high confidence

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 58 → 56 (-2.5)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (-0.2)
  • Architecture 100 → 100 (+0.0)
  • Maturity 62 → 66 (+4.0)
  • Readiness 31 → 25 (-5.3)
  • Security 100 → 100 (+0.0)

New (4)

  • Coverage not measured — Swift suite
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (11 lines × 2) (Sandbox/Sandbox/PreviewViews/FireView.swift)

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

Survey your own repository

twostraws/Vortex 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 1 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 c9efc55beaf0837a8806f06615085365a3257b6d — 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.