Skip to content

Commit 5a7ef1d

Browse files
authored
chore: prepare for v0.2.0 release (#27)
* chore: prepare for v0.2.0 release - Rebrand to Xe Launcher with proper identity (dev.xe.launcher.app) - Add complete GitHub Actions release infrastructure - Clean up development artifacts and test directories - Update documentation with proper branding and URLs - Add CONTRIBUTING.md and CHANGELOG.md - Configure build settings for all platforms - Add release script for version management - Part of the Xenon project at https://xe.dev * fix: apply rustfmt to pass lint checks * fix: address clippy warnings for clean build - Fix redundant closures and string replacements - Remove unused acl_manifest module - Prefix unused fields with underscore - Add allow attributes for intentional patterns - Clean up code for release readiness * fix: resolve conflicting Default implementations
1 parent 5f2431b commit 5a7ef1d

126 files changed

Lines changed: 5766 additions & 3829 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name: Build
2+
3+
on:
4+
push:
5+
branches: [main, develop]
6+
pull_request:
7+
branches: [main, develop]
8+
workflow_dispatch:
9+
10+
env:
11+
CARGO_INCREMENTAL: 0
12+
CARGO_NET_RETRY: 10
13+
RUST_BACKTRACE: short
14+
RUSTUP_MAX_RETRIES: 10
15+
16+
jobs:
17+
test:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- uses: actions/checkout@v4
21+
22+
- name: Setup Bun
23+
uses: oven-sh/setup-bun@v2
24+
with:
25+
bun-version: latest
26+
27+
- name: Install dependencies
28+
run: bun install
29+
30+
- name: Run frontend tests
31+
run: bun test
32+
continue-on-error: true
33+
34+
build:
35+
strategy:
36+
fail-fast: false
37+
matrix:
38+
platform: [macos-latest, ubuntu-22.04, windows-latest]
39+
40+
runs-on: ${{ matrix.platform }}
41+
steps:
42+
- uses: actions/checkout@v4
43+
44+
- name: Setup Bun
45+
uses: oven-sh/setup-bun@v2
46+
with:
47+
bun-version: latest
48+
49+
- name: Setup Rust
50+
uses: dtolnay/rust-toolchain@stable
51+
52+
- name: Install dependencies (Ubuntu)
53+
if: matrix.platform == 'ubuntu-22.04'
54+
run: |
55+
sudo apt-get update
56+
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
57+
58+
- name: Install frontend dependencies
59+
run: bun install
60+
61+
- name: Build frontend
62+
run: bun run build
63+
64+
- name: Build Tauri app (no bundle)
65+
run: |
66+
cd apps/desktop
67+
bun tauri build --no-bundle
68+
69+
- name: Upload artifacts
70+
uses: actions/upload-artifact@v4
71+
with:
72+
name: build-${{ matrix.platform }}
73+
path: |
74+
apps/desktop/src-tauri/target/release/xe-launcher
75+
apps/desktop/src-tauri/target/release/xe-launcher.exe
76+
apps/desktop/src-tauri/target/release/bundle/
77+
78+
lint:
79+
runs-on: ubuntu-latest
80+
steps:
81+
- uses: actions/checkout@v4
82+
83+
- name: Setup Bun
84+
uses: oven-sh/setup-bun@v2
85+
with:
86+
bun-version: latest
87+
88+
- name: Setup Rust
89+
uses: dtolnay/rust-toolchain@stable
90+
with:
91+
components: rustfmt, clippy
92+
93+
- name: Install dependencies
94+
run: bun install
95+
96+
- name: Check Rust formatting
97+
run: |
98+
cd apps/desktop/src-tauri
99+
cargo fmt -- --check
100+
101+
- name: Run Clippy
102+
run: |
103+
cd apps/desktop/src-tauri
104+
cargo clippy -- -D warnings
105+
continue-on-error: true
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
name: Self-Hosted Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: 'Version to release (e.g., 1.0.0-beta.1)'
8+
required: true
9+
type: string
10+
11+
env:
12+
CARGO_INCREMENTAL: 0
13+
CARGO_NET_RETRY: 10
14+
RUST_BACKTRACE: short
15+
RUSTUP_MAX_RETRIES: 10
16+
17+
jobs:
18+
create-release:
19+
runs-on: ubuntu-latest
20+
outputs:
21+
release_id: ${{ steps.create-release.outputs.id }}
22+
release_upload_url: ${{ steps.create-release.outputs.upload_url }}
23+
steps:
24+
- uses: actions/checkout@v4
25+
26+
- name: Create tag
27+
run: |
28+
git config user.name github-actions
29+
git config user.email github-actions@github.com
30+
git tag -a "v${{ inputs.version }}" -m "Release v${{ inputs.version }}"
31+
git push origin "v${{ inputs.version }}"
32+
33+
- name: Create Release
34+
id: create-release
35+
uses: actions/create-release@v1
36+
env:
37+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38+
with:
39+
tag_name: v${{ inputs.version }}
40+
release_name: XE Launcher v${{ inputs.version }}
41+
draft: true
42+
prerelease: ${{ contains(inputs.version, 'beta') || contains(inputs.version, 'alpha') }}
43+
body: |
44+
## What's New
45+
46+
<!-- Add release notes here -->
47+
48+
## Installation
49+
50+
### macOS
51+
- **Intel**: Download `XE-Launcher_x64.dmg`
52+
- **Apple Silicon**: Download `XE-Launcher_aarch64.dmg`
53+
54+
### Windows
55+
- Download `XE-Launcher_x64_en-US.msi`
56+
57+
### Linux
58+
- **AppImage**: Download `xe-launcher_amd64.AppImage`
59+
- **Debian/Ubuntu**: Download `xe-launcher_amd64.deb`
60+
- **Red Hat/Fedora**: Download `xe-launcher.x86_64.rpm`
61+
62+
## Auto-Update
63+
64+
This release supports auto-updates. Once installed, the app will automatically check for and install future updates.
65+
66+
build-tauri:
67+
needs: create-release
68+
strategy:
69+
fail-fast: false
70+
matrix:
71+
include:
72+
- platform: 'macos-latest'
73+
rust_target: 'x86_64-apple-darwin'
74+
- platform: 'macos-latest'
75+
rust_target: 'aarch64-apple-darwin'
76+
- platform: 'ubuntu-22.04'
77+
rust_target: 'x86_64-unknown-linux-gnu'
78+
- platform: 'windows-latest'
79+
rust_target: 'x86_64-pc-windows-msvc'
80+
81+
runs-on: ${{ matrix.platform }}
82+
steps:
83+
- uses: actions/checkout@v4
84+
85+
- name: Setup Bun
86+
uses: oven-sh/setup-bun@v2
87+
with:
88+
bun-version: latest
89+
90+
- name: Setup Rust
91+
uses: dtolnay/rust-toolchain@stable
92+
with:
93+
targets: ${{ matrix.rust_target }}
94+
95+
- name: Install dependencies (Ubuntu)
96+
if: matrix.platform == 'ubuntu-22.04'
97+
run: |
98+
sudo apt-get update
99+
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
100+
101+
- name: Install frontend dependencies
102+
run: bun install
103+
104+
- name: Setup Apple certificate
105+
if: matrix.platform == 'macos-latest'
106+
env:
107+
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
108+
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
109+
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
110+
run: |
111+
echo $APPLE_CERTIFICATE | base64 --decode > certificate.p12
112+
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
113+
security default-keychain -s build.keychain
114+
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
115+
security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
116+
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain
117+
118+
- name: Update version in tauri.conf.json
119+
run: |
120+
cd apps/desktop/src-tauri
121+
jq '.version = "${{ inputs.version }}"' tauri.conf.json > tauri.conf.tmp.json
122+
mv tauri.conf.tmp.json tauri.conf.json
123+
124+
- name: Build Tauri app
125+
uses: tauri-apps/tauri-action@v0
126+
env:
127+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
128+
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
129+
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
130+
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
131+
APPLE_ID: ${{ secrets.APPLE_ID }}
132+
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
133+
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
134+
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
135+
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
136+
with:
137+
projectPath: apps/desktop
138+
args: --target ${{ matrix.rust_target }}
139+
releaseId: ${{ needs.create-release.outputs.release_id }}
140+
141+
publish-release:
142+
runs-on: ubuntu-latest
143+
needs: [create-release, build-tauri]
144+
steps:
145+
- name: Publish release
146+
uses: actions/github-script@v7
147+
with:
148+
github-token: ${{ secrets.GITHUB_TOKEN }}
149+
script: |
150+
github.rest.repos.updateRelease({
151+
owner: context.repo.owner,
152+
repo: context.repo.repo,
153+
release_id: ${{ needs.create-release.outputs.release_id }},
154+
draft: false
155+
})
156+
157+
create-update-manifest:
158+
runs-on: ubuntu-latest
159+
needs: [publish-release]
160+
steps:
161+
- uses: actions/checkout@v4
162+
163+
- name: Generate update manifest
164+
run: |
165+
# This will be called by the update-manifest workflow
166+
echo "Update manifest will be generated by separate workflow"

0 commit comments

Comments
 (0)