Skip to content

v0.3.0

  • v0.3.0
  • 9cb96c7
  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
  • Choose a tag to compare

  • v0.3.0
  • 9cb96c7
  • Choose a tag to compare

  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
@silvo137 silvo137 tagged this 05 Sep 06:23
Cuts 0.3.0 over the eight fixes and two source-incompatible changes already on
`main` from this bug batch. Behaviour is unchanged by this commit; it is the
version bump, the changelog cut and the install instructions.

MINOR rather than PATCH because two public enums gained cases: `Recovery`
gained `verifyBeforeRetry` (#31) and `PaymentResult.cancelled` gained an
associated `transactionID` (#32). Both break an exhaustive `switch` in merchant
code, so the "source-incompatible" heading stays on the Changed section where
those two bullets live.

- `PayCross.podspec` and `PayCrossCore.podspec`: `s.version` 0.2.1 -> 0.3.0.
  `PayCross` depends on `PayCrossCore` at the same version through
  `#{s.version}`, so it follows automatically.
- `Sources/PayCross/PayCrossAPI.swift`: `PayCrossAPI.version`, the User-Agent
  stamp, -> "0.3.0". `Tests/PayCrossUITests/VersionTests.swift` reads both
  podspecs and the wire header dynamically and gates this.
- `CHANGELOG.md`: `## [Unreleased]` becomes `## [0.3.0] - 2026-09-04` with a
  fresh empty `## [Unreleased]` above it, matching how #21 and #23 cut their
  releases. Every bullet is kept and the Added / Changed / Fixed order is
  unchanged. Link references gain a `[0.3.0]` tag line and `[Unreleased]` now
  compares from `v0.3.0`.
- `README.md`: the install instructions move to `~> 0.3.0` for CocoaPods and
  `.upToNextMinor(from: "0.3.0")` for Swift Package Manager.

The README change is the one that is not merely cosmetic, so it is worth being
explicit about. #23 left `~> 0.1` and `from: "0.1.0"` alone as pre-existing
staleness, which was fair while 0.2.1 was a patch release. It is not fair now.
Both of those ranges span every version below 1.0, so a merchant following the
README resolved straight across this source-incompatible boundary and got a
release that does not compile against their existing `switch` statements.

The tighter operators are deliberate rather than just current. `~> 0.3` and
`from: "0.3.0"` would have fixed today's number while leaving the same trap
armed for 0.4.0. This SDK has broken source compatibility on every minor so far
and is expected to keep doing so before 1.0, which is exactly the case
`~> 0.3.0` and `.upToNextMinor` exist for: both stop at the next minor, so a
merchant opts into each break instead of being carried into it by a resolver.

Not bumped: `Tests/PayCrossCoreTests/ApplePayPayloadTests.swift` still builds a
`BrowserInfo` fixture with the literal `"PayCrossSDK-iOS/0.2.0"`. It never reads
`PayCrossAPI.version`; it is an arbitrary string exercising the wire encoder, so
it is not a version assertion. #23 left it for the same reason.

Claude-Session: https://claude.ai/code/session_01ESYanixFjGbbKEGjgYKeDq
Assets 2
Loading