Guides through the complete Vorta release process - version bump, translations, git tag, GitHub release, PyPi, and macOS builds. Invoke with /release.
Guide the user through all release steps interactively. Confirm before each destructive operation.
Before starting, verify the repository is ready:
make release-preflight # Clean tree, no staged changes, on master
If there are uncommitted changes, stop and ask the user to resolve them first.
Ask the user for the new version number (e.g., 0.12.0). Verify it follows semver format.
Edit src/vorta/_version.py:
__version__ = "X.Y.Z" # New version
make translations-from-source # extract strings, merge into every .ts
make translations-to-qm # compile .qm files
This runs pylupdate6 locally; no 1Password needed. New strings arrive as
type="unfinished" — use /translate review <lang> to fill them in, or ship them
untranslated (they fall back to English).
Note: there is no make bump-version target — these steps live here instead.
Important: add a new <release> entry at the top of <releases>. Do not
rewrite the existing ones; the version history is consumed by AppStream/Flatpak.
# Edit src/vorta/assets/metadata/com.borgbase.Vorta.appdata.xml
# Change: <release version="vX.Y.Z" date="YYYY-MM-DD" ...>
git add src/vorta/_version.py src/vorta/assets/metadata/com.borgbase.Vorta.appdata.xml
git commit -m "Bump version to vX.Y.Z"
git tag -a vX.Y.Z -m "TAG_MESSAGE_HERE"
Prompt the user for the tag message (brief summary of changes).
git push upstream master
git push upstream vX.Y.Z
Monitor the test workflow:
gh run list --workflow=test.yml --limit=1
gh run watch <run-id> --exit-status
Wait for tests to pass before proceeding. If tests fail, stop and notify the user.
make changelog
Format the output as a bullet list for release notes, excluding:
gh release create vX.Y.Z --draft --title "vX.Y.Z" --notes "CHANGELOG_HERE"
Show the user the draft URL for review.
Note: Use command op to bypass shell function issues with 1Password CLI.
command op run -- make pypi-release
This builds the sdist and uploads to PyPi via twine.
If op fails, provide manual instructions:
uv run python -m build --sdist
uv run twine upload dist/vorta-X.Y.Z.tar.gz
Default Borg version: 1.4.4 (ask user if they want different)
There is no branch input — dispatch against the tag with --ref so the DMG is
built from exactly what was tagged. Runner choices are macos-26, macos-26-intel,
macos-15, macos-15-intel.
# ARM build (Apple Silicon)
gh workflow run build-macos.yml --ref vX.Y.Z -f macos_version=macos-15 -f borg_version=1.4.4
# Intel build (x86_64 runner)
gh workflow run build-macos.yml --ref vX.Y.Z -f macos_version=macos-15-intel -f borg_version=1.4.4
# List recent workflow runs to get run IDs
gh run list --workflow=build-macos.yml --limit=2
# Watch both runs
gh run watch <arm-run-id> --exit-status
gh run watch <intel-run-id> --exit-status
rm -rf ./release-artifacts && mkdir -p ./release-artifacts
gh run download <arm-run-id> -D ./release-artifacts
gh run download <intel-run-id> -D ./release-artifacts
Note: Artifacts are in nested directories (e.g., ./release-artifacts/Vorta-vX.Y.Z-arm.dmg/Vorta-vX.Y.Z-arm.dmg)
gh release upload vX.Y.Z \
"./release-artifacts/Vorta-vX.Y.Z-arm.dmg/Vorta-vX.Y.Z-arm.dmg" \
"./release-artifacts/Vorta-vX.Y.Z-intel.dmg/Vorta-vX.Y.Z-intel.dmg"
rm -rf ./release-artifacts
After verifying the release looks correct:
gh release edit vX.Y.Z --draft=false
Provide the release URL to the user.
Update the Sparkle appcast for macOS auto-updates.
Note: The gh-pages branch doesn't have pre-commit config, so commits may fail. Handle this:
make update-appcast
If the commit fails due to pre-commit, complete manually:
# If already on gh-pages from failed make target:
PRE_COMMIT_ALLOW_NO_CONFIG=1 git commit -m "Update appcast for vX.Y.Z"
git push upstream gh-pages
git checkout master
Summarize what was done:
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer