Skip to content
Open
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
260 changes: 260 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,260 @@
name: Release Build

on:
push:
tags:
- 'v*' # Triggers on version tags like v1.8.0
workflow_dispatch: # Allows manual triggering

jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Install Wine for Windows cross-compilation
run: |
sudo apt update
sudo apt install -y wine

- name: Build Linux and Windows packages
run: |
make dist-linux-deb
make dist-linux-appimage
make dist-win

- name: Upload Linux artifacts
uses: actions/upload-artifact@v4
with:
name: linux-packages
path: |
release/*.AppImage
release/*.deb

- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
name: windows-packages
path: |
release/*.exe

build-flatpak:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install Flatpak build tools
run: |
sudo apt update
sudo apt install -y flatpak-builder
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install -y flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08 org.freedesktop.Sdk.Extension.node20//23.08

- name: Install dependencies
run: npm ci

- name: Build Flatpak
run: make dist-linux-flatpak

- name: Upload Flatpak artifacts
uses: actions/upload-artifact@v4
with:
name: flatpak-package
path: |
release/*.flatpak

build-macos:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build macOS packages
run: make dist-mac

- name: Upload macOS artifacts
uses: actions/upload-artifact@v4
with:
name: macos-packages
path: |
release/*.dmg
release/*.zip

create-release:
needs: [build-linux, build-flatpak, build-macos]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Download all artifacts
uses: actions/download-artifact@v4
with:
merge-multiple: true
path: ./release-artifacts

- name: Get version from tag
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT

- name: List artifacts
run: |
echo "Release artifacts:"
find ./release-artifacts -type f -exec ls -lh {} \;

- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.get_version.outputs.VERSION }}
release_name: Claude Code UI ${{ steps.get_version.outputs.VERSION }}
body: |
## Claude Code UI ${{ steps.get_version.outputs.VERSION }}

### Download Options

**Linux:**
- **AppImage** - Portable application (recommended)
- **DEB Package** - For Debian/Ubuntu systems
- **Flatpak** - Sandboxed application for all Linux distributions

**Windows:**
- **NSIS Installer** - Full installation with shortcuts
- **Portable** - Standalone executable

**macOS:**
- **DMG** - Drag-and-drop installer
- **ZIP** - Archive for automated deployment

### Installation Instructions

**Linux AppImage:**
```bash
chmod +x Claude\ Code\ UI-*.AppImage
./Claude\ Code\ UI-*.AppImage
```

**Flatpak:**
```bash
flatpak install claude-code-ui-*.flatpak
flatpak run com.claude_code_ui.app
```

**Windows:**
- Run the installer or portable executable

**macOS:**
- Open the DMG and drag to Applications folder

### Features
- βœ… Cross-platform Electron desktop application
- βœ… Built-in terminal with full Claude Code CLI integration
- βœ… Project management and file operations
- βœ… Hidden menu bar by default (press Alt to show)
- βœ… Secure authentication and session management

### System Requirements
- **Linux**: X11 or Wayland, GTK3+
- **Windows**: Windows 10+ (64-bit)
- **macOS**: macOS 10.15+ (Catalina)
draft: false
prerelease: false

- name: Upload Linux AppImage
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release-artifacts/Claude Code UI-${{ steps.get_version.outputs.VERSION }}.AppImage
asset_name: Claude Code UI-${{ steps.get_version.outputs.VERSION }}.AppImage
asset_content_type: application/octet-stream

- name: Upload Linux DEB
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release-artifacts/claude-code-ui_${{ steps.get_version.outputs.VERSION }}_amd64.deb
asset_name: claude-code-ui_${{ steps.get_version.outputs.VERSION }}_amd64.deb
asset_content_type: application/vnd.debian.binary-package

- name: Upload Flatpak
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release-artifacts/claude-code-ui-${{ steps.get_version.outputs.VERSION }}.flatpak
asset_name: claude-code-ui-${{ steps.get_version.outputs.VERSION }}.flatpak
asset_content_type: application/octet-stream

- name: Upload Windows Installer
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release-artifacts/Claude Code UI Setup ${{ steps.get_version.outputs.VERSION }}.exe
asset_name: Claude Code UI Setup ${{ steps.get_version.outputs.VERSION }}.exe
asset_content_type: application/octet-stream

- name: Upload Windows Portable
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release-artifacts/Claude Code UI ${{ steps.get_version.outputs.VERSION }}.exe
asset_name: Claude Code UI ${{ steps.get_version.outputs.VERSION }}.exe
asset_content_type: application/octet-stream

- name: Upload macOS DMG
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release-artifacts/Claude Code UI-${{ steps.get_version.outputs.VERSION }}.dmg
asset_name: Claude Code UI-${{ steps.get_version.outputs.VERSION }}.dmg
asset_content_type: application/octet-stream

- name: Upload macOS ZIP
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release-artifacts/Claude Code UI-${{ steps.get_version.outputs.VERSION }}-mac.zip
asset_name: Claude Code UI-${{ steps.get_version.outputs.VERSION }}-mac.zip
asset_content_type: application/zip
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -128,3 +128,17 @@ dev-debug.log
# Task files
# tasks.json
# tasks/

# Electron build artifacts
release/
*.AppImage
*.deb
*.dmg
*.exe
*.zip

# Flatpak build artifacts
build-dir/
repo*/
.flatpak-builder/
*.flatpak
Loading