Implement full Sparkle feature parity - #38
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a99a46a78a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
DominikPalo
left a comment
There was a problem hiding this comment.
One Equatable correctness issue found.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a99a46a78a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a14bdc08dc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
`SUAppcastItem` conforms to `Equatable`, so every successfully constructed item must compare equal to itself. Previously, `SUAppcastItemProperties` accepted `any Sendable` value, including values without equality semantics. Such a value could make `item == item` return `false`, violating the `Equatable` contract and causing unexpected behavior in collection operations and other comparisons. Although XML parsing only produces comparable property values, the public initializer `SUAppcastItem.init(dictionary dict: SUAppcastItemProperties, ...)` did not enforce that invariant. Requiring custom property values to also conform to `Equatable` aligns the public input contract with `SUAppcastItem`’s equality guarantees and prevents invalid equality states at compile time.
Pretty-printed appcasts may place the release-notes URL on an indented line. FoundationXML preserves the surrounding whitespace, causing URL construction to fail and otherwise valid feeds to lose their external release notes. Normalize the element content before it reaches SUAppcastItem while retaining the signature and content-length metadata that requires the dedicated parsing path.
a14bdc0 to
a8516e2
Compare
All integration tests are passing.