Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 55 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,23 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
npm run dist

- name: List release artifacts
run: |
echo "=== Contents of release folder ==="
ls -la release/
echo "=== YML files ==="
ls -la release/*.yml || echo "No yml files found"

- name: Verify latest-mac.yml exists
run: |
if [ ! -f release/latest-mac.yml ]; then
echo "ERROR: latest-mac.yml was not generated!"
echo "This file is required for auto-updates on macOS."
exit 1
fi
echo "✅ latest-mac.yml found"
cat release/latest-mac.yml

- name: Upload macOS artifacts
uses: actions/upload-artifact@v4
Expand All @@ -60,7 +77,7 @@ jobs:
release/*.dmg
release/*.zip
release/*.blockmap
release/latest-mac.yml
release/latest-mac*.yml

release-windows:
runs-on: windows-latest
Expand All @@ -84,6 +101,23 @@ jobs:
run: |
npm run dist

- name: List release artifacts
run: |
echo "=== Contents of release folder ==="
dir release
echo "=== YML files ==="
dir release\*.yml

- name: Verify latest.yml exists
run: |
if (!(Test-Path "release/latest.yml")) {
Write-Error "ERROR: latest.yml was not generated!"
exit 1
}
Write-Host "✅ latest.yml found"
Get-Content release/latest.yml
shell: pwsh

- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
Expand All @@ -110,6 +144,25 @@ jobs:
name: windows-artifacts
path: release

- name: List all downloaded artifacts
run: |
echo "=== All release artifacts ==="
ls -la release/
echo "=== YML files ==="
ls -la release/*.yml || echo "No yml files found"

- name: Verify required yml files exist
run: |
if [ ! -f release/latest-mac.yml ]; then
echo "ERROR: latest-mac.yml is missing from artifacts!"
exit 1
fi
if [ ! -f release/latest.yml ]; then
echo "ERROR: latest.yml is missing from artifacts!"
exit 1
fi
echo "✅ All required yml files present"

- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
Expand All @@ -118,7 +171,7 @@ jobs:
release/*.zip
release/*.exe
release/*.blockmap
release/latest-mac.yml
release/latest-mac*.yml
release/latest.yml
draft: false
prerelease: false
Expand Down
22 changes: 21 additions & 1 deletion src/main/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -262,8 +262,28 @@ app.whenReady().then(async () => {

autoUpdater.on('error', (err) => {
console.error('Update error:', err);

// Provide more user-friendly error messages for common issues
let userMessage = err.message;
let isRecoverable = false;

if (err.message.includes('404') || err.message.includes('latest-mac.yml') || err.message.includes('latest.yml')) {
// This typically happens when a release doesn't have the auto-update manifest files
userMessage = 'Update manifest not found in the latest release. The release may not have been built correctly. Please try again later or download the latest version manually from GitHub.';
isRecoverable = true;
console.warn('[Updater] Auto-update manifest (latest-mac.yml or latest.yml) not found in release. This is a release build issue.');
} else if (err.message.includes('net::ERR') || err.message.includes('ENOTFOUND') || err.message.includes('ETIMEDOUT')) {
userMessage = 'Network error while checking for updates. Please check your internet connection and try again.';
isRecoverable = true;
} else if (err.message.includes('authentication') || err.message.includes('401') || err.message.includes('403')) {
userMessage = 'Authentication error while checking for updates. This may be a temporary issue.';
isRecoverable = true;
}

mainWindow?.webContents.send('updater:error', {
message: err.message
message: userMessage,
originalError: err.message,
isRecoverable
});
});
}
Expand Down
33 changes: 24 additions & 9 deletions src/renderer/views/SettingsView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -543,15 +543,30 @@ export default function SettingsView() {
)}

{updateStatus === 'error' && (
<>
<XCircle className="w-4 h-4 text-red-500" />
<span className={cn(
"text-sm",
theme === "dark" ? "text-red-400" : "text-red-600"
)}>
{errorMessage || "Update check failed"}
</span>
</>
<div className="flex flex-col gap-1">
<div className="flex items-center space-x-2">
<XCircle className="w-4 h-4 text-red-500 flex-shrink-0" />
<span className={cn(
"text-sm",
theme === "dark" ? "text-red-400" : "text-red-600"
)}>
{errorMessage || "Update check failed"}
</span>
</div>
{(errorMessage?.includes('manifest') || errorMessage?.includes('404')) && (
<a
href="https://github.com/areibman/bottleneck/releases/latest"
target="_blank"
rel="noopener noreferrer"
className={cn(
"text-xs ml-6 underline hover:no-underline",
theme === "dark" ? "text-blue-400" : "text-blue-600"
)}
>
Download latest release from GitHub →
</a>
)}
</div>
)}
</div>

Expand Down