The Swift Package Index logo.Swift Package Index

Build Information

Successful build of KadrUI, reference v0.21.0 (32e974), with Swift 6.2 for macOS (SPM) on 31 Aug 2026 17:01:04 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: 5.0.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/SteliyanH/kadr-ui.git
Reference: v0.21.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/SteliyanH/kadr-ui
 * tag               v0.21.0    -> FETCH_HEAD
HEAD is now at 32e974b Merge pull request #143 from SteliyanH/develop
Cloned https://github.com/SteliyanH/kadr-ui.git
Revision (git rev-parse @):
32e974b57783100174adb88f31066fe10c8f54f7
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/SteliyanH/kadr-ui.git at v0.21.0
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.2
Building package at path:  $PWD
https://github.com/SteliyanH/kadr-ui.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.3.0.app xcrun swift build --arch arm64
Building for debugging...
[0/3] Write sources
[2/3] Write swift-version--3CB7CFEC50E0D141.txt
[4/67] Emitting module Kadr
[5/74] Compiling Kadr FilterID.swift
[6/74] Compiling Kadr Frame.swift
[7/74] Compiling Kadr LayerID.swift
[8/74] Compiling Kadr Layout.swift
[9/74] Compiling Kadr Position.swift
[10/74] Compiling Kadr Size.swift
[11/74] Compiling Kadr Transform.swift
[12/74] Compiling Kadr Animatable.swift
[13/74] Compiling Kadr Animation.swift
[14/74] Compiling Kadr TimingFunction.swift
[15/74] Compiling Kadr AudioBuilder.swift
[16/74] Compiling Kadr AudioTimePitchAlgorithm.swift
[17/74] Compiling Kadr AudioTrack.swift
[18/74] Compiling Kadr BackgroundMusic.swift
[19/74] Compiling Kadr TextOverlay.swift
[20/74] Compiling Kadr TextShadow.swift
[21/74] Compiling Kadr TextStroke.swift
[22/74] Compiling Kadr TextStyle.swift
[23/74] Compiling Kadr Watermark.swift
[24/74] Compiling Kadr PlatformTypes.swift
[25/74] Compiling Kadr Timecode.swift
[26/74] Compiling Kadr Clip+AnimationClearing.swift
[27/74] Compiling Kadr Clip+FilterID.swift
[28/74] Compiling Kadr Clip+Speed.swift
[29/74] Compiling Kadr ImageOverlay.swift
[30/74] Compiling Kadr Overlay.swift
[31/74] Compiling Kadr StickerOverlay.swift
[32/74] Compiling Kadr TextAnimation.swift
[33/74] Compiling Kadr ChromaKey.swift
[34/74] Compiling Kadr Filter.swift
[35/74] Compiling Kadr FilterKind.swift
[36/74] Compiling Kadr LUT.swift
[37/74] Compiling Kadr Anchor.swift
[38/74] Compiling Kadr ClipID.swift
[39/74] Compiling Kadr CropRegion.swift
[40/74] Compiling Kadr CancellationToken.swift
[41/74] Compiling Kadr CompositionBuilder.swift
[42/74] Compiling Kadr Compositor.swift
[43/74] Compiling Kadr CropCompositor.swift
[44/74] Compiling Kadr ExportEngine.swift
[45/74] Compiling Kadr FilterProcessor.swift
[46/74] Compiling Kadr ImageEncoder.swift
[47/74] Compiling Kadr Caption.swift
[48/74] Compiling Kadr Clip.swift
[49/74] Compiling Kadr ImageClip+Color.swift
[50/74] Compiling Kadr ImageClip.swift
[51/74] Compiling Kadr SampleMedia.swift
[52/74] Compiling Kadr TitleSequence.swift
[53/74] Compiling Kadr Track.swift
[54/74] Compiling Kadr KadrVideoCompositor.swift
[55/74] Compiling Kadr MaskCompositor.swift
[56/74] Compiling Kadr MultiInputCompositor.swift
[57/74] Compiling Kadr OverlayRenderer.swift
[58/74] Compiling Kadr PlaybackComposer.swift
[59/74] Compiling Kadr ReverseProcessor.swift
[60/74] Compiling Kadr SpeedCurveSampler.swift
[61/74] Compiling Kadr ThumbnailGenerator.swift
[62/74] Compiling Kadr KadrError+LocalizedError.swift
[63/74] Compiling Kadr KadrError.swift
[64/74] Compiling Kadr ExportProgress.swift
[65/74] Compiling Kadr ExportSettings.swift
[66/74] Compiling Kadr Exporter.swift
[67/74] Compiling Kadr Preset.swift
[68/74] Compiling Kadr Transition.swift
[69/74] Compiling Kadr Video.swift
[70/74] Compiling Kadr VideoBuilder.swift
[71/74] Compiling Kadr VideoClip.swift
[72/74] Compiling Kadr AssetWriterExporter.swift
[73/74] Compiling Kadr AudioWaveform.swift
[74/74] Compiling Kadr AudioWaveformLoader.swift
[75/96] Emitting module KadrUI
[76/98] Compiling KadrUI VideoSampling.swift
[77/98] Compiling KadrUI ZoomSnapThreshold.swift
[78/98] Compiling KadrUI ClipSplitter.swift
[79/98] Compiling KadrUI InspectorPanel.swift
[80/98] Compiling KadrUI KadrAppearance.swift
[81/98] Compiling KadrUI TimelineZoom.swift
[82/98] Compiling KadrUI TransitionPicker.swift
[83/98] Compiling KadrUI ThumbnailStrip.swift
[84/98] Compiling KadrUI TimelineEvents.swift
[85/98] Compiling KadrUI OverlayInspector.swift
[86/98] Compiling KadrUI OverlayKeyframeEditor.swift
[87/98] Compiling KadrUI KadrUI.swift
[88/98] Compiling KadrUI KeyframeEditor.swift
[89/98] Compiling KadrUI OverlayHost.swift
[90/98] Compiling KadrUI AnimatedTextLayerView.swift
[91/98] Compiling KadrUI AudioWaveform.swift
[92/98] Compiling KadrUI CaptionEditor.swift
[93/98] Compiling KadrUI PlatformBridge.swift
[94/98] Compiling KadrUI SpeedCurveEditor.swift
[95/98] Compiling KadrUI TransportBand.swift
/Users/admin/builder/spi-builder-workspace/Sources/KadrUI/VideoPreview.swift:179:17: warning: main actor-isolated property 'isSeekingFromBinding' can not be mutated from a Sendable closure
 79 |     /// Guards the feedback loop between `currentTime` and the observer: without
 80 |     /// it, every tick writes the binding, which seeks, which ticks.
 81 |     @State private var isSeekingFromBinding = false
    |                        `- note: mutation of this property is only permitted within the actor
 82 |
 83 |     /// Create a preview for `video`.
    :
177 |             isSeekingFromBinding = true
178 |             player.seek(to: time, toleranceBefore: .zero, toleranceAfter: .zero) { _ in
179 |                 isSeekingFromBinding = false
    |                 `- warning: main actor-isolated property 'isSeekingFromBinding' can not be mutated from a Sendable closure
