The Swift Package Index logo.Swift Package Index

Build Information

Successful build of MosaicKit, reference 1.1.14 (8ecb6a), with Swift 6.2 for macOS (SPM) on 21 Apr 2026 15:41:14 UTC.

Swift 6 data race errors: 0

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/fdenis75/MosaicKit.git
Reference: 1.1.14
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/fdenis75/MosaicKit
 * tag               1.1.14     -> FETCH_HEAD
HEAD is now at 8ecb6a7 Pushed to ios 26 and macos 2§ mini
Cloned https://github.com/fdenis75/MosaicKit.git
Revision (git rev-parse @):
8ecb6a7d217bf8ea80bf5ec62e9a8774e6659187
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/fdenis75/MosaicKit.git at 1.1.14
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.2
Building package at path:  $PWD
https://github.com/fdenis75/MosaicKit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.3.0.app xcrun swift build --arch arm64
Building for debugging...
[0/14] Write sources
[5/14] Copying libwebpmux.a
[6/14] Copying MetalShaders.metal
[6/14] Copying libwebpdemux.a
[8/14] Copying libwebp.a
[8/14] Copying libsharpyuv.a
[10/14] Write swift-version--3CB7CFEC50E0D141.txt
[12/60] Compiling Logging LogHandler.swift
[12/60] Compiling webpbridge WebpIncrementalDecoder.mm
[13/60] Compiling webpbridge WebpIncrementalDecoderResult.mm
[15/60] Compiling Logging MetadataProvider.swift
[16/60] Compiling Logging LogEvent.swift
[17/60] Emitting module Logging
[18/60] Compiling Logging Locks.swift
[19/60] Compiling Logging Logging.swift
[19/60] Compiling webpbridge WebpRGBAMultiplier.mm
[21/72] Compiling DominantColors UIImageExtension.swift
[22/72] Compiling DominantColors GradientColors.swift
[23/72] Compiling DominantColors ImageColorError.swift
[24/75] Compiling DominantColors RGB.swift
[25/75] Compiling DominantColors RGB255.swift
[26/75] Compiling DominantColors XYZ.swift
[27/75] Compiling DominantColors ComplementaryColor.swift
[28/75] Emitting module DominantColors
[29/75] Compiling DominantColors AverageColor+UIColor.swift
[30/75] Compiling DominantColors AverageColor.swift
[31/75] Compiling DominantColors ColorFrequency.swift
[32/75] Compiling DominantColors ContrastColors.swift
[33/75] Compiling webp WebPAnimatedEncoder.swift
[34/75] Compiling webp WebPDecoder+Platform.swift
[35/75] Compiling webp CGImage+Util.swift
[36/75] Compiling webp InternalRawRepresentable.swift
[37/75] Compiling DominantColors ContrastRatio.swift
[38/75] Compiling DominantColors DeltaEFormula.swift
[39/75] Compiling DominantColors Difference.swift
[40/75] Compiling DominantColors DominantColorAlgorithm.swift
[41/75] Compiling SJSAssetExportSession VideoOutputSettings.swift
[42/75] Compiling SJSAssetExportSession ExportSession+Error.swift
[43/75] Compiling SJSAssetExportSession ExportSession.swift
[44/75] Compiling SJSAssetExportSession AudioOutputSettings.swift
[45/75] Compiling SJSAssetExportSession CMTime+seconds.swift
[46/75] Compiling SJSAssetExportSession SampleWriter.swift
[47/75] Emitting module SJSAssetExportSession
[48/75] Compiling SJSAssetExportSession Array+Extensions.swift
[49/75] Compiling DominantColors DominantColors+UIColor.swift
[50/75] Compiling DominantColors DominantColors.swift
[51/75] Compiling DominantColors CGFloatExtensions.swift
[52/75] Compiling DominantColors CGImageExtensions.swift
[53/75] Compiling DominantColors CGSizeExtensions.swift
[54/75] Compiling DominantColors NSImageExtension.swift
[55/75] Compiling DominantColors ImageFIlter.swift
[56/75] Compiling DominantColors ImageTrimAlpha.swift
[57/75] Compiling DominantColors RelativeLuminance.swift
[58/75] Compiling DominantColors DominantColorQuality.swift
[59/75] Compiling DominantColors DominantColors+CIAreaAverage.swift
[60/75] Compiling DominantColors DominantColors+CIE.swift
[61/75] Compiling DominantColors DominantColors+CIKMeans.swift
[62/75] Compiling DominantColors DominantColors+ColorResolved.swift
[63/75] Compiling DominantColors DominantColors+NSColor.swift
[64/75] Compiling webp WebPEncoder.swift
[65/76] Compiling webp WebPError.swift
[66/76] Compiling webp WebPEncoder+Platform.swift
[67/76] Compiling webp WebPEncoderConfig.swift
[68/76] Compiling webp WebPEncoder+CGImage.swift
[69/76] Compiling webp WebPDecoderConfig.swift
[70/76] Compiling webp WebPImageInspector.swift
[71/76] Compiling webp WebPDecoder.swift
[72/76] Emitting module webp
[77/103] Compiling MosaicKit MosaicLayout.swift
[78/103] Compiling MosaicKit OverlayConfiguration.swift
[79/103] Compiling MosaicKit PreviewConfiguration.swift
[80/105] Emitting module MosaicKit
[81/105] Compiling MosaicKit DensityConfig.swift
[82/105] Compiling MosaicKit LayoutConfiguration.swift
[83/105] Compiling MosaicKit MosaicConfiguration.swift
[84/105] Compiling MosaicKit VideoMetadataExtractor.swift
[85/105] Compiling MosaicKit resource_bundle_accessor.swift
[86/105] Compiling MosaicKit MetalMosaicGenerator.swift
[87/105] Compiling MosaicKit MosaicGeneratorCoordinator.swift
[88/105] Compiling MosaicKit MosaicGeneratorFactory.swift
[89/105] Compiling MosaicKit MosaicKit.swift
[90/105] Compiling MosaicKit AnimatedGifGenerator.swift
[91/105] Compiling MosaicKit CoreGraphicsImageProcessor.swift
[92/105] Compiling MosaicKit PreviewGenerationProgress.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoInput.swift:140:9: warning: no calls to throwing functions occur within 'try' expression
138 |
139 |
140 |         try await self.init(
    |         `- warning: no calls to throwing functions occur within 'try' expression
141 |             url: url,
142 |             duration: videodata.duration,
[93/105] Compiling MosaicKit VideoFormat.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoInput.swift:140:9: warning: no calls to throwing functions occur within 'try' expression
138 |
139 |
140 |         try await self.init(
    |         `- warning: no calls to throwing functions occur within 'try' expression
141 |             url: url,
142 |             duration: videodata.duration,
[94/105] Compiling MosaicKit VideoInput.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/VideoInput.swift:140:9: warning: no calls to throwing functions occur within 'try' expression
138 |
139 |
140 |         try await self.init(
    |         `- warning: no calls to throwing functions occur within 'try' expression
141 |             url: url,
142 |             duration: videodata.duration,
[95/105] Compiling MosaicKit ThumbnailProcessor.swift
[96/105] Compiling MosaicKit VideoError.swift
[97/105] Compiling MosaicKit MosaicGeneratorProtocol.swift
[98/105] Compiling MosaicKit OverlayProcessor.swift
[99/105] Compiling MosaicKit PreviewError.swift
[100/105] Compiling MosaicKit PreviewGeneratorCoordinator.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:789:27: warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 787 |         nominalFrameRate: Float
 788 |     ) -> AVVideoComposition {
 789 |         let instruction = AVMutableVideoCompositionInstruction()
     |                           `- warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 790 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 791 |
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:792:32: warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 790 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 791 |
 792 |         let layerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: compositionVideoTrack)
     |                                `- warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 793 |         layerInstruction.setTransform(finalTransform, at: .zero)
 794 |         instruction.layerInstructions = [layerInstruction]
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:796:32: warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 794 |         instruction.layerInstructions = [layerInstruction]
 795 |
 796 |         let videoComposition = AVMutableVideoComposition()
     |                                `- warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 797 |         videoComposition.instructions = [instruction]
 798 |         videoComposition.renderSize = renderSize
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[101/105] Compiling MosaicKit PreviewVideoGenerator.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:789:27: warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 787 |         nominalFrameRate: Float
 788 |     ) -> AVVideoComposition {
 789 |         let instruction = AVMutableVideoCompositionInstruction()
     |                           `- warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 790 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 791 |
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:792:32: warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 790 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 791 |
 792 |         let layerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: compositionVideoTrack)
     |                                `- warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 793 |         layerInstruction.setTransform(finalTransform, at: .zero)
 794 |         instruction.layerInstructions = [layerInstruction]
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:796:32: warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 794 |         instruction.layerInstructions = [layerInstruction]
 795 |
 796 |         let videoComposition = AVMutableVideoComposition()
     |                                `- warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 797 |         videoComposition.instructions = [instruction]
 798 |         videoComposition.renderSize = renderSize
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[102/105] Compiling MosaicKit ProcessingError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:789:27: warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 787 |         nominalFrameRate: Float
 788 |     ) -> AVVideoComposition {
 789 |         let instruction = AVMutableVideoCompositionInstruction()
     |                           `- warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 790 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 791 |
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:792:32: warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 790 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 791 |
 792 |         let layerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: compositionVideoTrack)
     |                                `- warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 793 |         layerInstruction.setTransform(finalTransform, at: .zero)
 794 |         instruction.layerInstructions = [layerInstruction]
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:796:32: warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 794 |         instruction.layerInstructions = [layerInstruction]
 795 |
 796 |         let videoComposition = AVMutableVideoComposition()
     |                                `- warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 797 |         videoComposition.instructions = [instruction]
 798 |         videoComposition.renderSize = renderSize
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[103/105] Compiling MosaicKit CoreGraphicsMosaicGenerator.swift
[104/105] Compiling MosaicKit LayoutProcessor.swift
[105/105] Compiling MosaicKit MetalImageProcessor.swift
Build complete! (29.82s)
Fetching https://github.com/samsonjs/SJSAssetExportSession.git
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/DenDmitriev/DominantColors.git
Fetching https://github.com/awxkee/webp.swift.git
[1/422] Fetching sjsassetexportsession
[2/1433] Fetching sjsassetexportsession, dominantcolors
[83/8069] Fetching sjsassetexportsession, dominantcolors, swift-log
[614/8242] Fetching sjsassetexportsession, dominantcolors, swift-log, webp.swift
Fetched https://github.com/apple/swift-log.git from cache (1.47s)
[478/1606] Fetching sjsassetexportsession, dominantcolors, webp.swift
Fetched https://github.com/samsonjs/SJSAssetExportSession.git from cache (2.31s)
Fetched https://github.com/DenDmitriev/DominantColors.git from cache (2.31s)
Fetched https://github.com/awxkee/webp.swift.git from cache (2.31s)
Computing version for https://github.com/awxkee/webp.swift.git
Computed https://github.com/awxkee/webp.swift.git at 1.1.2 (5.29s)
Fetching https://github.com/awxkee/libwebp-ios.git
[1/556] Fetching libwebp-ios
Fetched https://github.com/awxkee/libwebp-ios.git from cache (1.84s)
Computing version for https://github.com/samsonjs/SJSAssetExportSession.git
Computed https://github.com/samsonjs/SJSAssetExportSession.git at 0.4.0 (2.39s)
Computing version for https://github.com/awxkee/libwebp-ios.git
Computed https://github.com/awxkee/libwebp-ios.git at 1.1.1 (0.63s)
Computing version for https://github.com/DenDmitriev/DominantColors.git
Computed https://github.com/DenDmitriev/DominantColors.git at 1.2.2 (0.52s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.12.0 (0.56s)
Creating working copy for https://github.com/awxkee/webp.swift.git
Working copy of https://github.com/awxkee/webp.swift.git resolved at 1.1.2
Creating working copy for https://github.com/awxkee/libwebp-ios.git
Working copy of https://github.com/awxkee/libwebp-ios.git resolved at 1.1.1
Creating working copy for https://github.com/samsonjs/SJSAssetExportSession.git
Working copy of https://github.com/samsonjs/SJSAssetExportSession.git resolved at 0.4.0
Creating working copy for https://github.com/DenDmitriev/DominantColors.git
Working copy of https://github.com/DenDmitriev/DominantColors.git resolved at 1.2.2
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.12.0
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.6.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "dominantcolors",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.2.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/DenDmitriev/DominantColors.git"
    },
    {
      "identity" : "sjsassetexportsession",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.4.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/samsonjs/SJSAssetExportSession.git"
    },
    {
      "identity" : "webp.swift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.1.2",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/awxkee/webp.swift.git"
    }
  ],
  "manifest_display_name" : "MosaicKit",
  "name" : "MosaicKit",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "26.0"
    },
    {
      "name" : "ios",
      "version" : "26.0"
    },
    {
      "name" : "maccatalyst",
      "version" : "26.0"
    }
  ],
  "products" : [
    {
      "name" : "MosaicKit",
      "targets" : [
        "MosaicKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "MosaicKitTests",
      "module_type" : "SwiftTarget",
      "name" : "MosaicKitTests",
      "path" : "Tests/MosaicKitTests",
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Tests/MosaicKitTests/embeddedAsset/test_video.mp4",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "AnimatedGifGeneratorTests.swift",
        "CombinationTests.swift",
        "ErrorTypesTests.swift",
        "LayoutProcessorTests.swift",
        "MosaicConfigurationTests.swift",
        "MosaicGeneratorCoordinatorTests.swift",
        "OverlayConfigurationTests.swift",
        "OverlayProcessorTests.swift",
        "PreviewConfigurationTests.swift",
        "PreviewVideoGeneratorTests.swift",
        "ThumbnailProcessorTests.swift"
      ],
      "target_dependencies" : [
        "MosaicKit"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MosaicKit",
      "module_type" : "SwiftTarget",
      "name" : "MosaicKit",
      "path" : "Sources",
      "product_dependencies" : [
        "Logging",
        "DominantColors",
        "SJSAssetExportSession",
        "webp"
      ],
      "product_memberships" : [
        "MosaicKit"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/Shaders/MetalShaders.metal",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Models/DensityConfig.swift",
        "Models/LayoutConfiguration.swift",
        "Models/MosaicConfiguration.swift",
        "Models/MosaicLayout.swift",
        "Models/OverlayConfiguration.swift",
        "Models/PreviewConfiguration.swift",
        "Models/PreviewGenerationProgress.swift",
        "Models/VideoFormat.swift",
        "Models/VideoInput.swift",
        "MosaicKit.swift",
        "Processing/AnimatedGifGenerator.swift",
        "Processing/CoreGraphicsImageProcessor.swift",
        "Processing/CoreGraphicsMosaicGenerator.swift",
        "Processing/LayoutProcessor.swift",
        "Processing/MetalImageProcessor.swift",
        "Processing/MetalMosaicGenerator.swift",
        "Processing/MosaicGeneratorCoordinator.swift",
        "Processing/MosaicGeneratorFactory.swift",
        "Processing/MosaicGeneratorProtocol.swift",
        "Processing/OverlayProcessor.swift",
        "Processing/Preview/PreviewError.swift",
        "Processing/Preview/PreviewGeneratorCoordinator.swift",
        "Processing/Preview/PreviewVideoGenerator.swift",
        "Processing/ProcessingError.swift",
        "Processing/ThumbnailProcessor.swift",
        "Processing/VideoError.swift",
        "Processing/VideoMetadataExtractor.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.2"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/fdenis75/mosaickit/1.1.14
Repository:               fdenis75/MosaicKit
Swift version used:       6.2
Target:                   MosaicKit
Extracting symbol information for 'MosaicKit'...
Finished extracting symbol information for 'MosaicKit'. (7.23s)
Building documentation for 'MosaicKit'...
warning: Resource 'architecture-diagram' couldn't be found
 --> Articles/Architecture.md:6:5-6:62
4 |
5 | @Metadata {
6 +     @PageImage(purpose: card, source: "architecture-diagram")
7 | }
8 |
warning: 'BatchProcessing' doesn't exist at '/MosaicKit/PerformanceGuide'
   --> Articles/PerformanceGuide.md:592:8-592:23
590 | - <doc:Architecture>
591 | - <doc:PlatformStrategy>
592 + - <doc:BatchProcessing>
    |        ╰─suggestion: Replace 'BatchProcessing' with '4-Optimize-Batch-Processing'
593 | - ``MosaicConfiguration``
594 | - ``DensityConfig``
warning: Resource 'mosaic-hero' couldn't be found
 --> GettingStarted.md:6:5-6:53
4 |
5 | @Metadata {
6 +     @PageImage(purpose: card, source: "mosaic-hero")
7 | }
8 |
warning: 'CustomLayouts' doesn't exist at '/MosaicKit/GettingStarted'
   --> GettingStarted.md:305:8-305:21
303 | - <doc:LayoutAlgorithms> - Deep dive into layout algorithms
304 | - <doc:PerformanceGuide> - Optimization strategies for large batches
305 + - <doc:CustomLayouts> - Creating custom layout configurations
    |        ╰─suggestion: Replace 'CustomLayouts' with 'Custom-Configuration'
306 |
307 | ## See Also
warning: Documentation extension files can't become technology roots.
 --> MosaicKit.md:6:5-6:20
4 |
5 | @Metadata {
6 +     @TechnologyRoot
  |     ╰─suggestion: Remove the TechnologyRoot directive
7 |     @Available(macOS, introduced: "15.0")
8 |     @Available(iOS, introduced: "15.0")
warning: Parameter 'useCustomLayout' not found in instance method declaration
  --> ../Processing/LayoutProcessor.swift:81:11-81:68
79 |     ///   - mosaicWidth: Desired width of the mosaic
80 |     ///   - density: Density configuration for layout
81 +     ///   - useCustomLayout: Whether to use custom layout algorithm
   |           ╰─suggestion: Remove 'useCustomLayout' parameter documentation
82 |     /// - Returns: Optimal layout for the mosaic
83 |     public func calculateLayout(
warning: Parameter 'mosaicAspectRatio' is missing documentation
  --> ../Processing/LayoutProcessor.swift:81:68-81:68
79 |     ///   - mosaicWidth: Desired width of the mosaic
80 |     ///   - density: Density configuration for layout
81 +     ///   - useCustomLayout: Whether to use custom layout algorithm
82 |     /// - Returns: Optimal layout for the mosaic
83 |     public func calculateLayout(
warning: Parameter 'layoutType' is missing documentation
  --> ../Processing/LayoutProcessor.swift:81:68-81:68
79 |     ///   - mosaicWidth: Desired width of the mosaic
80 |     ///   - density: Density configuration for layout
81 +     ///   - useCustomLayout: Whether to use custom layout algorithm
   |                                                                    ╰─suggestion: Document 'layoutType' parameter
82 |     /// - Returns: Optimal layout for the mosaic
83 |     public func calculateLayout(
warning: Parameter 'layoutType' is missing documentation
   --> ../Processing/LayoutProcessor.swift:617:43-617:43
615 |     ///   - duration: Video duration in seconds
616 |     ///   - width: Mosaic width
617 +     ///   - density: Density configuration
    |                                           ╰─suggestion: Document 'layoutType' parameter
618 |     /// - Returns: Optimal number of thumbnails
619 |     public func calculateThumbnailCount(
warning: Parameter 'videoAR' is missing documentation
   --> ../Processing/LayoutProcessor.swift:617:43-617:43
615 |     ///   - duration: Video duration in seconds
616 |     ///   - width: Mosaic width
617 +     ///   - density: Density configuration
    |                                           ╰─suggestion: Document 'videoAR' parameter
618 |     /// - Returns: Optimal number of thumbnails
619 |     public func calculateThumbnailCount(
warning: Parameter 'forIphone' is missing documentation
   --> ../Processing/MetalImageProcessor.swift:688:74-688:74
686 |     ///   - config: Mosaic configuration
687 |     ///   - metadataHeader: Optional pre-generated metadata header image
688 +     ///   - progressHandler: Optional progress handler to update progress
    |           ╰─suggestion: Document 'forIphone' parameter
689 |     /// - Returns: Generated mosaic image
690 |     public func generateMosaic(
warning: Parameter 'forIphone' is missing documentation
  --> ../Processing/MetalMosaicGenerator.swift:89:60-89:60
87 |     /// - Parameters:
88 |     ///   - video: The video to generate a mosaic for
89 +     ///   - config: The configuration for mosaic generation
   |                                                            ╰─suggestion: Document 'forIphone' parameter
90 |     /// - Returns: The URL of the generated mosaic image
91 |     public func generate(for video: VideoInput, config: MosaicConfiguration, forIphone: Bool = false) async throws -> URL {
warning: Parameter 'forIphone' is missing documentation
   --> ../Processing/MosaicGeneratorCoordinator.swift:157:58-157:58
155 |     ///   - video: The video to generate a mosaic for
156 |     ///   - config: The configuration for mosaic generation
157 +     ///   - progressHandler: Handler for progress updates
    |           ╰─suggestion: Document 'forIphone' parameter
158 |     /// - Returns: The result of mosaic generation
159 |     public func generateMosaic(for video: VideoInput, config: MosaicConfiguration, forIphone: Bool = false, progressHandler: @escaping @Sendable (MosaicGenerationProgress) -> Void) async throws -> MosaicGenerationResult {
warning: Parameter 'folderURL' not found in instance method declaration
   --> ../Processing/MosaicGeneratorCoordinator.swift:309:11-309:63
307 |     /// Generate mosaics for videos in a folder
308 |     /// - Parameters:
309 +     ///   - folderURL: The URL of the folder containing videos
    |           ╰─suggestion: Remove 'folderURL' parameter documentation
310 |     ///   - config: The configuration for mosaic generation
311 |     ///   - recursive: Whether to search for videos recursively
warning: Parameter 'recursive' not found in instance method declaration
   --> ../Processing/MosaicGeneratorCoordinator.swift:311:11-311:64
309 |     ///   - folderURL: The URL of the folder containing videos
310 |     ///   - config: The configuration for mosaic generation
311 +     ///   - recursive: Whether to search for videos recursively
    |           ╰─suggestion: Remove 'recursive' parameter documentation
312 |     ///   - progressHandler: Handler for progress updates
313 |     /// - Returns: Array of generation results
warning: Parameter 'forIphone' is missing documentation
   --> ../Processing/MosaicGeneratorCoordinator.swift:312:58-312:58
310 |     ///   - config: The configuration for mosaic generation
311 |     ///   - recursive: Whether to search for videos recursively
312 +     ///   - progressHandler: Handler for progress updates
    |           ╰─suggestion: Document 'forIphone' parameter
313 |     /// - Returns: Array of generation results
314 |
warning: Parameter 'videos' is missing documentation
   --> ../Processing/MosaicGeneratorCoordinator.swift:312:58-312:58
310 |     ///   - config: The configuration for mosaic generation
    |           ╰─suggestion: Document 'videos' parameter
311 |     ///   - recursive: Whether to search for videos recursively
312 +     ///   - progressHandler: Handler for progress updates
313 |     /// - Returns: Array of generation results
314 |
warning: Parameter 'progressHandler' is missing documentation
  --> ../Processing/ThumbnailProcessor.swift:33:67-33:67
31 |     ///   - asset: Video asset to extract thumbnails from
32 |     ///   - preview: Whether generating preview thumbnails
33 +     ///   - accurate: Whether to use accurate timestamp extraction
   |                                                                   ╰─suggestion: Document 'progressHandler' parameter
34 |     /// - Returns: Array of tuples containing thumbnail images and their timestamps
35 |     public func extractThumbnails(
warning: Parameter 'progressHandler' is missing documentation
   --> ../Processing/ThumbnailProcessor.swift:321:41-321:41
319 |     ///   - layout: Layout information
320 |     ///   - metadata: Video metadata
321 +     ///   - config: Mosaic configuration
    |                                         ╰─suggestion: Document 'progressHandler' parameter
322 |     /// - Returns: Generated mosaic image
323 |     public func generateMosaic(
warning: Parameter 'metadataHeader' is missing documentation
   --> ../Processing/ThumbnailProcessor.swift:321:41-321:41
319 |     ///   - layout: Layout information
320 |     ///   - metadata: Video metadata
321 +     ///   - config: Mosaic configuration
    |                                         ╰─suggestion: Document 'metadataHeader' parameter
322 |     /// - Returns: Generated mosaic image
323 |     public func generateMosaic(
warning: Parameter 'swatchColors' is missing documentation
   --> ../Processing/ThumbnailProcessor.swift:587:104-587:104
585 |     ///   - width: The width of the mosaic
586 |     ///   - height: Optional height override for the metadata header
587 +     ///   - backgroundColor: Optional background color (if nil, platform-specific default will be used)
    |                                                                                                        ╰─suggestion: Document 'swatchColors' parameter
588 |     /// - Returns: A CGImage containing the metadata header
589 |     public func createMetadataHeader(
warning: Parameter 'forIphone' is missing documentation
   --> ../Processing/ThumbnailProcessor.swift:587:104-587:104
585 |     ///   - width: The width of the mosaic
586 |     ///   - height: Optional height override for the metadata header
587 +     ///   - backgroundColor: Optional background color (if nil, platform-specific default will be used)
    |                                                                                                        ╰─suggestion: Document 'forIphone' parameter
588 |     /// - Returns: A CGImage containing the metadata header
589 |     public func createMetadataHeader(
warning: Parameter 'headerConfig' is missing documentation
   --> ../Processing/ThumbnailProcessor.swift:587:104-587:104
585 |     ///   - width: The width of the mosaic
586 |     ///   - height: Optional height override for the metadata header
587 +     ///   - backgroundColor: Optional background color (if nil, platform-specific default will be used)
    |                                                                                                        ╰─suggestion: Document 'headerConfig' parameter
588 |     /// - Returns: A CGImage containing the metadata header
589 |     public func createMetadataHeader(
Finished building documentation for 'MosaicKit' (0.98s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/fdenis75/mosaickit/1.1.14
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2277] Fetching swift-docc-plugin
Updating https://github.com/awxkee/webp.swift.git
Updating https://github.com/samsonjs/SJSAssetExportSession.git
Updating https://github.com/DenDmitriev/DominantColors.git
Updating https://github.com/apple/swift-log.git
Updating https://github.com/awxkee/libwebp-ios.git
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.20s)
Updated https://github.com/awxkee/webp.swift.git (0.43s)
Updated https://github.com/apple/swift-log.git (0.50s)
Updated https://github.com/DenDmitriev/DominantColors.git (0.50s)
Updated https://github.com/awxkee/libwebp-ios.git (0.50s)
Updated https://github.com/samsonjs/SJSAssetExportSession.git (0.50s)
Computing version for https://github.com/awxkee/webp.swift.git
Computed https://github.com/awxkee/webp.swift.git at 1.1.2 (2.37s)
Computing version for https://github.com/samsonjs/SJSAssetExportSession.git
Computed https://github.com/samsonjs/SJSAssetExportSession.git at 0.4.0 (0.54s)
Computing version for https://github.com/DenDmitriev/DominantColors.git
Computed https://github.com/DenDmitriev/DominantColors.git at 1.2.2 (0.54s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.12.0 (0.57s)
Computing version for https://github.com/awxkee/libwebp-ios.git
Computed https://github.com/awxkee/libwebp-ios.git at 1.1.1 (0.63s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.6 (0.64s)
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.17s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.87s)
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
[2/8] Write snippet-extract-tool-entitlement.plist
[2/8] Write sources
[4/8] Write swift-version--3CB7CFEC50E0D141.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/57] Compiling SymbolKit SemanticVersion.swift
[12/57] Compiling SymbolKit AccessControl.swift
[13/57] Compiling SymbolKit Availability.swift
[14/57] Compiling SymbolKit AvailabilityItem.swift
[15/57] Compiling SymbolKit Domain.swift
[16/57] Emitting module SymbolKit
[17/57] Compiling SymbolKit Mixin+Equals.swift
[18/57] Compiling SymbolKit Mixin+Hash.swift
[19/57] Compiling SymbolKit Mixin.swift
[20/57] Compiling SymbolKit LineList.swift
[21/57] Compiling SymbolKit Position.swift
[22/57] Compiling SymbolKit GenericConstraint.swift
[23/57] Compiling SymbolKit GenericParameter.swift
[24/57] Compiling SymbolKit Generics.swift
[25/57] Compiling SymbolKit Namespace.swift
[26/57] Compiling SymbolKit Names.swift
[27/57] Compiling SymbolKit SPI.swift
[28/57] Compiling SymbolKit Snippet.swift
[29/57] Compiling SymbolKit Extension.swift
[30/57] Compiling SymbolKit SourceRange.swift
[31/57] Compiling SymbolKit Metadata.swift
[32/57] Compiling SymbolKit Module.swift
[33/57] Compiling SymbolKit OperatingSystem.swift
[34/57] Compiling SymbolKit Platform.swift
[35/57] Compiling SymbolKit Identifier.swift
[36/57] Compiling SymbolKit KindIdentifier.swift
[37/57] Compiling SymbolKit Location.swift
[38/57] Compiling SymbolKit Mutability.swift
[39/57] Compiling SymbolKit Relationship.swift
[40/57] Compiling SymbolKit RelationshipKind.swift
[41/57] Compiling SymbolKit SourceOrigin.swift
[42/57] Compiling SymbolKit GenericConstraints.swift
[43/57] Compiling SymbolKit Swift.swift
[44/57] Compiling SymbolKit Symbol.swift
[45/57] Compiling SymbolKit SymbolKind.swift
[46/57] Compiling SymbolKit SymbolGraph.swift
[47/57] Compiling SymbolKit GraphCollector.swift
[48/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[49/57] Compiling SymbolKit UnifiedSymbol.swift
[50/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[51/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[52/57] Emitting module Snippets
[53/57] Compiling Snippets Snippet.swift
[54/57] Compiling Snippets SnippetParser.swift
[55/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[56/61] Compiling snippet_extract URL+Status.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (4.16s)
Building for debugging...
[0/4] Write swift-version--3CB7CFEC50E0D141.txt
[1/4] Compiling webpbridge WebpIncrementalDecoderResult.mm
[2/4] Compiling webpbridge WebpIncrementalDecoder.mm
[3/4] Compiling webpbridge WebpRGBAMultiplier.mm
Build of target: 'MosaicKit' complete! (1.67s)
    1722
10	/Users/admin/builder/spi-builder-workspace/.docs/fdenis75/mosaickit/1.1.14
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/fdenis75/mosaickit/1.1.14
File count: 1722
Doc size:   10.0MB
Preparing doc bundle ...
Uploading prod-fdenis75-mosaickit-1.1.14-05cdbd90.zip to s3://spi-docs-inbox/prod-fdenis75-mosaickit-1.1.14-05cdbd90.zip
Copying... [11%]
Copying... [23%]
Copying... [31%]
Copying... [42%]
Copying... [51%]
Copying... [62%]
Copying... [70%]
Copying... [82%]
Copying... [90%]
Copying... [100%]
Done.