Skip to content

Releases: orchetect/TimecodeKit

2.3.3

14 Nov 06:27
Compare
Choose a tag to compare

New

  • TimecodeFrameRate: Added 90 fps
  • VideoFrameRate: Added 90p

Fixes

  • VideoFrameRate: Fixed stringValue for fps96p case returning "96" when it should return "96p"

2.3.2

24 Oct 01:49
Compare
Choose a tag to compare

Fixes

  • Timecode: Adjusted ordering for static UT Type constants, which will now work as expected with pasteboard and drag/drog operations
  • TimecodeField: Fixed potential bug in component focus navigation

New

  • TimecodeField
    • Added init providing bindings to components and each individual timecode property
    • Added timecodeFieldInputRejectionFeedback view modifier
    • Added timecodeFieldPastePolicy view modifier
    • Added pulse input rejection animation style in addition to default shake

Improvements

  • TimecodeField
    • Internal refactors to enable unit testing
    • Refined hardware keyboard input support on all platforms
  • TimecodeField / TimecodeText: Resolved type ambiguity issue with some view modifiers
  • AttributedString / NSAttributedString: added additional style parameters for consistency and resolved some formatting issues

Maintenance

  • Updated docs
  • Updated example projects
  • Updated unit tests

2.3.1

21 Oct 05:33
Compare
Choose a tag to compare

New

  • Timecode.StringFormat: Added alwaysShowDays option

Changes

  • Timecode: Renamed verboseDescription property to stringValueVerbose
  • Timecode.StringFormat: Deprecated redundant showSubFrames static constructor
  • TimecodeField / TimecodeText: Changed style view modifiers to take ShapeStyle instead of Color

Fixes

  • TimecodeField: Improved handling of keyboard input on iOS

Maintenance

  • Updated docs

2.3.0

19 Oct 01:11
Compare
Choose a tag to compare

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

2.2.0

26 Sep 01:03
Compare
Choose a tag to compare

Important

This bumps the minimum requirement for AVFoundation methods to macOS 12, iOS 15, tvOS 15, watchOS 8.
The requirements are only bumped for AVFoundation-specific methods. The core TimecodeKit functionality requirements remain the same as before.

Improvements

  • Modernized the library: Migrated all AVAsset and AVAssetTrack methods to Swift Concurrency

Added

  • Timecode.StringFormat: Added Identifiable and Sendable conformances
  • Timecode: Added UTType static constants
  • Timecode: Added Transferable conformance (conditionally available on supported platform versions)
  • Timecode: Added NSItemProvider encoding and decoding methods

Maintenance

  • Updated docs with fixes and usage guide for the newly-added UTType/Transferable/NSItemProvider features
  • Improved unit test performance for some slow tests

2.1.0

21 Sep 01:43
Compare
Choose a tag to compare

Added

  • Fraction: Added stringValue property

Improvements

  • Added Identifiable conformance to all relevant types

2.0.11

25 Jun 04:57
Compare
Choose a tag to compare

Improvements

  • Improved AVAsset add/replace timecode track reliability
  • Fixed rare compiler error on build pipelines using old minimum platform versions

2.0.10

23 Feb 20:46
Compare
Choose a tag to compare

Added

  • Fraction: Added * and / math operators between two instances (#71)

2.0.9

06 Jan 22:13
Compare
Choose a tag to compare

Added

  • Timecode: Added base parameter to converted(to:) instance method (to convert to a new sub-frames base if needed)

2.0.8

15 Dec 10:36
Compare
Choose a tag to compare

Added

  • TimecodeInterval: Added init(realTime: TimeInterval)
  • Fraction: Added Sendable conformance
  • Timecode.Properties: Added Sendable conformance
  • Timecode.UpperLimit: Added Sendable conformance

Improvements

  • Fraction: Changed Equatable behavior to compare reduced values and not literal values
  • Fraction: init(fcpxmlString:) no longer reduces fraction implicitly
  • Fraction: fcpxmlStringValue property no longer reduces fraction implicitly