180 |             }
181 |         }
/Users/admin/builder/spi-builder-workspace/Sources/KadrUI/VideoPreview.swift:217:20: warning: main actor-isolated property 'isSeekingFromBinding' can not be referenced from a Sendable closure
 79 |     /// Guards the feedback loop between `currentTime` and the observer: without
 80 |     /// it, every tick writes the binding, which seeks, which ticks.
 81 |     @State private var isSeekingFromBinding = false
    |                        `- note: property declared here
 82 |
 83 |     /// Create a preview for `video`.
    :
215 |             // Skip the tick that our own seek produced, or the binding would
216 |             // fight the observer.
217 |             guard !isSeekingFromBinding else { return }
    |                    `- warning: main actor-isolated property 'isSeekingFromBinding' can not be referenced from a Sendable closure
218 |
219 |             if let currentTime, currentTime.wrappedValue != time {
/Users/admin/builder/spi-builder-workspace/Sources/KadrUI/VideoPreview.swift:220:17: warning: main actor-isolated property 'lastPushedTime' can not be mutated from a Sendable closure
 66 |     /// which is what allows the seek threshold below to be frame-scale instead
 67 |     /// of a blunt 0.05s — see `seekEpsilon`.
 68 |     @State private var lastPushedTime: CMTime?
    |                        `- note: mutation of this property is only permitted within the actor
 69 |
 70 |     /// Attached only when sampling is requested. An `AVPlayerItemVideoOutput`
    :
218 |
219 |             if let currentTime, currentTime.wrappedValue != time {
220 |                 lastPushedTime = time
    |                 `- warning: main actor-isolated property 'lastPushedTime' can not be mutated from a Sendable closure
221 |                 currentTime.wrappedValue = time
222 |             }
/Users/admin/builder/spi-builder-workspace/Sources/KadrUI/VideoPreview.swift:227:20: warning: main actor-isolated property 'loopBox' can not be referenced from a Sendable closure
 58 |     /// binding a loop toggle to `loops:` saw it do nothing until something else
 59 |     /// happened to rebuild the player.
 60 |     @State private var loopBox = LoopBox()
    |                        `- note: property declared here
 61 |
 62 |     /// The last position this view pushed into `currentTime` itself.
    :
225 |             let atEnd = time >= item.duration
226 |             if atEnd {
227 |                 if loopBox.loops {
    |                    `- warning: main actor-isolated property 'loopBox' can not be referenced from a Sendable closure
