Skip to content

Modernize NerdzPinView (3.2.0): tests, CI, DocC, docs, underline fix - #4

Merged
RomanKovalchukDev merged 13 commits into
mainfrom
release/3.2.0
Sep 22, 2026
Merged

RomanKovalchukDev merged 13 commits into
mainfrom
release/3.2.0

Conversation

@RomanKovalchukDev

Copy link
Copy Markdown
Owner

Summary

Modernizes NerdzPinView for the 3.2.0 release: a real test suite, CI, accurate docs, DocC, and a small bug fix. No runtime behavior changes for existing SwiftUI or UIKit usage. One source level cleanup is called out under Removed.

Added

  • Swift Testing target (NerdzPinViewTests) with 48 tests across 19 suites covering the logic layer: text position, range, and selection math, plus per state appearance config resolution for the bordered, underline, and one time item views.
  • GitHub Actions CI workflow that builds and tests on a macOS runner via xcodebuild against an iOS Simulator. The library depends on UIKit and cannot build on Linux, so a macOS runner is required. The test job derives an available iPhone simulator at runtime so it survives runner image changes.
  • DocC documentation catalog (landing page with Topics, a Getting Started article, and a UIKit usage article) plus doc comments on every public symbol. docbuild is warning free.
  • CHANGELOG.md in Keep a Changelog format, starting history at 3.2.0.

Changed

  • Corrected the README Swift version badge, which claimed Swift 5.9 and rendered Swift 5.1 while the package requires Swift 6.0. Added a Requirements section (iOS 16, Xcode 16) and removed a duplicate Requirements section.
  • Fixed the stale PinViewDemo project name in file headers across nine source files.

Removed

  • Removed the unused underlineHeight parameter from UnderlineItemView.LayoutConfig.init. The parameter was never stored and had no effect (underline height is controlled by UnderlineItemView.AppearanceConfig via getUnderlineHeight(for:)). Runtime behavior is unchanged. Call sites that passed underlineHeight: to the layout initializer should remove that argument and set the height on the appearance config instead.

Notes

  • Coverage is concentrated on the deterministic logic layer (text primitives 85 to 100 percent, config resolution around 30 to 35 percent). The UIKit view and rendering layer is not exercised by unit tests. Raising that would require snapshot or UI tests, which are out of scope for this release.
  • Raising to Swift tools 6.0 sets the minimum Xcode to 16 for consumers. The runtime deployment target remains iOS 16.

Add NerdzPinViewTests with 47 tests across text position/range/selection
math and per-state appearance config resolution for the bordered,
underline, and one-time item views. Logic layer is near-fully covered;
the UIKit view/rendering layer is intentionally left for snapshot tests.
Run build and test on a macOS runner via xcodebuild against an iOS
Simulator (public repo, so macOS minutes are free). The library depends
on UIKit and cannot build on Linux. The test job derives an available
iPhone simulator UDID at runtime so it survives runner image changes.
Correct the README Swift badge (it claimed 5.9 and rendered 5.1 while the
package requires Swift 6.0), add a Requirements section stating iOS 16 and
Xcode 16, remove a duplicate Requirements section, and add a Keep a
Changelog CHANGELOG.md starting at 3.2.0.
Replace the leftover PinViewDemo project name in file headers with
NerdzPinView across nine source files.
Add a Documentation.docc catalog (landing page with Topics, a Getting
Started article, and a UIKit usage article) and /// doc comments to every
public symbol across the module. docbuild is warning free. No code or
signature changes.
…ayoutConfig

The LayoutConfig initializer accepted an underlineHeight argument that was
never stored, so setting it had no effect. Underline height is controlled by
AppearanceConfig via getUnderlineHeight(for:). Remove the dead parameter and
its doc, and add a LayoutConfig round-trip test guarding that every
initializer argument lands in a stored property. Runtime behavior unchanged.

@RomanKovalchukDev RomanKovalchukDev left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See inline comments.

Comment thread Sources/NerdzPinView/Documentation.docc/UIKitUsage.md
Comment thread Sources/NerdzPinView/General/Aliases.swift Outdated
Add a dedicated SwiftUIUsage article symmetric to UIKitUsage, slim
GettingStarted to installation plus next-step pointers, and wire the new
article into the landing page Topics. Remove low-value doc comments from
the PinCode action typealiases.
@RomanKovalchukDev
RomanKovalchukDev merged commit 754f1d8 into main Sep 22, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant