# Aplicativos Kordia

Os clientes preservam Electron/React e Flutter nativos dos projetos Fluxer, suas chamadas LiveKit/WebRTC, notificações, captura de tela, bandeja e permissões. Não há outro backend ou banco. Instância única: `https://143.20.50.74/api`; gateway `wss://143.20.50.74/gateway`. Certificados permanecem verificados pelo sistema operacional. API, descoberta e endpoints anunciados são validados antes de usar sessões.

## Código e ferramentas

- Desktop: `/root/MinhaPlataforma/fluxer_desktop`, upstream `fluxerapp/fluxer` revisão `d514501d57a60093c962a288bd4253b4039301e4`.
- Mobile: `/root/KordiaMobile`, upstream `fluxerapp/flutter_client` revisão `bdd60a9d162e7c310869d8021843ee00a1e7ffbd` (canary); submódulos `dart_sdk` e `fluxer` fixados pelo git.
- Flutter 3.47.7, Dart 3.13.5; checkout Flutter `abaf9c523780a608bd46686fd5e53740a07077f8`. Rust 1.99.0; desktop Node 26/pnpm 11.27.0; Android Java 17/NDK 28.2.13676358.
- Ubuntu real é 22.04 amd64. Windows e macOS/Xcode não estão disponíveis aqui. Outros serviços usam grande parte da RAM; builds têm paralelismo limitado.

## Windows

Copiar o repositório completo modificado para um repositório GitHub sob controle do proprietário. Executar `.github/workflows/kordia-windows.yml` via Actions → Kordia Windows → Run workflow. Não usar a CI original do upstream: exige credenciais de publicação do Fluxer. A CI Kordia compila o renderer React completo no Ubuntu, transfere-o para Windows, compila addons nativos obrigatórios, empacota com electron-builder, executa a verificação original de inicialização do renderer e gera instalador Velopack 1.2.0 e checksums.

O job x64 usa Windows 2025; ARM64 opcional usa Windows ARM nativo e depende da disponibilidade desse runner no plano GitHub. `kordia/build-windows.ps1` contém a execução equivalente. Produto `Kordia`, ID `app.kordia`, protocolo `kordia:`, perfil de usuário separado `kordia`, AUMID próprio. Artefatos esperados **somente após CI bem-sucedida**: `Kordia-Setup-x64.exe`, opcional `Kordia-Setup-arm64.exe`, pacotes `.nupkg`, feeds reais e `SHA256SUMS`. Nenhum EXE foi gerado nesta VPS.

A CI atual produz instalador de teste sem Authenticode; não há certificado Windows fornecido. Distribuição pública assinada requer certificado/serviço de assinatura pertencente ao proprietário e assinatura de executáveis, DLLs e instalador no job Windows, seguindo as etapas de assinatura originais. Não usar chaves do Fluxer nem publicar senha de PFX.

## Atualizações Windows

O atualizador original Velopack aponta exclusivamente para `https://143.20.50.74/updates/desktop/stable/win32/x64/` ou `.../arm64/`. A infraestrutura HTTPS já serve `/updates/` de um volume somente leitura. Depois de compilar e testar uma versão, copiar **todos** os arquivos de feed e `.nupkg` correspondentes para `kordia/updates/desktop/stable/win32/ARQUITETURA/`. Manter os nomes citados em `releases.win.json`. O helper `python3 kordia/publish-windows-release.py CAMINHO_DOS_ARTEFATOS --arch x64` verifica checksums e pacotes do feed e publica o feed por último; use-o somente depois de revisar a assinatura e validar o instalador. Publicar pacotes primeiro e substituir o feed por último de forma atômica. Nunca criar feed fictício nem apontar para pkgs.fluxer.app. Nesta entrega o diretório permanece vazio até existir release Windows real.

## Android

Repositório `/root/KordiaMobile`. Instalar Flutter fixado, Rust com targets Android, Java 17, SDK Android e NDK citado. Executar `./kordia/build-android.sh`. O perfil oficial `oss`, sabor `stableUnifiedpush`, preserva API, gateway, LiveKit e uploads. Identificador `com.kordia`; APK arm64 para aparelhos atuais, AAB com ARM64/ARMv7/x86_64 para publicação. A build usa `--split-per-abi` para que bibliotecas de plugins de outra arquitetura não façam um APK ARM64 se anunciar como x86_64. Chave de assinatura própria foi gerada privadamente nesta VPS; `android/key.properties`, keystore e senhas estão ignorados no git e não entram em downloads/código-fonte.

Para CI, configurar `KORDIA_ANDROID_KEYSTORE_BASE64`, `KORDIA_ANDROID_STORE_PASSWORD`, `KORDIA_ANDROID_KEY_PASSWORD`, `KORDIA_ANDROID_KEY_ALIAS` nos GitHub Secrets do repositório mobile. Fazer backup seguro da chave existente antes de distribuir: atualizações precisam da mesma assinatura. O script exige chave real e não substitui release por assinatura debug.

