Skip to content

Create versioned Windows/Linux releases and support macOS uploads - #112

Merged
petertzy merged 6 commits into
mainfrom
feature/versioned-desktop-release
Oct 21, 2026
Merged

petertzy merged 6 commits into
mainfrom
feature/versioned-desktop-release

Conversation

@petertzy

Copy link
Copy Markdown
Owner

Changes

  • Calculate the next patch version during manual desktop packaging and embed it into Windows/Linux Tauri installers.
  • Include version manifests in both platform artifacts.
  • Let manual publishing select the newest successful packaging run, verify matching manifests, and create a new GitHub Release at that build commit.
  • Reject existing version tags/releases instead of overwriting them.
  • Permit the existing macOS upload script to add assets to that release with DEEPLOCAL_RELEASE_VERSION, while checking local HEAD matches the release tag.

Usage

  1. Merge this PR.
  2. Run Desktop packaging manually on the intended branch.
  3. Run Publish desktop release manually to create the versioned release.
  4. For macOS, check out the release tag and run DEEPLOCAL_RELEASE_VERSION=vX.Y.Z ./scripts/upload-new-app.sh with the existing signing setup.

Caveats

  • This has not been executed on GitHub Actions; validate using a test release.
  • Windows/Linux installers are unsigned for updater purposes; the macOS updater manifest remains macOS-only.
  • Release version is chosen at packaging time. If another release is created before publishing, the publish job fails safely and requires a rebuild.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-21T08:22:06.168952Z d2ad592 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@petertzy
petertzy merged commit 058200b into main Oct 21, 2026
4 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d2ad592ad3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
version="$(gh release list --repo "$GITHUB_REPOSITORY" --limit 1000 --json tagName --jq '.[].tagName' | grep -E '^v[0-9]+\\.[0-9]+\\.[0-9]+

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Restore valid YAML in the packaging workflow

The version command is truncated before its regex, quote, and command substitution are closed, so the following duplicated workflow steps are absorbed into the run scalar until the unindented pipe at line 105 makes the document invalid YAML. GitHub cannot load or dispatch Desktop packaging in this state, preventing any Windows/Linux release artifacts from being built.

Useful? React with 👍 / 👎.

files=("$RUNNER_TEMP"/upload/*)
(("${#files[@]}" > 0)) || exit 1
gh release upload "$RELEASE_TAG" "${files[@]}" --repo "$GH_REPO"
gh release create "$RELEASE_TAG" "${files[@]}" --repo "$GH_REPO" --target "${{ steps.resolve.outputs.run_sha }}" --title "deepLocal $RELEASE_TAG" --notes "Windows and Linux desktop installers. macOS packages can be added separately."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep the release unpublished until latest.json is uploaded

Whenever this workflow runs before the separate macOS uploader, this command publishes the new release without latest.json; because the desktop updater endpoint is releases/latest/download/latest.json, installed macOS clients receive a 404 until that later upload succeeds, or indefinitely if it never does. gh release create --help documents --draft as “Save the release as a draft instead of publishing it,” so the release should remain unpublished or include the updater metadata before becoming the latest release.

Useful? React with 👍 / 👎.

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