Skip to content

Commit 127179f

Browse files
authored
Merge pull request #69 from carterscode/chore/release-plumbing-fixes
fix(release): stop merges from publishing, filter prerelease tags, gate manual update in dev builds
2 parents eb4afa4 + 40e2390 commit 127179f

2 files changed

Lines changed: 25 additions & 6 deletions

File tree

.github/workflows/release.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
name: release
22

3+
# Releases are cut deliberately, never as a side effect of merging. A push to
4+
# main used to publish whenever it touched src/** or installer/**, which meant
5+
# every merged PR consumed a version and shipped an installer. Publishing now
6+
# requires an explicit act: push a v*.*.* tag, or run the workflow by hand.
37
on:
48
push:
5-
branches: [main]
6-
paths:
7-
- 'src/**'
8-
- 'installer/**'
9-
- '.github/workflows/release.yml'
109
tags: ['v*.*.*']
1110
workflow_dispatch:
1211
inputs:
@@ -47,7 +46,11 @@ jobs:
4746
$v = $manual
4847
$createTag = $true
4948
} else {
50-
$latest = (git tag --list 'v*.*.*' --sort=-v:refname | Select-Object -First 1)
49+
# Stable tags only. The 'v*.*.*' glob also matches prerelease tags
50+
# like v0.1.65-beta.1, and $parts[2] would then be "65-beta", which
51+
# [int] throws on -- failing the release. dev-build.yml has always
52+
# filtered these out; release.yml did not.
53+
$latest = (git tag --list 'v*.*.*' --sort=-v:refname | Where-Object { $_ -notmatch '-' } | Select-Object -First 1)
5154
if ([string]::IsNullOrWhiteSpace($latest)) { $latest = 'v0.0.0' }
5255
$parts = ($latest -replace '^v','').Split('.')
5356
$patch = [int]$parts[2] + 1

src/GamerGuardian/UI/SettingsWindow.xaml.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1027,6 +1027,22 @@ private void OpenChangeLogButton_Click(object sender, RoutedEventArgs e)
10271027

10281028
private async void CheckUpdatesNowButton_Click(object sender, RoutedEventArgs e)
10291029
{
1030+
// Dev builds must never self-update. The startup check has always been
1031+
// gated on this (App.OnStartup), but this manual path was not: clicking
1032+
// "Check now" in a dev build would download the newest *stable* installer
1033+
// and launch it over the running dev build. Same guard, both paths.
1034+
if (App.IsDevBuild())
1035+
{
1036+
System.Windows.MessageBox.Show(
1037+
this,
1038+
$"This is a development build (v{UpdateService.CurrentSemver()}). "
1039+
+ "Automatic updates are disabled so it can't replace itself with a release build.",
1040+
"GamerGuardian",
1041+
System.Windows.MessageBoxButton.OK,
1042+
System.Windows.MessageBoxImage.Information);
1043+
return;
1044+
}
1045+
10301046
var btn = CheckUpdatesNowButton;
10311047
var prev = btn.Content;
10321048
btn.IsEnabled = false;

0 commit comments

Comments
 (0)