This PR contains the work done to fix a cancellation-mapping bug in AmiiboLiveClient, bring the client under offline test coverage, add the conformances SwiftUI and persistence need, and moves CI and documentation publishing to GitHub Actions. All public API changes are additive.
Fix
AmiiboLiveClient reported an early task cancellation as .unknown("CancellationError()"). The OpenAPI runtime wraps every error in ClientError, so the CancellationError check never matched; it now also checks the wrapped error and throws .cancelled.
Tests
ThrowingTransport and StubTransport test doubles let the live client run offline. New tests cover error mapping, HTTP status → error mapping, oneOf object-vs-list decoding, "amiibo": null, sorting, filter → query encoding, Platform/Release mapping, and the date transcoder.
Models gained package memberwise initializers so tests can build real fixtures without @testable. These are not public API.
The test target now depends on OpenAPIRuntime and HTTPTypes (both already in the dependency graph).
API
Models are Codable and Identifiable (Amiibo.id is its identifier; the key/name models use key).
Filters are Hashable.
Documentation
Doc comments trimmed library-wide; one repeated - Throws: sentence appeared 24 times. Library.md and the README tightened to match.
CI and docs publishing
ci.yml: build and offline tests on PRs and pushes to main.
live-tests.yml: weekly and on-demand run against the live API.
docs.yml: builds DocC on PRs, deploys to GitHub Pages on main. Pinned to Xcode 26 because swift-docc-plugin 1.5.0 fails to launch its tools under Xcode 27.
The generated docs/ folder (327 files) is removed from the repository and ignored.
This PR contains the work done to fix a cancellation-mapping bug in `AmiiboLiveClient`, bring the client under offline test coverage, add the conformances SwiftUI and persistence need, and moves CI and documentation publishing to GitHub Actions. All public API changes are additive.
### Fix
- `AmiiboLiveClient` reported an early task cancellation as `.unknown("CancellationError()")`. The OpenAPI runtime wraps every error in `ClientError`, so the `CancellationError` check never matched; it now also checks the wrapped error and throws `.cancelled`.
### Tests
- `ThrowingTransport` and `StubTransport` test doubles let the live client run offline. New tests cover error mapping, HTTP status → error mapping, `oneOf` object-vs-list decoding, `"amiibo": null`, sorting, filter → query encoding, `Platform`/`Release` mapping, and the date transcoder.
- Models gained `package` memberwise initializers so tests can build real fixtures without `@testable`. These are not public API.
- The test target now depends on `OpenAPIRuntime` and `HTTPTypes` (both already in the dependency graph).
### API
- Models are `Codable` and `Identifiable` (`Amiibo.id` is its `identifier`; the key/name models use `key`).
- Filters are `Hashable`.
### Documentation
- Doc comments trimmed library-wide; one repeated `- Throws:` sentence appeared 24 times. `Library.md` and the README tightened to match.
### CI and docs publishing
- `ci.yml`: build and offline tests on PRs and pushes to `main`.
- `live-tests.yml`: weekly and on-demand run against the live API.
- `docs.yml`: builds DocC on PRs, deploys to GitHub Pages on `main`. Pinned to Xcode 26 because swift-docc-plugin 1.5.0 fails to launch its tools under Xcode 27.
- The generated `docs/` folder (327 files) is removed from the repository and ignored.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the work done to fix a cancellation-mapping bug in
AmiiboLiveClient, bring the client under offline test coverage, add the conformances SwiftUI and persistence need, and moves CI and documentation publishing to GitHub Actions. All public API changes are additive.Fix
AmiiboLiveClientreported an early task cancellation as.unknown("CancellationError()"). The OpenAPI runtime wraps every error inClientError, so theCancellationErrorcheck never matched; it now also checks the wrapped error and throws.cancelled.Tests
ThrowingTransportandStubTransporttest doubles let the live client run offline. New tests cover error mapping, HTTP status → error mapping,oneOfobject-vs-list decoding,"amiibo": null, sorting, filter → query encoding,Platform/Releasemapping, and the date transcoder.packagememberwise initializers so tests can build real fixtures without@testable. These are not public API.OpenAPIRuntimeandHTTPTypes(both already in the dependency graph).API
CodableandIdentifiable(Amiibo.idis itsidentifier; the key/name models usekey).Hashable.Documentation
- Throws:sentence appeared 24 times.Library.mdand the README tightened to match.CI and docs publishing
ci.yml: build and offline tests on PRs and pushes tomain.live-tests.yml: weekly and on-demand run against the live API.docs.yml: builds DocC on PRs, deploys to GitHub Pages onmain. Pinned to Xcode 26 because swift-docc-plugin 1.5.0 fails to launch its tools under Xcode 27.docs/folder (327 files) is removed from the repository and ignored.