diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 3dd856d..1e8e799 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -42,6 +42,6 @@ ## Проверка - [ ] `flutter analyze` -- [ ] Сборка `komet` flavor +- [ ] Сборка `qlyra` flavor - [ ] Ручная проверка затронутых сценариев - [ ] Регресс по безопасности (если затронута) diff --git a/.github/actions/setup-rust/action.yml b/.github/actions/setup-rust/action.yml index 3017132..6c4727b 100644 --- a/.github/actions/setup-rust/action.yml +++ b/.github/actions/setup-rust/action.yml @@ -21,4 +21,4 @@ runs: - name: Cache Rust build uses: Swatinem/rust-cache@v2 with: - workspaces: native/komet_crypto/rust + workspaces: native/qlyra_crypto/rust diff --git a/.github/workflows/build-android-fcm.yml b/.github/workflows/build-android-fcm.yml index 3fef1cb..1450f89 100644 --- a/.github/workflows/build-android-fcm.yml +++ b/.github/workflows/build-android-fcm.yml @@ -69,12 +69,12 @@ jobs: echo "KEYSTORE_BASE64 secret not set — release will be debug-signed." exit 0 fi - echo "$KEYSTORE_BASE64" | base64 -d > android/app/komet-release.jks + echo "$KEYSTORE_BASE64" | base64 -d > android/app/qlyra-release.jks { echo "storePassword=$KEYSTORE_PASSWORD" echo "keyPassword=$KEY_PASSWORD" echo "keyAlias=$KEY_ALIAS" - echo "storeFile=komet-release.jks" + echo "storeFile=qlyra-release.jks" } > android/key.properties echo "Release signing configured." @@ -87,7 +87,7 @@ jobs: - name: Upload Universal APK uses: actions/upload-artifact@v4 with: - name: komet-android-fcm-universal + name: qlyra-android-fcm-universal path: build/app/outputs/flutter-apk/app-oneme-release.apk if-no-files-found: error retention-days: 30 @@ -95,7 +95,7 @@ jobs: - name: Upload arm64-v8a APK uses: actions/upload-artifact@v4 with: - name: komet-android-fcm-arm64-v8a + name: qlyra-android-fcm-arm64-v8a path: build/app/outputs/flutter-apk/app-arm64-v8a-oneme-release.apk if-no-files-found: error retention-days: 30 @@ -103,7 +103,7 @@ jobs: - name: Upload armeabi-v7a APK uses: actions/upload-artifact@v4 with: - name: komet-android-fcm-armeabi-v7a + name: qlyra-android-fcm-armeabi-v7a path: build/app/outputs/flutter-apk/app-armeabi-v7a-oneme-release.apk if-no-files-found: error retention-days: 30 @@ -111,7 +111,7 @@ jobs: - name: Upload x86_64 APK uses: actions/upload-artifact@v4 with: - name: komet-android-fcm-x86_64 + name: qlyra-android-fcm-x86_64 path: build/app/outputs/flutter-apk/app-x86_64-oneme-release.apk if-no-files-found: error retention-days: 30 @@ -122,7 +122,7 @@ jobs: - name: Upload App Bundle artifact uses: actions/upload-artifact@v4 with: - name: komet-android-fcm-aab + name: qlyra-android-fcm-aab path: build/app/outputs/bundle/onemeRelease/app-oneme-release.aab if-no-files-found: error retention-days: 30 @@ -130,7 +130,7 @@ jobs: - name: Upload debug symbols uses: actions/upload-artifact@v4 with: - name: komet-android-fcm-symbols + name: qlyra-android-fcm-symbols path: build/symbols if-no-files-found: error retention-days: 90 diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 390a215..bac8e85 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -69,68 +69,68 @@ jobs: echo "KEYSTORE_BASE64 secret not set — release will be debug-signed." exit 0 fi - echo "$KEYSTORE_BASE64" | base64 -d > android/app/komet-release.jks + echo "$KEYSTORE_BASE64" | base64 -d > android/app/qlyra-release.jks { echo "storePassword=$KEYSTORE_PASSWORD" echo "keyPassword=$KEY_PASSWORD" echo "keyAlias=$KEY_ALIAS" - echo "storeFile=komet-release.jks" + echo "storeFile=qlyra-release.jks" } > android/key.properties echo "Release signing configured." - name: Build Universal APK - run: flutter build apk --release --flavor komet --obfuscate --split-debug-info=build/symbols + run: flutter build apk --release --flavor qlyra --obfuscate --split-debug-info=build/symbols - name: Build Split APKs - run: flutter build apk --release --split-per-abi --flavor komet --obfuscate --split-debug-info=build/symbols + run: flutter build apk --release --split-per-abi --flavor qlyra --obfuscate --split-debug-info=build/symbols - name: Upload Universal APK uses: actions/upload-artifact@v4 with: - name: komet-android-universal - path: build/app/outputs/flutter-apk/app-komet-release.apk + name: qlyra-android-universal + path: build/app/outputs/flutter-apk/app-qlyra-release.apk if-no-files-found: error retention-days: 30 - name: Upload arm64-v8a APK uses: actions/upload-artifact@v4 with: - name: komet-android-arm64-v8a - path: build/app/outputs/flutter-apk/app-arm64-v8a-komet-release.apk + name: qlyra-android-arm64-v8a + path: build/app/outputs/flutter-apk/app-arm64-v8a-qlyra-release.apk if-no-files-found: error retention-days: 30 - name: Upload armeabi-v7a APK uses: actions/upload-artifact@v4 with: - name: komet-android-armeabi-v7a - path: build/app/outputs/flutter-apk/app-armeabi-v7a-komet-release.apk + name: qlyra-android-armeabi-v7a + path: build/app/outputs/flutter-apk/app-armeabi-v7a-qlyra-release.apk if-no-files-found: error retention-days: 30 - name: Upload x86_64 APK uses: actions/upload-artifact@v4 with: - name: komet-android-x86_64 - path: build/app/outputs/flutter-apk/app-x86_64-komet-release.apk + name: qlyra-android-x86_64 + path: build/app/outputs/flutter-apk/app-x86_64-qlyra-release.apk if-no-files-found: error retention-days: 30 - name: Build App Bundle - run: flutter build appbundle --release --flavor komet --obfuscate --split-debug-info=build/symbols + run: flutter build appbundle --release --flavor qlyra --obfuscate --split-debug-info=build/symbols - name: Upload App Bundle artifact uses: actions/upload-artifact@v4 with: - name: komet-android-aab - path: build/app/outputs/bundle/kometRelease/app-komet-release.aab + name: qlyra-android-aab + path: build/app/outputs/bundle/qlyraRelease/app-qlyra-release.aab if-no-files-found: error retention-days: 30 - name: Upload debug symbols uses: actions/upload-artifact@v4 with: - name: komet-android-symbols + name: qlyra-android-symbols path: build/symbols if-no-files-found: error retention-days: 90 diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml index 17c3560..569ee73 100644 --- a/.github/workflows/build-ios.yml +++ b/.github/workflows/build-ios.yml @@ -54,14 +54,14 @@ jobs: run: | mkdir -p dist build/ios/Payload cp -R build/ios/iphoneos/Runner.app build/ios/Payload/ - (cd build/ios && zip -qr ../../dist/Komet-ios-unsigned.ipa Payload) + (cd build/ios && zip -qr ../../dist/Qlyra-ios-unsigned.ipa Payload) rm -rf build/ios/Payload - name: Upload unsigned iOS artifact uses: actions/upload-artifact@v4 with: - name: komet-ios-unsigned - path: dist/Komet-ios-unsigned.ipa + name: qlyra-ios-unsigned + path: dist/Qlyra-ios-unsigned.ipa if-no-files-found: error retention-days: 30 @@ -79,9 +79,9 @@ jobs: get-task-allow - application-identifierru.komet.app + application-identifierru.qlyra.app keychain-access-groups - ru.komet.app + ru.qlyra.app PLIST @@ -104,12 +104,12 @@ jobs: run: | mkdir -p dist build/ios/Payload cp -R build/ios/iphoneos/Runner.app build/ios/Payload/ - (cd build/ios && zip -qr ../../dist/Komet-ios-pseudosigned.ipa Payload) + (cd build/ios && zip -qr ../../dist/Qlyra-ios-pseudosigned.ipa Payload) - name: Upload iOS artifact uses: actions/upload-artifact@v4 with: - name: komet-ios-pseudosigned - path: dist/Komet-ios-pseudosigned.ipa + name: qlyra-ios-pseudosigned + path: dist/Qlyra-ios-pseudosigned.ipa if-no-files-found: error retention-days: 30 diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index d47216f..69aa10b 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -56,12 +56,12 @@ jobs: - name: Package Linux run: | mkdir -p dist - tar -C build/linux/x64/release/bundle -czf dist/Komet-linux-x64.tar.gz . + tar -C build/linux/x64/release/bundle -czf dist/Qlyra-linux-x64.tar.gz . - name: Upload Linux artifact uses: actions/upload-artifact@v4 with: - name: komet-linux-x64 - path: dist/Komet-linux-x64.tar.gz + name: qlyra-linux-x64 + path: dist/Qlyra-linux-x64.tar.gz if-no-files-found: error retention-days: 30 diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 0c07ea5..f1351c8 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -51,7 +51,7 @@ jobs: - name: Upload macOS DMG artifact uses: actions/upload-artifact@v4 with: - name: komet-macos + name: qlyra-macos path: dist/*.dmg if-no-files-found: error retention-days: 30 diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index ede96ba..7489aca 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -52,12 +52,12 @@ jobs: shell: pwsh run: | New-Item -ItemType Directory -Force -Path dist | Out-Null - Compress-Archive -Path build/windows/x64/runner/Release/* -DestinationPath dist/Komet-windows-x64.zip + Compress-Archive -Path build/windows/x64/runner/Release/* -DestinationPath dist/Qlyra-windows-x64.zip - name: Upload Windows artifact uses: actions/upload-artifact@v4 with: - name: komet-windows-x64 - path: dist/Komet-windows-x64.zip + name: qlyra-windows-x64 + path: dist/Qlyra-windows-x64.zip if-no-files-found: error retention-days: 30 diff --git a/.github/workflows/flutter-dev.yml b/.github/workflows/flutter-dev.yml index 92e7052..95f4b8e 100644 --- a/.github/workflows/flutter-dev.yml +++ b/.github/workflows/flutter-dev.yml @@ -60,17 +60,17 @@ jobs: echo "KEYSTORE_BASE64 secret not set — release will be debug-signed." exit 0 fi - echo "$KEYSTORE_BASE64" | base64 -d > android/app/komet-release.jks + echo "$KEYSTORE_BASE64" | base64 -d > android/app/qlyra-release.jks { echo "storePassword=$KEYSTORE_PASSWORD" echo "keyPassword=$KEY_PASSWORD" echo "keyAlias=$KEY_ALIAS" - echo "storeFile=komet-release.jks" + echo "storeFile=qlyra-release.jks" } > android/key.properties echo "Release signing configured." - name: Build Android APK - run: flutter build apk --release --flavor komet + run: flutter build apk --release --flavor qlyra build-ios: runs-on: macos-latest diff --git a/.github/workflows/flutter-main.yml b/.github/workflows/flutter-main.yml index 3e065f9..c327b70 100644 --- a/.github/workflows/flutter-main.yml +++ b/.github/workflows/flutter-main.yml @@ -59,17 +59,17 @@ jobs: echo "KEYSTORE_BASE64 secret not set — release will be debug-signed." exit 0 fi - echo "$KEYSTORE_BASE64" | base64 -d > android/app/komet-release.jks + echo "$KEYSTORE_BASE64" | base64 -d > android/app/qlyra-release.jks { echo "storePassword=$KEYSTORE_PASSWORD" echo "keyPassword=$KEY_PASSWORD" echo "keyAlias=$KEY_ALIAS" - echo "storeFile=komet-release.jks" + echo "storeFile=qlyra-release.jks" } > android/key.properties echo "Release signing configured." - name: Build Android APK - run: flutter build apk --release --flavor komet + run: flutter build apk --release --flavor qlyra linux: runs-on: ubuntu-latest diff --git a/.github/workflows/release-dev.yml b/.github/workflows/release-dev.yml index 573b309..43f5908 100644 --- a/.github/workflows/release-dev.yml +++ b/.github/workflows/release-dev.yml @@ -23,7 +23,7 @@ jobs: strategy: fail-fast: false matrix: - flavor: [komet, oneme] + flavor: [qlyra, oneme] steps: - uses: actions/checkout@v3 with: @@ -70,12 +70,12 @@ jobs: echo "KEYSTORE_BASE64 secret not set — release will be debug-signed." exit 0 fi - echo "$KEYSTORE_BASE64" | base64 -d > android/app/komet-release.jks + echo "$KEYSTORE_BASE64" | base64 -d > android/app/qlyra-release.jks { echo "storePassword=$KEYSTORE_PASSWORD" echo "keyPassword=$KEY_PASSWORD" echo "keyAlias=$KEY_ALIAS" - echo "storeFile=komet-release.jks" + echo "storeFile=qlyra-release.jks" } > android/key.properties echo "Release signing configured." @@ -89,12 +89,12 @@ jobs: run: | F=${{ matrix.flavor }} mkdir -p dist - cp build/app/outputs/flutter-apk/app-$F-release.apk dist/Komet-android-$F-universal.apk - cp build/app/outputs/flutter-apk/app-arm64-v8a-$F-release.apk dist/Komet-android-$F-arm64-v8a.apk - cp build/app/outputs/flutter-apk/app-armeabi-v7a-$F-release.apk dist/Komet-android-$F-armeabi-v7a.apk - cp build/app/outputs/flutter-apk/app-x86_64-$F-release.apk dist/Komet-android-$F-x86_64.apk - cp build/app/outputs/bundle/${F}Release/app-$F-release.aab dist/Komet-android-$F.aab - tar -czf dist/Komet-android-$F-symbols.tar.gz -C build/symbols . + cp build/app/outputs/flutter-apk/app-$F-release.apk dist/Qlyra-android-$F-universal.apk + cp build/app/outputs/flutter-apk/app-arm64-v8a-$F-release.apk dist/Qlyra-android-$F-arm64-v8a.apk + cp build/app/outputs/flutter-apk/app-armeabi-v7a-$F-release.apk dist/Qlyra-android-$F-armeabi-v7a.apk + cp build/app/outputs/flutter-apk/app-x86_64-$F-release.apk dist/Qlyra-android-$F-x86_64.apk + cp build/app/outputs/bundle/${F}Release/app-$F-release.aab dist/Qlyra-android-$F.aab + tar -czf dist/Qlyra-android-$F-symbols.tar.gz -C build/symbols . - name: Upload Android artifacts (${{ matrix.flavor }}) uses: actions/upload-artifact@v4 @@ -127,7 +127,7 @@ jobs: shell: pwsh run: | New-Item -ItemType Directory -Force -Path dist | Out-Null - Compress-Archive -Path build/windows/x64/runner/Release/* -DestinationPath dist/Komet-windows-x64.zip + Compress-Archive -Path build/windows/x64/runner/Release/* -DestinationPath dist/Qlyra-windows-x64.zip - name: Upload Windows artifact uses: actions/upload-artifact@v4 with: @@ -162,7 +162,7 @@ jobs: - name: Package Linux run: | mkdir -p dist - tar -C build/linux/x64/release/bundle -czf dist/Komet-linux-x64.tar.gz . + tar -C build/linux/x64/release/bundle -czf dist/Qlyra-linux-x64.tar.gz . - name: Upload Linux artifact uses: actions/upload-artifact@v4 with: @@ -196,7 +196,7 @@ jobs: run: | mkdir -p dist APP=$(find build/macos/Build/Products/Release -maxdepth 1 -name "*.app" | head -1) - ditto -c -k --keepParent "$APP" dist/Komet-macos.zip + ditto -c -k --keepParent "$APP" dist/Qlyra-macos.zip - name: Upload macOS artifact uses: actions/upload-artifact@v4 with: @@ -230,7 +230,7 @@ jobs: run: | mkdir -p dist build/ios/Payload cp -R build/ios/iphoneos/Runner.app build/ios/Payload/ - (cd build/ios && zip -qr ../../dist/Komet-ios-unsigned.ipa Payload) + (cd build/ios && zip -qr ../../dist/Qlyra-ios-unsigned.ipa Payload) rm -rf build/ios/Payload - name: Install ldid run: brew install ldid @@ -246,9 +246,9 @@ jobs: platform-application get-task-allow - application-identifierru.komet.app + application-identifierru.qlyra.app keychain-access-groups - ru.komet.app + ru.qlyra.app com.apple.private.security.no-container @@ -271,7 +271,7 @@ jobs: run: | mkdir -p dist build/ios/Payload cp -R build/ios/iphoneos/Runner.app build/ios/Payload/ - (cd build/ios && zip -qr ../../dist/Komet-ios-pseudosigned.ipa Payload) + (cd build/ios && zip -qr ../../dist/Qlyra-ios-pseudosigned.ipa Payload) - name: Upload iOS artifact uses: actions/upload-artifact@v4 with: @@ -297,7 +297,7 @@ jobs: BUILD="${{ github.event.inputs.build_number }}" BUILD="${BUILD:-$GITHUB_RUN_NUMBER}" echo "tag=v${BRANCH_VERSION}-dev.${BUILD}" >> "$GITHUB_OUTPUT" - echo "name=Komet ${BRANCH_VERSION}-dev (build ${BUILD})" >> "$GITHUB_OUTPUT" + echo "name=Qlyra ${BRANCH_VERSION}-dev (build ${BUILD})" >> "$GITHUB_OUTPUT" - name: List artifacts run: ls -lhR dist diff --git a/.github/workflows/release-main.yml b/.github/workflows/release-main.yml index d6ea1b4..15714b7 100644 --- a/.github/workflows/release-main.yml +++ b/.github/workflows/release-main.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - flavor: [komet, oneme] + flavor: [qlyra, oneme] steps: - uses: actions/checkout@v3 with: @@ -65,12 +65,12 @@ jobs: echo "KEYSTORE_BASE64 secret not set — release will be debug-signed." exit 0 fi - echo "$KEYSTORE_BASE64" | base64 -d > android/app/komet-release.jks + echo "$KEYSTORE_BASE64" | base64 -d > android/app/qlyra-release.jks { echo "storePassword=$KEYSTORE_PASSWORD" echo "keyPassword=$KEY_PASSWORD" echo "keyAlias=$KEY_ALIAS" - echo "storeFile=komet-release.jks" + echo "storeFile=qlyra-release.jks" } > android/key.properties echo "Release signing configured." @@ -84,12 +84,12 @@ jobs: run: | F=${{ matrix.flavor }} mkdir -p dist - cp build/app/outputs/flutter-apk/app-$F-release.apk dist/Komet-android-$F-universal.apk - cp build/app/outputs/flutter-apk/app-arm64-v8a-$F-release.apk dist/Komet-android-$F-arm64-v8a.apk - cp build/app/outputs/flutter-apk/app-armeabi-v7a-$F-release.apk dist/Komet-android-$F-armeabi-v7a.apk - cp build/app/outputs/flutter-apk/app-x86_64-$F-release.apk dist/Komet-android-$F-x86_64.apk - cp build/app/outputs/bundle/${F}Release/app-$F-release.aab dist/Komet-android-$F.aab - tar -czf dist/Komet-android-$F-symbols.tar.gz -C build/symbols . + cp build/app/outputs/flutter-apk/app-$F-release.apk dist/Qlyra-android-$F-universal.apk + cp build/app/outputs/flutter-apk/app-arm64-v8a-$F-release.apk dist/Qlyra-android-$F-arm64-v8a.apk + cp build/app/outputs/flutter-apk/app-armeabi-v7a-$F-release.apk dist/Qlyra-android-$F-armeabi-v7a.apk + cp build/app/outputs/flutter-apk/app-x86_64-$F-release.apk dist/Qlyra-android-$F-x86_64.apk + cp build/app/outputs/bundle/${F}Release/app-$F-release.aab dist/Qlyra-android-$F.aab + tar -czf dist/Qlyra-android-$F-symbols.tar.gz -C build/symbols . - name: Upload Android artifacts (${{ matrix.flavor }}) uses: actions/upload-artifact@v4 @@ -122,7 +122,7 @@ jobs: shell: pwsh run: | New-Item -ItemType Directory -Force -Path dist | Out-Null - Compress-Archive -Path build/windows/x64/runner/Release/* -DestinationPath dist/Komet-windows-x64.zip + Compress-Archive -Path build/windows/x64/runner/Release/* -DestinationPath dist/Qlyra-windows-x64.zip - name: Upload Windows artifact uses: actions/upload-artifact@v4 with: @@ -157,7 +157,7 @@ jobs: - name: Package Linux run: | mkdir -p dist - tar -C build/linux/x64/release/bundle -czf dist/Komet-linux-x64.tar.gz . + tar -C build/linux/x64/release/bundle -czf dist/Qlyra-linux-x64.tar.gz . - name: Upload Linux artifact uses: actions/upload-artifact@v4 with: @@ -189,7 +189,7 @@ jobs: run: | mkdir -p dist APP=$(find build/macos/Build/Products/Release -maxdepth 1 -name "*.app" | head -1) - ditto -c -k --keepParent "$APP" dist/Komet-macos.zip + ditto -c -k --keepParent "$APP" dist/Qlyra-macos.zip - name: Upload macOS artifact uses: actions/upload-artifact@v4 with: @@ -233,9 +233,9 @@ jobs: platform-application get-task-allow - application-identifierru.komet.app + application-identifierru.qlyra.app keychain-access-groups - ru.komet.app + ru.qlyra.app com.apple.private.security.no-container @@ -258,7 +258,7 @@ jobs: run: | mkdir -p dist build/ios/Payload cp -R build/ios/iphoneos/Runner.app build/ios/Payload/ - (cd build/ios && zip -qr ../../dist/Komet-ios-pseudosigned.ipa Payload) + (cd build/ios && zip -qr ../../dist/Qlyra-ios-pseudosigned.ipa Payload) - name: Upload iOS artifact uses: actions/upload-artifact@v4 with: @@ -286,7 +286,7 @@ jobs: run: | PUBSPEC_VERSION=$(grep '^version:' pubspec.yaml | awk '{print $2}' | cut -d'+' -f1) echo "tag=v${PUBSPEC_VERSION}+${GITHUB_RUN_NUMBER}" >> "$GITHUB_OUTPUT" - echo "name=Komet ${PUBSPEC_VERSION} (сборка ${GITHUB_RUN_NUMBER})" >> "$GITHUB_OUTPUT" + echo "name=Qlyra ${PUBSPEC_VERSION} (сборка ${GITHUB_RUN_NUMBER})" >> "$GITHUB_OUTPUT" - name: List artifacts run: ls -lhR dist @@ -305,31 +305,31 @@ jobs: ## Какой файл качать - ### Android — версия Komet (без push-уведомлений) - - **`Komet-android-komet-arm64-v8a.apk`** — рекомендуется для большинства современных телефонов (64-битный ARM). - - `Komet-android-komet-universal.apk` — универсальный APK, работает везде, но весит больше. - - `Komet-android-komet-armeabi-v7a.apk` — для старых 32-битных устройств. - - `Komet-android-komet-x86_64.apk` — для эмуляторов и редких x86-устройств. - - `Komet-android-komet.aab` — App Bundle для публикации в Google Play (не для ручной установки). + ### Android — версия Qlyra (без push-уведомлений) + - **`Qlyra-android-qlyra-arm64-v8a.apk`** — рекомендуется для большинства современных телефонов (64-битный ARM). + - `Qlyra-android-qlyra-universal.apk` — универсальный APK, работает везде, но весит больше. + - `Qlyra-android-qlyra-armeabi-v7a.apk` — для старых 32-битных устройств. + - `Qlyra-android-qlyra-x86_64.apk` — для эмуляторов и редких x86-устройств. + - `Qlyra-android-qlyra.aab` — App Bundle для публикации в Google Play (не для ручной установки). ### Android — версия OneMe (с push-уведомлениями через Firebase) - - **`Komet-android-oneme-arm64-v8a.apk`** — рекомендуется для большинства современных телефонов. - - `Komet-android-oneme-universal.apk` — универсальный APK. - - `Komet-android-oneme-armeabi-v7a.apk` — для старых 32-битных устройств. - - `Komet-android-oneme-x86_64.apk` — для эмуляторов и x86-устройств. - - `Komet-android-oneme.aab` — App Bundle для Google Play. + - **`Qlyra-android-oneme-arm64-v8a.apk`** — рекомендуется для большинства современных телефонов. + - `Qlyra-android-oneme-universal.apk` — универсальный APK. + - `Qlyra-android-oneme-armeabi-v7a.apk` — для старых 32-битных устройств. + - `Qlyra-android-oneme-x86_64.apk` — для эмуляторов и x86-устройств. + - `Qlyra-android-oneme.aab` — App Bundle для Google Play. ### Windows - - **`Komet-windows-x64.zip`** — портативная сборка для Windows 10/11 (x64). Распаковать и запустить `Komet.exe`. + - **`Qlyra-windows-x64.zip`** — портативная сборка для Windows 10/11 (x64). Распаковать и запустить `Qlyra.exe`. ### Linux - - **`Komet-linux-x64.tar.gz`** — сборка для 64-битного Linux. Требуются `libgtk-3`, `libsecret-1`, `libjsoncpp`. Распаковать и запустить бинарник. + - **`Qlyra-linux-x64.tar.gz`** — сборка для 64-битного Linux. Требуются `libgtk-3`, `libsecret-1`, `libjsoncpp`. Распаковать и запустить бинарник. ### macOS - - **`Komet-macos.zip`** — `.app` для macOS. Распаковать и перетащить в `/Applications`. Приложение не нотаризовано — при первом запуске разрешите через «Системные настройки → Защита и безопасность». + - **`Qlyra-macos.zip`** — `.app` для macOS. Распаковать и перетащить в `/Applications`. Приложение не нотаризовано — при первом запуске разрешите через «Системные настройки → Защита и безопасность». ### iOS - - **`Komet-ios-pseudosigned.ipa`** — IPA с псевдо-подписью (ldid). + - **`Qlyra-ios-pseudosigned.ipa`** — IPA с псевдо-подписью (ldid). ⚠️ Не устанавливается через App Store. Подходит для: - jailbreak (Filza, rootless), - TrollStore, diff --git a/.gitignore b/.gitignore index d108e96..a6a7e92 100644 --- a/.gitignore +++ b/.gitignore @@ -136,7 +136,7 @@ agents.md .env .env.* # Локальные дампы трафика и скрипты анализа (содержат секреты) -komet.txt +qlyra.txt original_app.txt fingerprint.py PCAPdroid_*.txt @@ -149,8 +149,5 @@ maxtun/ turnprobe/ test/live_server_probe_test.dart -# local kolibri development: point the plugin at third_party/kolibri and the -# Rust core at third_party/kolibri/kolibri-net instead of the published ones pubspec_overrides.yaml .cargo/ -third_party/kolibri/ diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 31f08e1..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "cmake.sourceDirectory": "/run/media/invisedivine/Drive/! My projects/Komet/linux/runner", - "kiroAgent.configureMCP": "Disabled" -} \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md deleted file mode 100644 index ff1e7da..0000000 --- a/AGENTS.md +++ /dev/null @@ -1,8 +0,0 @@ -Не оставляй комментарии в код -Старайся писать чистый код -Лучше качество чем количество -Когда при исправления какой то ошибки/добавление новой возникает ситуация 50/50 где можно выбрать починить сейчас но костылём, или чинить долго, упорно, может даже вообще не починить и переписать пол приложения - выбирай долго и упорно. -ВМЕСТО СНЕКБАРОВ ИСПОЛЬЗУЙ НАШИ КАСТОМНЫЕ УВЕДОМЛЕНИЕ showCustomNotification(context, 'текст') -Never leave real data in test files, including existing message contents or real IDs captured from requests. Use synthetic fixtures instead. -Не пытайся собирать APK/AAB (flutter build apk, flutter build appbundle, gradle assemble) — сборку запускает пользователь, тебе достаточно flutter analyze -Если делаешь кнопку, где иконка переключается перечёркнутая/неперечёркнутая (вспышка, микрофон, звук, уведомления) — она должна анимироваться lottie-иконкой, а не подменяться мгновенно: добавь спеку в SLASH_SPECS в tool/make_morph_icons.py (fill=1.0, если кнопка рисует Icon(..., fill: 1)), прогони python3 tool/make_morph_icons.py и выводи через LottieSlashIcon. Ассеты в assets/lottie/ руками не правь — только через генератор. diff --git a/CLAUDE.md b/CLAUDE.md index 4be5eb0..ef1588d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,20 +4,20 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project -Komet is a cross-platform Flutter messaging client (Android, iOS, macOS, Windows, Linux, Web) that communicates via a custom packet-based protocol with MessagePack serialization and Zstd compression. +Qlyra is a cross-platform Flutter messaging client (Android, iOS, macOS, Windows, Linux, Web) that communicates via a custom packet-based protocol with MessagePack serialization and Zstd compression. ## Commands ```bash flutter pub get # install dependencies flutter analyze # lint / static analysis -flutter run # run on connected device (default: komet flavor) +flutter run # run on connected device (default: qlyra flavor) flutter run --flavor oneme -t lib/main.dart # run oneme flavor (FCM) # Android builds (release builds use obfuscation; keep symbols to de-obfuscate crashes) -flutter build apk --release --flavor komet --obfuscate --split-debug-info=build/symbols -flutter build apk --release --split-per-abi --flavor komet --obfuscate --split-debug-info=build/symbols -flutter build appbundle --release --flavor komet --obfuscate --split-debug-info=build/symbols +flutter build apk --release --flavor qlyra --obfuscate --split-debug-info=build/symbols +flutter build apk --release --split-per-abi --flavor qlyra --obfuscate --split-debug-info=build/symbols +flutter build appbundle --release --flavor qlyra --obfuscate --split-debug-info=build/symbols # Other platforms flutter build ios --release --no-codesign @@ -35,10 +35,10 @@ Android builds require **Java 17**. Gradle memory is configured to `-Xmx4096m`. | Flavor | App ID | Notes | |--------|--------|-------| -| `komet` | `ru.komet.app` | Default, no FCM | +| `qlyra` | `ru.qlyra.app` | Default, no FCM | | `oneme` | `ru.oneme.app` | FCM push notifications via Firebase | -Flavor-specific Android resources live in `android/app/src/komet/` and `android/app/src/oneme/`. +Flavor-specific Android resources live in `android/app/src/qlyra/` and `android/app/src/oneme/`. ## Architecture @@ -97,5 +97,5 @@ Four GitHub Actions workflows in `.github/workflows/`: - `flutter-dev.yml` — PR lint + Android build for dev branch - `flutter-main.yml` — PR lint + all-platform builds for main branch -- `build-android.yml` — production APKs + AAB (`komet` flavor), triggered on push to main +- `build-android.yml` — production APKs + AAB (`qlyra` flavor), triggered on push to main - `build-android-fcm.yml` — production APKs + AAB (`oneme` flavor with FCM), triggered on push to main diff --git a/README.md b/README.md index abc8f77..0ffc3b0 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,16 @@ -> [!IMPORTANT] -> Потерялись? Возможно вы ищите старую версию Komet. Она расположена [здесь](https://github.com/KometTeam/KometOld). ---- +Qlyra Logo -Komet Logo +# Qlyra -# Komet -Альтернативный FOSS клиент для мессенджера MAX +Кроссплатформенный клиент для мессенджера MAX. -## Установка -[Последний релиз](https://github.com/KometTeam/Komet/releases/latest) / [Telegram Канал](https://t.me/TeamKomet) +## Android + +Основной вариант приложения использует идентификатор `ru.qlyra.app` и flavor `qlyra`. ## Сборка из исходного кода + ```console $ flutter build [windows|linux] [--release] +$ flutter build apk --release --flavor qlyra ``` - -## Хотите помочь? -Нашли ошибку и сами её исправили? Сделайте Pull-Request.
diff --git a/android/.gitignore b/android/.gitignore index e2c2cc8..cf547f7 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -11,6 +11,6 @@ GeneratedPluginRegistrant.java # See https://flutter.dev/to/reference-keystore key.properties app/key.properties -app/komet-release.jks +app/qlyra-release.jks **/*.keystore **/*.jks diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 169f484..2f636a8 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -17,7 +17,7 @@ if (hasReleaseSigning) { } android { - namespace = "ru.komet.app" + namespace = "ru.qlyra.app" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion @@ -32,7 +32,7 @@ android { } defaultConfig { - applicationId = "ru.komet.app" + applicationId = "ru.qlyra.app" minSdk = maxOf(flutter.minSdkVersion, 23) targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode @@ -54,10 +54,10 @@ android { flavorDimensions += "distribution" productFlavors { - create("komet") { + create("qlyra") { dimension = "distribution" isDefault = true - applicationId = "ru.komet.app" + applicationId = "ru.qlyra.app" } create("oneme") { dimension = "distribution" diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 0501773..b101f0c 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -33,15 +33,15 @@ - - - - - - - - - - + @@ -104,12 +95,12 @@ + android:icon="@mipmap/ic_launcher" + android:label="Qlyra" + android:targetActivity="ru.qlyra.app.MainActivity"> @@ -130,10 +121,10 @@ + android:resource="@xml/qlyra_nfc_apdu"/> @@ -175,7 +166,7 @@ android:value="2" /> + android:value="qlyra_messages" />