Skip to content

2.1.0

Latest

Choose a tag to compare

@Jeehut Jeehut released this 15 Oct 10:49
d3766c3

A bug-fix release that also builds for watchOS and prepares for OS 26. This is the last release supporting iOS 16, macOS 13, tvOS 16, watchOS 9 and visionOS 1: the upcoming 3.0.0 raises the minimum versions, so stay on 2.1.0 if your app still supports older OS versions.

Added

  • Color.rgbo(in:) — returns the components a view actually displays, resolved against its environment (light/dark, contrast).
  • watchOS support — the package now builds for watchOS; CI builds iOS, tvOS, visionOS and watchOS.

Changed

  • rgbo / hsbo on macOS — convert to extended sRGB instead of device RGB, matching iOS. Wide-gamut colors can now return components outside 0…1, so clamp before UInt8(value * 255).
  • Color.toHex — returns a value for dynamic, system and grayscale colors instead of nil, and converts Display P3 colors to sRGB.
  • Localizations — address people the way Apple does in each language; SearchableGridPicker's "None" and the macOS "Done" button of the multi-selector are now translated; an empty search shows the system's ContentUnavailableView.search.

Deprecated

  • WebView — deprecated starting iOS, macOS and visionOS 26 in favor of WebKit's SwiftUI WebView/WebPage. Write HandySwiftUI.WebView in files that import both.

Fixed

  • highlightMatchingTokenizedPrefixes — highlights the right characters when folding changes the length (é, ü, full-width characters).
  • WebView — loads only when the URL changes instead of reloading and re-scrolling on every update. CachedAsyncImage — shows a failed download as a failure instead of spinning forever.
  • Negated Bool binding, HPicker/VPicker (no force-cast of allCases), Image/Label(convertible:) (symbol metadata stripped), NSImage.jpegData (JPEG instead of JPEG 2000), HorizontalLabeledContentStyle (respects muteContent).
  • Fewer warnings — Text(format:) uses Swift Regex and the internal onChange no longer triggers deprecation warnings on visionOS; Color.change(.opacity…) no longer round-trips through HLC.

Full Changelog: 2.0.1...2.1.0