From 3b64bbf5567c57f089521553f18f47740bdaa3ef Mon Sep 17 00:00:00 2001 From: Daniel Norman Date: Mon, 9 Nov 2026 17:35:28 +0100 Subject: [PATCH] desktop: Prefix the release commit and tag - Write "desktop: Release " as the release commit subject and the tag message, like httpd - Drop the v before the version everywhere else too: changelog headings, the releases/ folders and the apt branch - Still find older release commits, which lack the prefix and have a v --- desktop/CHANGELOG.md | 42 +++++++++++++++--------------- desktop/scripts/build-artifacts | 4 +-- desktop/scripts/release | 46 ++++++++++++++++++--------------- 3 files changed, 48 insertions(+), 44 deletions(-) diff --git a/desktop/CHANGELOG.md b/desktop/CHANGELOG.md index 2db40dc4c..9b3c1b612 100644 --- a/desktop/CHANGELOG.md +++ b/desktop/CHANGELOG.md @@ -1,4 +1,4 @@ -### v0.18.0 +### 0.18.0 **Features** @@ -28,7 +28,7 @@ - [brandonoxendine](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkpwnLQxFBQXyMK3Es91s8A7Ew7G11BFFyng1dqZR8QhG3) - [ioannis](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkfcWogpi5oLMvhvkk1M91CcrQhWgvbxbWCPDXxWATu8fG) -### v0.17.0 +### 0.17.0 **Features** @@ -80,7 +80,7 @@ - [brandonoxendine](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkpwnLQxFBQXyMK3Es91s8A7Ew7G11BFFyng1dqZR8QhG3) - [efstajas](https://radicle.network/nodes/iris.radicle.network/users/z6MkqG3Pu18RWuZ8GrqGQ9s4yoi5rfhcLq9rpo1ZZX8en994) -### v0.16.0 +### 0.16.0 **Features** @@ -124,7 +124,7 @@ - [brandonoxendine](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkpwnLQxFBQXyMK3Es91s8A7Ew7G11BFFyng1dqZR8QhG3) - [upbeat-molar](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkmRaBHeJuJKQE21aRVSe2uW3j5T7gQQAEAY7UF4tr5jRn) -### v0.15.0 +### 0.15.0 **Features** @@ -148,7 +148,7 @@ - [brandonoxendine](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkpwnLQxFBQXyMK3Es91s8A7Ew7G11BFFyng1dqZR8QhG3) -### v0.14.0 +### 0.14.0 **Features** @@ -169,7 +169,7 @@ - [hlatimer266](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkkwiqeqFrjPNvSNuNACpynpwiuVHqF8YHwGLzCBSfNJzZ) - [justarandomgeek](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkwfrBy9mKTfcVELcV4wc6zfN379FPMnAqsxnwt4j2TdQ2) -### v0.13.0 +### 0.13.0 **Features** @@ -191,7 +191,7 @@ - List scroll position is now restored when navigating back and forth through history -### v0.12.0 +### 0.12.0 **Features** @@ -207,7 +207,7 @@ - Fixed the Linux AppImage failing to launch on non-Debian distributions - Fixed duplicate CI job runs by deduplicating them by run ID -### v0.11.0 +### 0.11.0 **Features** @@ -261,7 +261,7 @@ - [lorenz](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz) - [yarikoptic](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkfCGiLM9j7AstSVNGhqtz9zkAhfb863etsbkRnXsipuRr) -### v0.10.0 +### 0.10.0 - Fixed app loading indicator - Sidebar scroll position is now preserved when navigating between views @@ -272,7 +272,7 @@ - [lorenz](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz) -### v0.9.0 +### 0.9.0 - Redesigned the entire app with a new UI kit — typography, colors, icons, avatars, and border radii have all been updated for a more polished, @@ -297,7 +297,7 @@ - [brandonhaslegs](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkpwnLQxFBQXyMK3Es91s8A7Ew7G11BFFyng1dqZR8QhG3) - [julien](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkgvaRdahQZfnf7ccMHByeHtTYrMrM3MuSGYawF6ZL6DNj) -### v0.8.0 +### 0.8.0 - CI job run statuses are now shown for the default branch and in patch revision commit lists @@ -312,12 +312,12 @@ - [geigerzaehler](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6Mki9XNNHeVRnYS88U59iCBzKUp2xWM3f4zvA3cXuKJFvWF) -### v0.7.1 +### 0.7.1 - Fixed a bug in patch and notification lists caused by a library incompatibility -### v0.7.0 +### 0.7.0 - Source code can now be browsed directly within the app - Draft reviews and their comments can now be deleted @@ -328,13 +328,13 @@ - [geigerzaehler](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6Mki9XNNHeVRnYS88U59iCBzKUp2xWM3f4zvA3cXuKJFvWF) -### v0.6.1 +### 0.6.1 - Fixed a bug where the app wouldn't onboard new users or locked identities - Fixed regression where the current version of the app wasn't including the commit it was built from -### v0.6.0 +### 0.6.0 - UI polish: scrollbars now auto-hide across the app - Fixed button overflow in issue and patch sidebars @@ -346,7 +346,7 @@ - [geigerzaehler](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6Mki9XNNHeVRnYS88U59iCBzKUp2xWM3f4zvA3cXuKJFvWF) -### v0.5.0 +### 0.5.0 - The app is now officially available via Arch packaging - Fuzzy search now supports repo IDs, descriptions, and issue/patch IDs @@ -368,12 +368,12 @@ - [lorenz](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz) - [tippfehlr](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MksSTAFPKk7eQju9aGzK64qpfiSnKQ1tJWv1rdzRd5bMHU) -### v0.4.1 +### 0.4.1 - Fixed a bug in the release pipeline to update the latest artifacts - Added WSL2 installation instructions to https://radworks.garden -### v0.4.0 +### 0.4.0 - Notification inbox is now accessible from any view without navigating away - App icon now shows a badge with the unread notification count and polls for @@ -393,7 +393,7 @@ - [tshepang](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MkfPSKW7AgQqXSi8fgEJMduHpm9ABmsPYwPhMeF7PssonK) - [youthlic](https://radicle.network/nodes/iris.radicle.network/users/did:key:z6MktsSuE4bVYbuTtEPjmhrQWA7dMri7GUg9Qp9o8tRCsmhu) -### v0.3.0 +### 0.3.0 - New onboarding guide to help users get started faster - Repo homepage now shows README and project info for quick overview @@ -401,7 +401,7 @@ - Settings now show version and commit hash for easier support - Fixed notification count and comment placement bugs -### v0.2.0 +### 0.2.0 - Added font size controls for enhanced readability and accessibility - Introduced contextual explainers in key areas to guide users and improve @@ -409,6 +409,6 @@ - Enhanced contrast in both dark and light modes to improve legibility and visual clarity -### v0.1.0 +### 0.1.0 - First public release diff --git a/desktop/scripts/build-artifacts b/desktop/scripts/build-artifacts index 1f9913539..b457a9e46 100755 --- a/desktop/scripts/build-artifacts +++ b/desktop/scripts/build-artifacts @@ -71,9 +71,9 @@ SHORT_SHA="$(git -C "$PROJECT_DIR" rev-parse --short=8 HEAD)" # container's root doesn't own, so build.rs can't rely on asking it for the # commit. Pass it in the way build.rs would get it. GIT_HEAD="$(git -C "$PROJECT_DIR" rev-parse --short HEAD)" -RELEASE_DIR="$PROJECT_DIR/releases/v$VERSION" +RELEASE_DIR="$PROJECT_DIR/releases/$VERSION" -step "Building release v$VERSION (${SHORT_SHA})" +step "Building release $VERSION (${SHORT_SHA})" echo " Output: $RELEASE_DIR" mkdir -p "$RELEASE_DIR" diff --git a/desktop/scripts/release b/desktop/scripts/release index d1571e3f4..f0d56a54c 100755 --- a/desktop/scripts/release +++ b/desktop/scripts/release @@ -150,9 +150,13 @@ conf_version() { jq -r '.version' "$TAURI_CONF" } +# Release commits are "desktop: Release X.Y.Z". Older ones lack the prefix +# and have a v before the version. +RELEASE_SUBJECT='^(desktop: )?Release v?' + # The SHA of the release commit for $1, looked up by its commit subject. release_commit_sha() { - git -C "$PROJECT_DIR" log --grep="^Release v$1\$" -1 --format=%H -- "${RELEASE_PATHS[@]}" + git -C "$PROJECT_DIR" log -E --grep="$RELEASE_SUBJECT$1\$" -1 --format=%H -- "${RELEASE_PATHS[@]}" } # ---- Phases ---- @@ -161,7 +165,7 @@ phase_prep() { local version="$1" [[ -n "$version" ]] || die "prep requires --version X.Y.Z" - step "Preparing release v$version" + step "Preparing release $version" info "Syncing and fetching" run rad sync @@ -170,9 +174,9 @@ phase_prep() { info "Creating branch release/desktop/$version" run git -C "$PROJECT_DIR" checkout -b "release/desktop/$version" - step "Changelog material (for the v$version entry)" + step "Changelog material (for the $version entry)" local prev - prev="$(git -C "$PROJECT_DIR" log --grep='^Release v' -1 --format=%H -- "${RELEASE_PATHS[@]}" || true)" + prev="$(git -C "$PROJECT_DIR" log -E --grep="${RELEASE_SUBJECT}[0-9]" -1 --format=%H -- "${RELEASE_PATHS[@]}" || true)" if [[ -n "$prev" ]]; then info "Commits since $(git -C "$PROJECT_DIR" log -1 --format='%s' "$prev"):" echo @@ -185,7 +189,7 @@ phase_prep() { echo info "Format the list into the user-facing changes for the CHANGELOG entry." else - warn "no previous 'Release v*' commit found; writing the entry from scratch" + warn "no previous 'Release *' commit found; writing the entry from scratch" fi if ! confirm "Continue and open CHANGELOG.md in \$EDITOR?"; then @@ -197,11 +201,11 @@ phase_prep() { [[ "$DRY_RUN" == true ]] || info "tauri.conf.json -> $(conf_version)" step "Editing CHANGELOG.md" - info "Add the v$version entry (Features, Bug fixes, Shout-out block)." + info "Add the $version entry (Features, Bug fixes, Shout-out block)." run "${EDITOR:-vi}" "$CHANGELOG" step "Creating Release Commit" - run git -C "$PROJECT_DIR" commit -m "Release v$version" -- "$TAURI_CONF" "$CHANGELOG" + run git -C "$PROJECT_DIR" commit -m "desktop: Release $version" -- "$TAURI_CONF" "$CHANGELOG" local sha sha="$(git -C "$PROJECT_DIR" rev-parse HEAD)" info "Release commit: $sha" @@ -220,11 +224,11 @@ phase_build() { local version version="$(conf_version)" require_podman - step "Building release artifacts for v$version" + step "Building release artifacts for $version" run "$SCRIPT_DIR/build-artifacts" step "Build complete" - info "Install releases/v$version/radicle-desktop-aarch64.dmg and verify it runs." + info "Install releases/$version/radicle-desktop-aarch64.dmg and verify it runs." next "scripts/release --phase apt" } @@ -232,7 +236,7 @@ phase_apt() { local version version="$(conf_version)" local deb="radicle-desktop_${version}_amd64.deb" - local src="$PROJECT_DIR/releases/v$version/$deb" + local src="$PROJECT_DIR/releases/$version/$deb" step "Staging the Debian package for signing" [[ -f "$src" ]] || fail "$src not found — run --phase build first" @@ -261,12 +265,12 @@ phase_apt() { RADICLE_APT_SIGNING_KEY=/src/keys/signing-key ./import-deb $deb # Back on the host: - git checkout -b release-v$version + git checkout -b release-$version git add db/ dists/ pool/ git commit -m "Update radicle-desktop to $version" git push rad HEAD:refs/patches # After peer approval: - git checkout main && git merge --ff-only release-v$version && git push + git checkout main && git merge --ff-only release-$version && git push make publish EOF next "scripts/release --phase publish" @@ -275,7 +279,7 @@ EOF phase_publish() { local version version="$(conf_version)" - local release_dir="$PROJECT_DIR/releases/v$version" + local release_dir="$PROJECT_DIR/releases/$version" local remote="/var/www/$FILES_HOST/releases/radicle-desktop" local key target key="$(rad path)/keys/radicle" @@ -307,15 +311,15 @@ phase_publish() { phase_tag() { local version version="$(conf_version)" - step "Tagging canonical release v$version" + step "Tagging canonical release $version" local sha sha="$(release_commit_sha "$version")" - [[ -n "$sha" ]] || fail "could not find the 'Release v$version' commit (is the patch merged into master?)" + [[ -n "$sha" ]] || fail "could not find the 'desktop: Release $version' commit (is the patch merged into master?)" info "Tagging commit: ${sha:-}" local tag="releases/desktop/$version" - run git -C "$PROJECT_DIR" tag "$tag" "${sha:-}" -m "Release $version" + run git -C "$PROJECT_DIR" tag "$tag" "${sha:-}" -m "desktop: Release $version" run git -C "$PROJECT_DIR" push rad "refs/tags/$tag" run rad sync @@ -324,12 +328,12 @@ phase_tag() { step "Announce on Zulip" local entry - entry="$(awk -v v="### v$version" ' + entry="$(awk -v v="### $version" ' $0 == v {grab=1} - grab && NR>1 && /^### v/ && $0 != v {exit} + grab && NR>1 && /^### / && $0 != v {exit} grab {print} ' "$CHANGELOG")" - [[ -n "$entry" ]] || fail "no '### v$version' section found in CHANGELOG.md" + [[ -n "$entry" ]] || fail "no '### $version' section found in CHANGELOG.md" echo bold " Copy the message below into the announcements channel:" @@ -339,10 +343,10 @@ phase_tag() { echo "$entry" echo " --------------------------------------------------------------------" echo - info "Post it under a topic named: radicle-desktop v$version" + info "Post it under a topic named: radicle-desktop $version" info "Then resolve the previous release topic." echo - bold "Release v$version complete." + bold "Release $version complete." } # ---- Dispatch ----