228 |                     player.seek(to: .zero)
229 |                     player.play()
[96/98] Compiling KadrUI VideoPreview.swift
/Users/admin/builder/spi-builder-workspace/Sources/KadrUI/VideoPreview.swift:179:17: warning: main actor-isolated property 'isSeekingFromBinding' can not be mutated from a Sendable closure
 79 |     /// Guards the feedback loop between `currentTime` and the observer: without
 80 |     /// it, every tick writes the binding, which seeks, which ticks.
 81 |     @State private var isSeekingFromBinding = false
    |                        `- note: mutation of this property is only permitted within the actor
 82 |
 83 |     /// Create a preview for `video`.
    :
177 |             isSeekingFromBinding = true
178 |             player.seek(to: time, toleranceBefore: .zero, toleranceAfter: .zero) { _ in
179 |                 isSeekingFromBinding = false
    |                 `- warning: main actor-isolated property 'isSeekingFromBinding' can not be mutated from a Sendable closure
180 |             }
181 |         }
/Users/admin/builder/spi-builder-workspace/Sources/KadrUI/VideoPreview.swift:217:20: warning: main actor-isolated property 'isSeekingFromBinding' can not be referenced from a Sendable closure
 79 |     /// Guards the feedback loop between `currentTime` and the observer: without
 80 |     /// it, every tick writes the binding, which seeks, which ticks.
 81 |     @State private var isSeekingFromBinding = false
    |                        `- note: property declared here
 82 |
 83 |     /// Create a preview for `video`.
    :
215 |             // Skip the tick that our own seek produced, or the binding would
216 |             // fight the observer.
217 |             guard !isSeekingFromBinding else { return }
    |                    `- warning: main actor-isolated property 'isSeekingFromBinding' can not be referenced from a Sendable closure
