Skip to content
CAI
Software that uses CAICheck a score

sindresorhus/DockProgress

59.6

Adequate · 1 October 2026

1.2k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

DockProgress is a Swift Package Manager library for macOS that renders animated progress indicators on the application dock tile. It provides a declarative SwiftUI view modifier and imperative API to display progress in various styles, such as bars, circles, and squircles. The system supports tracking standard Foundation Progress objects and includes comprehensive testing for its rendering and animation logic.

Features

Added Xcode workspace configuration for Swift Package Manager

The package now includes a generated Xcode workspace file (contents.xcworkspacedata) that allows developers to open the Swift package directly in Xcode. This facilitates easier debugging and integration within the Xcode IDE by providing a standard workspace structure referencing the package itself.

.swiftpm · high confidence

Removals

Removal of legacy Xcode project configuration files

The legacy Xcode project structure files, including \project.pbxproj\, \DockProgress\_Info.plist\, \DockProgressTests\_Info.plist\, and scheme management files, have been removed from the repository. This cleanup eliminates obsolete build configurations and test bundle metadata, indicating a shift away from the traditional Xcode workspace setup in favor of modern package management or a simplified project structure.

DockProgress.xcodeproj · high confidence

Behavioural changes

Example project migrated to Xcode 15 and local workspace structure

The DockProgress Example project has been restructured to operate as a local workspace rather than relying on external package managers like CocoaPods or Carthage. The Xcode project file and scheme have been updated to target Xcode 15 (LastUpgradeVersion 1500), and the build configuration now launches the 'DockProgress Example.app' directly instead of the framework. This change simplifies the setup for users by removing dependency on third-party installers and aligning the example app with the current Xcode toolchain.

Example/DockProgress Example.xcodeproj · high confidence

Major rewrite: SwiftUI integration, smoother animations, and new progress styles

The DockProgress library has been significantly refactored to support modern macOS development. It now uses SwiftUI for rendering progress indicators, allowing for smoother, frame-rate-synced animations via a display link observer instead of the previous manual drawing approach. The API has been updated: the old \progressValue\ property is replaced by a \progress\ Double property, and users can now track Foundation \Progress\ objects using the new \progressInstance\ property. Several visual styles are available, including a new 'squircle' shape that matches macOS icon aesthetics, a 'badge' circle style, and a 'pie' style. The library also introduces a \resetProgress()\ method for immediate resets and automatically hides the Dock tile content when progress is zero. Note that this change requires macOS 12 or later due to the SwiftUI dependency.

Sources · high confidence

SwiftUI-based example app with custom view modifier

The example application has been rewritten in SwiftUI, introducing a \.dockProgress\ view modifier that allows users to apply dock progress indicators directly to any view. The demo showcases multiple visual styles—including bar, squircle, circle, badge, and pie—and demonstrates how to toggle between the classic imperative API and the new declarative modifier approach.

Example/DockProgress Example · high confidence

Test coverage

Added comprehensive SwiftUI tests for DockProgress

Replaced the previous empty XCTest suite with a new Swift Testing suite that validates core progress tracking, style rendering (including built-in and custom views), style transitions, and utility functions like kilo formatting and badge font scaling.

Tests · high confidence

Dependencies

Upgrade to Swift 6.1 and require macOS 12

The package manifest has been updated to use Swift tools version 6.1 and now requires macOS 12 as the minimum deployment target. This change ensures compatibility with the latest Swift language features and platform capabilities while removing support for older operating systems.

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

Lenses

  • Code Health 99 → 99 (-0.2)
  • Architecture 100 → 100 (+0.0)
  • Maturity 59 → 59 (+0.0)
  • Readiness 33 → 38 (+4.9)
  • Security 100 → 100 (+0.0)

Resolved (1)

  • Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established

New (4)

  • Ambiguous duplication of progress state. It is unclear if these represent different stages of the same value (e.g., raw vs. formatted) or distinct metrics. Without clear semantic distinction, this creates confusion for consumers trying to bind UI or logic.
  • Conflicting types for the same conceptual entity. Exposing both a complex object (Progress?) and a primitive (Double) for 'progress' suggests either a leak of internal implementation details or a lack of abstraction. Consumers may not know which to use.
  • Coverage not measured — Swift suite
  • Duplicated block (7 lines × 2) (Sources/DockProgress/DockProgress.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

sindresorhus/DockProgress 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 43ca0137201a479fbd891b129155f4a84c1e1b13 — 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.