Skip to content

[repo] Split manifest base URL into download_base_url and metadata_base_url#127

Draft
sethwv wants to merge 8 commits into
Dispatcharr:mainfrom
sv-dispatcharr:feat/new-base-urls
Draft

[repo] Split manifest base URL into download_base_url and metadata_base_url#127
sethwv wants to merge 8 commits into
Dispatcharr:mainfrom
sv-dispatcharr:feat/new-base-urls

Conversation

@sethwv

@sethwv sethwv commented Jun 14, 2026

Copy link
Copy Markdown
Collaborator

Important

The main app needs a deprecation window to support both root_url (old) and download_base_url/metadata_base_url (new) before this can be merged.

The root manifest previously had a single root_url covering both ZIP downloads and metadata paths. This splits it into download_base_url (GitHub Releases, for ZIP paths) and metadata_base_url (GitHub Pages if configured, otherwise raw.githubusercontent.com, for manifest paths). manifest_url in each plugin entry is now a relative path clients compose with metadata_base_url.

Also included: plugin icons (logo.png/svg/jpg/webp) are now copied to metadata/{slug}/ on the releases branch each publish run; fixes for immutable-tag release conflicts (retry with numeric suffix, correct ZIP filename in generated URLs, discard stale checksums when a retry upload is skipped).

@dispatcharr-plugins-bot

Copy link
Copy Markdown

This PR is currently a draft. Plugin validation will run once the PR is marked ready for review.

jstevenscl pushed a commit to jstevenscl/Plugins that referenced this pull request Jun 15, 2026
sethwv added a commit to swvn-dispatch/PluginsRepoV2 that referenced this pull request Jul 22, 2026
…upstream Dispatcharr#127)

Ports the four behaviors from Dispatcharr#127 into the pluginctl publish
path.

- Split the root manifest's root_url into download_base_url (GitHub Releases, for
  ZIP paths) and metadata_base_url (GitHub Pages when configured, else
  raw.githubusercontent.com). Each plugin's manifest_url is now a relative path
  clients compose with metadata_base_url.
- Copy each plugin's source logo (png, svg, jpg, or webp, first match) into
  metadata/<slug>/ on every publish.
- Retry gh release create with a numeric tag suffix on immutable-tag conflicts,
  skip cleanly when the release already exists, and discard the fresh per-version
  metadata on a skip so generate-manifest keeps the published asset's checksums.
- When a tag carries a retry suffix, keep it in the release directory but use the
  canonical version for the ZIP asset filename, for versioned urls and latest_url.

readmes.py reads download_base_url instead of root_url. 8 new tests.
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.

1 participant