The Swift Package Index logo.Swift Package Index

Build Information

Successful build of Confetti, reference v2.0.1 (ceef00), with Swift 6.2 for macOS (SPM) on 4 Jan 2026 07:50:03 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-26.0.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.68.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Koshimizu-Takehito/Confetti.git
Reference: v2.0.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Koshimizu-Takehito/Confetti
 * tag               v2.0.1     -> FETCH_HEAD
HEAD is now at ceef00f Merge pull request #16 from Koshimizu-Takehito/feature/readme
Cloned https://github.com/Koshimizu-Takehito/Confetti.git
Revision (git rev-parse @):
ceef00f4ff0fde8c8dc251bfdad69e20d9e23b38
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/Koshimizu-Takehito/Confetti.git at v2.0.1
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "confetti",
      "name": "Confetti",
      "url": "https://github.com/Koshimizu-Takehito/Confetti.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Confetti",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/Koshimizu-Takehito/Confetti.git
[1/494] Fetching confetti
Fetched https://github.com/Koshimizu-Takehito/Confetti.git from cache (0.88s)
Creating working copy for https://github.com/Koshimizu-Takehito/Confetti.git
Working copy of https://github.com/Koshimizu-Takehito/Confetti.git resolved at v2.0.1 (ceef00f)
warning: '.resolve-product-dependencies': dependency 'confetti' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.2
Building package at path:  $PWD
https://github.com/Koshimizu-Takehito/Confetti.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.0.0.app xcrun swift build --arch arm64
Building for debugging...
[0/5] Write sources
[3/5] Copying Assets.xcassets
[4/5] Write swift-version-49B95AFC49DCD68C.txt
[6/13] Compiling ConfettiCore Confetto.swift
[7/13] Compiling ConfettiCore ConfettiColorSource.swift
[8/13] Compiling ConfettiCore ConfettiRenderer.swift
[9/13] Compiling ConfettiCore ConfettiSimulation.swift
[10/13] Compiling ConfettiCore ConfettiCloud.swift
[11/13] Compiling ConfettiCore ConfettiConfig.swift
[12/13] Emitting module ConfettiCore
[13/13] Compiling ConfettiCore ParticleRenderState.swift
[14/20] Compiling ConfettiPlayback resource_bundle_accessor.swift
[15/20] Compiling ConfettiPlayback ConfettiPlayer.swift
[16/20] Compiling ConfettiPlayback ParticleRenderStates.swift
[17/20] Compiling ConfettiPlayback DisplayLinkDriver.swift
[18/20] Emitting module ConfettiPlayback
[19/20] Compiling ConfettiPlayback DefaultColorSource.swift
[20/20] Compiling ConfettiPlayback Exports.swift
[21/31] Compiling ConfettiUI TimeSlider.swift
[22/31] Compiling ConfettiUI Exports.swift
[23/31] Compiling ConfettiUI ConfettiDesignTokens.swift
[24/31] Compiling ConfettiUI PlaybackControls.swift
[25/31] Compiling ConfettiUI ConfettiDesignTokens+Environment.swift
[26/31] Compiling ConfettiUI ConfettiTriggerButton.swift
[27/31] Compiling ConfettiUI ConfettiTriggerButtonStyle+Environment.swift
[28/31] Compiling ConfettiUI ConfettiCanvas.swift
[29/31] Compiling ConfettiUI ConfettiTriggerButtonStyle.swift
[30/31] Emitting module ConfettiUI
[31/31] Compiling ConfettiUI ConfettiPlayerScreen.swift
[32/32] Compiling ConfettiUI ConfettiScreen.swift
Build complete! (10.52s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Confetti",
  "name" : "Confetti",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "15.0"
    },
    {
      "name" : "ios",
      "version" : "18.0"
    }
  ],
  "products" : [
    {
      "name" : "ConfettiPlayback",
      "targets" : [
        "ConfettiPlayback"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "ConfettiUI",
      "targets" : [
        "ConfettiUI"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "ConfettiUITests",
      "module_type" : "SwiftTarget",
      "name" : "ConfettiUITests",
      "path" : "Tests/ConfettiUITests",
      "sources" : [
        "ConfettiUITests.swift"
      ],
      "target_dependencies" : [
        "ConfettiPlayback",
        "ConfettiUI"
      ],
      "type" : "test"
    },
    {
      "c99name" : "ConfettiUI",
      "module_type" : "SwiftTarget",
      "name" : "ConfettiUI",
      "path" : "Sources/ConfettiUI",
      "product_memberships" : [
        "ConfettiUI"
      ],
      "sources" : [
        "Components/ConfettiTriggerButton.swift",
        "Components/ConfettiTriggerButtonStyle+Environment.swift",
        "Components/ConfettiTriggerButtonStyle.swift",
        "Components/PlaybackControls.swift",
        "Components/TimeSlider.swift",
        "Design/ConfettiDesignTokens+Environment.swift",
        "Design/ConfettiDesignTokens.swift",
        "Exports.swift",
        "Views/ConfettiCanvas.swift",
        "Views/ConfettiPlayerScreen.swift",
        "Views/ConfettiScreen.swift"
      ],
      "target_dependencies" : [
        "ConfettiPlayback"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ConfettiPlayback",
      "module_type" : "SwiftTarget",
      "name" : "ConfettiPlayback",
      "path" : "Sources/ConfettiPlayback",
      "product_memberships" : [
        "ConfettiPlayback",
        "ConfettiUI"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/ConfettiPlayback/Resources/Assets.xcassets",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Color/DefaultColorSource.swift",
        "Exports.swift",
        "Playback/ConfettiPlayer.swift",
        "Rendering/ParticleRenderStates.swift",
        "Support/DisplayLinkDriver.swift"
      ],
      "target_dependencies" : [
        "ConfettiCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ConfettiCoreTests",
      "module_type" : "SwiftTarget",
      "name" : "ConfettiCoreTests",
      "path" : "Tests/ConfettiCoreTests",
      "sources" : [
        "ConfettiRendererTests.swift",
        "ConfettiSimulationTests.swift",
        "Support/SeededRandomNumberGenerator.swift"
      ],
      "target_dependencies" : [
        "ConfettiCore"
      ],
      "type" : "test"
    },
    {
      "c99name" : "ConfettiCore",
      "module_type" : "SwiftTarget",
      "name" : "ConfettiCore",
      "path" : "Sources/ConfettiCore",
      "product_memberships" : [
        "ConfettiPlayback",
        "ConfettiUI"
      ],
      "sources" : [
        "Config/ConfettiConfig.swift",
        "Domain/ConfettiCloud.swift",
        "Domain/Confetto.swift",
        "Protocols/ConfettiColorSource.swift",
        "Rendering/ConfettiRenderer.swift",
        "Rendering/ParticleRenderState.swift",
        "Simulation/ConfettiSimulation.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.0"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/koshimizu-takehito/confetti/v2.0.1
Repository:               Koshimizu-Takehito/Confetti
Swift version used:       6.2
Target:                   ConfettiUI
Extracting symbol information for 'ConfettiUI'...
Finished extracting symbol information for 'ConfettiUI'. (4.23s)
Building documentation for 'ConfettiUI'...
warning: 'ConfettiPlayer' doesn't exist at '/ConfettiUI'
  --> ConfettiUI.md:16:5-16:19
14 |
15 | - ``ConfettiScreen``: Preset view with trigger button (easiest to use)
16 + - ``ConfettiPlayer``: Video-player-like playback control (play/pause/resume/seek/stop)
   |     ├─suggestion: Replace 'ConfettiPlayer' with 'ConfettiPlayerScreen'
   |     ├─suggestion: Replace 'ConfettiPlayer' with 'ConfettiPlayerScreenWithDefaultPlayer'
   |     ├─suggestion: Replace 'ConfettiPlayer' with 'ConfettiCanvas'
   |     ╰─suggestion: Replace 'ConfettiPlayer' with 'ConfettiScreen'
17 | - ``ConfettiPlayerScreen``: Full-featured view with playback controls
18 |
warning: 'ConfettiPlayer' doesn't exist at '/ConfettiUI'
  --> ConfettiUI.md:30:5-30:19
28 | ### Playback (from ConfettiPlayback)
29 |
30 + - ``ConfettiPlayer``
   |     ├─suggestion: Replace 'ConfettiPlayer' with 'ConfettiPlayerScreen'
   |     ├─suggestion: Replace 'ConfettiPlayer' with 'ConfettiPlayerScreenWithDefaultPlayer'
   |     ├─suggestion: Replace 'ConfettiPlayer' with 'ConfettiCanvas'
   |     ╰─suggestion: Replace 'ConfettiPlayer' with 'ConfettiScreen'
31 | - ``ConfettiRenderer``
32 | - ``ParticleRenderState``
warning: 'ConfettiRenderer' doesn't exist at '/ConfettiUI'
  --> ConfettiUI.md:31:5-31:21
29 |
30 | - ``ConfettiPlayer``
31 + - ``ConfettiRenderer``
   |     ├─suggestion: Replace 'ConfettiRenderer' with 'ConfettiScreen'
   |     ├─suggestion: Replace 'ConfettiRenderer' with 'ConfettiCanvas'
   |     ├─suggestion: Replace 'ConfettiRenderer' with 'ConfettiDesignTokens'
   |     ├─suggestion: Replace 'ConfettiRenderer' with 'ConfettiPlayerScreen'
   |     ├─suggestion: Replace 'ConfettiRenderer' with 'ConfettiTriggerButton'
   |     ├─suggestion: Replace 'ConfettiRenderer' with 'ConfettiTriggerButtonStyle'
   |     ╰─suggestion: Replace 'ConfettiRenderer' with 'ConfettiPlayerScreenWithDefaultPlayer'
32 | - ``ParticleRenderState``
33 |
warning: 'ParticleRenderState' doesn't exist at '/ConfettiUI'
  --> ConfettiUI.md:32:5-32:24
30 | - ``ConfettiPlayer``
31 | - ``ConfettiRenderer``
32 + - ``ParticleRenderState``
33 |
34 | ### Trigger
warning: 'SwiftUI' doesn't exist at '/ConfettiUI'
  --> ConfettiUI.md:38:5-38:12
36 | - ``ConfettiTriggerButton``
37 | - ``ConfettiTriggerButtonStyle``
38 + - ``SwiftUI/View/confettiTriggerButtonStyle(_:)``
   |     ╰─suggestion: Replace 'SwiftUI' with 'SwiftUICore'
39 |
40 |
warning: 'ParticleRenderState' doesn't exist at '/ConfettiUI/ConfettiCanvas'
  --> ../Views/ConfettiCanvas.swift:8:20-8:39
6  | ///
7  | /// This view is decoupled from animation logic and simply renders
8  + /// the provided ``ParticleRenderState`` array. Use this when you want
   |                    ╰─suggestion: Replace 'ParticleRenderState' with 'init(renderStates:)'
9  | /// full control over how the confetti is driven and displayed.
10 | ///
Finished building documentation for 'ConfettiUI' (2.82s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/koshimizu-takehito/confetti/v2.0.1
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2158] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.17s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.5 (3.60s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3631] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.25s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (2.21s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.4.5
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Building for debugging...
[0/8] Write sources
[1/8] Write snippet-extract-tool-entitlement.plist
[3/8] Write sources
[4/8] Write swift-version-49B95AFC49DCD68C.txt
[6/53] Emitting module SymbolKit
[7/57] Compiling SymbolKit GenericConstraint.swift
[8/57] Compiling SymbolKit GenericParameter.swift
[9/57] Compiling SymbolKit Generics.swift
[10/57] Compiling SymbolKit Namespace.swift
[11/57] Compiling SymbolKit Mixin+Equals.swift
[12/57] Compiling SymbolKit Mixin+Hash.swift
[13/57] Compiling SymbolKit Mixin.swift
[14/57] Compiling SymbolKit LineList.swift
[15/57] Compiling SymbolKit Position.swift
[16/57] Compiling SymbolKit SourceRange.swift
[17/57] Compiling SymbolKit Metadata.swift
[18/57] Compiling SymbolKit Module.swift
[19/57] Compiling SymbolKit OperatingSystem.swift
[20/57] Compiling SymbolKit Platform.swift
[21/57] Compiling SymbolKit SemanticVersion.swift
[22/57] Compiling SymbolKit AccessControl.swift
[23/57] Compiling SymbolKit Availability.swift
[24/57] Compiling SymbolKit AvailabilityItem.swift
[25/57] Compiling SymbolKit Domain.swift
[26/57] Compiling SymbolKit Relationship.swift
[27/57] Compiling SymbolKit RelationshipKind.swift
[28/57] Compiling SymbolKit SourceOrigin.swift
[29/57] Compiling SymbolKit GenericConstraints.swift
[30/57] Compiling SymbolKit Swift.swift
[31/57] Compiling SymbolKit Symbol.swift
[32/57] Compiling SymbolKit SymbolKind.swift
[33/57] Compiling SymbolKit SymbolGraph.swift
[34/57] Compiling SymbolKit GraphCollector.swift
[35/57] Compiling SymbolKit Names.swift
[36/57] Compiling SymbolKit SPI.swift
[37/57] Compiling SymbolKit Snippet.swift
[38/57] Compiling SymbolKit Extension.swift
[39/57] Compiling SymbolKit DeclarationFragments.swift
[40/57] Compiling SymbolKit Fragment.swift
[41/57] Compiling SymbolKit FragmentKind.swift
[42/57] Compiling SymbolKit FunctionParameter.swift
[43/57] Compiling SymbolKit FunctionSignature.swift
[44/57] Compiling SymbolKit Identifier.swift
[45/57] Compiling SymbolKit KindIdentifier.swift
[46/57] Compiling SymbolKit Location.swift
[47/57] Compiling SymbolKit Mutability.swift
[48/57] Compiling Snippets Snippet.swift
[49/57] Compiling Snippets SnippetParser.swift
[50/57] Emitting module Snippets
[51/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[52/57] Compiling SymbolKit UnifiedSymbol.swift
[53/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[54/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[57/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Emitting module snippet_extract
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (3.44s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'ConfettiUI' complete! (0.30s)
Target:                   ConfettiPlayback
Extracting symbol information for 'ConfettiPlayback'...
Finished extracting symbol information for 'ConfettiPlayback'. (0.34s)
Building documentation for 'ConfettiPlayback'...
warning: 'ConfettiRenderer' doesn't exist at '/ConfettiPlayback'
  --> ConfettiPlayback.md:28:5-28:21
26 |
27 | - ``ConfettiPlayer``: Main playback controller with video-player-like API
28 + - ``ConfettiRenderer``: Converts simulation state to render states
   |     ╰─suggestion: Replace 'ConfettiRenderer' with 'ConfettiPlayer'
29 |
30 | ## Topics
warning: 'ConfettiRenderer' doesn't exist at '/ConfettiPlayback'
  --> ConfettiPlayback.md:38:5-38:21
36 | ### Rendering
37 |
38 + - ``ConfettiRenderer``
   |     ╰─suggestion: Replace 'ConfettiRenderer' with 'ConfettiPlayer'
39 | - ``ParticleRenderState``
40 |
warning: 'ParticleRenderState' doesn't exist at '/ConfettiPlayback'
  --> ConfettiPlayback.md:39:5-39:24
37 |
38 | - ``ConfettiRenderer``
39 + - ``ParticleRenderState``
   |     ╰─suggestion: Replace 'ParticleRenderState' with 'ParticleRenderStates'
40 |
41 | ### Color
warning: External name 'canvasSize' used to document parameter
  --> ../Playback/ConfettiPlayer.swift:94:21-94:31
92 |
93 |     /// Starts the playback from the beginning.
94 +     /// - Parameter canvasSize: Size of the drawing area
   |                     ╰─suggestion: Replace 'canvasSize' with 'size'
95 |     public func play(canvasSize size: CGSize) {
96 |         canvasSize = size
Finished building documentation for 'ConfettiPlayback' (0.10s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/koshimizu-takehito/confetti/v2.0.1
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.17s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'ConfettiPlayback' complete! (0.20s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/koshimizu-takehito/confetti/v2.0.1/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/koshimizu-takehito/confetti/v2.0.1/linkable-paths.json
Target:                   ConfettiCore
Extracting symbol information for 'ConfettiCore'...
Finished extracting symbol information for 'ConfettiCore'. (0.30s)
Building documentation for 'ConfettiCore'...
warning: 'ConfettiCanvas' doesn't exist at '/ConfettiCore/QuickStart'
 --> Articles/QuickStart.md:6:74-6:88
4 | > Library users should use `ConfettiPlayback` or `ConfettiUI` instead.
5 |
6 + `ConfettiCore` provides the simulation engine only. For rendering, use ``ConfettiCanvas`` from `ConfettiUI`.
7 |
8 | ## Architecture (Core / Playback / UI)
warning: External name 'area' used to document parameter
   --> ../Simulation/ConfettiSimulation.swift:113:13-113:17
111 |     /// Starts the simulation and generates particles.
112 |     /// - Parameters:
113 +     ///   - area: Size of the simulation area
    |             ╰─suggestion: Replace 'area' with 'bounds'
114 |     ///   - startTime: Start time
115 |     ///   - colorSource: Color source
warning: External name 'randomNumberGenerator' used to document parameter
   --> ../Simulation/ConfettiSimulation.swift:116:13-116:34
114 |     ///   - startTime: Start time
115 |     ///   - colorSource: Color source
116 +     ///   - randomNumberGenerator: Random number generator
    |             ╰─suggestion: Replace 'randomNumberGenerator' with 'numberGenerator'
117 |     public func start(
118 |         area bounds: CGSize,
warning: External name 'area' used to document parameter
   --> ../Simulation/ConfettiSimulation.swift:167:13-167:17
165 |     /// - Parameters:
166 |     ///   - time: Target simulation time (clamped to 0...duration)
167 +     ///   - area: Size of the simulation area
    |             ╰─suggestion: Replace 'area' with 'bounds'
168 |     public func seek(to time: TimeInterval, area bounds: CGSize) {
169 |         guard state.isRunning, let initialCloud = state.initialCloud else { return }
warning: External name 'area' used to document parameter
   --> ../Simulation/ConfettiSimulation.swift:197:13-197:17
195 |     /// - Parameters:
196 |     ///   - currentTime: Current time
197 +     ///   - area: Size of the simulation area (used for out-of-bounds detection)
    |             ╰─suggestion: Replace 'area' with 'bounds'
198 |     public func update(at currentTime: Date, area bounds: CGSize) {
199 |         guard state.isPlaying else { return }
Finished building documentation for 'ConfettiCore' (0.11s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/koshimizu-takehito/confetti/v2.0.1
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.18s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'ConfettiCore' complete! (0.21s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/koshimizu-takehito/confetti/v2.0.1/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/koshimizu-takehito/confetti/v2.0.1/linkable-paths.json
    8850
54	/Users/admin/builder/spi-builder-workspace/.docs/koshimizu-takehito/confetti/v2.0.1
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/koshimizu-takehito/confetti/v2.0.1
File count: 8850
Doc size:   54.0MB
Preparing doc bundle ...
Uploading prod-koshimizu-takehito-confetti-v2.0.1-cc7785e4.zip to s3://spi-docs-inbox/prod-koshimizu-takehito-confetti-v2.0.1-cc7785e4.zip
Copying... [10%]
Copying... [20%]
Copying... [30%]
Copying... [40%]
Copying... [50%]
Copying... [60%]
Copying... [70%]
Copying... [80%]
Copying... [90%]
Copying... [100%]
Done.