Skip to content
Merged
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
9 changes: 9 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@ updates:
update-types: ["version-update:semver-major"]
versioning-strategy: increase
target-branch: dev
- package-ecosystem: "npm"
directory: "/electron"
schedule:
interval: "daily"
ignore:
- dependency-name: "*"
update-types: [ "version-update:semver-major" ]
versioning-strategy: increase
target-branch: dev
- package-ecosystem: "pip"
directory: "/server"
schedule:
Expand Down
3 changes: 3 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ labels:
- label: "client"
files:
- "client/.*"
- label: "client"
files:
- "electron/.*"
- label: "server"
files:
- "server/.*"
139 changes: 139 additions & 0 deletions .github/workflows/build-electron.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
name: Build Electron Applications

on:
push:
tags: ['v*']
pull_request:
branches: [main, dev]

permissions:
contents: read

jobs:
build-electron-renderer:
name: Build Electron Renderer
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
cache: 'npm'
cache-dependency-path: 'client/package-lock.json'

- name: Install dependencies
run: |
cd client
npm ci

- name: Build Electron renderer
run: |
cd client
BUILD_TARGET=electron npm run build

- name: Upload Electron renderer build
uses: actions/upload-artifact@v4
with:
name: electron-renderer
path: client/dist-electron/
retention-days: 7

build-electron-apps:
name: Build Electron App (${{ matrix.platform }})
needs: build-electron-renderer
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: ubuntu-latest
platform: linux
artifact_patterns: |
electron/out/make/deb/x64/*.deb
electron/out/make/rpm/x64/*.rpm
- os: windows-latest
platform: windows
artifact_patterns: |
electron/out/make/squirrel.windows/x64/*.exe
electron/out/make/squirrel.windows/x64/*.nupkg
electron/out/make/squirrel.windows/x64/RELEASES
- os: macos-latest
platform: macos
artifact_patterns: |
electron/out/make/*.zip
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
cache: 'npm'
cache-dependency-path: 'electron/package-lock.json'

- name: Download Electron renderer build
uses: actions/download-artifact@v4
with:
name: electron-renderer
path: client/dist-electron

- name: Install Electron dependencies
run: |
cd electron
npm ci

- name: Package Electron app
run: |
cd electron
npm run package

- name: Make installers
run: |
cd electron
npm run make

- name: List output files (debug)
run: |
echo "Contents of electron/out/make:"
ls -R electron/out/make/
shell: bash

- name: Upload installers
uses: actions/upload-artifact@v4
with:
name: electron-${{ matrix.platform }}-installers
path: ${{ matrix.artifact_patterns }}
retention-days: 7

upload-electron-to-release:
name: Upload Electron Apps to Release
needs: build-electron-apps
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts

- name: List downloaded artifacts (debug)
run: |
echo "Downloaded artifacts:"
ls -R artifacts/

- name: Upload to release
uses: softprops/action-gh-release@v2
with:
files: |
artifacts/electron-linux-installers/**/*.deb
artifacts/electron-linux-installers/**/*.rpm
artifacts/electron-windows-installers/**/*.exe
artifacts/electron-macos-installers/**/*.zip
token: ${{ secrets.GITHUB_TOKEN }}
50 changes: 36 additions & 14 deletions .github/workflows/build.yml → .github/workflows/build-server.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,48 @@
name: Build DigiScript Applications
name: Build Server Executables

on:
push:
tags: [ 'v*' ]
tags: ['v*']
pull_request:
branches: [ main, dev ]
branches: [main, dev]

permissions:
contents: read

jobs:
build-front-end:
name: Build Frontend
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
cache: 'npm'
cache-dependency-path: 'client/package-lock.json'

- name: Install dependencies
run: |
cd client
npm ci

- name: Build frontend
run: |
cd client
npm run build

- name: Upload frontend build
uses: actions/upload-artifact@v4
with:
name: frontend-build
path: server/static/
build-executables:
retention-days: 7

build-server-executables:
name: Build Server (${{ matrix.platform }})
needs: build-front-end
strategy:
fail-fast: false
Expand All @@ -51,22 +62,27 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
cache: 'pip'
cache-dependency-path: 'server/requirements.txt'

- name: Download frontend build
uses: actions/download-artifact@v4
with:
name: frontend-build
path: server/static

- name: Install Python Packages
run: python -m pip install -r server/requirements.txt

- name: Build DigiScript with build script
run: python dist/build_digiscript.py --onefile --name DigiScript-${{ matrix.platform }}
shell: bash

- name: Create ZIP package
run: |
mkdir -p artifacts
Expand All @@ -81,33 +97,39 @@ jobs:
zip DigiScript-${{ matrix.platform }}.zip DigiScript-${{ matrix.platform }}${{ matrix.artifact_extension }}
fi
shell: bash
- name: Upload executable

- name: Upload executable artifact
uses: actions/upload-artifact@v4
with:
name: DigiScript-${{ matrix.platform }}
path: artifacts/DigiScript-${{ matrix.platform }}${{ matrix.artifact_extension }}
- name: Upload ZIP package
retention-days: 7

- name: Upload ZIP artifact
uses: actions/upload-artifact@v4
with:
name: DigiScript-${{ matrix.platform }}-zip
path: artifacts/DigiScript-${{ matrix.platform }}.zip
create-release:
needs: build-executables
retention-days: 7

upload-server-to-release:
name: Upload Server Executables to Release
needs: build-server-executables
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create release
uses: softprops/action-gh-release@v1

- name: Upload to release
uses: softprops/action-gh-release@v2
with:
files: |
artifacts/DigiScript-linux-zip/DigiScript-linux.zip
artifacts/DigiScript-windows-zip/DigiScript-windows.zip
artifacts/DigiScript-macos-zip/DigiScript-macos.zip
draft: false
prerelease: false
generate_release_notes: true
token: ${{ secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
14 changes: 14 additions & 0 deletions .github/workflows/nodelint.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
name: Lint & Format (ESLint + Prettier)
permissions:
contents: read

on: [push]

Expand All @@ -15,3 +17,15 @@ jobs:
node-version: 24
- run: npm ci
- run: npm run ci-lint
run-node-lint-electron:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./electron
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 24
- run: npm ci
- run: npm run ci-lint
48 changes: 48 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Create Release

on:
push:
tags: ['v*']

permissions:
contents: write

jobs:
create-release:
name: Create GitHub Release
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Create release
uses: softprops/action-gh-release@v2
with:
draft: false
prerelease: false
generate_release_notes: true
token: ${{ secrets.GITHUB_TOKEN }}
body: |
## DigiScript Release ${{ github.ref_name }}

This release includes both the server application and Electron desktop clients.

### Server Application
- **Linux**: Download `DigiScript-linux.zip`
- **Windows**: Download `DigiScript-windows.zip`
- **macOS**: Download `DigiScript-macos.zip`

### Electron Desktop Application
- **Windows**: Download and run the `.exe` installer
- **macOS**: Download the `.zip`, extract, and move DigiScript.app to Applications
- **Linux (Debian/Ubuntu)**: Download and install the `.deb` package
- **Linux (RedHat/Fedora)**: Download and install the `.rpm` package

### Important Notes
- Electron desktop apps require exact version match with server
- First launch of desktop app will prompt for server connection details
- Use mDNS discovery to find servers on your local network

---

See below for detailed release notes.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
CLAUDE.md
.idea/
.playwright-mcp/
PLAN.md

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
Expand Down
2 changes: 2 additions & 0 deletions .idea/DigiScript-2.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions client/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@ public/docs/

# Test output
junit/
dist-electron/
Loading
Loading