Skip to content

Commit d0f5db5

Browse files
authored
Merge pull request #5 from forwardemail/feat/cherry-pick-webmail-tauri
feat: websocket support, app lock and initial tauri additions
2 parents 12aa9de + 278a35c commit d0f5db5

76 files changed

Lines changed: 18518 additions & 166 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
name: Build Desktop (Tauri)
2+
3+
on:
4+
push:
5+
branches: [main, develop]
6+
paths:
7+
- 'src-tauri/**'
8+
- 'src/**'
9+
- 'package.json'
10+
- 'pnpm-lock.yaml'
11+
pull_request:
12+
branches: [main]
13+
paths:
14+
- 'src-tauri/**'
15+
- 'src/**'
16+
- 'package.json'
17+
- 'pnpm-lock.yaml'
18+
workflow_dispatch:
19+
20+
# Minimal permissions — only what's needed for CI builds
21+
permissions:
22+
contents: read
23+
24+
concurrency:
25+
group: ${{ github.workflow }}-${{ github.ref }}
26+
cancel-in-progress: true
27+
28+
env:
29+
CARGO_INCREMENTAL: 0
30+
RUST_BACKTRACE: short
31+
NODE_VERSION: '22'
32+
PNPM_VERSION: '9'
33+
34+
jobs:
35+
# Supply chain audit job — runs before builds
36+
audit:
37+
runs-on: ubuntu-22.04
38+
name: Security Audit
39+
steps:
40+
- name: Checkout
41+
uses: actions/checkout@v4
42+
43+
- name: Setup Node.js
44+
uses: actions/setup-node@v4
45+
with:
46+
node-version: ${{ env.NODE_VERSION }}
47+
48+
- name: Setup pnpm
49+
uses: pnpm/action-setup@v4
50+
with:
51+
version: ${{ env.PNPM_VERSION }}
52+
53+
- name: Install dependencies
54+
run: pnpm install --frozen-lockfile
55+
56+
- name: npm audit (production)
57+
run: pnpm audit --prod
58+
continue-on-error: true
59+
60+
- name: Install Rust stable
61+
uses: dtolnay/rust-toolchain@stable
62+
63+
- name: Install cargo-audit
64+
run: cargo install cargo-audit
65+
66+
- name: Cargo audit
67+
run: cd src-tauri && cargo audit
68+
continue-on-error: true
69+
70+
build:
71+
needs: audit
72+
strategy:
73+
fail-fast: false
74+
matrix:
75+
include:
76+
- platform: macos-latest
77+
target: aarch64-apple-darwin
78+
label: macOS-arm64
79+
- platform: macos-latest
80+
target: x86_64-apple-darwin
81+
label: macOS-x64
82+
- platform: ubuntu-22.04
83+
target: x86_64-unknown-linux-gnu
84+
label: Linux-x64
85+
- platform: windows-latest
86+
target: x86_64-pc-windows-msvc
87+
label: Windows-x64
88+
89+
runs-on: ${{ matrix.platform }}
90+
name: Build (${{ matrix.label }})
91+
92+
steps:
93+
- name: Checkout
94+
uses: actions/checkout@v4
95+
96+
- name: Install Rust stable
97+
uses: dtolnay/rust-toolchain@stable
98+
with:
99+
targets: ${{ matrix.target }}
100+
101+
- name: Rust cache
102+
uses: swatinem/rust-cache@v2
103+
with:
104+
workspaces: src-tauri -> target
105+
106+
- name: Install Linux dependencies
107+
if: matrix.platform == 'ubuntu-22.04'
108+
run: |
109+
sudo apt-get update
110+
sudo apt-get install -y \
111+
libwebkit2gtk-4.1-dev \
112+
libappindicator3-dev \
113+
librsvg2-dev \
114+
patchelf \
115+
libssl-dev \
116+
libgtk-3-dev \
117+
libayatana-appindicator3-dev
118+
119+
- name: Setup Node.js
120+
uses: actions/setup-node@v4
121+
with:
122+
node-version: ${{ env.NODE_VERSION }}
123+
124+
- name: Setup pnpm
125+
uses: pnpm/action-setup@v4
126+
with:
127+
version: ${{ env.PNPM_VERSION }}
128+
129+
- name: Install dependencies
130+
run: pnpm install --frozen-lockfile
131+
132+
- name: Build Tauri app (unsigned CI)
133+
uses: tauri-apps/tauri-action@v0
134+
env:
135+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
136+
# Disable code signing for CI builds
137+
CSC_IDENTITY_AUTO_DISCOVERY: 'false'
138+
with:
139+
args: --target ${{ matrix.target }}
140+
141+
- name: Upload artifacts
142+
uses: actions/upload-artifact@v4
143+
with:
144+
name: desktop-${{ matrix.label }}
145+
path: |
146+
src-tauri/target/${{ matrix.target }}/release/bundle/**/*.dmg
147+
src-tauri/target/${{ matrix.target }}/release/bundle/**/*.app.tar.gz
148+
src-tauri/target/${{ matrix.target }}/release/bundle/**/*.deb
149+
src-tauri/target/${{ matrix.target }}/release/bundle/**/*.AppImage
150+
src-tauri/target/${{ matrix.target }}/release/bundle/**/*.msi
151+
src-tauri/target/${{ matrix.target }}/release/bundle/**/*.exe
152+
src-tauri/target/${{ matrix.target }}/release/bundle/**/*.nsis.zip
153+
retention-days: 7

