Skip to content
CAI
Software that uses CAICheck a score

shu223/Pulsator

48.1

Weak · 1 October 2026

820

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Pulsator is a cross-platform animation library for iOS and macOS that renders pulsing visual effects using Core Animation. It provides a Swift-based API, including a SwiftUI view modifier, to easily integrate customizable pulse animations into user interfaces. The system supports distribution via Swift Package Manager and CocoaPods, with dedicated examples and playgrounds demonstrating usage in standard views and MapKit annotations.

Features

Add SwiftUI support for Pulsator animations

Developers can now integrate the Pulsator pulse animation into SwiftUI interfaces. This change introduces a \PulsatorView\ struct that wraps the existing \CAReplicatorLayer\ logic for use in SwiftUI views on iOS 14+ and macOS 11+, and adds a \pulsator()\ view modifier to \SwiftUI.View\ (iOS 15+/macOS 12+) for easily applying the animation as a background effect. The implementation includes platform-specific hosting views to manage the Core Animation layer lifecycle and ensures the animation resumes correctly when views reappear.

Pulsator · high confidence

Added Xcode schemes for macOS and iOS targets

The project now includes shared Xcode schemes for both the iOS (Pulsator) and macOS (Pulsator-macOS) targets. These scheme files configure build, test, launch, profile, analyze, and archive actions, enabling developers to run and test the library directly within Xcode for both platforms.

Pulsator.xcodeproj/xcshareddata · high confidence

Added macOS target and switched to file-system synchronized groups

The Xcode project now builds a separate \Pulsator\_macOS\ framework alongside the existing iOS framework, enabling the library to be used in macOS applications. Additionally, the main iOS target has been migrated to use file-system synchronized groups, which simplifies source management by automatically tracking files in the directory rather than requiring manual project file updates.

Pulsator.xcodeproj · high confidence

Added playground examples for customizing pulsations and map annotations

The Pulsator playground now includes two new demonstration pages: 'Customizations', which shows how to adjust pulse count, radius, duration, and color, and 'MapAnnotation', which demonstrates integrating the pulsator effect into MapKit annotation views.

Pulsator.playground · high confidence

New SwiftUI demo app with map and control panel views

A new SwiftUI-based PulsatorDemo application has been added to the Example/SwiftUI directory, providing a modern interface to explore the pulsator effect. The app features a main ContentView with a control panel for adjusting pulse count, radius, duration, and color, as well as a MapDemoView that demonstrates rendering the pulse behind a MapKit annotation. The project is configured to reference the Pulsator sources directly via a synchronized folder, and includes unit and UI test targets.

Example · high confidence

Behavioural changes

Added Xcode workspace check configuration

The project now includes an IDEWorkspaceChecks.plist file that explicitly enables the 32-bit warning check (IDEDidComputeMac32BitWarning). This ensures that Xcode will display a warning if the workspace is opened in a 64-bit-only environment, helping to prevent accidental builds of 32-bit binaries on modern macOS systems.

Pulsator.xcodeproj/project.xcworkspace · high confidence

Fixes

Added macOS framework configuration files

Added Info.plist and public header files for the Pulsator-macOS and PulsatorMac frameworks, establishing the necessary bundle identifiers, package types, and version exports required for the macOS build.

Pulsator-macOS, PulsatorMac · high confidence

Test coverage

Added initial test suite for Pulsator

Added a new test target (PulsatorTests) containing a basic test class with placeholder unit and performance test methods, along with the required Info.plist configuration.

PulsatorTests · high confidence

Dependencies

Initial release of Pulsator 0.7.0 with Swift Package Manager and CocoaPods support

This change introduces the initial packaging configuration for the Pulsator library, version 0.7.0, making it available via both Swift Package Manager and CocoaPods. The Swift Package Manager manifest (Package.swift) defines the library for iOS 9.0 and above, while the CocoaPods spec (Pulsator.podspec) supports iOS 8.0 and macOS 10.9, requiring Swift 5.0. This establishes the foundational dependency structure for integrating the pulse animation library into iOS and macOS applications.

(dependencies) · 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 48 → 48 (-0.3)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 59 → 59 (+0.0)
  • Readiness 21 → 22 (+1.9)
  • Security 100 → 100 (+0.0)

Resolved (1)

  • Documentation: no installation or build instructions (README.md)

New (3)

  • Coverage not measured — Swift suite
  • Inconsistent default value exposure. PulsatorView exposes specific default* properties for configuration, but Pulsator (the underlying layer) does not expose equivalent defaults. This creates a fragmented API where defaults are only visible/configurable at the View layer, not the Layer layer, breaking the abstraction hierarchy.
  • Inconsistent naming and type for the primary visual property. The core layer Pulsator uses backgroundColor (CGColor), while the view wrapper PulsatorView uses color (Color). This forces consumers to map between different types and names for the same concept.

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

Survey your own repository

shu223/Pulsator 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 609fe25028497cc8b454edc2a4155797f6347f2b — 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.