Build Information
Successful build of Confetti, reference v2.0.1 (ceef00), with Swift 6.3 for macOS (SPM) on 18 Apr 2026 01:54:38 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 4.70.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",
"traits": [
"default"
],
"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",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
Fetching https://github.com/Koshimizu-Takehito/Confetti.git
[1/551] Fetching confetti
Fetched https://github.com/Koshimizu-Takehito/Confetti.git from cache (0.81s)
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.3
Building package at path: $PWD
https://github.com/Koshimizu-Takehito/Confetti.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64
Building for debugging...
[0/5] Write sources
[3/5] Copying Assets.xcassets
[4/5] Write swift-version--6988338F2F200930.txt
[6/13] Compiling ConfettiCore ConfettiColorSource.swift
[7/13] Compiling ConfettiCore ConfettiRenderer.swift
[8/13] Compiling ConfettiCore Confetto.swift
[9/13] Compiling ConfettiCore ConfettiCloud.swift
[10/13] Compiling ConfettiCore ConfettiConfig.swift
[11/13] Emitting module ConfettiCore
[12/13] Compiling ConfettiCore ParticleRenderState.swift
[13/13] Compiling ConfettiCore ConfettiSimulation.swift
[14/20] Compiling ConfettiPlayback resource_bundle_accessor.swift
[15/20] Compiling ConfettiPlayback DisplayLinkDriver.swift
[16/20] Compiling ConfettiPlayback ParticleRenderStates.swift
[17/20] Compiling ConfettiPlayback ConfettiPlayer.swift
[18/20] Compiling ConfettiPlayback DefaultColorSource.swift
[19/20] Compiling ConfettiPlayback Exports.swift
[20/20] Emitting module ConfettiPlayback
[21/31] Compiling ConfettiUI ConfettiPlayerScreen.swift
[22/31] Compiling ConfettiUI Exports.swift
[23/31] Compiling ConfettiUI ConfettiDesignTokens.swift
[24/31] Compiling ConfettiUI ConfettiCanvas.swift
[25/32] Compiling ConfettiUI TimeSlider.swift
[26/32] Compiling ConfettiUI ConfettiDesignTokens+Environment.swift
[27/32] Compiling ConfettiUI ConfettiTriggerButton.swift
[28/32] Compiling ConfettiUI ConfettiTriggerButtonStyle+Environment.swift
[29/32] Emitting module ConfettiUI
[30/32] Compiling ConfettiUI ConfettiTriggerButtonStyle.swift
[31/32] Compiling ConfettiUI PlaybackControls.swift
[32/32] Compiling ConfettiUI ConfettiScreen.swift
Build complete! (11.37s)
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.3
Target: ConfettiUI
Extracting symbol information for 'ConfettiUI'...
Finished extracting symbol information for 'ConfettiUI'. (44.62s)
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' (3.29s)
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/2277] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.10s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.6 (3.56s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3672] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.13s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.85s)
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
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.6
Building for debugging...
[0/8] Write sources
[1/8] Write snippet-extract-tool-entitlement.plist
[1/8] Write sources
[4/8] Write swift-version--6988338F2F200930.txt
[6/53] Compiling SymbolKit Mixin+Equals.swift
[7/53] Compiling SymbolKit Mixin+Hash.swift
[8/53] Compiling SymbolKit Mixin.swift
[9/53] Compiling SymbolKit LineList.swift
[10/53] Compiling SymbolKit Position.swift
[11/57] Compiling SymbolKit Names.swift
[12/57] Compiling SymbolKit SPI.swift
[13/57] Compiling SymbolKit Snippet.swift
[14/57] Compiling SymbolKit Extension.swift
[15/57] Compiling SymbolKit GenericConstraint.swift
[16/57] Compiling SymbolKit GenericParameter.swift
[17/57] Compiling SymbolKit Generics.swift
[18/57] Compiling SymbolKit Namespace.swift
[19/57] Compiling Snippets Snippet.swift
[20/57] Emitting module Snippets
[21/57] Compiling Snippets SnippetParser.swift
[22/57] Compiling SymbolKit DeclarationFragments.swift
[23/57] Compiling SymbolKit Fragment.swift
[24/57] Compiling SymbolKit FragmentKind.swift
[25/57] Compiling SymbolKit FunctionParameter.swift
[26/57] Compiling SymbolKit FunctionSignature.swift
[27/57] Emitting module SymbolKit
[28/57] Compiling SymbolKit SemanticVersion.swift
[29/57] Compiling SymbolKit AccessControl.swift
[30/57] Compiling SymbolKit Availability.swift
[31/57] Compiling SymbolKit AvailabilityItem.swift
[32/57] Compiling SymbolKit Domain.swift
[33/57] Compiling SymbolKit Identifier.swift
[34/57] Compiling SymbolKit KindIdentifier.swift
[35/57] Compiling SymbolKit Location.swift
[36/57] Compiling SymbolKit Mutability.swift
[37/57] Compiling SymbolKit Relationship.swift
[38/57] Compiling SymbolKit RelationshipKind.swift
[39/57] Compiling SymbolKit SourceOrigin.swift
[40/57] Compiling SymbolKit GenericConstraints.swift
[41/57] Compiling SymbolKit Swift.swift
[42/57] Compiling SymbolKit SourceRange.swift
[43/57] Compiling SymbolKit Metadata.swift
[44/57] Compiling SymbolKit Module.swift
[45/57] Compiling SymbolKit OperatingSystem.swift
[46/57] Compiling SymbolKit Platform.swift
[47/57] Compiling SymbolKit Symbol.swift
[48/57] Compiling SymbolKit SymbolKind.swift
[49/57] Compiling SymbolKit SymbolGraph.swift
[50/57] Compiling SymbolKit GraphCollector.swift
[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 SnippetBuildCommand.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (6.54s)
Building for debugging...
[0/1] Write swift-version--6988338F2F200930.txt
Build of target: 'ConfettiUI' complete! (0.49s)
Target: ConfettiPlayback
Extracting symbol information for 'ConfettiPlayback'...
Finished extracting symbol information for 'ConfettiPlayback'. (0.40s)
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.12s)
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--6988338F2F200930.txt
Build of product 'snippet-extract' complete! (0.20s)
Building for debugging...
[0/1] Write swift-version--6988338F2F200930.txt
Build of target: 'ConfettiPlayback' complete! (0.24s)
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.33s)
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--6988338F2F200930.txt
Build of product 'snippet-extract' complete! (0.20s)
Building for debugging...
[0/1] Write swift-version--6988338F2F200930.txt
Build of target: 'ConfettiCore' complete! (0.24s)
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
8878
57 /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: 8878
Doc size: 57.0MB
Preparing doc bundle ...
Uploading prod-koshimizu-takehito-confetti-v2.0.1-e06ecb6d.zip to s3://spi-docs-inbox/prod-koshimizu-takehito-confetti-v2.0.1-e06ecb6d.zip
Copying... [10%]
Copying... [20%]
Copying... [30%]
Copying... [40%]
Copying... [50%]
Copying... [60%]
Copying... [70%]
Copying... [80%]
Copying... [90%]
Copying... [100%]
Done.