Files
app/README.md
T
2026-11-01 20:18:56 +03:00

7.2 KiB
Raw Permalink Blame History

Читать на других языках: English

FromChat

FromChat — 100% бесплатный и открытый мессенджер. В этом репозитории — кроссплатформенный клиент (Android, Desktop на Compose Multiplatform и iOS).

Агентам: AGENTS.md и .agents/skills/ (релиз — skill release, /release); людям — политика ИИ.

📥 Скачать • 💬 Telegram-канал • 🖥️ Сервер

✨ Возможности

  • Голосовые и видеозвонки — LiveKit
  • Демонстрация экрана во время звонков (Android)
  • Общий чат — сообщество пользователей сервера
  • Личные сообщения — легальная схема шифрования; E2EE на сервере планируется
  • Управление устройствами — активные сеансы
  • Тёмный режим по умолчанию
  • Открытый исходный код

📊 Сравнение клиентов

Возможность Android Desktop Web iOS
Обмен сообщениями и профили ✅ ✅ ✅ ✅
Голосовые/видеозвонки ✅ ✅ ✅ ✅
Демонстрация экрана ✅ ❌ ✅ ❌
Push в фоне ✅ (FCM) ✅ (постоянный WS + tray) ✅ ❌ (WS пока открыто)
Реакции на сообщения ❌ ❌ ✅ ❌
Расширенная поддержка вложений ✅ ✅ ❌ ✅

Desktop заменяет бывший Electron-клиент в репозитории Web. Запуск: ./gradlew :app:desktop:run.

Сборка Desktop

Релизные пакеты собираются на соответствующей ОС (или в CI):

Задача Хост Артефакты
./gradlew :app:desktop:packageReleaseMac macOS FromChat-<ver>-macOS.dmg
./gradlew :app:desktop:packageReleaseLinux Linux .deb, .rpm, .AppImage (нужен appimagetool)
./gradlew :app:desktop:packageReleaseWindows Windows FromChat-Setup-<ver>.exe, FromChat-Portable-<ver>.exe (нужен Rust)
./gradlew :app:desktop:packageReleaseDesktop текущая ОС делегирует в задачу выше

Результаты: app/desktop/build/distributions/release/.

CI: .github/workflows/release.yml запускается только через workflow_dispatch (обязательный input version; тег v* создавать заранее не нужно — publish создаёт его сам), затем загрузка в GitHub Release.

Windows portable: установщик распаковывает готовую папку (jpackage). Запуск — только FromChat.exe; portable задаётся в FromChat.cfg. Данные в fromchat-data/ или fromchat-data-beta/; не AppData. При запуске ничего не распаковывается.

Установка: Windows %LOCALAPPDATA%\FromChat, macOS ~/Library/Application Support/FromChat, Linux ~/.local/share/FromChat (миграция с ~/.fromchat/cache при наличии).


🏗️ Технологический стек

  • Kotlin
  • Compose Multiplatform
  • Material Design 3
  • Ktor Client
  • LiveKit — звонки
  • SQLDelight — локальное хранилище
  • Firebase Messaging — push
  • Coil — изображения

📥 Сборка и разработка (Android Studio)

Требования

  • Актуальная Android Studio
  • JDK из Android Studio (JetBrains Runtime)

Быстрый старт

  1. Клонируйте репозиторий:

    git clone https://github.com/fromchat-messenger/android.git
    cd android
    
  2. Сгенерируйте ключи (Debug & Release):

    DEBUG_STORE_PASS="CHANGEME"
    DEBUG_KEY_PASS="CHANGEME"
    RELEASE_STORE_PASS="CHANGEME"
    RELEASE_KEY_PASS="CHANGEME"
    
    mkdir -p app/android/keys
    
    keytool -genkey -v -keystore app/android/keys/debug.jks \
      -keyalg RSA -keysize 2048 -validity 10000 \
      -alias key0 -storepass "$DEBUG_STORE_PASS" -keypass "$DEBUG_KEY_PASS" \
      -dname "CN=Debug, O=FromChat, C=RU"
    
    keytool -genkey -v -keystore app/android/keys/release.jks \
      -keyalg RSA -keysize 2048 -validity 10000 \
      -alias key0 -storepass "$RELEASE_STORE_PASS" -keypass "$RELEASE_KEY_PASS" \
      -dname "CN=Release, O=FromChat, C=RU"
    
    cat > app/android/keys/keystore.properties << EOF
    releaseStorePassword=$RELEASE_STORE_PASS
    releaseKeyPassword=$RELEASE_KEY_PASS
    debugStorePassword=$DEBUG_STORE_PASS
    debugKeyPassword=$DEBUG_KEY_PASS
    EOF
    
  3. Откройте в Android Studio: File → Open → корень репозитория. Gradle подтянет зависимости сам.

  4. Запустите: Run → Run 'Android' (или debug-конфигурацию приложения).
    Debug application id: ru.fromchat.beta.

Сборка из CLI

export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
./gradlew :app:shared:compileAndroidMain :app:android:assembleDebug

APK: app/android/build/outputs/apk/debug/android-debug.apk.

Структура проекта

android/
├── app/
│   ├── android/          # Android app module
│   └── shared/           # Compose Multiplatform
│       ├── commonMain/
│       ├── androidMain/
│       └── iosMain/      # ещё не готово
│           └── …/ru/fromchat/utils/  # общие утилиты (settings, crypto, UI helpers)
└── gradle/libs.versions.toml

Стиль кода: CODE_STYLE.md.


🤝 Внести вклад

Pull Request приветствуются. Перед крупными изменениями загляните в CODE_STYLE.md.

📄 Лицензия

GNU Affero General Public License v3.0 — см. LICENSE.

🔗 Связанные репозитории