Released: 2026-05-25
Type: Patch release — refinement — purely additive on the public API surface
A refinement patch over the v0.1.1 surface that:
- Closes the architectural cohesion gap with the peer streaming media ecosystem (swift-hls-kit, swift-srt-kit, swift-rtmp-kit, swift-icecast-kit) by refactoring the CLI into the idiomatic library + thin executable pattern — which also unblocks
xcodebuild teston Apple platforms. - Brings industry-grade uniform DocC coverage across the entire ecosystem catalog: 94 new test-traceable Swift code samples across 22 articles (CMAFKit + CMAFKitDRM).
- Removes the
swift-cryptodependency that was declared in v0.1.0 but never wired into any code path (noimport Cryptocall sites; verified by audit). - Substantially expands
ProtocolBufferReader/ProtocolBufferWriterdocumentation to legitimize their public visibility for consumers implementing custom DRM providers.
✨ Highlights
- 🔧
xcodebuild teston Apple platforms unblocked — the CLI refactor adopts the canonical SPM library-target + thin-executable pattern.xcodebuild test -scheme swift-cmaf-kit-Package -destination 'platform=macOS'now works. - 📚 94 new test-traceable code samples across 22 documentation articles. Every sample traces to an existing
@Test. The DocC catalog goes from 14 swift code blocks to 113 ecosystem-wide. - 🧹 Cleaner dependency tree —
swift-cryptoremoved (declared-but-unwired). Now 2 SPM dependencies instead of 3. - 📖
ProtocolBufferReader/ProtocolBufferWriterfully documented for consumers extendingDRMInitDataParsing. - 🎯 Catalog migration —
CMAFKitCLI.docc/→CMAFKitCommands.docc/(the testable library now owns its DocC catalog). - ✅ Zero breaking change on the public typed surface — every v0.1.1 call site compiles unchanged.
📦 What ships in 0.1.2
| Category | Detail |
|---|---|
| Architectural | CLI refactored — new CMAFKitCommands library target + thin CMAFKitCLI executable wrapper; mirrors the peer-library pattern across the ecosystem |
| Dependency | swift-crypto removed (declared-but-unwired; audit verified zero import Crypto call sites) |
| DocC CMAFKit | +68 swift samples across 15 articles (6 from the 0.1.1 surface + 9 from the 0.1.0 surface) |
| DocC CMAFKitDRM | +26 swift samples across 7 articles documenting 9 DRM providers (Widevine, PlayReady, FairPlay, ClearKey, Marlin, ChinaDRM, Nagra, Verimatrix, AdobePrimetime) |
| Protocol Buffer utilities | ProtocolBufferReader + ProtocolBufferWriter doc-comments expanded substantially (wire-type primitives enumerated, public-visibility justification, swift-protobuf fallback note, per-method markup) |
| Catalog migration | CMAFKitCLI.docc/ → CMAFKitCommands.docc/ (testable library owns the catalog) |
| Cleanup | Stale Session 12 comment + empty resources: [] array removed from Package.swift |
| CI workflows | .github/workflows/docc-deploy.yml, .github/workflows/coverage-report.yml, .github/workflows/platform-builds.yml updated to reflect the new target layout |
🐞 Fixed
- MVHEVCGuide.md — corrected
heroLayerID→heroEyesymbol reference andtry await stop()→await stop()non-throwing call - CodecStringReference.md — corrected
avc1.42E01E→avc1.42e01e(lowercase RFC 6381 conformance) andhvc1.2.4.L120.B0→hvc1.2.4.L123.90(factual sample alignment)
✅ Validation
| Check | Result |
|---|---|
swift test on macOS native |
3 576 tests passed (up from 3 575 in v0.1.1; +1 for the post-merge patch-coverage gate) |
swift test on Linux (swift:6.2-jammy Docker) |
3 575 tests passed (cross-platform parity) |
xcodebuild test -scheme swift-cmaf-kit-Package -destination 'platform=macOS' |
TEST SUCCEEDED (now works post-refactor) |
xcodebuild matrix 5 Apple platforms |
BUILD SUCCEEDED × 5 (macOS native + iOS Sim + tvOS Sim + watchOS Sim + visionOS Sim) |
| DocC × 3 (CMAFKit + CMAFKitDRM + CMAFKitCommands) | Zero warnings each |
| Global line coverage | 93.53% (≥ 92% target maintained) |
| Codecov patch coverage | 100% |
swift-format strict + swiftlint --strict |
Clean |
| Forbidden patterns × 9 | 9/9 clean (same patterns enforced since v0.1.0) |
| Public symbols removed since v0.1.1 | 0 (only an internal AsyncParsableCommand struct rename) |
🔄 Migration
None required for public consumers. The 0.1.2 patch is purely refinement on the public typed surface — every v0.1.1 call site compiles and behaves identically.
The only API-level change is an internal entry-point rename: the AsyncParsableCommand struct previously named CMAFKitCLI is now CMAFKitCommand (in the new CMAFKitCommands library target). The executable target's @main struct retains the name CMAFKitCLI (now an 11-line wrapper).
The command-line binary cmafkit-cli and its subcommands (probe, validate, dump-tree, decrypt-init) are unchanged from a consumer perspective.
If you have code that imports CMAFKitCLI for testing purposes (unusual — this was an executable target), migrate to import CMAFKitCommands.
🌐 Cross-impact for downstream libraries
- HLSKit consumers — the 68 new CMAFKit DocC samples make HLSKit integration easier: complete code examples now ship for
EXT-X-MEDIA CHARACTERISTICSemission,LANGUAGEattribute, RFC 6381 codec strings, MV-HEVC spatial composition, accessibility primitives. - Future DASH adopters — same readiness: cross-format primitives now have complete sample coverage in DocC.
- CMAFKitDRM consumers — 9 DRM providers documented with test-traceable samples (was 7 swift blocks for 9 providers; now 33).
ProtocolBufferReader/ProtocolBufferWriterdocumented for custom DRM provider implementations.
📚 Documentation
113 swift code samples across 25 documentation articles. Every sample traces to one of 3 576+ tests. Industry-grade uniform coverage achieved ecosystem-wide.
📖 Full DocC: https://atelier-socle.github.io/swift-cmaf-kit/
📊 Metrics
- +94 swift code samples ecosystem-wide (14 → 113 blocks)
- 22 articles enriched (6 + 9 + 7)
- +~1900 LOC of test-traceable doc samples
- -15 LOC net code change (CLI slimming + swift-crypto removal + cleanup)
- Zero public symbol removed since v0.1.1
- Zero forbidden patterns introduced
- 3 SPM dependencies → 2 (swift-crypto removed;
swift-argument-parser+swift-docc-pluginremaining) - 6 → 7 targets (CMAFKitCommands library added)
💻 Compatibility
- Swift 6.2 strict concurrency
- Apple platforms: macOS 14 / iOS 17 / iPadOS 17 / tvOS 17 / watchOS 10 / visionOS 1
- Mac Catalyst
- Linux — Swift 6.2.4, validated on
swift:6.2-jammyDocker
📋 Full changelog
See CHANGELOG.md [0.1.2] for the complete shipped surface.
🏷️ License
Apache 2.0 — see LICENSE.
Atelier Socle SAS — building a pure-Swift open-source streaming media ecosystem.
What's Changed
- swift-cmaf-kit 0.1.2 — Refinement Patch by @Sweefties in #2
Full Changelog: 0.1.1...0.1.2