218 |
219 |             if let currentTime, currentTime.wrappedValue != time {
/Users/admin/builder/spi-builder-workspace/Sources/KadrUI/VideoPreview.swift:220:17: warning: main actor-isolated property 'lastPushedTime' can not be mutated from a Sendable closure
 66 |     /// which is what allows the seek threshold below to be frame-scale instead
 67 |     /// of a blunt 0.05s — see `seekEpsilon`.
 68 |     @State private var lastPushedTime: CMTime?
    |                        `- note: mutation of this property is only permitted within the actor
 69 |
 70 |     /// Attached only when sampling is requested. An `AVPlayerItemVideoOutput`
    :
218 |
219 |             if let currentTime, currentTime.wrappedValue != time {
220 |                 lastPushedTime = time
    |                 `- warning: main actor-isolated property 'lastPushedTime' can not be mutated from a Sendable closure
221 |                 currentTime.wrappedValue = time
222 |             }
/Users/admin/builder/spi-builder-workspace/Sources/KadrUI/VideoPreview.swift:227:20: warning: main actor-isolated property 'loopBox' can not be referenced from a Sendable closure
 58 |     /// binding a loop toggle to `loops:` saw it do nothing until something else
 59 |     /// happened to rebuild the player.
 60 |     @State private var loopBox = LoopBox()
    |                        `- note: property declared here
 61 |
 62 |     /// The last position this view pushed into `currentTime` itself.
    :
225 |             let atEnd = time >= item.duration
226 |             if atEnd {
227 |                 if loopBox.loops {
    |                    `- warning: main actor-isolated property 'loopBox' can not be referenced from a Sendable closure
