ODIA uses automated GitHub Actions workflows to build and publish desktop application releases. This document describes the release process and troubleshooting steps.
- All tests passing on
masterbranch - Desktop app builds successfully locally (optional verification)
- Version numbers updated in:
pyproject.toml(line 7)desktop/package.json(line 3)
- CHANGELOG.md updated (if exists) or release notes prepared
- README.md download links point to correct version
-
Ensure you're on the latest master:
git checkout master git pull origin master
-
Create and push the version tag:
git tag v2.1.0 git push origin v2.1.0
-
Monitor the build:
- Go to: https://github.com/SynTechRev/ODIA/actions
- Watch the "Build and Release Desktop Apps" workflow
- Expected duration: 15-20 minutes
- Three jobs run in parallel (Windows, macOS, Linux)
-
Verify the release:
- Check: https://github.com/SynTechRev/ODIA/releases
- Verify three installers are attached:
ODIA-Setup-X.Y.Z.exe(Windows)ODIA-X.Y.Z.dmg(macOS)ODIA-X.Y.Z.AppImage(Linux)
- Test download links work
- Download and test installers (recommended)
The .github/workflows/release-desktop.yml workflow:
- Builds Python backend using PyInstaller
- Builds frontend as static export for Electron
- Creates native installers using electron-builder:
- Windows: NSIS installer (
.exe) - macOS: DMG disk image (
.dmg) - Universal binary (x64 + arm64) - Linux: AppImage (
.AppImage)
- Windows: NSIS installer (
- Creates GitHub Release with auto-generated release notes
- Uploads installers as release assets
Follow Semantic Versioning (semver): MAJOR.MINOR.PATCH
- MAJOR: Breaking changes, incompatible API changes
- MINOR: New features, backwards-compatible
- PATCH: Bug fixes, backwards-compatible
Examples:
v2.1.0→v2.1.1(bug fix)v2.1.0→v2.2.0(new feature)v2.1.0→v3.0.0(breaking change)
If the automated workflow fails, you can build and release manually.
All Platforms:
- Node.js 20+
- Python 3.11+
- Git
Platform-Specific:
- Windows: Windows 10+ (for Windows builds)
- macOS: macOS 10.15+ with Xcode Command Line Tools (for macOS builds)
- Linux: Ubuntu 18.04+ with build-essential, fakeroot, rpm, libfuse2
# 1. Install Python dependencies
pip install -e ".[dev]"
pip install pyinstaller
# 2. Build Python backend
cd desktop
npm ci
npm run build:backend
# 3. Build frontend for Electron
cd ../frontend
npm ci
ELECTRON_BUILD=1 npm run build
# 4. Copy frontend to desktop build directory
cd ..
mkdir -p desktop/build/frontend
cp -r frontend/out/. desktop/build/frontend/
# 5. Build installer for your platform
cd desktop
npm run build:win # Windows
npm run build:mac # macOS
npm run build:linux # Linux
# Installers output to: desktop/dist/- Go to: https://github.com/SynTechRev/ODIA/releases/new
- Tag:
v2.1.0(create new tag) - Title:
ODIA v2.1.0 - Desktop Release - Description: Add release notes (see template below)
- Attach files: Upload installers from
desktop/dist/ - Publish release
## ODIA v2.1.0
### 🎉 First Official Release
This is the first official release of ODIA (Oraculus Decimus Intellect Analyst) featuring desktop applications for Windows, macOS, and Linux.
### 📱 New Features
- **Desktop Application:** Standalone Electron app for offline document analysis
- Native file dialogs
- Automatic Python backend management
- Cross-platform support (Windows, macOS, Linux)
- **Mobile Application:** React Native/Expo mobile app (source available)
- 9 TypeScript-ported analysis detectors
- Offline-first architecture
- 118 tests at 97% coverage
### 🔍 Analysis Capabilities
- Fiscal anomaly detection
- Constitutional issues analysis
- Surveillance concerns identification
- Procurement timeline analysis
- Cross-jurisdiction boundary detection
### 📥 Downloads
| Platform | File | Size |
|----------|------|------|
| Windows (x64) | ODIA-Setup-2.1.0.exe | ~XXX MB |
| macOS (Universal) | ODIA-2.1.0.dmg | ~XXX MB |
| Linux (x64) | ODIA-2.1.0.AppImage | ~XXX MB |
### 📚 Documentation
- [Desktop App README](https://github.com/SynTechRev/ODIA/blob/master/desktop/README.md)
- [Quick Start Guide](https://github.com/SynTechRev/ODIA/blob/master/QUICKSTART.md)
- [Architecture Overview](https://github.com/SynTechRev/ODIA/blob/master/docs/ARCHITECTURE.md)
### 🐛 Known Issues
None reported yet. Please report issues at https://github.com/SynTechRev/ODIA/issues
### 🙏 Acknowledgments
Built with contributions from the Copilot coding agent and the open-source community.
---
**Full Changelog**: https://github.com/SynTechRev/ODIA/commits/v2.1.0Check the logs:
- Go to https://github.com/SynTechRev/ODIA/actions
- Click on the failed workflow run
- Expand the failed job
- Review error messages
Common issues:
| Error | Cause | Fix |
|---|---|---|
frontend/out not found |
Frontend build failed | Check ELECTRON_BUILD env var is set |
PyInstaller failed |
Python dependencies missing | Verify requirements.txt complete |
electron-builder failed |
Missing native dependencies | Check platform-specific dependencies |
Permission denied |
File permissions issue | Check file modes in repo |
Verify:
- Tag was pushed:
git ls-remote --tags origin - Tag format is correct:
v*.*.*(e.g.,v2.1.0, not2.1.0) - Workflow has
contents: writepermission (already configured) - Workflow completed successfully without errors
Possible causes:
- Release not published yet (still draft)
- Asset file names don't match links
- Using
/latest/before any release exists
Fix:
- Use specific version in URLs:
/download/v2.1.0/filename - Verify exact filenames in release assets
- Ensure release is published (not draft)
Windows:
- "Windows protected your PC" → Click "More info" → "Run anyway"
- SmartScreen warning expected for unsigned executables
macOS:
- "Cannot be opened because it is from an unidentified developer"
- Right-click → Open → Confirm
- Or: System Preferences → Security & Privacy → "Open Anyway"
Linux:
- Make executable:
chmod +x ODIA-*.AppImage - Install FUSE:
sudo apt install libfuse2
Use this checklist for each release:
- All tests passing on master
- Version updated in
pyproject.toml - Version updated in
desktop/package.json - README.md download links updated
- Release notes prepared
- Tag created and pushed
- GitHub Actions workflow triggered
- All three builds completed successfully
- Release created automatically
- Installers attached to release
- Download links tested (no 404s)
- Windows installer tested
- macOS installer tested
- Linux AppImage tested
- GitHub Release marked as "Latest release"
- Automated version bumping via conventional commits
- Changelog generation from commit messages
- Pre-release builds for testing
- Code signing for Windows/macOS installers
- Auto-update mechanism in desktop app
- Homebrew formula for macOS installation
- Snap/Flatpak packages for Linux