Há uma incompatibilidade upstream: plugins permission_handler_android e receive_sharing_intent pedem SDK 37, mas o pacote oficial se chama 37.0. A configuração Kordia atualiza AGP/Gradle e resolve explicitamente `android-37.0` para app e plugins. Base técnica: [compatibilidade AGP 9.1.1](https://developer.android.com/build/releases/agp-9-1-0-release-notes), [transição Kotlin/Flutter](https://docs.flutter.dev/release/breaking-changes/migrate-to-built-in-kotlin). Não foram removidos controles de permissão para contornar a build. O script `kordia/patch_android_dependencies.py` aplica uma correção reproduzível nos dois adaptadores Cargokit para extrair a API inteira do identificador 37.0, mantendo todas as bibliotecas Rust. O mesmo patch adapta chamadas antigas `Project.exec` para `ExecOperations` injetado, necessário no Gradle 9. O código Kotlin trata `taskInfo` ausente sem causar falha nas versões novas do Android. A configuração transitória `android.builtInKotlin=false` / `android.newDsl=false` é mantida porque vários plugins upstream ainda usam a API antiga; uma atualização futura deve migrar os plugins juntos.

## iOS / TestFlight

O mesmo cliente mobile tem bundle ID `com.kordia`, App Group `group.com.kordia`, esquema `kordia`, ícones Kordia e extensões de notificações/compartilhamento/ReplayKit. IDs e equipe Apple do Fluxer foram retirados. CI `.github/workflows/kordia-mobile.yml` prepara build sem assinatura em macOS. Não há IPA nesta VPS Linux.

Em Mac, abrir `ios/Runner.xcworkspace` no Xcode após `flutter pub get`/CocoaPods, escolher equipe Apple própria para Runner e as três extensões. Registrar bundle IDs e App Group, ativar Push Notifications, Background Modes e capacidades necessárias; criar perfis de distribuição de cada target. Configurar `KORDIA_SIGN_IOS=1` e `KORDIA_EXPORT_OPTIONS` apontando para ExportOptions.plist privado; rodar `./kordia/build-ios.sh`. Enviar o IPA validado por Xcode Organizer/Transporter ao App Store Connect e disponibilizar no TestFlight. Credenciais Apple, políticas de privacidade, informações da loja e assinatura são pendências do proprietário, não resultados de testes.

## Push

Android OSS usa UnifiedPush oficial: instalar/configurar um distribuidor no aparelho, autorizar notificações e registrar endpoint nas configurações. API possui rotas de registro e worker de push existentes. Notificações em segundo plano **não foram testadas em dispositivo**. Não basta o botão estar presente.

FCM requer Firebase Kordia próprio, `google-services.json` correspondente a `com.kordia`, perfil oficial android-fcm e credencial de serviço no backend. APNs requer equipe/key ID/chave privada Apple próprios e registro de `com.kordia` no backend. Essa versão upstream possui política/relay de push específica para self-hosting; validar o caminho direto/relay compatível antes de ativar FCM/APNs. Não foram instaladas credenciais de terceiros nem inventados projetos Firebase. Mantidas notificações nativas locais e infraestrutura UnifiedPush existente.

## Verificação e manutenção

`/root/KordiaMobile/kordia/verification/bin/verify.dart` verifica descoberta com SDK oficial, duas sessões WSS e entrega/histórico usando tokens fornecidos exclusivamente por ambiente privado. Isso testa protocolo e compatibilidade do SDK, não aplicativos Windows/Android instalados. `VALIDACAO-MANUAL.md` descreve os testes reais pendentes. `RESULTADOS.md` registra apenas execuções observadas.

A chave Android também possui cópia privada 0600 em `ops/minhaplataforma/private/kordia-signing-backup-20261013.tar.gz`; guardar uma cópia segura fora da VPS. Os backups e restauração PostgreSQL/arquivos documentados em `ops/minhaplataforma/` continuam válidos. Nenhuma conta, mensagem, comunidade ou volume foi apagado. Não publicar `private/`, `.env`, `key.properties`, `.jks`, tokens ou logs privados. Redistribuição deve acompanhar fonte correspondente, scripts de build e licenças AGPLv3/terceiros. Créditos e avisos originais permanecem; a fonte pública está em `/source/`.

Plugins Android antigos passam a compilar com SDK mínimo 36; o aplicativo compila com 37.0 e mantém minSdk 24/targetSdk 36. Isso resolve a validação de metadados AndroidX sem remover módulos nativos.

A geração do AAB usa heap Gradle de 3 GiB e símbolos nativos `SYMBOL_TABLE`, evitando os mais de 400 MiB de metadados completos do motor Flutter. Dumps de JVM ficam desabilitados por padrão porque podem conter credenciais de assinatura; arquivos `.hprof` são excluídos da fonte publicada.

## Endereços e identidade Kordyx

Site: https://kordyx.xyz/ · Aplicação: https://web.kordyx.xyz/ . Logo fornecida pelo operador aplicada nos clientes. Os IDs `com.kordia`, esquema `kordia` e nomes existentes dos arquivos de download são mantidos para compatibilidade com instalações anteriores. Builds futuros Electron usam nome visível Kordyx; não há instalador Windows gerado nesta VPS. Android 1.0.3 fixa a própria instância e remove o seletor do login. O backend e os dados existentes são preservados. Ver DOMINIOS.md e os relatórios de testes.

Antes da primeira publicação no Google Play, escolha para o AAB um versionCode acima do maior APK distribuído (a versão de teste 1.0.3 usa 1004/2004/4004 nos APKs e 4 no AAB). O AAB entregue é um build de preparação verificado, sem submissão à loja. Guarde a mesma chave de upload e configure Play App Signing.

## Downloads e painel administrativo

O botão de download abre o portal de aplicativos Kordyx. As configurações de SMTP estão disponíveis no painel administrativo. Stripe está desativado; a integração com Mercado Pago está pendente, sem checkout ou cobrança ativa. Consulte DOWNLOADS-ADMIN-PAGAMENTOS.md e os relatórios download-admin-api-report.json e download-admin-browser-report.json.

## Documentação e portal de aplicativos

Guias: https://docs.kordyx.xyz/ . Downloads: https://downloads.kordyx.xyz/ . A documentação nativa Astro/Starlight foi adaptada e publicada, com guias Kordyx em português e referência técnica upstream em inglês. O portal continua na segunda VPS e mantém os APKs/AAB existentes. Ver DOCS-DOWNLOADS.md para implantação, reconstrução e resultados reais.
