v2.0.0Breaking Change · Renamed
The package is renamed from SxnnyUI to SxnnyErgo — module name, product name, import statement, and repository name all change. Every surviving public symbol was reviewed against the project's documentation and quality standards; everything else was removed or redesigned.
Key Highlights & Additions
- Breaking: the package is renamed from SxnnyUI to SxnnyErgo at every level (import SxnnyUI becomes import SxnnyErgo).
- New APIs: FlowLayout, EqualSizeLayout, Binding element/dictionary/set-membership projection, readSize(_:)/readFrame(in:_:), onFirstAppear(_:).
- Accessibility modifier family: minimumTappableFrame, Reduce Motion/Transparency-aware variants, automatic contrast foreground.
- PlatformIdiom/@Adaptive, debounced/throttled .task(id:) variants, shake(trigger:), Color(light:dark:)/contrastRatio(with:).
- swift-tools-version 6.0: strict concurrency is now the default, no experimental flag required.
- Removed the theming system (SxnnyTheme), the Manager/ domain (AlertManager, KeychainManager), and numerous native wrapper types with no added value (SxnnyYStack, SxnnyXStack, etc.).
- Fixed: View.animated(if:) animated unconditionally because it keyed off a fresh UUID() on every evaluation instead of the condition itself.
- Repository DX tooling: standard Makefile, deterministic swift-format 6 formatting, Periphery dead-code detection, GitHub Actions CI.
