feat(web): add PEZMessage on-chain E2E encrypted messaging UI

- x25519 ECDH + XChaCha20-Poly1305 encryption via @noble libs
- Key derivation from wallet signRaw, private key held in memory only
- Messaging pallet integration (registerEncryptionKey, sendMessage, inbox)
- Inbox polling every 12s, auto-decrypt when key unlocked
- ComposeDialog with recipient key validation and 512-byte limit
- Settings moved from grid to nav bar gear icon, PEZMessage takes its slot
- i18n translations for all 6 languages (en, tr, kmr, ckb, ar, fa)
This commit is contained in:
2026-03-03 08:29:16 +03:00
parent 86433a88ff
commit a9cb2972b9
17 changed files with 1429 additions and 19 deletions
+31
View File
@@ -3746,4 +3746,35 @@ export default {
'websocket.reconnecting': 'Yeniden bağlanıyor...',
'websocket.liveUpdates': 'Canlı güncellemeler etkin',
'websocket.offlineMode': 'Çevrimdışı mod',
// Navigation - Messaging
'nav.message': 'Mesaj',
// Messaging
'messaging.title': 'PEZMessage',
'messaging.connectWallet': 'Cüzdan Bağla',
'messaging.connectWalletDesc': 'Şifreli mesajlaşmayı kullanmak için cüzdanınızı bağlayın.',
'messaging.setupTitle': 'Şifreleme Anahtarı Oluştur',
'messaging.setupDesc': 'Şifreli mesaj gönderip almak için şifreleme anahtarınızı zincire kaydedin.',
'messaging.unlockTitle': 'Mesajlarınızı Açın',
'messaging.unlockDesc': 'Bu oturum için mesaj şifre çözümünü etkinleştirmek üzere cüzdanınızla imzalayın.',
'messaging.setupKey': 'Anahtar Oluştur',
'messaging.unlock': 'Kilidi Aç',
'messaging.signing': 'İmzalanıyor...',
'messaging.newMessage': 'Yeni',
'messaging.messages': 'mesaj',
'messaging.sent': 'gönderildi',
'messaging.emptyInbox': 'Henüz mesaj yok.',
'messaging.sendFirst': 'İlk mesajınızı gönderin',
'messaging.encrypted': '[Şifreli]',
'messaging.compose': 'Yeni Mesaj',
'messaging.composeDesc': 'Zincir üzerinde uçtan uca şifreli mesaj gönderin.',
'messaging.recipient': 'Alıcı Adresi',
'messaging.message': 'Mesaj',
'messaging.typePlaceholder': 'Mesajınızı yazın...',
'messaging.tooLong': 'Mesaj maksimum boyutu aşıyor (512 bayt)',
'messaging.noRecipientKey': 'Alıcının kayıtlı şifreleme anahtarı yok',
'messaging.checkingKey': 'Şifreleme anahtarı kontrol ediliyor...',
'messaging.send': 'Gönder',
'messaging.sending': 'Gönderiliyor...',
};