mirror of
https://github.com/JB-SelfCompany/Tyr.git
synced 2026-02-20 16:22:23 -05:00
Added QR code button with share functionality for mailto: links. Renamed "Copy Address" button to "Copy". Split setup instructions into two separate cards: DeltaChat/ArcaneChat and Email Clients (K-9 Mail, Thunderbird Mobile, FairEmail). Added ZXing library for QR code generation
This commit is contained in:
21
README.md
21
README.md
@@ -50,6 +50,8 @@ But there is a network, called **[Yggdrasil](https://yggdrasil-network.github.io
|
||||
| Feature | Description |
|
||||
|---------|-------------|
|
||||
| 🔗 **Full DeltaChat/ArcaneChat Integration** | Seamless setup with the best decentralized messengers |
|
||||
| 📧 **Email Client Support** | Works with K-9 Mail, Thunderbird Mobile, FairEmail, and any SMTP/IMAP client |
|
||||
| 📱 **QR Code Sharing** | Generate and share mailto: links via QR codes |
|
||||
| 📧 **Local SMTP/IMAP Server** | Complete mail server running directly on your device |
|
||||
| 🔐 **Cryptographic Identity** | Automatic Ed25519 key generation - your mail identity cannot be spoofed |
|
||||
| 🌍 **Yggdrasil Network** | Connect via configurable peers - censorship-resistant by design |
|
||||
@@ -112,7 +114,21 @@ If automatic setup doesn't work:
|
||||
5. Enter your Yggmail address and the password you set in Tyr
|
||||
6. Tap "✓" to complete setup
|
||||
|
||||
> **Important**: Tyr must be running for your chat app to send and receive messages. Enable auto-start in Tyr settings for seamless experience.
|
||||
### Setting up Other Email Clients
|
||||
|
||||
Tyr works with any standard email client. For K-9 Mail, Thunderbird Mobile, or FairEmail:
|
||||
|
||||
1. Complete Tyr onboarding and start the service
|
||||
2. In Tyr's main screen, tap **"Email Client Setup"** card for detailed instructions
|
||||
3. Configure your email client with:
|
||||
- **Email**: Your mail address from Tyr (e.g., `abc123...@yggmail`)
|
||||
- **Password**: The password you set during Tyr onboarding
|
||||
- **IMAP**: 127.0.0.1:1143 (no encryption)
|
||||
- **SMTP**: 127.0.0.1:1025 (no encryption)
|
||||
|
||||
**QR Code Sharing**: Tap the **"QR Code"** button in Tyr to generate a QR code for your mail address. You can share it via the system share sheet to quickly exchange addresses with contacts.
|
||||
|
||||
> **Important**: Tyr must be running for your email client to send and receive messages. Enable auto-start in Tyr settings for seamless experience.
|
||||
|
||||
---
|
||||
|
||||
@@ -192,6 +208,9 @@ Then copy `yggmail.aar` to `Tyr/app/libs/`
|
||||
- **[Yggdrasil Network](https://yggdrasil-network.github.io/)**: The mesh network infrastructure
|
||||
- **[DeltaChat](https://delta.chat/)**: Recommended email-based messenger client
|
||||
- **[ArcaneChat](https://github.com/ArcaneChat/android)**: Alternative email-based messenger client
|
||||
- **[K-9 Mail](https://k9mail.app/)**: Open-source email client for Android
|
||||
- **[Thunderbird Mobile](https://www.thunderbird.net/mobile/)**: Mozilla's mobile email client (based on K-9)
|
||||
- **[FairEmail](https://email.faircode.eu/)**: Privacy-oriented email client for Android
|
||||
|
||||
---
|
||||
|
||||
|
||||
19
README.ru.md
19
README.ru.md
@@ -48,6 +48,8 @@
|
||||
| Функция | Описание |
|
||||
|---------|----------|
|
||||
| 🔗 **Полная интеграция с DeltaChat/ArcaneChat** | Бесшовная настройка с лучшими децентрализованными мессенджерами |
|
||||
| 📧 **Поддержка почтовых клиентов** | Работает с K-9 Mail, Thunderbird Mobile, FairEmail и любыми SMTP/IMAP клиентами |
|
||||
| 📱 **Обмен через QR-коды** | Генерация и обмен mailto: ссылками через QR-коды |
|
||||
| 📧 **Локальный SMTP/IMAP сервер** | Полноценный почтовый сервер прямо на вашем устройстве |
|
||||
| 🔐 **Криптографическая идентичность** | Автоматическая генерация Ed25519 ключей - вашу личность невозможно подделать |
|
||||
| 🌍 **Сеть Yggdrasil** | Подключение через настраиваемые пиры - защита от цензуры по дизайну |
|
||||
@@ -110,6 +112,20 @@ Tyr запускает полноценный почтовый сервер пр
|
||||
5. Введите ваш Yggmail адрес и пароль, установленный в Tyr
|
||||
6. Нажмите "✓" для завершения настройки
|
||||
|
||||
### Настройка других почтовых клиентов
|
||||
|
||||
Tyr работает с любым стандартным почтовым клиентом. Для K-9 Mail, Thunderbird Mobile или FairEmail:
|
||||
|
||||
1. Завершите онбординг Tyr и запустите сервис
|
||||
2. На главном экране Tyr нажмите карточку **"Настройка почтовых клиентов"** для подробных инструкций
|
||||
3. Настройте ваш почтовый клиент следующими параметрами:
|
||||
- **Email**: Ваш почтовый адрес из Tyr (напр., `abc123...@yggmail`)
|
||||
- **Пароль**: Пароль, установленный при онбординге Tyr
|
||||
- **IMAP**: 127.0.0.1:1143 (без шифрования)
|
||||
- **SMTP**: 127.0.0.1:1025 (без шифрования)
|
||||
|
||||
**Обмен через QR-код**: Нажмите кнопку **"QR-код"** в Tyr, чтобы сгенерировать QR-код для вашего почтового адреса. Вы можете поделиться им через системное меню обмена, чтобы быстро обмениваться адресами с контактами.
|
||||
|
||||
> **Важно**: Tyr должен быть запущен, чтобы ваше приложение могло отправлять и получать сообщения. Включите автозапуск в настройках Tyr для бесшовной работы.
|
||||
|
||||
---
|
||||
@@ -190,6 +206,9 @@ gomobile bind -target=android -androidapi 23 -javapkg=com.jbselfcompany.tyr -ldf
|
||||
- **[Yggdrasil Network](https://yggdrasil-network.github.io/)**: Инфраструктура mesh-сети
|
||||
- **[DeltaChat](https://delta.chat/)**: Рекомендуемый клиент-мессенджер на основе email
|
||||
- **[ArcaneChat](https://github.com/ArcaneChat/android)**: Альтернативный клиент-мессенджер на основе email
|
||||
- **[K-9 Mail](https://k9mail.app/)**: Почтовый клиент с открытым исходным кодом для Android
|
||||
- **[Thunderbird Mobile](https://www.thunderbird.net/mobile/)**: Мобильный почтовый клиент Mozilla (основан на K-9)
|
||||
- **[FairEmail](https://email.faircode.eu/)**: Ориентированный на конфиденциальность почтовый клиент для Android
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@ android {
|
||||
applicationId "com.jbselfcompany.tyr"
|
||||
minSdk 23
|
||||
targetSdk 33
|
||||
versionCode 20
|
||||
versionName "1.6.0"
|
||||
versionCode 21
|
||||
versionName "1.7.0"
|
||||
resourceConfigurations += ['en', 'ru']
|
||||
ndk {
|
||||
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
||||
@@ -104,6 +104,9 @@ dependencies {
|
||||
// WorkManager for battery-efficient background tasks
|
||||
implementation 'androidx.work:work-runtime-ktx:2.9.0'
|
||||
|
||||
// QR Code generation
|
||||
implementation 'com.google.zxing:core:3.5.3'
|
||||
|
||||
// Testing
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.3.0'
|
||||
|
||||
Binary file not shown.
@@ -29,6 +29,11 @@ import com.jbselfcompany.tyr.utils.AutoconfigServer
|
||||
import com.jbselfcompany.tyr.utils.NetworkStatsMonitor
|
||||
import com.jbselfcompany.tyr.utils.PermissionManager
|
||||
import android.util.Log
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Color
|
||||
import android.widget.ImageView
|
||||
import com.google.zxing.BarcodeFormat
|
||||
import com.google.zxing.qrcode.QRCodeWriter
|
||||
|
||||
/**
|
||||
* Main activity displaying service status and mail configuration.
|
||||
@@ -148,9 +153,22 @@ class MainActivity : BaseActivity(), ServiceStatusListener {
|
||||
}
|
||||
}
|
||||
|
||||
// Setup instructions card
|
||||
binding.cardInstructions.setOnClickListener {
|
||||
showInstructionsDialog()
|
||||
// Show QR code button
|
||||
binding.buttonShowQr.setOnClickListener {
|
||||
val address = configRepository.getMailAddress()
|
||||
if (!address.isNullOrEmpty()) {
|
||||
showQrCodeDialog(address)
|
||||
}
|
||||
}
|
||||
|
||||
// DeltaChat setup instructions card
|
||||
binding.cardDeltachatSetup.setOnClickListener {
|
||||
showDeltaChatInstructionsDialog()
|
||||
}
|
||||
|
||||
// Email client setup instructions card
|
||||
binding.cardEmailClientSetup.setOnClickListener {
|
||||
showEmailClientInstructionsDialog()
|
||||
}
|
||||
|
||||
updateUI()
|
||||
@@ -179,10 +197,12 @@ class MainActivity : BaseActivity(), ServiceStatusListener {
|
||||
binding.textMailAddress.visibility = View.VISIBLE
|
||||
binding.buttonSetupDeltachat.visibility = View.VISIBLE
|
||||
binding.buttonCopyAddress.visibility = View.VISIBLE
|
||||
binding.buttonShowQr.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.textMailAddress.visibility = View.GONE
|
||||
binding.buttonSetupDeltachat.visibility = View.GONE
|
||||
binding.buttonCopyAddress.visibility = View.GONE
|
||||
binding.buttonShowQr.visibility = View.GONE
|
||||
}
|
||||
|
||||
// SMTP/IMAP info
|
||||
@@ -338,10 +358,93 @@ class MainActivity : BaseActivity(), ServiceStatusListener {
|
||||
).show()
|
||||
}
|
||||
|
||||
private fun showInstructionsDialog() {
|
||||
private fun showQrCodeDialog(mailAddress: String) {
|
||||
try {
|
||||
// Generate mailto URL
|
||||
val mailtoUrl = "mailto:$mailAddress"
|
||||
|
||||
// Generate QR code
|
||||
val qrBitmap = generateQrCode(mailtoUrl, 512, 512)
|
||||
|
||||
// Create ImageView for QR code
|
||||
val imageView = ImageView(this).apply {
|
||||
setImageBitmap(qrBitmap)
|
||||
setPadding(32, 32, 32, 32)
|
||||
}
|
||||
|
||||
// Show dialog
|
||||
MaterialAlertDialogBuilder(this)
|
||||
.setTitle(R.string.qr_code_title)
|
||||
.setView(imageView)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.setNeutralButton(R.string.share_mailto) { _, _ ->
|
||||
shareMailto(mailtoUrl)
|
||||
}
|
||||
.show()
|
||||
} catch (e: Exception) {
|
||||
Log.e("MainActivity", "Error generating QR code", e)
|
||||
Snackbar.make(
|
||||
binding.root,
|
||||
R.string.qr_code_error,
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
}
|
||||
|
||||
private fun shareMailto(mailtoUrl: String) {
|
||||
try {
|
||||
val sendIntent = Intent().apply {
|
||||
action = Intent.ACTION_SEND
|
||||
putExtra(Intent.EXTRA_TEXT, mailtoUrl)
|
||||
type = "text/plain"
|
||||
}
|
||||
val shareIntent = Intent.createChooser(sendIntent, null)
|
||||
startActivity(shareIntent)
|
||||
} catch (e: Exception) {
|
||||
Log.e("MainActivity", "Error sharing mailto URL", e)
|
||||
Snackbar.make(
|
||||
binding.root,
|
||||
R.string.qr_code_error,
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
}
|
||||
|
||||
private fun generateQrCode(content: String, width: Int, height: Int): Bitmap {
|
||||
val writer = QRCodeWriter()
|
||||
val bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height)
|
||||
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565)
|
||||
|
||||
for (x in 0 until width) {
|
||||
for (y in 0 until height) {
|
||||
bitmap.setPixel(x, y, if (bitMatrix[x, y]) Color.BLACK else Color.WHITE)
|
||||
}
|
||||
}
|
||||
|
||||
return bitmap
|
||||
}
|
||||
|
||||
private fun showDeltaChatInstructionsDialog() {
|
||||
val mailAddress = configRepository.getMailAddress() ?: getString(R.string.your_email_address)
|
||||
|
||||
val instructions = getString(R.string.deltachat_instructions, mailAddress)
|
||||
|
||||
MaterialAlertDialogBuilder(this)
|
||||
.setTitle(R.string.deltachat_setup)
|
||||
.setMessage(R.string.deltachat_instructions)
|
||||
.setMessage(instructions)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun showEmailClientInstructionsDialog() {
|
||||
val mailAddress = configRepository.getMailAddress() ?: getString(R.string.your_email_address)
|
||||
val password = getString(R.string.your_password)
|
||||
|
||||
val instructions = getString(R.string.email_client_instructions, mailAddress, password)
|
||||
|
||||
MaterialAlertDialogBuilder(this)
|
||||
.setTitle(R.string.email_client_setup_title)
|
||||
.setMessage(instructions)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.show()
|
||||
}
|
||||
|
||||
@@ -202,16 +202,36 @@
|
||||
app:icon="@drawable/ic_play_arrow"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_copy_address"
|
||||
style="@style/Widget.Material3.Button.TonalButton"
|
||||
android:layout_width="wrap_content"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/copy_address"
|
||||
android:visibility="gone"
|
||||
app:icon="@drawable/ic_play_arrow"
|
||||
tools:visibility="visible" />
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_copy_address"
|
||||
style="@style/Widget.Material3.Button.TonalButton"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/copy_address"
|
||||
android:visibility="gone"
|
||||
app:icon="@drawable/ic_play_arrow"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_show_qr"
|
||||
style="@style/Widget.Material3.Button.TonalButton"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/show_qr_code"
|
||||
android:visibility="gone"
|
||||
app:icon="@drawable/ic_play_arrow"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -291,11 +311,12 @@
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
<!-- Instructions Card -->
|
||||
<!-- DeltaChat/ArcaneChat Setup Card -->
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/card_instructions"
|
||||
android:id="@+id/card_deltachat_setup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dp"
|
||||
app:cardElevation="2dp">
|
||||
|
||||
<LinearLayout
|
||||
@@ -321,6 +342,36 @@
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
<!-- Email Client Setup Card -->
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/card_email_client_setup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:cardElevation="2dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/email_client_setup_title"
|
||||
android:textAppearance="?attr/textAppearanceHeadline6" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/email_client_setup_hint"
|
||||
android:textAppearance="?attr/textAppearanceBody2" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
@@ -68,8 +68,12 @@
|
||||
<string name="peer_latency_unknown">Задержка: измеряется…</string>
|
||||
<string name="yggdrasil_peers">Yggdrasil пиры</string>
|
||||
|
||||
<string name="copy_address">Копировать адрес</string>
|
||||
<string name="copy_address">Копировать</string>
|
||||
<string name="show_qr_code">QR-код</string>
|
||||
<string name="address_copied">Адрес скопирован в буфер обмена</string>
|
||||
<string name="share_mailto">Поделиться</string>
|
||||
<string name="qr_code_title">QR-код почтового адреса</string>
|
||||
<string name="qr_code_error">Не удалось создать QR-код</string>
|
||||
<string name="setup_deltachat">Настроить DeltaChat/ArcaneChat</string>
|
||||
<string name="dcaccount_opened">Открываю приложение с автоконфигурацией…</string>
|
||||
<string name="dcaccount_copied">Ссылка DCACCOUNT скопирована! Откройте DeltaChat/ArcaneChat и вставьте её в экран настройки</string>
|
||||
@@ -81,7 +85,12 @@
|
||||
<string name="imap_server">IMAP: %1$s:%2$s</string>
|
||||
<string name="deltachat_setup">Настройка DeltaChat/ArcaneChat</string>
|
||||
<string name="deltachat_setup_hint">Нажмите для просмотра инструкций</string>
|
||||
<string name="deltachat_instructions">Настройка DeltaChat/ArcaneChat:\n\n1. Установите и откройте приложение DeltaChat/ArcaneChat\n2. Нажмите \"Создать новый профиль\"\n3. Введите имя, при необходимости выберите аватар в верхней части экрана\n4. Нажмите \"Использовать другой сервер\" (под полями входа)\n5. Введите ваш email-адрес, указанный выше\n6. Введите пароль, установленный при первоначальной настройке\n7. Нажмите \"✓\" в правом верхнем углу для начала общения\n\nУбедитесь, что служба Tyr запущена перед использованием DeltaChat/ArcaneChat.</string>
|
||||
<string name="deltachat_instructions">Настройка DeltaChat/ArcaneChat:\n\n1. Установите и откройте приложение DeltaChat/ArcaneChat\n2. Нажмите \"Создать новый профиль\"\n3. Введите имя, при необходимости выберите аватар в верхней части экрана\n4. Нажмите \"Использовать другой сервер\" (под полями входа)\n5. Введите ваш email-адрес: %1$s\n6. Введите пароль, установленный при первоначальной настройке\n7. Нажмите \"✓\" в правом верхнем углу для начала общения\n\nУбедитесь, что служба Tyr запущена перед использованием DeltaChat/ArcaneChat.</string>
|
||||
<string name="email_client_setup_title">Настройка почтовых клиентов</string>
|
||||
<string name="email_client_setup_hint">Нажмите для просмотра инструкций для K-9 Mail, Thunderbird, FairEmail</string>
|
||||
<string name="your_email_address">ваш-email@yggmail</string>
|
||||
<string name="your_password">ваш-пароль</string>
|
||||
<string name="email_client_instructions">Настройка почтовых клиентов:\n\nEmail: %1$s\nПароль: %2$s\n\nIMAP (Входящие):\n Сервер: 127.0.0.1\n Порт: 1143\n Шифрование: Нет\n\nSMTP (Исходящие):\n Сервер: 127.0.0.1\n Порт: 1025\n Шифрование: Нет\n\n\nK-9 Mail / Thunderbird Mobile:\n\n1. Откройте приложение, нажмите Добавить аккаунт, затем Ручная настройка\n2. Введите ваш email и пароль\n3. Для IMAP: 127.0.0.1:1143 (без шифрования)\n4. Для SMTP: 127.0.0.1:1025 (без шифрования)\n5. Завершите настройку\n\n\nFairEmail:\n\n1. Откройте приложение, нажмите Ручная настройка, затем Пользовательский\n2. Введите ваш email и пароль\n3. IMAP: 127.0.0.1:1143 (без шифрования)\n4. SMTP: 127.0.0.1:1025 (без шифрования)\n5. Сохраните конфигурацию\n\n\nВажно:\n\n- Служба Tyr должна быть запущена\n- Используйте \"Нет\" для шифрования (локальное соединение)\n- Имя пользователя - ваш полный email адрес</string>
|
||||
|
||||
<!-- Onboarding -->
|
||||
<string name="welcome_to_tyr">Добро пожаловать в Tyr</string>
|
||||
|
||||
@@ -67,8 +67,12 @@
|
||||
<string name="peer_latency_format">Latency: %d ms</string>
|
||||
<string name="peer_latency_unknown">Latency: measuring…</string>
|
||||
<string name="yggdrasil_peers">Yggdrasil Peers</string>
|
||||
<string name="copy_address">Copy Address</string>
|
||||
<string name="copy_address">Copy</string>
|
||||
<string name="show_qr_code">QR Code</string>
|
||||
<string name="address_copied">Address copied to clipboard</string>
|
||||
<string name="share_mailto">Share</string>
|
||||
<string name="qr_code_title">Mail Address QR Code</string>
|
||||
<string name="qr_code_error">Failed to generate QR code</string>
|
||||
<string name="setup_deltachat">Setup DeltaChat/ArcaneChat</string>
|
||||
<string name="dcaccount_opened">Opening app with autoconfig…</string>
|
||||
<string name="dcaccount_copied">DCACCOUNT link copied! Open DeltaChat/ArcaneChat and paste it in the setup screen</string>
|
||||
@@ -80,7 +84,12 @@
|
||||
<string name="imap_server">IMAP: %1$s:%2$s</string>
|
||||
<string name="deltachat_setup">DeltaChat/ArcaneChat Setup</string>
|
||||
<string name="deltachat_setup_hint">Tap to view setup instructions</string>
|
||||
<string name="deltachat_instructions">DeltaChat/ArcaneChat setup:\n\n1. Install and open the DeltaChat/ArcaneChat app\n2. Click on "Create a new profile"\n3. Enter a name and select an avatar at the top of the screen if necessary\n4. Click on "Use a different server" (below the login fields)\n5. Enter your email address from above\n6. Enter the password set during the initial setup\n7. Click "✓" in the top right corner to start chatting. Make sure the Tyr service is running before using DeltaChat/ArcaneChat.</string>
|
||||
<string name="deltachat_instructions">DeltaChat/ArcaneChat setup:\n\n1. Install and open the DeltaChat/ArcaneChat app\n2. Click on "Create a new profile"\n3. Enter a name and select an avatar at the top of the screen if necessary\n4. Click on "Use a different server" (below the login fields)\n5. Enter your email address: %1$s\n6. Enter the password set during the initial setup\n7. Click "✓" in the top right corner to start chatting\n\nMake sure the Tyr service is running before using DeltaChat/ArcaneChat.</string>
|
||||
<string name="email_client_setup_title">Email Client Setup</string>
|
||||
<string name="email_client_setup_hint">Tap to view setup instructions for K-9 Mail, Thunderbird, FairEmail</string>
|
||||
<string name="your_email_address">your-email@yggmail</string>
|
||||
<string name="your_password">your-password</string>
|
||||
<string name="email_client_instructions">Email Client Setup:\n\nEmail: %1$s\nPassword: %2$s\n\nIMAP (Incoming):\n Server: 127.0.0.1\n Port: 1143\n Security: None\n\nSMTP (Outgoing):\n Server: 127.0.0.1\n Port: 1025\n Security: None\n\n\nK-9 Mail / Thunderbird Mobile:\n\n1. Open app, tap Add Account, then Manual Setup\n2. Enter your email and password\n3. For IMAP: 127.0.0.1:1143 (no encryption)\n4. For SMTP: 127.0.0.1:1025 (no encryption)\n5. Complete setup\n\n\nFairEmail:\n\n1. Open app, tap Manual Setup, then Custom\n2. Enter your email and password\n3. IMAP: 127.0.0.1:1143 (no encryption)\n4. SMTP: 127.0.0.1:1025 (no encryption)\n5. Save configuration\n\n\nImportant:\n\n- Tyr service must be running\n- Use "None" for encryption (local connection)\n- Username is your full email address</string>
|
||||
|
||||
<!-- Onboarding -->
|
||||
<string name="welcome_to_tyr">Welcome to Tyr</string>
|
||||
|
||||
Reference in New Issue
Block a user