Build Information
Successful build of Confetti, reference main (551fb0), with Swift 6.3 for macOS (SPM) on 18 Apr 2026 01:53: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: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Koshimizu-Takehito/Confetti
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 551fb01 chore(deps): update dependency realm/swiftlint to v0.63.2 (#21)
Cloned https://github.com/Koshimizu-Takehito/Confetti.git
Revision (git rev-parse @):
551fb0170a2ec26a5b401e5a56f3e1e1e529e6ac
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/Koshimizu-Takehito/Confetti.git at main
========================================
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.82s)
Creating working copy for https://github.com/Koshimizu-Takehito/Confetti.git
Working copy of https://github.com/Koshimizu-Takehito/Confetti.git resolved at main (551fb01)
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/17] Compiling ConfettiCore ConfettiColorSource.swift
[7/17] Compiling ConfettiCore CGRect+Utilities.swift
[8/17] Compiling ConfettiCore CGSize+Arithmetic.swift
[9/17] Compiling ConfettiCore ConfettiConfig.swift
[10/17] Compiling ConfettiCore ConfettiCloud.swift
[11/17] Compiling ConfettiCore ConfettiRenderer.swift
[12/17] Compiling ConfettiCore Confetto.swift
[13/17] Compiling ConfettiCore CGPoint+Arithmetic.swift
[14/17] Emitting module ConfettiCore
[15/17] Compiling ConfettiCore ParticleRenderState.swift
[16/17] Compiling ConfettiCore CGVector+Arithmetic.swift
[17/17] Compiling ConfettiCore Double+Utilities.swift
[18/18] Compiling ConfettiCore ConfettiSimulation.swift
[19/25] Compiling ConfettiPlayback resource_bundle_accessor.swift
[20/25] Compiling ConfettiPlayback DisplayLinkDriver.swift
[21/25] Compiling ConfettiPlayback ParticleRenderStates.swift
[22/25] Compiling ConfettiPlayback ConfettiPlayer.swift
[23/25] Emitting module ConfettiPlayback
[24/25] Compiling ConfettiPlayback Exports.swift
[25/25] Compiling ConfettiPlayback DefaultColorSource.swift
[26/36] Compiling ConfettiUI Exports.swift
[27/36] Compiling ConfettiUI ConfettiDesignTokens.swift
[28/36] Compiling ConfettiUI ConfettiPlayerScreen.swift
[29/36] Compiling ConfettiUI ConfettiCanvas.swift
[30/37] Compiling ConfettiUI TimeSlider.swift
[31/37] Compiling ConfettiUI ConfettiDesignTokens+Environment.swift
[32/37] Compiling ConfettiUI ConfettiTriggerButton.swift
[33/37] Compiling ConfettiUI ConfettiTriggerButtonStyle+Environment.swift
[34/37] Emitting module ConfettiUI
[35/37] Compiling ConfettiUI ConfettiTriggerButtonStyle.swift
[36/37] Compiling ConfettiUI PlaybackControls.swift
[37/37] Compiling ConfettiUI ConfettiScreen.swift
Build complete! (12.09s)
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" : [
"ArithmeticExtensionsTests.swift",
"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",
"Extensions/CGPoint+Arithmetic.swift",
"Extensions/CGRect+Utilities.swift",
"Extensions/CGSize+Arithmetic.swift",
"Extensions/CGVector+Arithmetic.swift",
"Extensions/Double+Utilities.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/main
Repository: Koshimizu-Takehito/Confetti
Swift version used: 6.3
Target: ConfettiUI
Extracting symbol information for 'ConfettiUI'...
Finished extracting symbol information for 'ConfettiUI'. (45.91s)
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.17s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/koshimizu-takehito/confetti/main
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.27s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.6 (4.05s)
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.16s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.94s)
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
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--6988338F2F200930.txt
[6/53] Compiling SymbolKit DeclarationFragments.swift
[7/53] Compiling SymbolKit Fragment.swift
[8/53] Compiling SymbolKit FragmentKind.swift
[9/53] Compiling SymbolKit FunctionParameter.swift
[10/53] Compiling SymbolKit FunctionSignature.swift
[11/53] Compiling Snippets Snippet.swift
[12/53] Compiling Snippets SnippetParser.swift
[13/53] Emitting module Snippets
[14/57] Emitting module SymbolKit
[15/57] Compiling SymbolKit Identifier.swift
[16/57] Compiling SymbolKit KindIdentifier.swift
[17/57] Compiling SymbolKit Location.swift
[18/57] Compiling SymbolKit Mutability.swift
[19/57] Compiling SymbolKit Relationship.swift
[20/57] Compiling SymbolKit RelationshipKind.swift
[21/57] Compiling SymbolKit SourceOrigin.swift
[22/57] Compiling SymbolKit GenericConstraints.swift
[23/57] Compiling SymbolKit Swift.swift
[24/57] Compiling SymbolKit Mixin+Equals.swift
[25/57] Compiling SymbolKit Mixin+Hash.swift
[26/57] Compiling SymbolKit Mixin.swift
[27/57] Compiling SymbolKit LineList.swift
[28/57] Compiling SymbolKit Position.swift
[29/57] Compiling SymbolKit SemanticVersion.swift
[30/57] Compiling SymbolKit AccessControl.swift
[31/57] Compiling SymbolKit Availability.swift
[32/57] Compiling SymbolKit AvailabilityItem.swift
[33/57] Compiling SymbolKit Domain.swift
[34/57] Compiling SymbolKit Names.swift
[35/57] Compiling SymbolKit SPI.swift
[36/57] Compiling SymbolKit Snippet.swift
[37/57] Compiling SymbolKit Extension.swift
[38/57] Compiling SymbolKit GenericConstraint.swift
[39/57] Compiling SymbolKit GenericParameter.swift
[40/57] Compiling SymbolKit Generics.swift
[41/57] Compiling SymbolKit Namespace.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 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! (6.87s)
Building for debugging...
[0/1] Write swift-version--6988338F2F200930.txt
Build of target: 'ConfettiUI' complete! (0.31s)
Target: ConfettiPlayback
Extracting symbol information for 'ConfettiPlayback'...
Finished extracting symbol information for 'ConfettiPlayback'. (0.39s)
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/main
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.23s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/koshimizu-takehito/confetti/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/koshimizu-takehito/confetti/main/linkable-paths.json
Target: ConfettiCore
Extracting symbol information for 'ConfettiCore'...
Finished extracting symbol information for 'ConfettiCore'. (0.34s)
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:107:13-107:17
105 | /// Starts the simulation and generates particles.
106 | /// - Parameters:
107 + /// - area: Size of the simulation area
| ╰─suggestion: Replace 'area' with 'bounds'
108 | /// - startTime: Start time
109 | /// - colorSource: Color source
warning: External name 'randomNumberGenerator' used to document parameter
--> ../Simulation/ConfettiSimulation.swift:110:13-110:34
108 | /// - startTime: Start time
109 | /// - colorSource: Color source
110 + /// - randomNumberGenerator: Random number generator
| ╰─suggestion: Replace 'randomNumberGenerator' with 'numberGenerator'
111 | public func start(
112 | area bounds: CGSize,
warning: External name 'area' used to document parameter
--> ../Simulation/ConfettiSimulation.swift:161:13-161:17
159 | /// - Parameters:
160 | /// - time: Target simulation time (clamped to 0...duration)
161 + /// - area: Size of the simulation area
| ╰─suggestion: Replace 'area' with 'bounds'
162 | public func seek(to time: TimeInterval, area bounds: CGSize) {
163 | guard state.isRunning, let initialCloud = state.initialCloud else { return }
warning: External name 'area' used to document parameter
--> ../Simulation/ConfettiSimulation.swift:191:13-191:17
189 | /// - Parameters:
190 | /// - currentTime: Current time
191 + /// - area: Size of the simulation area (used for out-of-bounds detection)
| ╰─suggestion: Replace 'area' with 'bounds'
192 | public func update(at currentTime: Date, area bounds: CGSize) {
193 | guard state.isPlaying else { return }
Finished building documentation for 'ConfettiCore' (0.13s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/koshimizu-takehito/confetti/main
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.23s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/koshimizu-takehito/confetti/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/koshimizu-takehito/confetti/main/linkable-paths.json
8974
55 /Users/admin/builder/spi-builder-workspace/.docs/koshimizu-takehito/confetti/main
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/koshimizu-takehito/confetti/main
File count: 8974
Doc size: 55.0MB
Preparing doc bundle ...
Uploading prod-koshimizu-takehito-confetti-main-73b04d1d.zip to s3://spi-docs-inbox/prod-koshimizu-takehito-confetti-main-73b04d1d.zip
Copying... [10%]
Copying... [20%]
Copying... [30%]
Copying... [40%]
Copying... [50%]
Copying... [60%]
Copying... [70%]
Copying... [80%]
Copying... [91%]
Copying... [100%]
Done.