Skip to content

Fix broken desktop download links and add automated release workflow#8

Merged
SynTechRev merged 2 commits into
masterfrom
copilot/fix-desktop-download-links
Apr 12, 2026
Merged

Fix broken desktop download links and add automated release workflow#8
SynTechRev merged 2 commits into
masterfrom
copilot/fix-desktop-download-links

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 12, 2026

README download links pointed to non-existent GitHub Release assets (404). No CI workflow existed to build or publish desktop installers.

Changes

README.md

  • Replace broken installer download table with build-from-source instructions
  • Point to the Releases page for future pre-built installers

.github/workflows/release-desktop.yml (new)

  • Matrix build across ubuntu-latest, windows-latest, macos-latest
  • Full pipeline: PyInstaller backend → Next.js static export → electron-builder installer
  • Uploads artifacts on every run (7-day retention)
  • Creates a GitHub Release with attached installers only on v*.*.* tags via softprops/action-gh-release@v1
  • Also triggerable via workflow_dispatch for ad-hoc builds

docs/RELEASING.md (new)

  • Release checklist and step-by-step tag-based release instructions
  • Manual fallback procedure (npm run build:win/mac/linux) if automated workflow fails

desktop/package.json — no changes; all required scripts (build, build:win, build:mac, build:linux, build:backend) were already present.

Original prompt

Fix Desktop Download Links and Implement Automated Releases

Problem Overview

The README.md currently contains download links to desktop application installers that return 404 errors because no GitHub Release has been created yet. Additionally, there is no automated workflow to build and publish desktop installers.

Current Issues

  1. Broken Download Links in README.md (lines 25-27):

    • Windows: https://github.com/SynTechRev/ODIA/releases/latest/download/ODIA-Setup.exe → 404
    • macOS: https://github.com/SynTechRev/ODIA/releases/latest/download/ODIA.dmg → 404
    • Linux: https://github.com/SynTechRev/ODIA/releases/latest/download/ODIA.AppImage → 404
  2. No Release Automation:

Required Changes

1. Update README.md (Immediate Fix)

Replace the broken download links section (lines 18-29) with a temporary solution that points to build instructions:

Current (broken):

