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
191 lines
4.5 KiB
Markdown
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
|