No description
  • Java 54%
  • C++ 26.1%
  • C 11.5%
  • Assembly 4%
  • Go 1.4%
  • Other 2.6%
Find a file
2026-10-13 22:57:17 +03:00
.github Publish each main build as a GitHub pre-release for the beta update channel 2026-09-30 16:13:26 +03:00
assets Логотип в README — текущая иконка приложения 2026-08-18 23:05:58 +03:00
buildSrc update to 12.10.0 (7031) 2026-08-22 22:16:59 +09:00
gradle chore: update dependencies 2026-08-21 23:35:54 +09:00
tests Merge pull request #95 from omnizs38/main 2026-10-08 19:16:22 +03:00
TMessagesProj Force enable wallet for everyone 2026-10-13 22:57:17 +03:00
TMessagesProj_Modules Update tlottie, media3 and the ffmpeg decoder from Telegram 12.10.4 2026-09-27 12:15:53 +03:00
Tools CI: не отправлять сборки в Telegram, оставлять артефактами 2026-08-16 15:57:24 +03:00
.gitignore Merge pull request #33 from 0niel/ignore-jvm-crash-dumps 2026-09-11 18:03:35 +03:00
.gitmodules Update to 13.0.2 2026-10-13 22:57:17 +03:00
build.gradle Lower minSdk to 24, the floor Chaquopy requires 2026-09-17 21:31:41 +03:00
gradle.properties Update to 13.0.2 2026-10-13 22:57:17 +03:00
gradlew chore: update dependencies 2026-06-21 16:21:52 +09:00
gradlew.bat chore: update dependencies 2026-06-21 16:21:52 +09:00
LICENSE Remove web translators & Fixes 2020-06-26 05:43:17 +00:00
README.md Add the Inugram Monet style and keep Monet links chromatic on neutral palettes 2026-09-24 12:11:19 +03:00
settings.gradle update to upstream 12.10.2 2026-09-17 14:31:18 +03:00

exteraless

exteraless

Открытая версия exteraGram — с моделью разрешений для плагинов

Канал


Что это

exteraless — форк NagramX, в котором возможности exteraGram реализованы с открытым исходным кодом.

Отдельный упор — безопасность плагинов. В exteraGram плагин не ограничен ни в чём; здесь у него есть модель разрешений: плагин объявляет, что ему нужно, это видно на экране установки, и получает он только заявленное.

Проект в бете: часть возможностей exteraGram ещё не перенесена. Если заметили, что каких-то функций не хватает, — откройте issue или напишите в канал.

  • Имя пакета: com.exteraless.app
  • Что перенесено: экраны настроек, оформление и параметры чатов, иконпаки, полоса пилюль (Pill Stack), боковое меню, движок Python-плагинов

Ссылки

Сборка

  1. Склонировать репозиторий вместе с подмодулями:

    git clone --recursive --shallow-submodules https://github.com/exteraless/exteraless.git exteraless
    

    Если репозиторий уже склонирован без подмодулей:

    git submodule update --init --recursive --depth=1
    
  2. Получить TELEGRAM_APP_ID и TELEGRAM_APP_HASH на my.telegram.org и создать local.properties в корне проекта:

    TELEGRAM_APP_ID=<ваш_app_id>
    TELEGRAM_APP_HASH=<ваш_app_hash>
    
  3. Для подписи APK положить свой TMessagesProj/release.keystore и дописать в local.properties:

    KEYSTORE_PASS=<пароль_хранилища>
    ALIAS_NAME=<имя_ключа>
    ALIAS_PASS=<пароль_ключа>
    

    Ключа в репозитории нет намеренно. Без него сборка не падает — APK подписывается отладочным ключом Android.

  4. Для push-уведомлений положить свой TMessagesProj/google-services.json (Firebase, имя пакета com.exteraless.app).

  5. Заменить метаданные проекта:

    • ключ Google Maps в записи com.google.android.maps.v2.API_KEY в TMessagesProj/src/main/AndroidManifest.xml;
    • BaseRemoteHelper.CHANNEL_METADATA_ID — числовой id вашего канала метаданных, без префикса -100.
  6. Собрать: ./gradlew :TMessagesProj:assembleDebug или открыть проект в Android Studio.

Про ABI. Собираются только 64-битные arm64-v8a и x86_64: Chaquopy собирает Python 3.12 лишь под них, и на armeabi-v7a конфигурация обрывается. Переменная NATIVE_TARGET задаёт цель: arm64-v8a (один ABI, быстрее), universal (оба), SKIP (без нативной части — только Java и ресурсы).

Сборка через GitHub Actions

Нужны два секрета репозитория:

  • LOCAL_PROPERTIES — содержимое local.properties в base64:

    base64 -w0 local.properties
    
  • RELEASE_KEYSTORE — файл ключа в base64:

    base64 -w0 TMessagesProj/release.keystore
    

Дальше запустить workflow Release Build. Готовый APK лежит в артефактах прогона.

Авторы дизайна

Иконки и оформление, унаследованные от exteraGram, созданы его дизайнером — @the8055u и студией @BlueprintDsgn. Права на эти материалы принадлежат авторам.

Благодарности


English

What this is

exteraless is a fork of NagramX that implements exteraGram's features open-source.

The special focus is plugin security. In exteraGram a plugin is not restricted in any way; here it comes with a permission model and isolation: a plugin declares what it needs, you see that on the install sheet, and it gets only what was declared.

The project is in beta: some exteraGram features have not been ported yet. If you notice a missing feature, open an issue or write to the channel.

  • Package name: com.exteraless.app

Design credits

Icons and visual design inherited from exteraGram are the work of its designer, @the8055u, and the @BlueprintDsgn studio. Rights to those materials belong to their authors.

Building

  1. Clone with submodules:

    git clone --recursive --shallow-submodules https://github.com/exteraless/exteraless.git exteraless
    
  2. Get TELEGRAM_APP_ID and TELEGRAM_APP_HASH from my.telegram.org and put them into local.properties in the project root.

  3. For release signing, drop your own TMessagesProj/release.keystore and add KEYSTORE_PASS, ALIAS_NAME, ALIAS_PASS to local.properties. No keystore is shipped with the repository; without one the build is signed with the Android debug key.

  4. For push notifications, replace TMessagesProj/google-services.json with your own Firebase config for com.exteraless.app.

  5. Build with ./gradlew :TMessagesProj:assembleDebug or from Android Studio.

Only 64-bit ABIs are built (arm64-v8a, x86_64): Chaquopy ships Python 3.12 for those only, and armeabi-v7a fails at configuration time. NATIVE_TARGET selects the target: arm64-v8a, universal (both) or SKIP (no native part).

For CI, set two repository secrets — LOCAL_PROPERTIES and RELEASE_KEYSTORE, both base64-encoded — and run the Release Build workflow. The APK ends up in the run artifacts.