Few fixes and improvements to the library, plus Github Actions setup #31

Merged
javier merged 6 commits from library/some-fixes into main 2026-10-25 19:54:30 +00:00
Owner

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.
javier added the Kind/Bug
Priority
Critical
labels 2026-10-25 19:54:22 +00:00
javier self-assigned this 2026-10-25 19:54:22 +00:00
javier added 6 commits 2026-10-25 19:54:22 +00:00
javier merged commit 13b9c74a38 into main 2026-10-25 19:54:30 +00:00
javier deleted branch library/some-fixes 2026-10-25 19:54:31 +00:00
Sign in to join this conversation.