Skip to content

2.3.0

Compare
Choose a tag to compare
@orchetect orchetect released this 19 Oct 01:11
· 104 commits to main since this release

Important

This update bumps minimum requirements for compilation to Xcode 16.0 / Swift 5.9

Major Update Summary

  • Fully updated for Swift 6 strict concurrency compatibility
  • Restructured library
    • 1 umbrella module (TimecodeKit) which imports the entire library and all submoduels
    • 3 submodules (TimecodeKitCore, TimecodeKitAV, TimecodeKitUI) which may each be discretely imported
  • Added two new extremely polished and versatile multiplatform SwiftUI controls: TimecodeField and TimecodeText
  • Added 3 brand new in-depth multiplatform example projects
    • Timecode Math: demonstrates basic math
    • Timecode UI: demonstrates the new SwiftUI controls available and all of their options
    • Movie Timecode: demonstrates reading and writing timecode tracks to QuickTime movie files
  • Online docc documentation has been overhauled and now includes docs for all package modules

Detailed Release Notes

TimecodeKitCore

  • Timecode
    • Added isValid computed property
    • Implemented more consistent Equatable and Hashable behavior
    • Renamed propertiesForTimecodeString method parameters to propertiesForString
    • Added isWithinValidComponentDigitCounts property
    • Refactored invalidComponents static methods as Timecode.Components instance methods
    • Refactored stringValueValidated method as nsAttributedString, moved to TimecodeKitUI target
    • Added missing math methods (add, adding, subtract, subtracting) for new timecode source value types
    • TextFormatter
      • Moved to TimecodeKitUI module
      • Renamed validationAttributes property to invalidAttributes
  • Timecode.Component
    • Added next(excluding:) and previous(excluding:) methods
    • Added first(excluding:) and last(excluding:) methods
    • Added numberOfDigits(at:) method
    • Added suite of name properties
  • Timecode.Components
    • Added init(_ dictionary:) and dictionary property (get/set)
    • Added init(_ array:) and array property (get/set)
    • Added Sequence conformance to iterate on component values
    • Added isWithinValidDigitCount(at:base:) method
  • Timecode.SubFramesBase:
    • Added stringValueVerbose property
    • Added numberOfDigits property
  • Added new random timecode value source
  • String: Removed timecodeFrameRate public category property

TimecodeKitUI

  • SwiftUI Views
    • Added new TimecodeField SwiftUI view for user-interactive timecode entry
    • Timecode: Refactored stringValueValidatedText() as a new SwiftUI TimecodeText view
    • Added view modifiers usable on TimecodeField and TimecodeText
    • Added new @TimecodeState SwiftUI property wrapper for storing a Timecode instance in view
  • AttributedString
    • Added init(_ timecode:format:separatorStyle:validationStyle:) overload

Maintenance

  • Documentation overhaul
  • Unit tests updated
  • Minor codebase improvements