Public Release Channel
Helix source lives in the private repo, but public binary download assets are published to:
https://github.com/omniscoder/helix-public-assets/releaseshttps://downloads.helix-studio.com/releases/helix/
The website does not need to host large binaries directly. Instead, it serves
public/release-assets/helix/release-manifest.json, and that manifest points at
the currently promoted public asset base.
Supported Publish Flows
- Assemble a release directory containing:
- desktop zip(s)
- wheel / sdist
SHA256SUMS.txtBUILD_META.txtSBOM-linux.spdx.jsonSBOM-windows.spdx.jsonSBOM-macos.spdx.jsonSHA256SUMS.txt.ascSBOM-linux.spdx.json.ascSBOM-windows.spdx.json.ascSBOM-macos.spdx.json.asc
- Choose one public delivery channel and rewrite the website manifest.
The tagged release workflow builds those provenance assets in a fixed way:
SHA256SUMS.txtis generated fromomnis-helix-linux.zip,omnis-helix-windows.zip, andomnis-helix-macos.zipBUILD_META.txtrecords tag, commit, Python version, platform, and SHA256 lines for the normalized desktop assets- SBOMs are emitted as SPDX JSON via:
syft packages "$linux_out" -o spdx-jsonsyft packages "$windows_out" -o spdx-jsonsyft packages "$macos_out" -o spdx-json
- if
GPG_PRIVATE_KEYandGPG_PASSPHRASEare configured, the workflow writes detached armor signatures for the checksums and each SBOM - otherwise it still writes placeholder
.ascfiles so the public release artifact set stays stable
GitHub-backed public assets
Use this when the website manifest should point at
github.com/omniscoder/helix-public-assets/releases/download/<tag>/....
venv/bin/python tools/publish_github_release.py \
--release-dir /path/to/release-dir \
--website-root ~/Helix-WebSite \
--repo omniscoder/helix-public-assets
This flow will:
- infer the version from the wheel or sdist
- use tag
v<version> - create or reuse the public GitHub release
- upload assets idempotently with
--clobber - upload the large Linux zip last
- preserve checksum, build metadata, SBOM, and
.ascsidecar artifact names - rewrite the website manifest to
https://github.com/omniscoder/helix-public-assets/releases/download/<tag>/...
Website-hosted download assets
Use this when the website manifest should point at the public download host
directly, for example https://downloads.helix-studio.com/releases/helix/<version>/....
venv/bin/python tools/publish_website_release.py \
--release-dir /path/to/release-dir \
--website-root ~/Helix-WebSite \
--bucket helix-downloads \
--prefix releases/helix \
--public-base-url https://downloads.helix-studio.com/releases/helix
This flow will:
- upload every staged release artifact to the configured bucket/prefix
- preserve stable artifact names like
omnis-helix-linux.zip, wheel, sdist,SHA256SUMS.txt,BUILD_META.txt,SBOM-linux.spdx.json, and the matching.ascsidecars - write
public/release-assets/helix/release-manifest.jsonin manifest-only mode - point the website manifest at
https://downloads.helix-studio.com/releases/helix/<version>/...
Notes
- The website manifest is the canonical bridge between the site UI and whichever public asset channel you promote.
- The private source repo should not be used for public binary links.
- The public GitHub release repo is one supported delivery channel; the website asset host is the other.
- For prereleases, the promoted tag on the website may be newer than the repository's "latest stable" release.