aethex-forge/docs/DESKTOP-RELEASE.md
sirpiglr 0ac27118bc Update application to include desktop build and release configurations
Update application to include desktop build and release configurations by modifying tsconfig.json, electron-builder.yml, adding GitHub Actions workflows, and providing necessary license and icon files for cross-platform distribution.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 9203795e-937a-4306-b81d-b4d5c78c240e
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
Replit-Commit-Event-Id: 9d6edecd-d966-491d-a685-ab034128511d
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/7c94b7a0-29c7-4f2e-94ef-44b2153872b7/9203795e-937a-4306-b81d-b4d5c78c240e/lX9tyiI
Replit-Helium-Checkpoint-Created: true
2025-12-05 23:20:50 +00:00

191 lines
4.5 KiB
Markdown

# AeThex Desktop App - Release Guide
This guide covers building, signing, and distributing the AeThex Desktop application.
## Quick Start
### Prerequisites
- Node.js 20+
- npm or yarn
- For Windows builds: Windows 10/11
- For macOS builds: macOS 11+ with Xcode Command Line Tools
- For Linux builds: Ubuntu 20.04+ or equivalent
### Building Locally
```bash
# Install dependencies
npm install
# Build the desktop app (creates installers in ./dist)
npm run desktop:build
```
## Automated Builds (GitHub Actions)
The repository includes a GitHub Actions workflow that automatically builds for all platforms.
### Triggering a Release
1. **Tag a release:**
```bash
git tag v1.0.0
git push origin v1.0.0
```
2. **Manual trigger:**
Go to Actions > Build Desktop App > Run workflow
### Build Artifacts
After a successful build, artifacts are available:
- **Windows:** `AeThex Desktop Terminal-{version}-win-x64.exe`
- **macOS:** `AeThex Desktop Terminal-{version}-mac-{arch}.dmg`
- **Linux:** `AeThex Desktop Terminal-{version}-x64.AppImage`, `.deb`
## Code Signing
### Windows Code Signing
To sign Windows builds, you need a code signing certificate.
1. **Get a certificate:**
- Purchase from DigiCert, Sectigo, or other CA
- Or use Azure SignTool with Azure Key Vault
2. **Add GitHub Secrets:**
```
WIN_CSC_LINK: Base64-encoded .pfx certificate
WIN_CSC_KEY_PASSWORD: Certificate password
```
3. **Update electron-builder.yml:**
```yaml
win:
certificateFile: ${env.WIN_CSC_LINK}
certificatePassword: ${env.WIN_CSC_KEY_PASSWORD}
```
### macOS Code Signing & Notarization
Apple requires apps to be signed and notarized for distribution.
1. **Prerequisites:**
- Apple Developer Program membership ($99/year)
- Developer ID Application certificate
- App-specific password for notarization
2. **Add GitHub Secrets:**
```
APPLE_ID: Your Apple ID email
APPLE_APP_SPECIFIC_PASSWORD: Generated from appleid.apple.com
APPLE_TEAM_ID: Your Team ID (from Developer Portal)
CSC_LINK: Base64-encoded .p12 certificate
CSC_KEY_PASSWORD: Certificate password
```
3. **Update GitHub workflow to include notarization:**
```yaml
- name: Build and notarize
run: npm run desktop:build
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
```
4. **Update electron-builder.yml:**
```yaml
mac:
notarize:
teamId: ${env.APPLE_TEAM_ID}
```
## Auto-Updates
The app is configured to check for updates from GitHub Releases.
### How it works:
1. User installs the app
2. On launch, app checks GitHub Releases for newer version
3. If found, prompts user to download and install
### Configuration
The `publish` section in `electron-builder.yml` configures the update server:
```yaml
publish:
provider: github
owner: aethex
repo: aethex-desktop
releaseType: release
```
### Testing Updates
1. Build version 1.0.0 and install
2. Push version 1.0.1 to GitHub Releases
3. Launch the app - it should detect and offer the update
## Customization
### App Icons
Replace files in `build/icons/`:
- `icon.ico` - Windows (256x256 multi-size)
- `icon.icns` - macOS (512x512 multi-size)
- `icon.png` - Linux (512x512)
See `build/icons/README.md` for conversion instructions.
### Installer Graphics
**Windows NSIS:**
- `build/installerHeader.bmp` - 150x57 pixels
- `build/installerSidebar.bmp` - 164x314 pixels
**macOS DMG:**
- `build/icons/icon.icns` - Volume icon
- (Optional) Add `build/dmg-background.png` (540x380 pixels) and update electron-builder.yml with `dmg.background: build/dmg-background.png`
### License
Add a `LICENSE` file to the root directory to display during Windows installation.
## Troubleshooting
### "App is damaged" on macOS
- App is not signed or notarized
- Run: `xattr -cr /Applications/AeThex\ Desktop\ Terminal.app`
### Windows SmartScreen warning
- App is not code-signed
- Users can click "More info" > "Run anyway"
### Linux AppImage won't run
```bash
chmod +x AeThex*.AppImage
./AeThex*.AppImage
```
### Build fails with "icon not found"
- Ensure `build/icons/icon.ico` exists for Windows builds
- Ensure `build/icons/icon.icns` exists for macOS builds
## Version Management
Update version in `package.json` before creating a release tag:
```json
{
"version": "1.0.0"
}
```
The version is used in:
- Installer filename
- Auto-update checks
- About dialog