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
12 changes: 11 additions & 1 deletion .github/workflows/build-nightly-apk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
paths:
- 'app/**'
- 'shared/**'
- 'extensions/**'
- 'pi-bridge/**'
- 'packages/extension-api/**'
- 'third_party/termux/terminal-emulator/**'
Expand Down Expand Up @@ -36,6 +37,13 @@ jobs:
distribution: temurin
java-version: '17'

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22.19.0'
cache: npm
cache-dependency-path: pi-bridge/package-lock.json

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
with:
Expand All @@ -44,6 +52,8 @@ jobs:

- name: Set up Android SDK
uses: android-actions/setup-android@v4
with:
packages: platform-tools

- name: Make Gradle executable
run: chmod +x ./gradlew
Expand Down Expand Up @@ -85,4 +95,4 @@ jobs:
uses: actions/upload-artifact@v7
with:
name: Aether-nightly
path: dist/nightly/*.apk
path: dist/nightly/*.apk
86 changes: 65 additions & 21 deletions .github/workflows/pr-check.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
name: PR Check

on:
workflow_dispatch:
pull_request:

permissions:
Expand All @@ -16,26 +15,19 @@ jobs:
changes:
runs-on: ubuntu-latest
outputs:
android: ${{ steps.manual.outputs.android || steps.filter.outputs.android }}
ios: ${{ steps.manual.outputs.ios || steps.filter.outputs.ios }}
android: ${{ steps.filter.outputs.android }}
ios: ${{ steps.filter.outputs.ios }}
node: ${{ steps.filter.outputs.node }}
steps:
- name: Run all checks for manual dispatch
id: manual
if: github.event_name == 'workflow_dispatch'
shell: bash
run: |
echo "android=true" >> "$GITHUB_OUTPUT"
echo "ios=true" >> "$GITHUB_OUTPUT"

- name: Detect changed areas
id: filter
if: github.event_name == 'pull_request'
uses: dorny/paths-filter@v3
uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4
with:
filters: |
android:
- 'app/**'
- 'shared/**'
- 'extensions/**'
- 'pi-bridge/**'
- 'packages/extension-api/**'
- 'third_party/termux/**'
Expand All @@ -49,6 +41,7 @@ jobs:
- '.github/workflows/pr-check.yml'
ios:
- 'shared/**'
- 'extensions/**'
- 'pi-bridge/**'
- 'packages/extension-api/**'
- 'build.gradle.kts'
Expand All @@ -60,17 +53,59 @@ jobs:
- 'scripts/bootstrap-ios.sh'
- 'scripts/prepare-ios-runtime.sh'
- 'scripts/build-ios-ish-runtime.sh'
- 'third_party/ish-arm64'
- 'third_party/ish-arm64/**'
- '.gitmodules'
- 'LICENSE'
- 'THIRD_PARTY_NOTICES.md'
- 'app/src/main/assets/fonts/JetBrainsMono-Regular.ttf'
- '.github/workflows/pr-check.yml'
node:
- 'extensions/**'
- 'pi-bridge/**'
- 'packages/extension-api/**'
- '.github/workflows/pr-check.yml'

node:
needs: changes
if: ${{ needs.changes.outputs.node == 'true' }}
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v7
with:
persist-credentials: false

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22.19.0'
cache: npm
cache-dependency-path: |
pi-bridge/package-lock.json
packages/extension-api/package-lock.json

- name: Check Pi Bridge types
working-directory: pi-bridge
run: |
npm ci --ignore-scripts --legacy-peer-deps
npm run check

- name: Test Pi Bridge
working-directory: pi-bridge
run: npm test

- name: Check Extension API
working-directory: packages/extension-api
run: |
npm ci --ignore-scripts
npm run check

android:
needs: changes
if: ${{ github.event_name == 'workflow_dispatch' || needs.changes.outputs.android == 'true' }}
if: ${{ needs.changes.outputs.android == 'true' }}
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v7
Expand All @@ -83,14 +118,23 @@ jobs:
distribution: temurin
java-version: '17'

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22.19.0'
cache: npm
cache-dependency-path: pi-bridge/package-lock.json

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
with:
cache-provider: enhanced
cache-read-only: false
cache-read-only: true

- name: Set up Android SDK
uses: android-actions/setup-android@v4
with:
packages: platform-tools

- name: Make Gradle executable
run: chmod +x ./gradlew
Expand All @@ -111,20 +155,20 @@ jobs:

ios:
needs: changes
if: ${{ github.event_name == 'workflow_dispatch' || needs.changes.outputs.ios == 'true' }}
if: ${{ needs.changes.outputs.ios == 'true' }}
runs-on: macos-26
timeout-minutes: 60
env:
DEVELOPER_DIR: /Applications/Xcode_26.6.app/Contents/Developer
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
submodules: recursive
persist-credentials: false

- name: Set up JDK 17
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '17'
Expand All @@ -140,7 +184,7 @@ jobs:
uses: gradle/actions/setup-gradle@v6
with:
cache-provider: enhanced
cache-read-only: false
cache-read-only: true

- name: Install iOS build tools
run: brew install llvm lld meson ninja xcodegen
Expand All @@ -163,4 +207,4 @@ jobs:
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro,OS=26.5' \
CODE_SIGNING_ALLOWED=NO \
build
build
29 changes: 15 additions & 14 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ android {

buildTypes {
debug {
applicationIdSuffix = ".debug"
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher"
manifestPlaceholders["appRoundIcon"] = "@mipmap/ic_launcher_round"
manifestPlaceholders["appLabel"] = "@string/app_name"
Expand All @@ -168,10 +169,22 @@ android {
buildConfigField("Boolean", "SHOWCASE_MODE", "true")
}

release {
isMinifyEnabled = true
isShrinkResources = true
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher"
manifestPlaceholders["appRoundIcon"] = "@mipmap/ic_launcher_round"
manifestPlaceholders["appLabel"] = "@string/app_name"
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}

create("nightly") {
initWith(getByName("debug"))
initWith(getByName("release"))
Comment thread
coderabbitai[bot] marked this conversation as resolved.
applicationIdSuffix = ".nightly"
matchingFallbacks += listOf("debug")
matchingFallbacks += listOf("release")
resValue("string", "nightly_app_name", "Aether Nightly")
buildConfigField("String", "UPDATE_CHANNEL", "\"nightly\"")
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher_nightly"
Expand All @@ -183,18 +196,6 @@ android {
signingConfigs.getByName("debug")
}
}

release {
isMinifyEnabled = true
isShrinkResources = true
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher"
manifestPlaceholders["appRoundIcon"] = "@mipmap/ic_launcher_round"
manifestPlaceholders["appLabel"] = "@string/app_name"
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}

compileOptions {
Expand Down
Loading