Skip to content

Ensure Sparkle appcast freshness at the hosting layer #895

Description

@SeoFood

Problem

Sparkle update checks can receive a stale appcast from the GitHub Pages/CDN layer after a new release is published.

PR #891 attempted to add a timestamp through feedParameters(for:sendingSystemProfile:). End-to-end requests with different query values still returned X-Cache: HIT with the same GitHub request ID, so the query parameter does not bypass the effective GitHub Pages cache. Sparkle already uses a reload-ignoring-local-cache policy for appcast requests, so this needs to be solved and verified at the release or hosting layer.

The Sparkle 2.9.4 dependency update was handled separately in #893 and #894.

Expected behavior

Manual and automatic update checks should reliably observe a newly published appcast without relying on unsupported delegate hooks or query parameters ignored by the CDN.

Investigation

  • Document the current appcast publication path and cache headers.
  • Determine whether GitHub Pages propagation can be made reliable or whether the appcast should move to an endpoint with controllable caching behavior.
  • Verify the actual outgoing request and response headers.
  • Test the complete transition from an old appcast to a newly published release.

Acceptance criteria

  • A newly published appcast becomes visible to manual and automatic checks within a documented bound.
  • The solution works at the hosting or release layer and does not use timestamp query parameters as a cache workaround.
  • The effective response headers and cache behavior are documented.
  • An end-to-end stale-to-new appcast verification is recorded.

Related: #891

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions