diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a772204..b0c4911 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: run: | FLUTTER_VERSION=$(cat ../FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -28,7 +28,6 @@ jobs: run: | flutter clean flutter pub get - dart run build_runner build --delete-conflicting-outputs flutter doctor -v - name: Import files if: ${{ github.event_name != 'pull_request' }} @@ -41,12 +40,12 @@ jobs: if [[ -n "$KEY_JKS" ]] ; then echo "$KEY_JKS" | base64 --decode > key.jks ; fi #- run: flutter test - name: 🏭 Build nightly - if: ${{ github.ref != 'refs/tags/stable' }} + if: ${{ github.ref != 'refs/tags/stable' && (github.event_name != 'release' || github.event.prerelease) }} run: | - flutter build apk -v --release --flavor development --dart-define=flavor=development - cp build/app/outputs/flutter-apk/app-development-release.apk linwood-qeck-android.apk + flutter build apk -v --release --flavor nightly --dart-define=flavor=nightly + cp build/app/outputs/flutter-apk/app-nightly-release.apk linwood-qeck-android.apk - name: 🏭 Build production - if: ${{ github.ref == 'refs/tags/stable' }} + if: ${{ github.ref == 'refs/tags/stable' || (github.event_name == 'release' && !github.event.prerelease) }} run: | flutter build apk -v --release --flavor production cp build/app/outputs/flutter-apk/app-production-release.apk linwood-qeck-android.apk @@ -55,6 +54,35 @@ jobs: with: name: apk-build path: app/linwood-qeck-android.apk + - name: 🏭 Build architecture nightly + if: ${{ github.ref != 'refs/tags/stable' && (github.event_name != 'release' || github.event.prerelease) }} + run: | + flutter build apk -v --release --target-platform android-arm,android-arm64,android-x64 --split-per-abi --flavor nightly --dart-define=flavor=nightly + cp build/app/outputs/flutter-apk/app-armeabi-v7a-nightly-release.apk linwood-qeck-android-arm.apk + cp build/app/outputs/flutter-apk/app-arm64-v8a-nightly-release.apk linwood-qeck-android-arm64.apk + cp build/app/outputs/flutter-apk/app-x86_64-nightly-release.apk linwood-qeck-android-x86_64.apk + - name: 🏭 Build architecture production + if: ${{ github.ref == 'refs/tags/stable' || (github.event_name == 'release' && !github.event.prerelease) }} + run: | + flutter build apk -v --release --target-platform android-arm,android-arm64,android-x64 --split-per-abi --flavor production + cp build/app/outputs/flutter-apk/app-armeabi-v7a-production-release.apk linwood-qeck-android-arm.apk + cp build/app/outputs/flutter-apk/app-arm64-v8a-production-release.apk linwood-qeck-android-arm64.apk + cp build/app/outputs/flutter-apk/app-x86_64-production-release.apk linwood-qeck-android-x86_64.apk + - name: Archive + uses: actions/upload-artifact@v4 + with: + name: apk-arm-build + path: app/linwood-qeck-android-arm.apk + - name: Archive + uses: actions/upload-artifact@v4 + with: + name: apk-arm64-build + path: app/linwood-qeck-android-arm64.apk + - name: Archive + uses: actions/upload-artifact@v4 + with: + name: apk-x86_64-build + path: app/linwood-qeck-android-x86_64.apk build-windows: runs-on: windows-2022 defaults: @@ -68,7 +96,7 @@ jobs: run: | FLUTTER_VERSION=$(cat ../FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -78,15 +106,14 @@ jobs: run: | flutter clean flutter pub get - dart run build_runner build --delete-conflicting-outputs flutter doctor -v - name: 🏭 Build nightly - if: ${{ github.ref != 'refs/tags/stable' }} + if: ${{ github.ref != 'refs/tags/stable' && (github.event_name != 'release' || github.event.prerelease) }} run: | flutter doctor -v - flutter build windows -v --release --dart-define=flavor=development + flutter build windows -v --release --dart-define=flavor=nightly - name: 🏭 Build production - if: ${{ github.ref == 'refs/tags/stable' }} + if: ${{ github.ref == 'refs/tags/stable' || (github.event_name == 'release' && !github.event.prerelease) }} run: | flutter doctor -v flutter build windows -v --release --dart-define=flavor=production @@ -99,6 +126,7 @@ jobs: - name: Copy portable start script run: | cp scripts/start.bat build/windows/x64/runner/Release/ + cp build/windows/x64/linwood-qeck-windows-setup.exe linwood-qeck-windows-setup-x86_64.exe - name: Archive uses: actions/upload-artifact@v4 with: @@ -110,7 +138,7 @@ jobs: with: name: windows-setup path: | - app/build/windows/linwood-qeck-windows-setup.exe + app/linwood-qeck-windows-setup-x86_64.exe build-linux: runs-on: ubuntu-22.04 defaults: @@ -147,7 +175,7 @@ jobs: run: | FLUTTER_VERSION=$(cat ../FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -157,15 +185,14 @@ jobs: run: | flutter clean flutter pub get - dart run build_runner build --delete-conflicting-outputs flutter doctor -v - name: 🏭 Build nightly - if: ${{ github.ref != 'refs/tags/stable' }} + if: ${{ github.ref != 'refs/tags/stable' && (github.event_name != 'release' || github.event.prerelease) }} run: | flutter doctor -v - flutter build linux -v --release --dart-define=flavor=development + flutter build linux -v --release --dart-define=flavor=nightly - name: 🏭 Build production - if: ${{ github.ref == 'refs/tags/stable' }} + if: ${{ github.ref == 'refs/tags/stable' || (github.event_name == 'release' && !github.event.prerelease) }} run: | flutter doctor -v flutter build linux -v --release --dart-define=flavor=production @@ -176,7 +203,7 @@ jobs: run: | cp -fr build/linux/x64/release/bundle linux/debian/usr/bin dpkg-deb --build --root-owner-group linux/debian - cp linux/*.deb linwood-qeck-linux.deb + cp linux/*.deb linwood-qeck-linux-x86_64.deb - name: Build .rpm executable run: | bash scripts/build-rpm.sh @@ -188,13 +215,13 @@ jobs: appimage-builder --recipe AppImageBuilder.yml --skip-test - name: Copy nessessary files run: | - cp assets/images/logo.svg build/linux/x64/release/bundle/dev.linwood.qeck.svg + cp images/logo.svg build/linux/x64/release/bundle/dev.linwood.qeck.svg mkdir -p build/linux/x64/release/bundle/usr/share cp -r linux/debian/usr/share build/linux/x64/release/bundle/usr - name: Rename AppImage run: | ls - mv ./*.AppImage linwood-qeck-linux.AppImage + mv ./*.AppImage linwood-qeck-linux-x86_64.AppImage - name: Copy portable start script run: | chmod +x scripts/start.sh @@ -210,21 +237,21 @@ jobs: with: name: linux-deb path: | - app/linwood-qeck-linux.deb + app/linwood-qeck-linux-x86_64.deb - name: Archive .rpm uses: actions/upload-artifact@v4 with: name: linux-rpm path: | - app/build/linwood-qeck-linux.rpm + app/build/linwood-qeck-linux-x86_64.rpm - name: Archive .AppImage uses: actions/upload-artifact@v4 with: name: linux-appimage path: | - app/linwood-qeck-linux.AppImage + app/linwood-qeck-linux-x86_64.AppImage build-flatpak: - name: Build flatpak + name: build-flatpak runs-on: ubuntu-20.04 defaults: run: @@ -259,7 +286,7 @@ jobs: run: | FLUTTER_VERSION=$(cat ../FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -269,25 +296,24 @@ jobs: run: | flutter clean flutter pub get - dart run build_runner build --delete-conflicting-outputs flutter doctor -v - name: 🏭 Build nightly - if: ${{ github.ref != 'refs/tags/stable' }} + if: ${{ github.ref != 'refs/tags/stable' && (github.event_name != 'release' || github.event.prerelease) }} run: | flutter doctor -v - flutter build linux -v --release --dart-define=flavor=development + flutter build linux -v --release --dart-define=flavor=nightly - name: 🏭 Build production - if: ${{ github.ref == 'refs/tags/stable' }} + if: ${{ github.ref == 'refs/tags/stable' || (github.event_name == 'release' && !github.event.prerelease) }} run: | flutter doctor -v flutter build linux -v --release --dart-define=flavor=production - name: Copy nessessary files run: | - cp assets/images/logo.svg build/linux/x64/release/bundle/dev.linwood.qeck.svg + cp images/logo.svg build/linux/x64/release/bundle/dev.linwood.qeck.svg mkdir -p build/linux/x64/release/bundle/usr/share cp -r linux/debian/usr/share build/linux/x64/release/bundle/usr - name: Compress Flutter build - run: tar -C build/linux/x64/release/bundle -czf linwood-qeck-linux-portable.tar.gz . + run: tar -C build/linux/x64/release/bundle -czf linwood-qeck-linux-portable-x86_64.tar.gz . # - name: Install flatpak # run: | # sudo apt-get update @@ -324,7 +350,7 @@ jobs: run: | FLUTTER_VERSION=$(cat ../FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -337,7 +363,6 @@ jobs: run: | flutter clean flutter pub get - dart run build_runner build --delete-conflicting-outputs flutter doctor -v - name: 🏭 Build run: | @@ -348,7 +373,7 @@ jobs: - name: Setup node uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '20' - name: Install appdmg run: npm install -g appdmg - name: Create dmg @@ -366,6 +391,48 @@ jobs: name: macos-dmg path: | app/linwood-qeck-macos.dmg + + build-ipa: + name: build-ipa (iOS) + runs-on: macos-latest + defaults: + run: + working-directory: app + steps: + - name: ⬆️ Checkout + uses: actions/checkout@v4 + - name: Get flutter version + run: | + FLUTTER_VERSION=$(cat ../FLUTTER_VERSION) + echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV + - uses: subosito/flutter-action@v2.16.0 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + channel: 'master' + - name: 📦 Get dependencies + run: | + flutter clean + flutter pub get + flutter doctor -v + - name: 🏭 Build + run: | + flutter build ios --release --no-codesign -v + - name: Packing IPA + run: | + cd build/ios/iphoneos/ + rm -rf Payload + mkdir Payload + cp -R Runner.app Payload/ + rm -f linwood-qeck-ios.ipa + zip -vr linwood-qeck-ios.ipa Payload/ +# ls -l linwood-qeck-ios.ipa + - name: Archive + uses: actions/upload-artifact@v4 + with: + name: ipa-build + path: app/build/ios/iphoneos/linwood-qeck-ios.ipa + compression-level: 0 #ipa is already compressed + # build-snap: # name: Build Snap # runs-on: ubuntu-latest @@ -398,6 +465,7 @@ jobs: - build-linux - build-flatpak - build-macos + - build-ipa steps: - name: ⬆️ Checkout uses: actions/checkout@v4 @@ -421,6 +489,15 @@ jobs: - uses: actions/download-artifact@v4 with: name: apk-build + - uses: actions/download-artifact@v4 + with: + name: apk-arm-build + - uses: actions/download-artifact@v4 + with: + name: apk-arm64-build + - uses: actions/download-artifact@v4 + with: + name: apk-x86_64-build - uses: actions/download-artifact@v4 with: name: windows-build @@ -451,11 +528,14 @@ jobs: - uses: actions/download-artifact@v4 with: name: macos-dmg + - uses: actions/download-artifact@v4 + with: + name: ipa-build - name: 📦 Zip artifacts run: | - zip -r linwood-qeck-windows.zip windows-build/* - tar -C linux-build -czf linwood-qeck-linux.tar.gz . - tar -C linux-alternative-portable -czf linwood-qeck-linux-alternative.tar.gz . + zip -r linwood-qeck-windows-x86_64.zip windows-build/* + tar -C linux-build -czf linwood-qeck-linux-x86_64.tar.gz . + tar -C linux-alternative-portable -czf linwood-qeck-linux-alternative-x86_64.tar.gz . - name: Configure git if: ${{ github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main' }} run: | @@ -464,23 +544,24 @@ jobs: git config --global user.name "Actions" git pull --tags - name: 🚀 Deploy stable - if: ${{ github.ref == 'refs/tags/stable' }} + if: ${{ github.ref == 'refs/tags/stable' || (github.event_name == 'release' && !github.event.prerelease) }} uses: softprops/action-gh-release@v2 continue-on-error: true with: prerelease: true tag_name: stable files: | - linwood-qeck-windows-setup.exe - linwood-qeck-windows.zip - linwood-qeck-android.apk - linwood-qeck-linux.tar.gz - linwood-qeck-linux-alternative.tar.gz - linwood-qeck-linux.deb - linwood-qeck-linux.rpm - linwood-qeck-linux.AppImage + linwood-qeck-windows-setup-x86_64.exe + linwood-qeck-windows-x86_64.zip + linwood-qeck-linux-x86_64.tar.gz + linwood-qeck-linux-alternative-x86_64.tar.gz + linwood-qeck-linux-x86_64.deb + linwood-qeck-linux-x86_64.rpm + linwood-qeck-linux-x86_64.AppImage linwood-qeck-macos.zip linwood-qeck-macos.dmg + linwood-qeck-android.apk + linwood-qeck-ios.ipa env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: 🚀 Deploy nightly @@ -491,16 +572,20 @@ jobs: prerelease: true tag_name: nightly files: | - linwood-qeck-windows-setup.exe - linwood-qeck-windows.zip - linwood-qeck-android.apk - linwood-qeck-linux.tar.gz - linwood-qeck-linux-alternative.tar.gz - linwood-qeck-linux.deb - linwood-qeck-linux.rpm - linwood-qeck-linux.AppImage + linwood-qeck-windows-setup-x86_64.exe + linwood-qeck-windows-x86_64.zip + linwood-qeck-linux-x86_64.tar.gz + linwood-qeck-linux-alternative-x86_64.tar.gz + linwood-qeck-linux-x86_64.deb + linwood-qeck-linux-x86_64.rpm + linwood-qeck-linux-x86_64.AppImage linwood-qeck-macos.zip linwood-qeck-macos.dmg + linwood-qeck-android.apk + linwood-qeck-android-arm.apk + linwood-qeck-android-arm64.apk + linwood-qeck-android-x86_64.apk + linwood-qeck-ios.ipa env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Release @@ -509,16 +594,20 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') with: files: | - linwood-qeck-windows-setup.exe - linwood-qeck-windows.zip - linwood-qeck-android.apk - linwood-qeck-linux.tar.gz - linwood-qeck-linux-alternative.tar.gz - linwood-qeck-linux.deb - linwood-qeck-linux.rpm - linwood-qeck-linux.AppImage + linwood-qeck-windows-setup-x86_64.exe + linwood-qeck-windows-x86_64.zip + linwood-qeck-linux-x86_64.tar.gz + linwood-qeck-linux-alternative-x86_64.tar.gz + linwood-qeck-linux-x86_64.deb + linwood-qeck-linux-x86_64.rpm + linwood-qeck-linux-x86_64.AppImage linwood-qeck-macos.zip linwood-qeck-macos.dmg + linwood-qeck-android.apk + linwood-qeck-android-arm.apk + linwood-qeck-android-arm64.apk + linwood-qeck-android-x86_64.apk + linwood-qeck-ios.ipa env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} deploy-to-play-store: @@ -558,18 +647,17 @@ jobs: run: | FLUTTER_VERSION=$(cat ../FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' - name: 📦 Get dependencies run: | - dart run build_runner build --delete-conflicting-outputs flutter pub get - name: Setup Fastlane uses: ruby/setup-ruby@v1 with: - ruby-version: "3.2.2" + ruby-version: "3.3.0" bundler-cache: true working-directory: app/android - name: 🚀 Deploy to Play Store @@ -591,7 +679,7 @@ jobs: - uses: actions/checkout@v4 with: token: ${{ secrets.CI_PAT }} - - if: ${{ github.ref == 'refs/tags/stable' }} + - if: ${{ github.ref == 'refs/tags/stable' || (github.event_name == 'release' && !github.event.prerelease) }} uses: vedantmgoyal2009/winget-releaser@v2 with: identifier: LinwoodCloud.Qeck diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 5e4699a..d423adf 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - projects: [app, tools] + projects: [app, api, tools] defaults: run: working-directory: ${{ matrix.projects }} @@ -18,7 +18,7 @@ jobs: run: | FLUTTER_VERSION=$(cat ../FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -30,10 +30,6 @@ jobs: - name: Install dependencies run: | flutter pub get - - name: Build files - if: matrix.projects == 'app' - run: | - dart run build_runner build --delete-conflicting-outputs # Uncomment this step to verify the use of 'dart format' on each commit. - name: Verify formatting run: dart format --output=none --set-exit-if-changed . @@ -42,6 +38,11 @@ jobs: - name: Analyze project source run: | flutter analyze --fatal-infos + - name: Run build_runner + if: matrix.projects != 'tools' + run: flutter pub run build_runner build --delete-conflicting-outputs + - name: Test for git changes + run: git diff --exit-code # Your project will need to have tests in test/ and a dependency on # package:test for this step to succeed. Note that Flutter projects will # want to change this to 'flutter test'. diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 8990c92..dfc1fae 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '20' cache: 'pnpm' cache-dependency-path: docs/pnpm-lock.yaml - name: Install dependencies diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml deleted file mode 100644 index bdc0867..0000000 --- a/.github/workflows/project.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Project - -on: - issues: - types: - - opened - -jobs: - add-to-project: - name: Add issue to project - runs-on: ubuntu-latest - steps: - - uses: actions/add-to-project@main - with: - project-url: https://github.com/orgs/LinwoodCloud/projects/4 - github-token: ${{ secrets.CI_PAT }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2ac40f1..10a58c6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: run: | FLUTTER_VERSION=$(cat FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -74,7 +74,7 @@ jobs: run: | FLUTTER_VERSION=$(cat FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -141,7 +141,7 @@ jobs: run: | FLUTTER_VERSION=$(cat FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -208,14 +208,14 @@ jobs: - name: Get flutter version if: ${{ github.ref == 'refs/heads/develop' }} run: | - FLUTTER_VERSION=$(cat app/FLUTTER_VERSION) + FLUTTER_VERSION=$(cat FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - name: Get flutter version if: ${{ github.ref == 'refs/heads/main' }} run: | FLUTTER_VERSION=$(cat FLUTTER_VERSION) echo "FLUTTER_VERSION=${FLUTTER_VERSION}" >> $GITHUB_ENV - - uses: subosito/flutter-action@v2 + - uses: subosito/flutter-action@v2.16.0 with: flutter-version: ${{ env.FLUTTER_VERSION }} channel: 'master' @@ -266,7 +266,7 @@ jobs: embed-url: https://github.com/LinwoodDev/qeck/releases/tag/v${{ env.QECK_VERSION }} content: | Version ${{ env.QECK_VERSION }} released! - Download it here: https://docs.qeck.linwood.dev/downloads + Download it here: https://qeck.linwood.dev/downloads https://github.com/LinwoodDev/qeck/releases/tag/v${{ env.QECK_VERSION }} - name: Discord Webhook Action uses: tsickert/discord-webhook@v6.0.0 @@ -278,6 +278,6 @@ jobs: embed-url: https://github.com/LinwoodDev/qeck/releases/tag/v${{ env.QECK_VERSION }} content: | Pre-release version ${{ env.QECK_VERSION }} released! - Download it here: https://docs.qeck.linwood.dev/downloads + Download it here: https://qeck.linwood.dev/downloads Please note that this is a pre-release version and is not intended for production use. - Read more about it here: https://docs.qeck.linwood.dev/nightly + Read more about it here: https://qeck.linwood.dev/nightly \ No newline at end of file diff --git a/FLUTTER_VERSION b/FLUTTER_VERSION index afb0535..ff6984e 100644 --- a/FLUTTER_VERSION +++ b/FLUTTER_VERSION @@ -1 +1 @@ -3.16.4 \ No newline at end of file +3.19.6 \ No newline at end of file diff --git a/README.md b/README.md index 0f24c34..10f0d83 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,32 @@ -# Linwood Qeck +
+ Website • + Download • + Matrix • + Discord • + Mastodon • + Bluesky • + Contribute +
+ +--- + +**This project is still in development and not ready for production use. Please join the matrix or discord server for updates!** ## Features diff --git a/app/.metadata b/app/.metadata index d22992e..32dc8a5 100644 --- a/app/.metadata +++ b/app/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "db7ef5bf9f59442b0e200a90587e8fa5e0c6336a" + revision: "300451adae589accbece3490f4396f10bdf15e6e" channel: "stable" project_type: app @@ -13,26 +13,26 @@ project_type: app migration: platforms: - platform: root - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e - platform: android - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e - platform: ios - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e - platform: linux - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e - platform: macos - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e - platform: web - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e - platform: windows - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: 300451adae589accbece3490f4396f10bdf15e6e + base_revision: 300451adae589accbece3490f4396f10bdf15e6e # User provided section diff --git a/app/android/Gemfile.lock b/app/android/Gemfile.lock index a50618f..23b9ba6 100644 --- a/app/android/Gemfile.lock +++ b/app/android/Gemfile.lock @@ -1,42 +1,44 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.6) + CFPropertyList (3.0.7) + base64 + nkf rexml - addressable (2.8.4) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) - artifactory (3.0.15) + artifactory (3.0.17) atomos (0.1.3) - aws-eventstream (1.2.0) - aws-partitions (1.762.0) - aws-sdk-core (3.172.0) - aws-eventstream (~> 1, >= 1.0.2) + aws-eventstream (1.3.0) + aws-partitions (1.910.0) + aws-sdk-core (3.191.6) + aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.5) + aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.64.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-kms (1.78.0) + aws-sdk-core (~> 3, >= 3.191.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.122.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-s3 (1.146.1) + aws-sdk-core (~> 3, >= 3.191.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.4) - aws-sigv4 (1.5.2) + aws-sigv4 (~> 1.8) + aws-sigv4 (1.8.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) + base64 (0.2.0) claide (1.1.0) colored (1.2) colored2 (3.1.2) commander (4.6.0) highline (~> 2.0.0) declarative (0.0.20) - digest-crc (0.6.4) + digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) - domain_name (0.5.20190701) - unf (>= 0.0.5, < 1.0.0) + domain_name (0.6.20240107) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.99.0) + excon (0.110.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -65,15 +67,15 @@ GEM faraday-retry (1.0.3) faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.6) - fastlane (2.212.2) + fastimage (2.3.1) + fastlane (2.220.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) aws-sdk-s3 (~> 1.0) babosa (>= 1.0.3, < 2.0.0) bundler (>= 1.12.0, < 3.0.0) - colored + colored (~> 1.2) commander (~> 4.6) dotenv (>= 2.1.1, < 3.0.0) emoji_regex (>= 0.1, < 4.0) @@ -85,30 +87,32 @@ GEM gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.0.0) google-cloud-storage (~> 1.31) highline (~> 2.0) + http-cookie (~> 1.0.5) json (< 3.0.0) jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) - multipart-post (~> 2.0.0) + multipart-post (>= 2.0.0, < 3.0.0) naturally (~> 2.2) - optparse (~> 0.1.1) + optparse (>= 0.1.1, < 1.0.0) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) - security (= 0.1.3) + security (= 0.1.5) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (>= 1.4.5, < 2.0.0) + terminal-table (~> 3) tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) - xcpretty-travis-formatter (>= 0.0.3) + xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.41.0) + google-apis-androidpublisher_v3 (0.54.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.0) + google-apis-core (0.11.3) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -116,31 +120,29 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.a) rexml - webrick google-apis-iamcredentials_v1 (0.17.0) google-apis-core (>= 0.11.0, < 2.a) google-apis-playcustomapp_v1 (0.13.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-storage_v1 (0.19.0) - google-apis-core (>= 0.9.0, < 2.a) - google-cloud-core (1.6.0) - google-cloud-env (~> 1.0) + google-apis-storage_v1 (0.31.0) + google-apis-core (>= 0.11.0, < 2.a) + google-cloud-core (1.7.0) + google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.3.1) - google-cloud-storage (1.44.0) + google-cloud-errors (1.4.0) + google-cloud-storage (1.47.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.19.0) + google-apis-storage_v1 (~> 0.31.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.5.2) + googleauth (1.8.1) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) - memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) @@ -149,33 +151,34 @@ GEM domain_name (~> 0.5) httpclient (2.8.3) jmespath (1.6.2) - json (2.6.3) - jwt (2.7.0) - memoist (0.16.2) + json (2.7.2) + jwt (2.8.1) + base64 mini_magick (4.12.0) - mini_mime (1.1.2) + mini_mime (1.1.5) multi_json (1.15.0) - multipart-post (2.0.0) + multipart-post (2.4.0) nanaimo (0.3.0) naturally (2.2.1) - optparse (0.1.1) + nkf (0.2.0) + optparse (0.4.0) os (1.1.4) - plist (3.7.0) - public_suffix (5.0.1) - rake (13.0.6) + plist (3.7.1) + public_suffix (5.0.5) + rake (13.2.1) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.5) + rexml (3.2.6) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) screengrab (1.0.0) fastlane (>= 2.0.0, < 3.0.0) - security (0.1.3) - signet (0.17.0) + security (0.1.5) + signet (0.19.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -184,21 +187,17 @@ GEM CFPropertyList naturally terminal-notifier (2.0.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) trailblazer-option (0.1.2) tty-cursor (0.7.1) - tty-screen (0.8.1) + tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) uber (0.1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.8.2) - unicode-display_width (1.8.0) - webrick (1.8.1) + unicode-display_width (2.5.0) word_wrap (1.0.0) - xcodeproj (1.22.0) + xcodeproj (1.24.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) @@ -221,4 +220,4 @@ DEPENDENCIES screengrab BUNDLED WITH - 2.4.10 + 2.4.19 diff --git a/app/android/app/build.gradle b/app/android/app/build.gradle index 586f5e7..b8a5a7a 100644 --- a/app/android/app/build.gradle +++ b/app/android/app/build.gradle @@ -34,7 +34,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdk 33 + compileSdk flutter.compileSdkVersion ndkVersion flutter.ndkVersion compileOptions { @@ -49,7 +49,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "dev.linwood.qeck" - minSdkVersion 19 + minSdkVersion 21 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/app/android/build.gradle b/app/android/build.gradle index fb84b31..595066f 100644 --- a/app/android/build.gradle +++ b/app/android/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.9.10' + ext.kotlin_version = '1.9.23' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.1.2' + classpath 'com.android.tools.build:gradle:8.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/app/assets/fonts/LICENSE.txt b/app/assets/fonts/LICENSE.txt deleted file mode 100644 index d645695..0000000 --- a/app/assets/fonts/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/app/lib/api/open_release_notes.dart b/app/lib/api/open_release_notes.dart index 117f24b..cb32d84 100644 --- a/app/lib/api/open_release_notes.dart +++ b/app/lib/api/open_release_notes.dart @@ -1,3 +1,4 @@ +import 'package:qeck/main.dart'; import 'package:url_launcher/url_launcher.dart'; FutureComing soon...