.github/workflows/build-mobile.yml

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
name: Build Mobile (Tauri)
2+
3+
on:
4+
push:
5+
branches: [main, develop]
6+
paths:
7+
- 'src-tauri/**'
8+
- 'src/**'
9+
- 'package.json'
10+
- 'pnpm-lock.yaml'
11+
pull_request:
12+
branches: [main]
13+
paths:
14+
- 'src-tauri/**'
15+
- 'src/**'
16+
- 'package.json'
17+
- 'pnpm-lock.yaml'
18+
workflow_dispatch:
19+
20+
# Minimal permissions for CI builds
21+
permissions:
22+
contents: read
23+
24+
concurrency:
25+
group: ${{ github.workflow }}-${{ github.ref }}
26+
cancel-in-progress: true
27+
28+
env:
29+
CARGO_INCREMENTAL: 0
30+
RUST_BACKTRACE: short
31+
NODE_VERSION: '22'
32+
PNPM_VERSION: '9'
33+
34+
jobs:
35+
android:
36+
runs-on: ubuntu-22.04
37+
name: Build Android (APK)
38+
39+
steps:
40+
- name: Checkout
41+
uses: actions/checkout@v4
42+
43+
- name: Install Rust stable
44+
uses: dtolnay/rust-toolchain@stable
45+
with:
46+
targets: aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android
47+
48+
- name: Rust cache
49+
uses: swatinem/rust-cache@v2
50+
with:
51+
workspaces: src-tauri -> target
52+
53+
- name: Install Linux dependencies
54+
run: |
55+
sudo apt-get update
56+
sudo apt-get install -y \
57+
libwebkit2gtk-4.1-dev \
58+
libappindicator3-dev \
59+
librsvg2-dev \
60+
patchelf \
61+
libssl-dev \
62+
libgtk-3-dev
63+
64+
- name: Setup Java
65+
uses: actions/setup-java@v4
66+
with:
67+
distribution: temurin
68+
java-version: 17
69+
70+
- name: Setup Android SDK
71+
uses: android-actions/setup-android@v3
72+
73+
- name: Install Android NDK
74+
run: sdkmanager "ndk;27.0.12077973"
75+
76+
- name: Setup Node.js
77+
uses: actions/setup-node@v4
78+
with:
79+
node-version: ${{ env.NODE_VERSION }}
80+
81+
- name: Setup pnpm
82+
uses: pnpm/action-setup@v4
83+
with:
84+
version: ${{ env.PNPM_VERSION }}
85+
86+
- name: Install dependencies
87+
run: pnpm install --frozen-lockfile
88+
89+
- name: Initialize Android project
90+
run: pnpm tauri android init
91+
92+
- name: Build Android APK (debug)
93+
env:
94+
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/27.0.12077973
95+
run: pnpm tauri android build --debug
96+
97+
- name: Upload Android APK
98+
uses: actions/upload-artifact@v4
99+
with:
100+
name: android-debug-apk
101+
path: |
102+
src-tauri/gen/android/app/build/outputs/apk/**/*.apk
103+
retention-days: 7
104+
105+
ios:
106+
runs-on: macos-latest
107+
name: Build iOS (unsigned)
108+
109+
steps:
110+
- name: Checkout
111+
uses: actions/checkout@v4
112+
113+
- name: Install Rust stable
114+
uses: dtolnay/rust-toolchain@stable
115+
with:
116+
targets: aarch64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-ios
117+
118+
- name: Rust cache
119+
uses: swatinem/rust-cache@v2
120+
with:
121+
workspaces: src-tauri -> target
122+
123+
- name: Setup Node.js
124+
uses: actions/setup-node@v4
125+
with:
126+
node-version: ${{ env.NODE_VERSION }}
127+
128+
- name: Setup pnpm
129+
uses: pnpm/action-setup@v4
130+
with:
131+
version: ${{ env.PNPM_VERSION }}
132+
133+
- name: Install dependencies
134+
run: pnpm install --frozen-lockfile
135+
136+
- name: Initialize iOS project
137+
run: pnpm tauri ios init
138+
139+
- name: Build iOS (debug, simulator)
140+
run: pnpm tauri ios build --debug
141+
continue-on-error: true
142+
143+
- name: Upload iOS build
144+
uses: actions/upload-artifact@v4
145+
if: success()
146+
with:
147+
name: ios-debug-build
148+
path: |
149+
src-tauri/gen/apple/build/**/*.app
150+
retention-days: 7

0 commit comments

Comments
 (0)