| Platform | Download |
|----------|----------|
| Windows  | [ODIA-Setup.exe](https://github.com/SynTechRev/ODIA/releases/latest/download/ODIA-Setup.exe) |
| macOS    | [ODIA.dmg](https://github.com/SynTechRev/ODIA/releases/latest/download/ODIA.dmg) |
| Linux    | [ODIA.AppImage](https://github.com/SynTechRev/ODIA/releases/latest/download/ODIA.AppImage) |

Replace with:

**Desktop App:**

Pre-built installers will be available in the [Releases](https://github.com/SynTechRev/ODIA/releases) section soon. For now, build the desktop application locally:

```bash
# Build desktop application
cd desktop
npm install
npm run build:backend    # Build Python backend
cd ../frontend
npm ci
ELECTRON_BUILD=1 npm run build  # Build frontend for Electron
cd ../desktop
npm run build            # Create installer for your platform

Installers are output to desktop/dist/. See desktop/README.md for detailed build instructions and platform-specific requirements.


### 2. Create Automated Release Workflow

Add a new GitHub Actions workflow at `.github/workflows/release-desktop.yml`:

```yaml
name: Build and Release Desktop Apps

on:
  push:
    tags:
      - 'v*.*.*'  # Trigger on version tags like v2.1.0
  workflow_dispatch:  # Allow manual triggering

jobs:
  build-desktop:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        include:
          - os: ubuntu-latest
            platform: linux
            artifact: ODIA-*.AppImage
          - os: windows-latest
            platform: windows
            artifact: ODIA-Setup-*.exe
          - os: macos-latest
            platform: mac
            artifact: ODIA-*.dmg
    
    runs-on: ${{ matrix.os }}
    
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'
          cache-dependency-path: desktop/package-lock.json
      
      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'
          cache: 'pip'
      
      - name: Install system dependencies (Linux)
        if: matrix.os == 'ubuntu-latest'
        run: |
          sudo apt-get update
          sudo apt-get install -y build-essential fakeroot rpm libfuse2
      
      - name: Install Python dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -e .
      
      - name: Build Python backend
        run: |
          cd desktop
          npm ci
          npm run build:backend
      
      - name: Build frontend for Electron
        run: |
          cd frontend
          npm ci
          ELECTRON_BUILD=1 npm run build
        env:
          ELECTRON_BUILD: 1
      
      - name: Copy frontend to desktop build
        shell: bash
        run: |
          mkdir -p desktop/build/frontend
          cp -r frontend/out/* desktop/build/frontend/
      
      - name: Build Electron installer
        run: |
          cd desktop
          npm run build
      
      - name: Upload artifacts
        uses: actions/upload-artifact@v4
        with:
          name: odia-desktop-${{ matrix.platform }}
          path: desktop/dist/${{ matrix.artifact }}
          retention-days: 7
      
      - name: Upload to Release
        if: startsWith(github.ref, 'refs/tags/v')
        uses: softprops/action-gh-release@v1
        with:
          files: desktop/dist/*
          draft: false
          prerelease: false
          generate_release_notes: true
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

3. Update Desktop Package Scripts

Ensure desktop/package.json has the necessary build scripts. Add or verify these scripts exist:

{
  "scripts": {
    "build:backend": "node scripts/build-backend.js",
    "build": "electron-builder",
    "build:wi...

</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

*This pull request was created from Copilot chat.*
>

Copilot AI changed the title [WIP] Fix broken download links and implement release automation Fix broken desktop download links and add automated release workflow Apr 12, 2026
Copilot AI requested a review from SynTechRev April 12, 2026 20:42
@SynTechRev SynTechRev marked this pull request as ready for review April 12, 2026 20:45
Copilot AI review requested due to automatic review settings April 12, 2026 20:45
@SynTechRev SynTechRev merged commit 7f8d43a into master Apr 12, 2026
14 checks passed
@SynTechRev SynTechRev deleted the copilot/fix-desktop-download-links branch April 12, 2026 20:45
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes broken desktop installer download links from the README and introduces an automated GitHub Actions workflow plus documentation to build and publish desktop installers via GitHub Releases.

Changes:

  • Replace README installer download table with build-from-source instructions and a link to the Releases page.
  • Add a new cross-platform (ubuntu/windows/macos) release workflow that builds installers and publishes them on version tags.
  • Add a docs/RELEASING.md checklist describing the tag-based release process and a manual fallback path.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.

File Description
README.md Replaces broken direct-download links with “build locally” instructions and a Releases pointer.
.github/workflows/release-desktop.yml Adds a tag/manual-triggered workflow to build desktop installers and attach them to GitHub Releases.
docs/RELEASING.md Documents the automated release process and a manual fallback procedure.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md
Comment on lines 18 to 21
**Desktop App (no installation prerequisites):**

Download the standalone desktop application — no Python, Docker, or command line
required. All analysis runs locally on your machine.
Pre-built installers will be available in the [Releases](https://github.com/SynTechRev/ODIA/releases) section soon. For now, build the desktop application locally:

Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The section still claims “no installation prerequisites”, but the only path offered now is building locally (which requires Node/Python and other tooling). Please reword this heading/intro so it doesn’t imply users can use the desktop app without prerequisites until pre-built installers actually exist.

Copilot uses AI. Check for mistakes.
Comment thread README.md
npm install
npm run build:backend # Build Python backend
cd ../frontend
npm ci
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

npm ci will fail in frontend/ because the repo doesn’t include a frontend/package-lock.json (or other lockfile). Either add a lockfile and keep npm ci, or switch these instructions to npm install to match the current repo state.

Suggested change
npm ci
npm install

Copilot uses AI. Check for mistakes.
Comment thread README.md
```bash
# Build desktop application
cd desktop
npm install
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These build-from-source steps omit installing the Python package deps (and PyInstaller) before running npm run build:backend. Without a prior pip install -e ... (and PyInstaller availability), build:backend is likely to fail; consider adding the same prerequisite step shown in desktop/README.md.

Suggested change
npm install
npm install
cd ..
pip install -e .[desktop] # Install Python package deps and PyInstaller
cd desktop

Copilot uses AI. Check for mistakes.
env:
ELECTRON_BUILD: '1'
run: |
npm ci
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This workflow runs npm ci in frontend/, but the repo does not contain a frontend/package-lock.json (or other lockfile), so the step will fail. Either commit a lockfile and keep npm ci, or change this to npm install.

Suggested change
npm ci
npm install

Copilot uses AI. Check for mistakes.
Comment on lines +21 to +27
artifact: ODIA-*.AppImage
- os: windows-latest
platform: windows
artifact: ODIA-Setup-*.exe
- os: macos-latest
platform: mac
artifact: ODIA-*.dmg
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Windows artifact glob ODIA-Setup-*.exe is more specific than the existing CI workflow (which uploads desktop/dist/*.exe) and may not match electron-builder’s default NSIS naming (often includes spaces). Consider using desktop/dist/*.exe (and similar broad globs) or explicitly setting artifactName in the electron-builder config to guarantee these names.

Suggested change
artifact: ODIA-*.AppImage
- os: windows-latest
platform: windows
artifact: ODIA-Setup-*.exe
- os: macos-latest
platform: mac
artifact: ODIA-*.dmg
artifact: '*.AppImage'
- os: windows-latest
platform: windows
artifact: '*.exe'
- os: macos-latest
platform: mac
artifact: '*.dmg'

Copilot uses AI. Check for mistakes.
Comment thread docs/RELEASING.md
Comment on lines +47 to +55
```bash
# Build locally for your platform
cd desktop
npm run build:win # Windows
npm run build:mac # macOS
npm run build:linux # Linux

# Manually create a release on GitHub and upload installers from desktop/dist/
```
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The manual fallback commands build installers directly, but electron-builder depends on build/backend and build/frontend being populated first. Please add the required steps (build backend, build/export frontend with ELECTRON_BUILD=1, copy frontend/out into desktop/build/frontend) before npm run build:win/mac/linux, consistent with desktop/README.md.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants