Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,15 @@ jobs:
- name: Lint
run: npm run lint

# One draft for all three platforms. Without it every electron-builder
# job sees "release doesn't exist" at the same moment, each creates its own
# draft, and the assets split across them (v1.1.0 did this).
- name: Create the draft release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ github.event.inputs.tag }}
run: gh release view "$TAG" >/dev/null 2>&1 || gh release create "$TAG" --draft --verify-tag --title "${TAG#v}"

release:
needs: verify
runs-on: ${{ matrix.os }}
Expand Down
12 changes: 12 additions & 0 deletions .llms/learnings.md
Original file line number Diff line number Diff line change
Expand Up @@ -473,3 +473,15 @@ The running preview draws the participant screen at `zoom: 0.55` inside an
`min-h-full` scroll column it fell back to content height, so the box grew and
the page scrolled), and at the 800px column width an unzoomed screen is
550–750px tall.

## Release builds race to create the GitHub release

The three platform jobs in `release.yml` publish in parallel. When no release
exists at the tag, each electron-builder run logs `creating GitHub release
reason=release doesn't exist` at the same moment and creates its **own** draft,
so the assets split across two or three drafts with the same tag. Every job
still exits green. `gh release view <tag>` shows only one of the drafts; list
them with `gh api repos/OWNER/REPO/releases --jq '.[] | select(.tag_name=="TAG")'`.
v1.1.0 hit this. The `verify` job now creates the draft once, before the
matrix starts, and electron-builder uploads into it (its `releaseType: draft`
matches).
Loading