Skip to content

Let one update feed carry multiple installables per platform - #267

Merged
turinglambdaai merged 1 commit into
mainfrom
feat/multi-artifact-manifest
Oct 16, 2026
Merged

turinglambdaai merged 1 commit into
mainfrom
feat/multi-artifact-manifest

Conversation

@turinglambdaai

Copy link
Copy Markdown
Owner

Closes #248 and #244.

autarx ships a macOS app zip and a CLI zip on the same platform/arch and was forced into two feeds (update-manifest.json / update-app-manifest.json); taskly's AppImage legs stretch the same limit.

  • Artifacts gain an optional component discriminator (app/cli/tool). It participates in the duplicate-identity rule, writers emit the legacy shape when unset (existing feeds stay byte-compatible), and updater-config selects by component — a config without one matches component-less entries only, so legacy readers and writers keep working.
  • raco rivet release --update-payload <installer>:<glob>[:<component>] (repeatable) expands project-relative globs into component-tagged feed entries; syncpilot's tar.gz portable and any app+CLI pair stop needing private manifest scripts.
  • updater-config's constructor gains component as its final argument (products pin released tags; called out in the changelog).

autarx ships a macOS app zip and a CLI zip on the same platform and was
forced into two feeds, because the manifest schema held exactly one
artifact per platform/architecture/installer triple. Artifacts now carry
an optional component discriminator (app, cli, or tool) that participates
in the duplicate-identity rule; writers emit the legacy shape when no
component is set, so existing feeds are byte-compatible, and
updater-config selects by component with configs without one matching
component-less entries only.

raco rivet release --update-payload <installer>:<glob>[:<component>]
expands project-relative globs into component-tagged feed entries, so
the release pipeline stays the single place that knows how to produce
feeds. updater-config's constructor gains the component as its final
argument.
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.

Update manifest schema: allow multiple artifacts per (platform, arch, installer)

1 participant