228 |                     player.seek(to: .zero)
229 |                     player.play()
[97/98] Compiling KadrUI TimelineLanes.swift
[98/98] Compiling KadrUI TimelineView.swift
Build complete! (54.17s)
Fetching https://github.com/nalexn/ViewInspector
Fetching https://github.com/SteliyanH/kadr.git
Fetching https://github.com/pointfreeco/swift-snapshot-testing
[1/2034] Fetching kadr
[998/15028] Fetching kadr, viewinspector
[1722/31420] Fetching kadr, viewinspector, swift-snapshot-testing
Fetched https://github.com/pointfreeco/swift-snapshot-testing from cache (17.57s)
Fetched https://github.com/nalexn/ViewInspector from cache (17.57s)
Fetched https://github.com/SteliyanH/kadr.git from cache (17.57s)
Computing version for https://github.com/SteliyanH/kadr.git
Computed https://github.com/SteliyanH/kadr.git at 1.1.0 (18.14s)
Computing version for https://github.com/nalexn/ViewInspector
Computed https://github.com/nalexn/ViewInspector at 0.10.3 (0.55s)
Computing version for https://github.com/pointfreeco/swift-snapshot-testing
Computed https://github.com/pointfreeco/swift-snapshot-testing at 1.19.4 (0.56s)
Fetching https://github.com/swiftlang/swift-syntax
Fetching https://github.com/pointfreeco/swift-custom-dump
[1/5701] Fetching swift-custom-dump
[5702/85074] Fetching swift-custom-dump, swift-syntax
Fetched https://github.com/pointfreeco/swift-custom-dump from cache (6.38s)
Fetched https://github.com/swiftlang/swift-syntax from cache (6.38s)
Computing version for https://github.com/pointfreeco/swift-custom-dump
Computed https://github.com/pointfreeco/swift-custom-dump at 1.7.3 (6.98s)
Fetching https://github.com/pointfreeco/xctest-dynamic-overlay
[1/2727] Fetching xctest-dynamic-overlay
Fetched https://github.com/pointfreeco/xctest-dynamic-overlay from cache (1.49s)
Computing version for https://github.com/pointfreeco/xctest-dynamic-overlay
Computed https://github.com/pointfreeco/xctest-dynamic-overlay at 1.13.1 (4.44s)
Computing version for https://github.com/swiftlang/swift-syntax
Computed https://github.com/swiftlang/swift-syntax at 603.0.2 (2.19s)
Creating working copy for https://github.com/SteliyanH/kadr.git
Working copy of https://github.com/SteliyanH/kadr.git resolved at 1.1.0
Creating working copy for https://github.com/swiftlang/swift-syntax
Working copy of https://github.com/swiftlang/swift-syntax resolved at 603.0.2
Creating working copy for https://github.com/pointfreeco/xctest-dynamic-overlay
Working copy of https://github.com/pointfreeco/xctest-dynamic-overlay resolved at 1.13.1
Creating working copy for https://github.com/pointfreeco/swift-snapshot-testing
Working copy of https://github.com/pointfreeco/swift-snapshot-testing resolved at 1.19.4
Creating working copy for https://github.com/nalexn/ViewInspector
Working copy of https://github.com/nalexn/ViewInspector resolved at 0.10.3
Creating working copy for https://github.com/pointfreeco/swift-custom-dump
Working copy of https://github.com/pointfreeco/swift-custom-dump resolved at 1.7.3
Build complete.
{
  "dependencies" : [
    {
      "identity" : "kadr",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/SteliyanH/kadr.git"
    },
    {
      "identity" : "swift-snapshot-testing",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.18.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/pointfreeco/swift-snapshot-testing"
    },
    {
      "identity" : "viewinspector",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.10.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/nalexn/ViewInspector"
    }
  ],
  "manifest_display_name" : "KadrUI",
  "name" : "KadrUI",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "17.0"
    },
    {
      "name" : "macos",
      "version" : "14.0"
    },
    {
      "name" : "tvos",
      "version" : "17.0"
    },
    {
      "name" : "visionos",
      "version" : "1.0"
    }
  ],
  "products" : [
    {
      "name" : "KadrUI",
      "targets" : [
        "KadrUI"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "KadrUITests",
      "module_type" : "SwiftTarget",
      "name" : "KadrUITests",
      "path" : "Tests/KadrUITests",
      "product_dependencies" : [
        "SnapshotTesting",
        "ViewInspector"
      ],
      "sources" : [
        "AccessibilityTests.swift",
        "AnimatedTextLayerViewTests.swift",
        "AudioWaveformShapeTests.swift",
        "AuthoringSurfaceTests.swift",
        "CallbackEventStructsTests.swift",
        "CaptionEditorTests.swift",
        "ClipSplitterTests.swift",
        "CrossfadeBoundariesTests.swift",
        "FixedCenterPlayheadTests.swift",
        "GestureWiringTests.swift",
        "InspectorPanelTests.swift",
        "InspectorSectionsAndTextEffectsTests.swift",
        "KadrAppearanceTests.swift",
        "KadrUITests.swift",
        "KeyframeEditorTests.swift",
        "MultiSelectAndLongPressTests.swift",
        "OnClipDragSnapTests.swift",
        "OverlayGestureTests.swift",
        "OverlayHostHelpersTests.swift",
        "OverlayHostMultiSelectTests.swift",
        "OverlayHostTests.swift",
        "OverlayInspectorTests.swift",
        "SnapshotStrategy+macOSSwiftUI.swift",
        "SnapshotTests.swift",
        "SpeedCurveEditorTests.swift",
        "ThumbnailStripTests.swift",
        "TimelineLanesTests.swift",
        "TimelineMetricsTests.swift",
        "TimelineScrollAndClipA11yTests.swift",
        "TimelineViewTests.swift",
        "TimelineZoomTests.swift",
        "TransportBandTests.swift",
        "VideoPreviewIdentityAndSeekTests.swift",
        "VideoPreviewPlaybackTests.swift",
        "VideoPreviewTests.swift",
        "VideoSamplingTests.swift",
        "ZoomSnapThresholdTests.swift"
      ],
      "target_dependencies" : [
        "KadrUI"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KadrUI",
      "module_type" : "SwiftTarget",
      "name" : "KadrUI",
      "path" : "Sources/KadrUI",
      "product_dependencies" : [
        "Kadr"
      ],
      "product_memberships" : [
        "KadrUI"
      ],
      "sources" : [
        "AnimatedTextLayerView.swift",
        "AudioWaveform.swift",
        "CaptionEditor.swift",
        "ClipSplitter.swift",
        "InspectorPanel.swift",
        "KadrAppearance.swift",
        "KadrUI.swift",
        "KeyframeEditor.swift",
        "OverlayHost.swift",
        "OverlayInspector.swift",
        "OverlayKeyframeEditor.swift",
        "PlatformBridge.swift",
        "SpeedCurveEditor.swift",
        "ThumbnailStrip.swift",
        "TimelineEvents.swift",
        "TimelineLanes.swift",
        "TimelineView.swift",
        "TimelineZoom.swift",
        "TransitionPicker.swift",
        "TransportBand.swift",
        "VideoPreview.swift",
        "VideoSampling.swift",
        "ZoomSnapThreshold.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.0"
}
Done.