Skip to content

feat(ui): adaptive widescreen/tablet layout overhaul #174

feat(ui): adaptive widescreen/tablet layout overhaul

feat(ui): adaptive widescreen/tablet layout overhaul #174

Workflow file for this run

name: CI
on:
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
jobs:
translations_drift:
name: en.json drift
# Source-bypass guard: the committed English JSON under
# common/assets/translations/*/en.json is generated from the pinned
# deps/translate submodule's v6/*.strings. Regenerate and fail if they
# differ, so a string can never reach the app without coming from source
# (this is the bypass that shipped the June family strings as English).
# Pure python3, so it runs on ubuntu-latest off the self-hosted pool.
runs-on: ubuntu-latest
timeout-minutes: 10
if: >-
github.event_name == 'workflow_dispatch' ||
github.event.pull_request.head.repo.full_name == github.repository
env:
# convert.py writes raw UTF-8 via the locale's preferred encoding; pin a
# UTF-8 locale so non-ASCII source strings round-trip byte-for-byte.
LANG: C.UTF-8
LC_ALL: C.UTF-8
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 1
# Only deps/translate is needed; avoid cloning the heavy sibling
# submodules (wireguard-apple, etc.) that the build jobs require.
- name: Init deps/translate submodule
run: git submodule update --init --depth 1 deps/translate
- name: Regenerate en.json from pinned source strings
working-directory: deps/translate/scripts
run: |
set -euo pipefail
out="$GITHUB_WORKSPACE/common/assets/translations"
python3 ./convert.py -i ../v6/Ui.strings -o "$out/ui/en.json" -f flutter
python3 ./convert.py -i ../v6/Packs.strings -o "$out/packs/en.json" -f flutter
python3 ./convert.py -i ../v6/PackTags.strings -o "$out/packtags/en.json" -f flutter
- name: Fail if regenerated en.json differs from committed
run: |
git diff --exit-code -- \
common/assets/translations/ui/en.json \
common/assets/translations/packs/en.json \
common/assets/translations/packtags/en.json
flutter_analyze:
name: Flutter analyze
runs-on: [self-hosted, macOS, ARM64, build-only]
timeout-minutes: 45
# Skip for the automated translations-sync PRs: a translation-only diff
# can't affect the binary, so don't tie up the self-hosted pool on them.
if: >-
(github.event_name == 'workflow_dispatch' ||
github.event.pull_request.head.repo.full_name == github.repository) &&
!startsWith(github.head_ref, 'automation/translations-sync/')
env:
LANG: en_US.UTF-8
LC_ALL: en_US.UTF-8
steps:
- uses: actions/checkout@v7
with:
submodules: recursive
fetch-depth: 1
- name: Analyze Flutter module
working-directory: common
run: |
make pub gen
fvm flutter analyze --no-fatal-warnings --no-fatal-infos
ios_build:
name: iOS build
runs-on: [self-hosted, macOS, ARM64, build-only]
timeout-minutes: 120
# Skip for the automated translations-sync PRs: a translation-only diff
# can't affect the binary, so don't tie up the self-hosted pool on them.
if: >-
(github.event_name == 'workflow_dispatch' ||
github.event.pull_request.head.repo.full_name == github.repository) &&
!startsWith(github.head_ref, 'automation/translations-sync/')
env:
LANG: en_US.UTF-8
LC_ALL: en_US.UTF-8
SHOW_XCODE_LOG: "0"
steps:
- uses: actions/checkout@v7
with:
submodules: recursive
fetch-depth: 1
- name: Bootstrap Flutter common lib
# Builds the add-to-app xcframeworks the host project embeds.
run: make -C common build-ios
- name: Build iOS six debug
run: make -C ios check CHECK_SCHEME=Dev CHECK_CONFIG=Debug
- name: Build iOS family debug
run: make -C ios check CHECK_SCHEME=FamilyDev CHECK_CONFIG=Debug
android_assemble:
name: Android assemble
runs-on: [self-hosted, macOS, ARM64, build-only]
timeout-minutes: 120
# Skip for the automated translations-sync PRs: a translation-only diff
# can't affect the binary, so don't tie up the self-hosted pool on them.
if: >-
(github.event_name == 'workflow_dispatch' ||
github.event.pull_request.head.repo.full_name == github.repository) &&
!startsWith(github.head_ref, 'automation/translations-sync/')
env:
LANG: en_US.UTF-8
LC_ALL: en_US.UTF-8
GRADLE_OPTS: -Dorg.gradle.unsafe.disable.watch-fs=true -Dorg.gradle.vfs.watch=false
steps:
- uses: actions/checkout@v7
with:
submodules: recursive
fetch-depth: 1
- name: Build Flutter Android debug library
run: make regen-android
- name: Assemble Android debug apps
run: make -C android apk-family-debug apk-six-debug