Skip to content

Implement full Sparkle feature parity - #38

Merged
jozefizso merged 11 commits into
mainfrom
feature/sparkle-appcast-parity
Aug 4, 2026
Merged

Implement full Sparkle feature parity#38
jozefizso merged 11 commits into
mainfrom
feature/sparkle-appcast-parity

Conversation

@jozefizso

Copy link
Copy Markdown
Member

All integration tests are passing.

@jozefizso jozefizso added this to the Appcast v1.0.0 milestone Jul 16, 2026
@jozefizso jozefizso self-assigned this Jul 16, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread Sources/Appcast/SUAppcastItem.swift
Comment thread Sources/Appcast/SUAppcastItem.swift
Comment thread Sources/Appcast/SUAppcastItem.swift

@DominikPalo DominikPalo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

One Equatable correctness issue found.

Comment thread Sources/Appcast/SUAppcastItem.swift Outdated
@jozefizso
jozefizso requested a review from DominikPalo August 3, 2026 15:29
@jozefizso

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread Sources/Appcast/SUAppcast.swift
Comment thread Sources/Appcast/SUAppcastItem.swift Outdated
@jozefizso

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread Sources/Appcast/SUAppcastItem.swift
Comment thread Sources/Appcast/SUAppcastItem.swift Outdated
`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.
@jozefizso
jozefizso force-pushed the feature/sparkle-appcast-parity branch from a14bdc0 to a8516e2 Compare August 4, 2026 14:16
@jozefizso
jozefizso merged commit 03c98c9 into main Aug 4, 2026
6 checks passed
@jozefizso
jozefizso deleted the feature/sparkle-appcast-parity branch August 4, 2026 14:25
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.

Minimum system hardware requirements (Sparkle 2.9 backport) Upgrading to newer features (Sparkle v2.9 backport)

3 participants