Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
699c9b3
feat(ui): replace static value labels with editable NumericUpDown con…
undead2146 Dec 28, 2025
755e532
feat: implement interactive numeric inputs for game settings (#223)
undead2146 Dec 28, 2025
71d5cdc
feat: fix CD disk detection; add manual folder picker (#222)
undead2146 Dec 31, 2025
9a2cb9e
refactor: centralize game settings mapping and fix persistence bugs (…
undead2146 Dec 31, 2025
b03ae8c
fix: refactor changelog generation logic in GitHub release (#226)
undead2146 Dec 31, 2025
4105527
feat: enhance game profile settings UI, local content, and dependency…
undead2146 Dec 31, 2025
6941a39
feat: implement GeneralsOnline profile reconciliation service and upd…
undead2146 Jan 1, 2026
fca61fb
fix: resolve development branch subscription logic (#224)
undead2146 Jan 1, 2026
fc1d179
refactor: improve process termination logic to prevent UI blocking (#…
undead2146 Jan 1, 2026
32a319a
feat: Implement data-driven provider definition configurations with e…
undead2146 Jan 1, 2026
048d06f
feat: image as backdrop and add header collapse functionality in Game…
undead2146 Jan 1, 2026
a7f2e4c
feat: add "Delete All User Data" logic to the `Delete all application…
undead2146 Jan 1, 2026
c694877
feat: add game type filter and enhance UI elements for better content…
undead2146 Jan 1, 2026
e1f6324
feat: add data directories access in settings tab (#236)
undead2146 Jan 2, 2026
5b7a8dc
feat: Implement Add Local Content feature with new ViewModel and UI (…
undead2146 Jan 3, 2026
615dc70
feat: Enhance Game Installation Service with manual installation stor…
undead2146 Jan 3, 2026
b20861a
fix: resolve generalsonline reconciler and update service (#240)
undead2146 Jan 4, 2026
59d3fa0
feat: redesign the GameProfileCards UI (#244)
undead2146 Jan 5, 2026
250e19b
feat(notifications): Add persistent notification feed with action sup…
undead2146 Jan 6, 2026
f3e8e93
fix(update): overhaul update system platform detection and PR subscri…
undead2146 Jan 7, 2026
d7d92fd
feat: Implement SteamLauncher for game directory preparation and prox…
undead2146 Jan 7, 2026
33dbae1
feat: Refactor and implement Map/Replay Managers and Tools Sidebar (#…
undead2146 Jan 8, 2026
17e2501
feat(content): implement foundation for AODMaps and CNCLabs pipelines…
undead2146 Jan 14, 2026
51ce8ee
feat: implement Tool Profile support for standalone executables and m…
undead2146 Jan 16, 2026
b48204e
fix: GO Reconciler fails to parse versions.
undead2146 Jan 16, 2026
1f1552a
fix: resolve the github and manifest factories regarding TSH content …
undead2146 Jan 19, 2026
72b0589
refactor: Add Executable and ModdingTool to the GameLauncher to track…
undead2146 Jan 21, 2026
b07845d
fix(deps): resolve security vulnerabilities in vite, preact, and esbu…
undead2146 Jan 22, 2026
e84b778
feat(gamelod): fix texture quality reset to low by mapping Very High …
undead2146 Jan 23, 2026
d6847b5
feat: Add Genhub.Tools project for CsvGenerationUtility (#221)
mnoserat Jan 23, 2026
d2359aa
feat: Set up the repository file structure for storing CSV registries…
mnoserat Jan 23, 2026
7e5e1ed
feat: redesign the gameprofile settings window (#258)
undead2146 Jan 24, 2026
11dd3ee
feat: info tab features, faq parser and sidebar refinements, (#248)
undead2146 Jan 25, 2026
5d4f1a7
feat: Add new styles for landing page website components and improve …
undead2146 Jan 25, 2026
df4d717
docs: resolve deadlinks in vitepress documentation site (#260)
undead2146 Jan 25, 2026
81e1843
refactor: Remove the active workspace for steamlauncher and use alrea…
undead2146 Jan 26, 2026
0354aad
refactor: filter non-workspace files from workspace strategies (#263)
undead2146 Jan 26, 2026
64adab9
Fix(github): resolve content downloaded from github not being launcha…
undead2146 Jan 26, 2026
9fb435a
feat: Implement copy profile functionality (#267)
undead2146 Jan 27, 2026
8a82b9f
feat(website): add a tracker for total installs and updates on github…
undead2146 Jan 30, 2026
71792f7
feat(notifications): add mute functionality, improve badge UI, and fi…
aRibals Feb 21, 2026
b937355
Fix: Resolve Hotkeys for legionnaire/leikeze not working and issue wi…
undead2146 Mar 1, 2026
8a09814
feat: replaced all quicklaunch occurances with quickstart (#279)
R3voA3 Mar 14, 2026
5ba2a51
feat: implement content reconciliation system with CAS lifecycle mana…
undead2146 Mar 16, 2026
083c62d
fix(manifest): use JSON file pattern during discovery (#305)
bobtista Jul 29, 2026
b3280ad
fix(security): remove client-side UploadThing credentials (#300)
bobtista Jul 29, 2026
8f46ae1
fix(linux): resolve optional token storage at startup (#301)
bobtista Jul 29, 2026
5e29ec4
fix(steam): roll back failed proxy preparation (#304)
bobtista Jul 29, 2026
b7b6a0c
fix: use provider-declared schemes for version ordering (#297)
bobtista Jul 29, 2026
a783b36
fix: disable unsafe CAS garbage collection (#312)
bobtista Jul 29, 2026
4202a8a
ci: gate releases behind explicit promotion (#313)
bobtista Jul 29, 2026
8e07339
fix(manifest): continue past unavailable directories (#309)
bobtista Jul 29, 2026
a82537d
feat(platform): make paths, manifests, and Unix workspaces platform-a…
bobtista Jul 30, 2026
34f98db
feat(macos): add native host, installation detection, and CI (#329)
bobtista Jul 30, 2026
17bc745
fix(macos): register the platform services the merged state requires …
bobtista Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
155 changes: 155 additions & 0 deletions .github/scripts/package-macos-app.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
#!/usr/bin/env bash
#
# Builds GenHub.app from a published GenHub.MacOS output.
#
# This produces an UNSIGNED bundle. That is deliberate and sufficient for local use
# and for CI smoke-testing: a bundle you build yourself is never quarantined, so
# Gatekeeper does not block it. Distributing it to anyone else additionally requires
# a Developer ID signature and notarization, which are tracked separately.
#
# The bundle matters even unsigned. Avalonia launched from a bare executable has no
# Dock presence, no menu bar, unreliable window activation, and cannot be opened from
# Finder. Those are the symptoms this fixes.
#
# Usage:
# package-macos-app.sh <publish-dir> <output-dir> [version]
#
# Example:
# dotnet publish GenHub/GenHub.MacOS/GenHub.MacOS.csproj -c Release -r osx-arm64 \
# --self-contained true -o macos-publish
# .github/scripts/package-macos-app.sh macos-publish dist 0.0.1

set -euo pipefail

PUBLISH_DIR="${1:?usage: package-macos-app.sh <publish-dir> <output-dir> [version]}"
OUTPUT_DIR="${2:?usage: package-macos-app.sh <publish-dir> <output-dir> [version]}"
VERSION="${3:-0.0.1}"
BUNDLE_VERSION="${VERSION%%-*}"

APP_NAME="GenHub"
EXECUTABLE_NAME="GenHub.MacOS"
BUNDLE_ID="org.communityoutpost.genhub"

[ -d "$PUBLISH_DIR" ] || { echo "error: publish dir not found: $PUBLISH_DIR" >&2; exit 1; }
[ -f "$PUBLISH_DIR/$EXECUTABLE_NAME" ] || {
echo "error: $EXECUTABLE_NAME not found in $PUBLISH_DIR" >&2
echo "hint: publish GenHub.MacOS with -r osx-arm64 --self-contained true first" >&2
exit 1
}
[[ "$BUNDLE_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || {
echo "error: version must start with a three-part numeric version: $VERSION" >&2
exit 1
}

APP_BUNDLE="$OUTPUT_DIR/$APP_NAME.app"
CONTENTS="$APP_BUNDLE/Contents"

echo "Building $APP_BUNDLE (version $VERSION)"
rm -rf "$APP_BUNDLE"
mkdir -p "$CONTENTS/MacOS" "$CONTENTS/Resources"

# Everything published goes next to the executable. Avalonia resolves its native
# libraries relative to the executable, so splitting them out would break startup.
cp -R "$PUBLISH_DIR"/. "$CONTENTS/MacOS/"
chmod +x "$CONTENTS/MacOS/$EXECUTABLE_NAME"

# Apple requires numeric bundle versions. Preserve the prerelease suffix in the
# managed assembly and artifact name, but strip it from both Info.plist keys.
cat > "$CONTENTS/Info.plist" <<PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleName</key>
<string>$APP_NAME</string>
<key>CFBundleDisplayName</key>
<string>$APP_NAME</string>
<key>CFBundleIdentifier</key>
<string>$BUNDLE_ID</string>
<key>CFBundleVersion</key>
<string>$BUNDLE_VERSION</string>
<key>CFBundleShortVersionString</key>
<string>$BUNDLE_VERSION</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleExecutable</key>
<string>$EXECUTABLE_NAME</string>
<key>CFBundleIconFile</key>
<string>AppIcon</string>
<key>LSMinimumSystemVersion</key>
<string>11.0</string>
<key>NSHighResolutionCapable</key>
<true/>
<!-- Not a background agent: without this the app has no Dock tile and no menu bar. -->
<key>LSUIElement</key>
<false/>
</dict>
</plist>
PLIST

# An .icns is optional; without one macOS shows a generic application icon. Generate it
# from the existing PNG when the source and tooling are both available.
ICON_PNG="GenHub/GenHub/Assets/Icons/generalshub-icon.png"
if [ -f "$ICON_PNG" ] && command -v iconutil >/dev/null 2>&1 && command -v sips >/dev/null 2>&1; then
ICON_TEMP_DIR="$(mktemp -d)"
ICONSET="$ICON_TEMP_DIR/AppIcon.iconset"
ICON_GENERATION_FAILED=0
mkdir -p "$ICONSET"
for size in 16 32 128 256 512; do
ICON_1X="$ICONSET/icon_${size}x${size}.png"
ICON_2X="$ICONSET/icon_${size}x${size}@2x.png"
if ! sips -z "$size" "$size" "$ICON_PNG" --out "$ICON_1X" >/dev/null 2>&1 \
|| [ ! -s "$ICON_1X" ]; then
echo " warning: failed to generate ${size}x${size} icon"
ICON_GENERATION_FAILED=1
fi
if ! sips -z $((size * 2)) $((size * 2)) "$ICON_PNG" --out "$ICON_2X" >/dev/null 2>&1 \
|| [ ! -s "$ICON_2X" ]; then
echo " warning: failed to generate ${size}x${size}@2x icon"
ICON_GENERATION_FAILED=1
fi
done

if [ "$ICON_GENERATION_FAILED" -eq 0 ] \
&& iconutil -c icns "$ICONSET" -o "$CONTENTS/Resources/AppIcon.icns" 2>/dev/null; then
echo " embedded AppIcon.icns"
else
echo " warning: icon generation failed; bundle will use the default icon"
fi
rm -rf "$ICON_TEMP_DIR"
else
echo " note: no icon source or tooling; bundle will use the default icon"
fi

# Deliberately NOT signing the bundle here.
#
# `dotnet publish` already ad-hoc signs the apphost (verify with
# `codesign -dv Contents/MacOS/GenHub.MacOS`, which reports Signature=adhoc). That is
# what Apple Silicon requires to execute, so a locally built bundle runs as-is.
#
# Signing the whole bundle currently fails, and it is worth knowing why before anyone
# attempts notarization:
# * `codesign --deep` aborts on Contents/MacOS/.playwright — a ~117 MB vendored Node
# runtime pulled in by Microsoft.Playwright (used by the CNCLabs and AOD map
# discoverers). codesign rejects it as "bundle format unrecognized".
# * Without --deep it aborts on the first of ~266 unsigned managed DLLs.
# Running codesign anyway leaves the bundle worse than untouched: it writes a
# signature that claims resources which are not there, and the bundle then fails
# `codesign --verify`.
#
# Real distribution needs a Developer ID identity, inside-out signing of every nested
# Mach-O, and a decision about whether .playwright ships at all. Tracked separately.
if command -v codesign >/dev/null 2>&1; then
# Capture first rather than piping into grep -q: under `set -o pipefail`, grep -q
# exits on its first match and SIGPIPEs codesign, so the pipeline reports failure
# even when the signature is present.
SIGN_INFO="$(codesign -dv "$CONTENTS/MacOS/$EXECUTABLE_NAME" 2>&1 || true)"
case "$SIGN_INFO" in
*"Signature=adhoc"*)
echo " apphost carries its publish-time ad-hoc signature (runs locally, not distributable)" ;;
*)
echo " warning: apphost is not signed; it may be killed on Apple Silicon" ;;
esac
fi

echo "Built $APP_BUNDLE"
177 changes: 174 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ env:
UI_PROJECT: 'GenHub/GenHub/GenHub.csproj'
WINDOWS_PROJECT: 'GenHub/GenHub.Windows/GenHub.Windows.csproj'
LINUX_PROJECT: 'GenHub/GenHub.Linux/GenHub.Linux.csproj'
MACOS_PROJECT: 'GenHub/GenHub.MacOS/GenHub.MacOS.csproj'
TEST_PROJECTS: 'GenHub/GenHub.Tests/**/*.csproj'

jobs:
Expand All @@ -34,6 +35,7 @@ jobs:
ui: ${{ steps.filter.outputs.ui }}
windows: ${{ steps.filter.outputs.windows }}
linux: ${{ steps.filter.outputs.linux }}
macos: ${{ steps.filter.outputs.macos }}
tests: ${{ steps.filter.outputs.tests }}
any: ${{ steps.filter.outputs.any }}
steps:
Expand All @@ -53,6 +55,8 @@ jobs:
- 'GenHub/GenHub.Windows/**'
linux:
- 'GenHub/GenHub.Linux/**'
macos:
- 'GenHub/GenHub.MacOS/**'
tests:
- 'GenHub/GenHub.Tests/**'
any:
Expand All @@ -69,6 +73,7 @@ jobs:
echo "- UI: ${{ steps.filter.outputs.ui == 'true' && '✅' || '❌' }}" >> $GITHUB_STEP_SUMMARY
echo "- Windows: ${{ steps.filter.outputs.windows == 'true' && '✅' || '❌' }}" >> $GITHUB_STEP_SUMMARY
echo "- Linux: ${{ steps.filter.outputs.linux == 'true' && '✅' || '❌' }}" >> $GITHUB_STEP_SUMMARY
echo "- macOS: ${{ steps.filter.outputs.macos == 'true' && '✅' || '❌' }}" >> $GITHUB_STEP_SUMMARY

build-windows:
name: Build Windows
Expand Down Expand Up @@ -142,6 +147,7 @@ jobs:
Write-Host "Building Windows project"
dotnet build "${{ env.WINDOWS_PROJECT }}" -c ${{ env.BUILD_CONFIGURATION }} @buildProps


- name: Publish Windows App
shell: pwsh
run: |
Expand Down Expand Up @@ -186,7 +192,7 @@ jobs:
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
$testProjects = Get-ChildItem -Path "GenHub/GenHub.Tests" -Recurse -Filter *.csproj | Where-Object { $_.Name -notlike '*Linux*' }
$testProjects = Get-ChildItem -Path "GenHub/GenHub.Tests" -Recurse -Filter *.csproj | Where-Object { $_.Name -notlike '*Linux*' -and $_.Name -notlike '*MacOS*' }
if ($testProjects) {
foreach ($testProject in $testProjects) {
Write-Host "Testing $($testProject.FullName)"
Expand Down Expand Up @@ -327,7 +333,7 @@ jobs:
run: |
shopt -s globstar nullglob
for test_project in ${{ env.TEST_PROJECTS }}; do
[[ "$test_project" == *Windows* ]] && continue
[[ "$test_project" == *Windows* || "$test_project" == *MacOS* ]] && continue
echo "Testing $test_project"
dotnet test "$test_project" -c ${{ env.BUILD_CONFIGURATION }} --verbosity normal
done
Expand All @@ -348,11 +354,175 @@ jobs:
if-no-files-found: error
retention-days: 30

build-macos:
name: Build macOS
needs: detect-changes
if: ${{ github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.any == 'true' || needs.detect-changes.outputs.core == 'true' || needs.detect-changes.outputs.ui == 'true' || needs.detect-changes.outputs.macos == 'true' }}
# macos-14 and newer are Apple Silicon. Pinning a version rather than using
# macos-latest keeps the runner architecture stable when the label moves.
runs-on: macos-15
timeout-minutes: 30

steps:
- name: Checkout Code
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
persist-credentials: false

- name: Setup .NET
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Cache NuGet Packages
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-

- name: Extract Build Info
id: buildinfo
run: |
SHORT_HASH=$(echo "${{ github.sha }}" | cut -c1-7)
PR_NUMBER="${{ github.event.pull_request.number }}"
RUN_NUMBER="${{ github.run_number }}"

if [ -n "$PR_NUMBER" ]; then
VERSION="0.0.${RUN_NUMBER}-pr${PR_NUMBER}"
CHANNEL="PR"
else
VERSION="0.0.${RUN_NUMBER}"
CHANNEL="CI"
fi

echo "SHORT_HASH=$SHORT_HASH" >> $GITHUB_OUTPUT
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
echo "CHANNEL=$CHANNEL" >> $GITHUB_OUTPUT

- name: Build Projects
run: |
BUILD_PROPS="-p:Version=${{ steps.buildinfo.outputs.VERSION }} -p:GitShortHash=${{ steps.buildinfo.outputs.SHORT_HASH }} -p:PullRequestNumber=${{ steps.buildinfo.outputs.PR_NUMBER }} -p:BuildChannel=${{ steps.buildinfo.outputs.CHANNEL }}"

dotnet build "${{ env.CORE_PROJECT }}" -c ${{ env.BUILD_CONFIGURATION }} $BUILD_PROPS
dotnet build "${{ env.UI_PROJECT }}" -c ${{ env.BUILD_CONFIGURATION }} $BUILD_PROPS
dotnet build "${{ env.MACOS_PROJECT }}" -c ${{ env.BUILD_CONFIGURATION }} $BUILD_PROPS

# Runs the macOS composition root before publish. "Run Tests" at the end of this job
# already covered this project, but it sits after Publish and Smoke Test App Launch —
# so an unresolvable service killed the job at the smoke test, as a status-134 crash
# after packaging, and the assertion that names the service never executed. Running it
# here fails in seconds with the service name. A missing platform registration is
# invisible to per-branch CI, appearing only once both halves are merged, so this is
# the earliest point it can surface.
- name: Run macOS Tests
run: |
dotnet test GenHub/GenHub.Tests/GenHub.Tests.MacOS/GenHub.Tests.MacOS.csproj \
-c ${{ env.BUILD_CONFIGURATION }} --verbosity normal

- name: Publish macOS App
run: |
BUILD_PROPS="-p:Version=${{ steps.buildinfo.outputs.VERSION }} -p:GitShortHash=${{ steps.buildinfo.outputs.SHORT_HASH }} -p:PullRequestNumber=${{ steps.buildinfo.outputs.PR_NUMBER }} -p:BuildChannel=${{ steps.buildinfo.outputs.CHANNEL }}"

dotnet publish "${{ env.MACOS_PROJECT }}" \
-c ${{ env.BUILD_CONFIGURATION }} \
-r osx-arm64 \
--self-contained true \
-o "macos-publish" \
$BUILD_PROPS

# Unsigned and unnotarized: this proves the build and startup path, it is not a
# distributable artifact. Signing needs a Developer ID identity, and the vendored
# Playwright payload under Contents/MacOS breaks `codesign --deep` besides.
- name: Create .app Bundle
run: |
.github/scripts/package-macos-app.sh \
macos-publish \
macos-dist \
"${{ steps.buildinfo.outputs.VERSION }}"

# A bundle that builds but dies on startup is worse than no bundle, because CI
# goes green. Launch it headless and require it to survive; that is what caught
# the IGitHubTokenStorage crash, which every build-only check passed straight
# through.
- name: Smoke Test App Launch
run: |
APP_BIN="macos-dist/GenHub.app/Contents/MacOS/GenHub.MacOS"
"$APP_BIN" > app-launch.log 2>&1 &
APP_PID=$!

SURVIVED=0
for _ in $(seq 1 "$MACOS_SMOKE_TEST_SECONDS"); do
sleep 1
if ! kill -0 "$APP_PID" 2>/dev/null; then
break
fi
SURVIVED=$((SURVIVED + 1))
done

if kill -0 "$APP_PID" 2>/dev/null; then
echo "App stayed up for ${SURVIVED}s"
if kill "$APP_PID" 2>/dev/null; then
wait "$APP_PID" 2>/dev/null || true
else
set +e
wait "$APP_PID"
APP_STATUS=$?
set -e
echo "::error::GenHub.app exited before CI could stop it (status $APP_STATUS). Log follows."
cat app-launch.log
exit 1
fi
else
set +e
wait "$APP_PID"
APP_STATUS=$?
set -e
echo "::error::GenHub.app exited during startup (status $APP_STATUS). Log follows."
cat app-launch.log
exit 1
fi
env:
# Avalonia needs a window server. The macOS runner provides one, so no
# headless backend is configured here; if that changes, set
# AVALONIA_SCREEN_SCALE_FACTORS or switch to a headless platform.
DOTNET_CLI_TELEMETRY_OPTOUT: '1'
MACOS_SMOKE_TEST_SECONDS: '15'

# Platform test projects are run only on their matching hosts.
- name: Run Tests
shell: bash
run: |
while IFS= read -r test_project; do
# MacOS is covered by "Run macOS Tests" before publish, so it is skipped
# here rather than run a second time.
[[ "$test_project" == *Windows* || "$test_project" == *Linux* || "$test_project" == *MacOS* ]] && continue
echo "Testing $test_project"
dotnet test "$test_project" -c ${{ env.BUILD_CONFIGURATION }} --verbosity normal
done < <(find GenHub/GenHub.Tests -type f -name '*.csproj' | sort)

- name: Upload macOS App Bundle
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: genhub-macos-app-${{ steps.buildinfo.outputs.VERSION }}
path: macos-dist/
if-no-files-found: error
retention-days: 30

- name: Upload Launch Log On Failure
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: genhub-macos-launch-log-${{ steps.buildinfo.outputs.VERSION }}
path: app-launch.log
if-no-files-found: ignore
retention-days: 7

summary:
name: Build Summary
needs: [build-windows, build-linux]
needs: [build-windows, build-linux, build-macos]
if: always()
runs-on: ubuntu-latest
steps:
Expand All @@ -366,3 +536,4 @@ jobs:
echo "| --- | --- |" >> $GITHUB_STEP_SUMMARY
echo "| Windows | ${{ needs.build-windows.result == 'success' && '✅ Passed' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "| Linux | ${{ needs.build-linux.result == 'success' && '✅ Passed' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "| macOS | ${{ needs.build-macos.result == 'success' && '✅ Passed' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
Loading
Loading