Email-first messenger в стиле Telegram, работающий через любой IMAP/SMTP-сервер.
BMChat — самостоятельный мессенджер на базе движка Delta Chat (Rust core + Autocrypt). Цель — взять надёжное end-to-end шифрование Delta Chat, добавить Telegram-уровневый UX (альбомы, мини-плеер, Shared Media, реакции, прочтения, кружочки) и собственную инфраструктуру обновлений, не зависящую от сторонних сервисов.
Весь чат-трафик идёт через почтовый сервер пользователя — никаких сторонних мессенджер-серверов и идентификаторов BMChat не использует. End-to-end шифрование Autocrypt применяется ко всем сообщениям между BMChat-клиентами; обычная почта от не-BMChat отправителей принимается как простой email-чат.
| Путь | Платформа | Статус |
|---|---|---|
clients/android |
Android 5.0+ | 2.50.10, релизный канал debug, infra/vps/www/update.json |
clients/desktop |
Windows / Linux / macOS | 2.50.10, авто-обновлятор через infra/vps/www/desktop-update.json |
clients/ios |
iOS | сборки требуют macOS + Xcode |
- IMAP IDLE по всем подключенным аккаунтам, фоновая доставка через
KeepAliveService. - Опция «Сканировать все папки» (
Config::ScanAllFolders) — забирает сообщения из любых папок (не только Inbox/Mvbox). - Спам обрабатывается:
Config::FetchSpamподнимает отдельныйsimple_imap_loopдля папокSpam/Junkсshould_move_out_of_spam. - Сообщения от не-BMChat отправителей (классические email без
Chat-Version) показываются как обычные чаты.
- Альбомы: до 10 фото/видео компонуются в одну композитную JPEG-плитку (
AlbumComposer+AlbumThumbnailLayout), Telegram-style сетка 1/2/3/4/2×n. - Live CameraX picker (
BMChatGalleryPickerActivity) — первая плитка в галерее это живой видоискатель камеры, тап раскрывает её на полный экран. - Реакции — расширенный набор смайлов, плавающий picker над сообщением, кнопка «...» с полным picker'ом.
- Read receipts (
get_message_read_receipts) — в групповых чатах тап по галочке открывает диалог со списком кто и когда прочитал. - Telegram-style mini-player (Phase 2, 2.49.79) —
BMChatMiniPlayerViewснизу в списке чатов, в открытом чате и в Shared Media. Работает в фоне черезMediaSessionService, управление с lock-screen и Bluetooth-наушников. Бейдж скорости1×/1.5×/2×рядом с длительностью аудио сообщения. - Telegram-style download UX (Phase 1, 2.49.78) — круговой индикатор прогресса поверх миниатюр для медиа, не загруженных на диск, иконка перезапуска при ошибке. Сохранение в
Pictures/BMChat,Movies/BMChat,Music/BMChat,Download/BMChat. - Shared Media browser (Phase 3, 2.49.80) — Telegram-style вкладки
Apps · Photos · Videos · Audio · Files · Linksв профиле чата. Multi-select экспорт. Links-сканер собирает все URL из переписки.
- Структурированный API в Rust core (
storage_usage.rs) — total/db/blobdir, evictable, per-category, per-chat. - Android UI «Память и данные» с Telegram-style donut chart, авто-очисткой (
WorkManager) и опасным разделом удаления почты с сервера черезdelete_server_after.
- Android:
BMChatUpdater(foreground/manual/background черезWorkManager) тянет манифест обновлений, проверяет SHA-256 APK и ставит черезPackageInstaller. - Desktop:
bmchat-updater.tsв Electron main делает то же для десктоп-сборок. - Релизы публикуются BMChat-командой; конечные эндпоинты конфигурируются на этапе сборки и в публичный код не попадают.
- Email-боты — не отдельные контакты в адресной книге; команды (
/start,/help, …) отправляются в «Сохранённые сообщения» как@имя_бота /команда(например@newsbot /start). - Настройка: Настройки → Дополнительно → Email-боты — команды, webhook (
X-BMChat-Bot-Token), e-mail разработчика (транспортBMCHAT-BOT-UPDATE/BMCHAT-BOT-REPLY). - 2.50.6: в боковом поиске по
@newsbotпоказываются настроенные боты; кнопка «Написать боту» открывает чат с черновиком@бот /start. - 2.50.6: окно «Соединение» — статистика сообщений/чатов как на Android; при недоступности реле BMChat — проверка IMAP/SMTP (TCP) ваших почтовых серверов.
- 2.50.9–2.50.10: синхронизация ботов Android ↔ Desktop (
ui.bmchat.email_bots, каталогui.bmchat.bot_directory); шифрование секретов на диске и через self-chat (BMCHAT-BOT-SYNC v1); исправлено пустое окно «Соединение» на десктопе. - Пример PHP-бота:
infra/php-bot-example/(токен из настроек BMChat обязателен вconfig.php).
app_name, цвета, иконки, темы, локализации (RU + EN), help-страницы и Fastlane-метаданные — везде BMChat. Все упоминания Delta Chat в пользовательском UI вычищены (scripts/rebrand_strings.ps1,scripts/rebrand_java_logtags.ps1).- Лицензии и attribution upstream-кода сохранены — это форк, а не переписывание.
┌─── Android (Java) ─── ConversationActivity / AllMediaActivity / ...
│ │
│ └── Rust core via JNI (libnative-utils.so) ──────┐
│ │
├─── Desktop (Electron + React) ── Tauri/electron-main ───┤
│ │ │
│ └── deltachat-rpc-server (Rust) via stdio ──────┤
│ │
├─── iOS (Swift) ── SwiftUI/UIKit ─────────────────────────┤
│ │ │
│ └── deltachat-core-rust ────────────────────────┤
│ ▼
│ ┌──────────────────────────┐
└───── auto-update manifests ─→│ BMChat release channel │
└──────────────────────────┘
▲
user's own IMAP/SMTP server
(все чат-сообщения, fully E2E)
Требования:
- Android: JDK 17 (Eclipse Temurin), Android SDK + NDK r25c, Rust 1.91.1 для пересборки
libnative-utils.so. - Desktop: Node.js 22, pnpm 9, Rust 1.91.1.
- iOS: macOS + Xcode + CocoaPods.
cd clients/android
# Rust core (один раз или после правок в jni/deltachat-core-rust)
scripts/ndk-make.sh
# Debug APK
./gradlew assembleFossDebug
# Результат: clients/android/build/outputs/apk/foss/debug/BMChat-foss-debug-<version>.apkcd clients/desktop
pnpm install
pnpm -w build:electron
pnpm -w start:electron
# Релизные артефакты (Windows + Linux), из WSL с wine32 для NSIS:
cd packages/target-electron
pnpm build && pnpm pack:win && pnpm pack:linux
# Деплой на VPS (после копирования в infra/vps/desktop/ и обновления sha256 в манифесте):
# bash infra/vps/deploy-desktop-2.50.10.sh
# APK + сайт + зеркало:
# bash infra/vps/deploy-site-and-mirror.sh
# Зеркало Yandex (см. infra/vps/.deploy.env.example — BMCHAT_MIRROR_SSH_KEY):
# BMCHAT_DESKTOP_VERSION=2.50.10 bash infra/vps/deploy-desktop-2.50.6-mirror.shcd clients/ios
git submodule update --init --recursive
rustup toolchain install "$(cat rust-toolchain)"
pod install
open deltachat-ios.xcworkspacememory-bank/projectbrief.md— постановка задачи.memory-bank/activeContext.md— текущее состояние, последние решения.memory-bank/progress.md— список реализованного / в работе.docs/fork-strategy.md— стратегия форка vs upstream merge.docs/brand-map.md— таблица заменённых брендовых полей.docs/build-matrix.md— какие сборки/архитектуры проверены.
Этот репозиторий — форк Delta Chat. Лицензии upstream-кода сохранены:
- Desktop и Android — GPL-based.
- iOS клиент и Chatmail/Delta Chat core — MPL-based.
- BMChat-специфичные изменения и инфраструктура (
infra/,brand/,scripts/,memory-bank/,docs/) опубликованы в этом же репозитории под совместимыми условиями; см.docs/licensing-notes.md.
| Фаза | Версия | Содержание | Статус |
|---|---|---|---|
| Phase 1 | 2.49.78 | Telegram-style download UX (круговой прогресс, save-as) | завершено |
| Phase 2 | 2.49.79 | Mini-player + playback speed | завершено |
| Phase 3 | 2.49.80 | Shared Media browser (Photos/Videos/Audio/Files/Links) | завершено |
| Phase 4 | 2.49.81 | Chat UX: PiP-video, swipe-to-reply, jump-to-date | завершено |
| Phase 5 | 2.49.82 | Круглые видео-сообщения (video notes) | в работе |
| Phase 6 | 2.50.x | Desktop/Android: email-боты, соединение, шифрование, updater | завершено (2.50.10) |
| Phase 7 | — | iOS порт фишек Phase 1–5 | планируется |