Repository navigation
fix(release): repair beta builds, credit contributors, scope installer CI, check PR titles - #165
Merged
Merged
Conversation
Heads up: Greptile reviewed this. Push back if it's wrong — it has no feelings.
[Medium impact] The PR appears safe to merge; no actionable issues were found.
|
Release Please writes 1.0.0-b, which Python names 1.0.0b0, so every release candidate build has failed to find the wheel since 28 Aug.
Release candidates already build and sign the installers after every merge to main, so PRs touching only src/, tests/, other utils/ scripts or other workflows no longer spend ~20 minutes on the three installer builds.
Squash merges turn the title into the commit Release Please reads; 17 of the 191 commits on main since July had other titles and were left out of the changelog and version.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related issue
Maintainer-requested release contributor attribution; no linked issue.
Summary
Published beta and stable GitHub releases now include GitHub-generated PR author credits and its optional New Contributors section in an expandable section below the existing product changelog. Release Please continues to own versioning and changelog selection. This is internal release automation with visible release-page attribution; no application API, storage, or index migration changes.
The candidate records the previous tag from the appropriate channel manifest at the release PR's base commit, before the version bump. Publication verifies that tag and uses the explicit range with GitHub's generate-notes endpoint.
.github/release.ymlexcludes the release bot while retaining human contributions. Rendering retries replace the attribution block without duplicating it or losing the product changelog.GitHub supplies PR-based attribution, not comprehensive reviewer or coauthor accounting. A first contribution can appear in both beta and stable notes. Note generation failures stop the GitHub publication step; package/container publication may already have completed. Nightly releases are unchanged. Existing candidate artifacts without
previous_tagmust be regenerated.Beta desktop builds find the runtime wheel again
Broken: every release-candidate run since 28 Aug has failed (15 in a row, latest https://github.com/grayhatdevelopers/vidxp/actions/runs/34843505201), so no beta has shipped since v0.4.0-b.3 on 5 Aug. All three desktop jobs stop in the build script with
Desktop requires exactly one vidxp 1.0.0-b wheel in ../../dist; found 0.Why:
desktop/src-tauri/build.rsturned the manifest version into a wheel name withreplace("-b.", "b").replace("-b", "b"), so the Release Please PR's1.0.0-bbecamevidxp-1.0.0b-, while Python normalizes1.0.0-bto1.0.0b0(PEP 440). PR builds never hit it because main carries0.4.0; only the release PR carries1.0.0-b.Changed: the mapping moved into
desktop/src-tauri/src/wheel_version.rs, shared by the build script and the crate's tests, and handles every shape Release Please writes here:X.Y.Z,X.Y.Z-b(toX.Y.Zb0) andX.Y.Z-b.N(toX.Y.ZbN). Any other shape now stops the build with a message naming the version instead of "found 0". Installer names were checked and need no change: Tauri,desktop/scripts/build-desktop.mjsandrelease-to-pypi.ymlall use the Release Please version unchanged.PRs build desktop installers only when their inputs change
Broken: PR CI built the three installers (Windows about 20 min, macOS 15, Linux 12) for almost every PR, because any change under
src/,tests/,utils/or any workflow counted as a desktop change.Why it's safe to narrow: release candidates already build and sign the installers after every merge to main (
release-please.ymldispatchesrelease-candidate.yml). The desktop catalog drift check that readssrc/is also covered by the Python suite (tests/test_local_probe.py,tests/test_packaging.py).Changed:
utils/ci_scope.pynow builds installers on PRs only fordesktop/,plugins/,pyproject.toml,uv.lock,MANIFEST.in,setup.py,LICENSE,ci.yml,desktop.yml, and theutils/files the desktop build runs (build-requirements.txt,build_package.shand the two scripts it calls,fix_readme_links.pyandnormalize_sdist.py). Unknown product paths,premiere/included, still build installers.PR titles are checked
Broken: squash merges make the PR title the commit on main, and Release Please builds the changelog and version from it. Five PRs since July landed without a Conventional Commit title and were left out of the changelog; one was a user-facing feature, "Show media state in list command (#112)".
Changed: a new
PR titleworkflow with onepr-titlejob runs on PRs to main and release (opened, edited, synchronize, reopened). It runsutils/pr_title.py, which accepts the types in docs/CONTRIBUTING.md with an optional scope and!, and fails with what is wrong plus the guide's examples. The title reaches the script through an environment variable. No third-party action, and no other job depends on it. Dependabot (build(deps): ...) and Release Please (chore(main): release ...) titles pass. docs/CONTRIBUTING.md now says the check enforces the title.Validation
Repeated after applying to fresh main:
PYTHONPATH=src /Users/grayhat/Developer/vidxp/.venv/bin/python -m pytest -q tests/test_release_notes.py— 6 passed, covering preservation/replacement on retries, notes without newcomers, and empty-note rejection./Users/grayhat/Developer/vidxp/.venv/bin/ruff check utils/render_release_notes.py tests/test_release_notes.py— passed./private/tmp/vidxp-ci-actionlint/actionlint -shellcheck= -pyflakes= .github/workflows/release-candidate.yml .github/workflows/release-to-pypi.yml— passed using Actionlint 1.7.12; optional ShellCheck/Pyflakes integrations disabled./opt/homebrew/bin/git diff --check— passed.During local implementation, exercised the tag-selection shell against a temporary real Git repository: beta/stable manifest selection, pre-bump base selection despite a bumped head, and missing-tag rejection passed. Previewed real GitHub generate-notes responses without publishing a release.
No application builds, full Python suite, or live release publication were run. Markdownlint and Lychee were not run locally; documentation validation is left to CI.
For the three added fixes, on Linux with Python 3.12 and
uv sync --frozen --extra test:uv run --no-sync python -m pytest -q tests/test_ci_scope.py tests/test_pr_title.py— 16 passed, 59 subtests passed. The updatedtests/test_ci_scope.pyfailed 11 subtests against the old rule;tests/test_pr_title.pyfailed to import before the script existed.uvx --from 'ruff~=0.16.1' ruff check .— passed (the pinned version fromutils/build-requirements.txt).bash utils/check_workflows.sh— actionlint 1.7.12 passed; the script then stopped atshellcheck: command not found, so ShellCheck (and actionlint's ShellCheck pass overrun:blocks) did not run locally.packaging.version.Versionfor0.4.0,1.0.0-b,0.4.0-b.3and1.0.0-b.12. The Rust change was not compiled locally (no Rust toolchain); it compiles and its tests run only in CI's "Test the locked desktop crate" step. The fix is proven end to end only when the next release candidate builds after merge.