diff --git a/.github/workflows/flutter_ci.yaml b/.github/workflows/flutter_ci.yaml
index 72e169ca708a..4d931a1fbec9 100644
--- a/.github/workflows/flutter_ci.yaml
+++ b/.github/workflows/flutter_ci.yaml
@@ -22,15 +22,17 @@ on:
- "!frontend/appflowy_tauri/**"
env:
+ CARGO_TERM_COLOR: always
FLUTTER_VERSION: "3.10.1"
RUST_TOOLCHAIN: "1.70"
+ CARGO_MAKE_VERSION: "0.36.6"
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
- build:
+ prepare:
if: github.event.pull_request.draft != true
strategy:
fail-fast: false
@@ -83,21 +85,20 @@ jobs:
prefix-key: ${{ matrix.os }}
workspaces: |
frontend/rust-lib
+ cache-all-crates: true
- - uses: davidB/rust-cargo-make@v1
+ - uses: taiki-e/install-action@v2
with:
- version: '0.36.6'
+ tool: cargo-make@${{ env.CARGO_MAKE_VERSION }}, duckscript_cli
- name: Install prerequisites
working-directory: frontend
run: |
- cargo install --force duckscript_cli
if [ "$RUNNER_OS" == "Linux" ]; then
sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
sudo apt-get update
- sudo apt-get install -y dart curl build-essential libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev
- sudo apt-get install keybinder-3.0 libnotify-dev
+ sudo apt-get install -y dart curl build-essential libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev keybinder-3.0 libnotify-dev
elif [ "$RUNNER_OS" == "Windows" ]; then
vcpkg integrate install
elif [ "$RUNNER_OS" == "macOS" ]; then
@@ -106,6 +107,171 @@ jobs:
cargo make appflowy-flutter-deps-tools
shell: bash
+ - name: Build AppFlowy
+ working-directory: frontend
+ run: |
+ cargo make --profile ${{ matrix.flutter_profile }} appflowy-core-dev
+
+ - name: Run code generation
+ working-directory: frontend
+ run: |
+ cargo make code_generation
+
+ - name: Flutter Analyzer
+ working-directory: frontend/appflowy_flutter
+ run: |
+ flutter analyze .
+
+ - name: Compress appflowy_flutter
+ run: tar -czf appflowy_flutter.tar.gz frontend/appflowy_flutter
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: ${{ github.run_id }}-${{ matrix.os }}
+ path: appflowy_flutter.tar.gz
+
+ unit_test:
+ needs: [prepare]
+ if: github.event.pull_request.draft != true
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest, macos-latest, windows-latest]
+ include:
+ - os: ubuntu-latest
+ flutter_profile: development-linux-x86_64
+ target: x86_64-unknown-linux-gnu
+ - os: macos-latest
+ flutter_profile: development-mac-x86_64
+ target: x86_64-apple-darwin
+ - os: windows-latest
+ flutter_profile: development-windows-x86
+ target: x86_64-pc-windows-msvc
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: Checkout source code
+ uses: actions/checkout@v2
+
+ - name: Install Rust toolchain
+ id: rust_toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ env.RUST_TOOLCHAIN }}
+ target: ${{ matrix.target }}
+ override: true
+ profile: minimal
+
+ - name: Install flutter
+ id: flutter
+ uses: subosito/flutter-action@v2
+ with:
+ channel: "stable"
+ flutter-version: ${{ env.FLUTTER_VERSION }}
+ cache: true
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ prefix-key: ${{ matrix.os }}
+ workspaces: |
+ frontend/rust-lib
+ cache-all-crates: true
+
+ - uses: taiki-e/install-action@v2
+ with:
+ tool: cargo-make@${{ env.CARGO_MAKE_VERSION }}, duckscript_cli
+
+ - name: Install prerequisites
+ working-directory: frontend
+ run: |
+ if [ "$RUNNER_OS" == "macOS" ]; then
+ cargo make appflowy-flutter-deps-tools
+ fi
+ shell: bash
+
+ - uses: actions/download-artifact@v3
+ with:
+ name: ${{ github.run_id }}-${{ matrix.os }}
+
+ - name: Uncompress appflowy_flutter
+ run: tar -xf appflowy_flutter.tar.gz
+
+ - name: Run Flutter unit tests
+ working-directory: frontend
+ run: |
+ if [ "$RUNNER_OS" == "macOS" ]; then
+ cargo make dart_unit_test
+ else
+ cargo make dart_unit_test_no_build
+ fi
+ shell: bash
+
+ - name: Upload coverage to Codecov
+ uses: Wandalen/wretry.action@v1.0.36
+ with:
+ action: codecov/codecov-action@v3
+ with: |
+ name: appflowy
+ flags: appflowy_flutter_unit_test
+ fail_ci_if_error: true
+ verbose: true
+ os: ${{ matrix.os }}
+ token: ${{ secrets.CODECOV_TOKEN }}
+ attempt_limit: 20
+ attempt_delay: 10000
+
+ integration_test:
+ needs: [prepare]
+ if: github.event.pull_request.draft != true
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest,windows-latest]
+ include:
+ - os: ubuntu-latest
+ flutter_profile: development-linux-x86_64
+ target: x86_64-unknown-linux-gnu
+ - os: windows-latest
+ flutter_profile: development-windows-x86
+ target: x86_64-pc-windows-msvc
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: Checkout source code
+ uses: actions/checkout@v2
+
+ - name: Install Rust toolchain
+ id: rust_toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ env.RUST_TOOLCHAIN }}
+ target: ${{ matrix.target }}
+ override: true
+ profile: minimal
+
+ - name: Install flutter
+ id: flutter
+ uses: subosito/flutter-action@v2
+ with:
+ channel: "stable"
+ flutter-version: ${{ env.FLUTTER_VERSION }}
+ cache: true
+
+ - uses: taiki-e/install-action@v2
+ with:
+ tool: cargo-make@${{ env.CARGO_MAKE_VERSION }}
+
+ - name: Install prerequisites
+ working-directory: frontend
+ run: |
+ if [ "$RUNNER_OS" == "Linux" ]; then
+ sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
+ sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
+ sudo apt-get update
+ sudo apt-get install -y dart curl build-essential libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev keybinder-3.0 libnotify-dev
+ fi
+ shell: bash
+
- name: Enable Flutter Desktop
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
@@ -118,20 +284,33 @@ jobs:
fi
shell: bash
- - name: Build AppFlowy
+ - uses: actions/download-artifact@v3
+ with:
+ name: ${{ github.run_id }}-${{ matrix.os }}
+
+ - name: Uncompress appflowy_flutter
+ run: tar -xf appflowy_flutter.tar.gz
+
+ - name: Run code generation
+ if: matrix.os == 'windows-latest'
working-directory: frontend
run: |
- cargo make --profile ${{ matrix.flutter_profile }} appflowy-dev
+ cargo make code_generation
- - name: Flutter Analyzer
+ - name: Run Flutter integration tests
working-directory: frontend/appflowy_flutter
run: |
- flutter analyze .
-
- - name: Run Flutter unit tests
- working-directory: frontend
- run: |
- cargo make dart_unit_test
+ if [ "$RUNNER_OS" == "Linux" ]; then
+ export DISPLAY=:99
+ sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
+ sudo apt-get install network-manager
+ flutter test integration_test/runner.dart -d Linux --coverage
+ elif [ "$RUNNER_OS" == "macOS" ]; then
+ flutter test integration_test/runner.dart -d macOS --coverage
+ elif [ "$RUNNER_OS" == "Windows" ]; then
+ flutter test integration_test/runner.dart -d Windows --coverage
+ fi
+ shell: bash
- name: Upload coverage to Codecov
uses: Wandalen/wretry.action@v1.0.36
@@ -139,7 +318,7 @@ jobs:
action: codecov/codecov-action@v3
with: |
name: appflowy
- flags: appflowy_flutter_unit_test
+ flags: appflowy_flutter_integrateion_test
fail_ci_if_error: true
verbose: true
os: ${{ matrix.os }}
@@ -147,3 +326,87 @@ jobs:
attempt_limit: 20
attempt_delay: 10000
+ build:
+ needs: [prepare]
+ if: github.event.pull_request.draft != true
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest, macos-latest, windows-latest]
+ include:
+ - os: ubuntu-latest
+ flutter_profile: development-linux-x86_64
+ target: x86_64-unknown-linux-gnu
+ - os: macos-latest
+ flutter_profile: development-mac-x86_64
+ target: x86_64-apple-darwin
+ - os: windows-latest
+ flutter_profile: development-windows-x86
+ target: x86_64-pc-windows-msvc
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: Checkout source code
+ uses: actions/checkout@v2
+
+ - name: Install Rust toolchain
+ id: rust_toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ env.RUST_TOOLCHAIN }}
+ target: ${{ matrix.target }}
+ override: true
+ profile: minimal
+
+ - name: Install flutter
+ id: flutter
+ uses: subosito/flutter-action@v2
+ with:
+ channel: "stable"
+ flutter-version: ${{ env.FLUTTER_VERSION }}
+ cache: true
+
+ - uses: taiki-e/install-action@v2
+ with:
+ tool: cargo-make@${{ env.CARGO_MAKE_VERSION }}
+
+ - name: Install prerequisites
+ working-directory: frontend
+ run: |
+ if [ "$RUNNER_OS" == "Linux" ]; then
+ sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
+ sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
+ sudo apt-get update
+ sudo apt-get install -y dart curl build-essential libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev keybinder-3.0 libnotify-dev
+ fi
+ shell: bash
+
+ - name: Enable Flutter Desktop
+ run: |
+ if [ "$RUNNER_OS" == "Linux" ]; then
+ flutter config --enable-linux-desktop
+ elif [ "$RUNNER_OS" == "macOS" ]; then
+ flutter config --enable-macos-desktop
+ elif [ "$RUNNER_OS" == "Windows" ]; then
+ git config --system core.longpaths true
+ flutter config --enable-windows-desktop
+ fi
+ shell: bash
+
+ - uses: actions/download-artifact@v3
+ with:
+ name: ${{ github.run_id }}-${{ matrix.os }}
+
+ - name: Uncompress appflowy_flutter
+ run: tar -xf appflowy_flutter.tar.gz
+
+ - name: Run code generation
+ if: matrix.os == 'windows-latest'
+ working-directory: frontend
+ run: |
+ cargo make code_generation
+
+ - name: Build flutter product
+ working-directory: frontend
+ run: |
+ cargo make --profile ${{ matrix.flutter_profile }} appflowy-make-product-dev
diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml
deleted file mode 100644
index 76460117222b..000000000000
--- a/.github/workflows/integration_test.yml
+++ /dev/null
@@ -1,150 +0,0 @@
-name: integration test
-
-on:
- push:
- branches:
- - "main"
- - "release/*"
- paths:
- - ".github/workflows/integration_test.yml"
- - "frontend/**"
- - "!frontend/appflowy_tauri/**"
-
- pull_request:
- branches:
- - "main"
- - "release/*"
- paths:
- - ".github/workflows/integration_test.yml"
- - "frontend/**"
- - "!frontend/appflowy_tauri/**"
-
-env:
- CARGO_TERM_COLOR: always
- FLUTTER_VERSION: "3.10.1"
- RUST_TOOLCHAIN: "1.70"
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
- cancel-in-progress: true
-
-jobs:
- build:
- if: github.event.pull_request.draft != true
- strategy:
- fail-fast: false
- matrix:
- os: [ubuntu-latest, windows-latest]
- include:
- - os: ubuntu-latest
- flutter_profile: development-linux-x86_64
- target: x86_64-unknown-linux-gnu
- - os: windows-latest
- flutter_profile: development-windows-x86
- target: x86_64-pc-windows-msvc
- runs-on: ${{ matrix.os }}
-
- steps:
- # the following step is required to avoid running out of space
- - name: Maximize build space
- if: matrix.os == 'ubuntu-latest'
- run: |
- sudo rm -rf /usr/share/dotnet
- sudo rm -rf /opt/ghc
- sudo rm -rf /usr/local/share/boost
- df -h
-
- - name: Checkout source code
- uses: actions/checkout@v2
-
- - name: Install Rust toolchain
- id: rust_toolchain
- uses: actions-rs/toolchain@v1
- with:
- toolchain: ${{ env.RUST_TOOLCHAIN }}
- target: ${{ matrix.target }}
- override: true
- profile: minimal
-
- - name: Install flutter
- id: flutter
- uses: subosito/flutter-action@v2
- with:
- channel: "stable"
- flutter-version: ${{ env.FLUTTER_VERSION }}
- cache: true
-
- - uses: Swatinem/rust-cache@v2
- with:
- prefix-key: ${{ matrix.os }}
- workspaces: |
- frontend/rust-lib
- cache-all-crates: true
-
- - uses: davidB/rust-cargo-make@v1
- with:
- version: '0.36.6'
-
- - name: Install prerequisites
- working-directory: frontend
- run: |
- cargo install --force duckscript_cli
- if [ "$RUNNER_OS" == "Linux" ]; then
- sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
- sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
- sudo apt-get update
- sudo apt-get install -y dart curl build-essential libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev
- sudo apt-get install keybinder-3.0 libnotify-dev
- elif [ "$RUNNER_OS" == "Windows" ]; then
- vcpkg integrate install
- elif [ "$RUNNER_OS" == "macOS" ]; then
- echo 'do nothing'
- fi
- cargo make appflowy-flutter-deps-tools
- shell: bash
-
- - name: Enable Flutter Desktop
- run: |
- if [ "$RUNNER_OS" == "Linux" ]; then
- flutter config --enable-linux-desktop
- elif [ "$RUNNER_OS" == "macOS" ]; then
- flutter config --enable-macos-desktop
- elif [ "$RUNNER_OS" == "Windows" ]; then
- git config --system core.longpaths true
- flutter config --enable-windows-desktop
- fi
- shell: bash
-
- - name: Build AppFlowy
- working-directory: frontend
- run: |
- cargo make --profile ${{ matrix.flutter_profile }} appflowy-dev
-
- - name: Run Flutter integration tests
- working-directory: frontend/appflowy_flutter
- run: |
- if [ "$RUNNER_OS" == "Linux" ]; then
- export DISPLAY=:99
- sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
- sudo apt-get install network-manager
- flutter test integration_test/runner.dart -d Linux --coverage
- elif [ "$RUNNER_OS" == "macOS" ]; then
- flutter test integration_test/runner.dart -d macOS --coverage
- elif [ "$RUNNER_OS" == "Windows" ]; then
- flutter test integration_test/runner.dart -d Windows --coverage
- fi
- shell: bash
-
- - name: Upload coverage to Codecov
- uses: Wandalen/wretry.action@v1.0.36
- with:
- action: codecov/codecov-action@v3
- with: |
- name: appflowy
- flags: appflowy_flutter_integrateion_test
- fail_ci_if_error: true
- verbose: true
- os: ${{ matrix.os }}
- token: ${{ secrets.CODECOV_TOKEN }}
- attempt_limit: 20
- attempt_delay: 10000
\ No newline at end of file
diff --git a/.run/ProtoBuf_Gen.run.xml b/.run/ProtoBuf_Gen.run.xml
deleted file mode 100644
index 13d9202183f9..000000000000
--- a/.run/ProtoBuf_Gen.run.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.run/Run backend.run.xml b/.run/Run backend.run.xml
deleted file mode 100644
index 840a367809c6..000000000000
--- a/.run/Run backend.run.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.run/dart-event.run.xml b/.run/dart-event.run.xml
deleted file mode 100644
index c64ee9bf57cf..000000000000
--- a/.run/dart-event.run.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/frontend/.vscode/launch.json b/frontend/.vscode/launch.json
index 9d7a00c4497f..34866a9537ce 100644
--- a/frontend/.vscode/launch.json
+++ b/frontend/.vscode/launch.json
@@ -67,11 +67,11 @@
"cwd": "${workspaceRoot}/appflowy_flutter"
},
{
- "name": "AF-Android-Simlator: Clean + Rebuild All",
+ "name": "AF-Android: Clean + Rebuild All",
"request": "launch",
"program": "./lib/main.dart",
"type": "dart",
- "preLaunchTask": "AF: Clean + Rebuild All (Android Simulator)",
+ "preLaunchTask": "AF: Clean + Rebuild All (Android)",
"env": {
"RUST_LOG": "trace"
},
diff --git a/frontend/Makefile.toml b/frontend/Makefile.toml
index bcd71b472d48..ebfa6f121cbb 100644
--- a/frontend/Makefile.toml
+++ b/frontend/Makefile.toml
@@ -186,6 +186,14 @@ RUST_COMPILE_TARGET = "aarch64-apple-ios"
BUILD_ARCHS = "arm64"
CRATE_TYPE = "staticlib"
+[env.production-ios-arm64]
+BUILD_FLAG = "release"
+TARGET_OS = "ios"
+FLUTTER_OUTPUT_DIR = "Release"
+RUST_COMPILE_TARGET = "aarch64-apple-ios"
+BUILD_ARCHS = "arm64"
+CRATE_TYPE = "staticlib"
+
[env.development-android]
BUILD_FLAG = "debug"
TARGET_OS = "android"
diff --git a/frontend/appflowy_flutter/android/app/src/main/AndroidManifest.xml b/frontend/appflowy_flutter/android/app/src/main/AndroidManifest.xml
index 03eb9bc4dacf..43f4005b72ec 100644
--- a/frontend/appflowy_flutter/android/app/src/main/AndroidManifest.xml
+++ b/frontend/appflowy_flutter/android/app/src/main/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
+
+
+
+
+
+
+
+
+