diff --git a/locales/de.yml b/locales/de.yml index c7e871e..4c50409 100644 --- a/locales/de.yml +++ b/locales/de.yml @@ -44,7 +44,7 @@ wallets: await_fin_amount: Warten auf die Fertigstellung locked_amount: Gesperrt txs_empty: 'Um Geld manuell oder per Transport zu empfangen oder zu senden, verwenden Sie die Schaltflächen %{message} oder %{transport} unten auf dem Bildschirm. Um die Wallet-Einstellungen zu ändern, drücken Sie %{settings}.' - title: Wallets + title: Goblin create_desc: Erstellen oder importieren Sie ein bestehendes Wallet mit dem Seed-Phrase. add: Wallet hinzufügen name: 'Name:' @@ -565,6 +565,8 @@ goblin: advanced: title: "Erweitert" intro: "Wallet-Werkzeuge auf niedriger Ebene von GRIM. Normalerweise brauchst du diese nicht." + own_node_desc: "Synchronisiere einen vollständigen Grin-Node auf diesem Gerät, statt einem öffentlichen zu vertrauen." + own_node_active: "Eigener Node läuft" repair: "Wallet reparieren" repair_desc: "Die Kette neu scannen und fehlende Outputs wiederherstellen. Das kann dauern." repair_unavailable: "Benötigt zuerst eine synchronisierte Node-Verbindung." diff --git a/locales/en.yml b/locales/en.yml index f1f4062..c50fe2d 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -44,7 +44,7 @@ wallets: await_fin_amount: Awaiting finalization locked_amount: Locked txs_empty: 'To receive funds manually or over transport use %{message} or %{transport} buttons at the bottom of the screen, to change wallet settings press %{settings} button.' - title: Wallets + title: Goblin create_desc: Create or import existing wallet from saved recovery phrase. add: Add wallet name: 'Name:' @@ -565,6 +565,8 @@ goblin: advanced: title: "Advanced" intro: "Low-level wallet tools from GRIM. You won't normally need these." + own_node_desc: "Sync a full Grin node on this device instead of trusting a public one." + own_node_active: "Running your own node" repair: "Repair wallet" repair_desc: "Re-scan the chain and restore any missing outputs. This can take a while." repair_unavailable: "Needs a synced node connection first." diff --git a/locales/fr.yml b/locales/fr.yml index b52b33b..d63cbfa 100644 --- a/locales/fr.yml +++ b/locales/fr.yml @@ -44,7 +44,7 @@ wallets: await_fin_amount: En attente de finalisation locked_amount: Verrouillé txs_empty: "Pour recevoir des fonds manuellement ou par transport, utilisez les boutons %{message} ou %{transport} en bas de l'écran. Pour modifier les paramètres du portefeuille, appuyez sur le bouton %{settings}." - title: Portefeuilles + title: Goblin create_desc: Créer ou importer un portefeuille existant à partir de la phrase de récupération sauvegardée. add: Ajouter un portefeuille name: 'Nom:' @@ -565,6 +565,8 @@ goblin: advanced: title: "Avancé" intro: "Outils de portefeuille bas niveau de GRIM. Vous n'en aurez normalement pas besoin." + own_node_desc: "Synchronisez un nœud Grin complet sur cet appareil au lieu de faire confiance à un nœud public." + own_node_active: "Votre propre nœud est actif" repair: "Réparer le portefeuille" repair_desc: "Re-scanner la chaîne et restaurer les sorties manquantes. Cela peut prendre du temps." repair_unavailable: "Nécessite d'abord une connexion à un nœud synchronisé." diff --git a/locales/ru.yml b/locales/ru.yml index 4f10a9b..db67b5d 100644 --- a/locales/ru.yml +++ b/locales/ru.yml @@ -44,7 +44,7 @@ wallets: await_fin_amount: Ожидает завершения locked_amount: Заблокировано txs_empty: 'Для получения средств вручную или через транспорт используйте кнопки %{message} или %{transport} внизу экрана, для изменения настроек кошелька нажмите кнопку %{settings}.' - title: Кошельки + title: Goblin create_desc: Создайте или импортируйте существующий кошелёк из сохранённой фразы восстановления. add: Добавить кошелёк name: 'Название:' @@ -565,6 +565,8 @@ goblin: advanced: title: "Дополнительно" intro: "Низкоуровневые инструменты кошелька из GRIM. Обычно они вам не нужны." + own_node_desc: "Синхронизируйте полный узел Grin на этом устройстве вместо доверия публичному." + own_node_active: "Ваш узел запущен" repair: "Починить кошелёк" repair_desc: "Повторно просканировать цепочку и восстановить недостающие выходы. Это может занять время." repair_unavailable: "Сначала нужно синхронизированное подключение к узлу." diff --git a/locales/tr.yml b/locales/tr.yml index 35ffc5c..f4c462f 100644 --- a/locales/tr.yml +++ b/locales/tr.yml @@ -44,7 +44,7 @@ wallets: await_fin_amount: Tamamlanma bekleniyor locked_amount: Kilitli txs_empty: 'Koinleri al/gonder icin ekranin altinda bulunan %{receive} / %{send} sekmeleri, cuzdan ayarlar icin %{settings} sekmesini kullanin.' - title: Cuzdanlar + title: Goblin create_desc: Yeni cuzdan olustur veya var olan bakiyeli cuzdani kurtarma kelimelerinizle canlandirin. add: Cuzdan ekle name: 'Ad:' @@ -565,6 +565,8 @@ goblin: advanced: title: "Gelişmiş" intro: "GRIM'den düşük seviyeli cüzdan araçları. Bunlara normalde ihtiyacın olmaz." + own_node_desc: "Herkese açık bir düğüme güvenmek yerine bu cihazda tam bir Grin düğümü senkronize edin." + own_node_active: "Kendi düğümünüz çalışıyor" repair: "Cüzdanı onar" repair_desc: "Zinciri yeniden tara ve eksik çıktıları geri yükle. Bu biraz zaman alabilir." repair_unavailable: "Önce senkronize bir düğüm bağlantısı gerekir." diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index b329e9d..0997be4 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -44,7 +44,7 @@ wallets: await_fin_amount: 等待确定中 locked_amount: 锁定帐户 txs_empty: '手动接收资金或通过传输接收资金 %{message} or %{transport} 更改钱包设置, 请按屏幕底部的按钮 %{settings} 按钮.' - title: 钱包 + title: Goblin create_desc: 创建或种子单词导入已有钱包. add: 添加钱包 name: '用户名:' @@ -565,6 +565,8 @@ goblin: advanced: title: "高级" intro: "来自 GRIM 的底层钱包工具。通常你用不到这些。" + own_node_desc: "在本设备上同步完整的 Grin 节点,而不是信任公共节点。" + own_node_active: "正在运行你自己的节点" repair: "修复钱包" repair_desc: "重新扫描链并恢复任何缺失的输出。这可能需要一些时间。" repair_unavailable: "需要先有已同步的节点连接。" diff --git a/src/gui/views/goblin/mod.rs b/src/gui/views/goblin/mod.rs index 34cd9fa..142982a 100644 --- a/src/gui/views/goblin/mod.rs +++ b/src/gui/views/goblin/mod.rs @@ -2651,6 +2651,30 @@ impl GoblinWalletView { ); ui.add_space(16.0); + // Run your own node (the internal node). External nodes stay in + // Settings; this advanced toggle starts a full local node instead. + w::card(ui, |ui| { + ui.set_min_width(ui.available_width()); + advanced_head(ui, &t!("goblin.node.integrated"), t.surface_text); + advanced_desc(ui, &t!("goblin.advanced.own_node_desc")); + ui.add_space(10.0); + if wallet.get_current_connection() == ConnectionMethod::Integrated { + ui.label( + RichText::new(format!( + "{} {}", + crate::gui::icons::CHECK, + t!("goblin.advanced.own_node_active") + )) + .font(FontId::new(13.0, fonts::medium())) + .color(t.pos), + ); + } else if w::big_action_on_card(ui, &t!("goblin.node.integrated")).clicked() + { + wallet.update_connection(&ConnectionMethod::Integrated); + } + }); + ui.add_space(12.0); + // Repair. w::card(ui, |ui| { ui.set_min_width(ui.available_width()); @@ -2812,27 +2836,6 @@ impl GoblinWalletView { let live = wallet.get_current_connection(); let saved = wallet.get_config().connection(); settings_group(ui, &t!("goblin.node.connection"), |ui| { - let integrated = matches!(saved, ConnectionMethod::Integrated); - let row = ui.horizontal(|ui| { - ui.label( - RichText::new(t!("goblin.node.integrated")) - .font(FontId::new(15.0, fonts::medium())) - .color(t.surface_text), - ); - ui.with_layout(Layout::right_to_left(Align::Center), |ui| { - if integrated { - ui.label( - RichText::new(crate::gui::icons::CHECK) - .font(FontId::new(16.0, fonts::regular())) - .color(t.pos), - ); - } - }); - }); - ui.add_space(10.0); - if !integrated && row.response.interact(Sense::click()).clicked() { - wallet.update_connection(&ConnectionMethod::Integrated); - } for conn in ConnectionsConfig::ext_conn_list() { let active = matches!(&saved, ConnectionMethod::External(id, _) if *id == conn.id); diff --git a/src/gui/views/goblin/onboarding.rs b/src/gui/views/goblin/onboarding.rs index baead6c..261847e 100644 --- a/src/gui/views/goblin/onboarding.rs +++ b/src/gui/views/goblin/onboarding.rs @@ -39,6 +39,7 @@ const OB_PHRASE_SCAN_MODAL: &'static str = "ob_phrase_scan_modal"; /// Onboarding step. #[derive(PartialEq, Eq, Clone, Copy)] +#[allow(dead_code)] // Node step retired from the flow; node mgmt lives in Settings/Advanced enum Step { Intro, Node, @@ -220,7 +221,7 @@ impl OnboardingContent { } ui.add_space(16.0); if w::big_action(ui, &t!("goblin.onboarding.intro.get_started"), false).clicked() { - self.step = Step::Node; + self.step = Step::WalletSetup; } ui.add_space(8.0); ui.vertical_centered(|ui| { @@ -358,7 +359,7 @@ impl OnboardingContent { ui, &t!("goblin.onboarding.wallet.kicker"), &t!("goblin.onboarding.wallet.title"), - Step::Node, + Step::Intro, ); // Create / Restore segmented choice. diff --git a/src/gui/views/views.rs b/src/gui/views/views.rs index 4470c9e..2a24150 100644 --- a/src/gui/views/views.rs +++ b/src/gui/views/views.rs @@ -703,16 +703,12 @@ impl View { .fit_to_exact_size(egui::vec2(150.0, 150.0)) .ui(ui); }); - ui.add_space(8.0); - ui.label( - RichText::new("GOBLIN") - .size(24.0) - .color(Colors::white_or_black(true)), - ); - ui.add_space(-2.0); + ui.add_space(6.0); + // Build number only — the "GOBLIN" wordmark was redundant with the mark + // above and the title bar, so it's dropped. Kept small and quiet. ui.label( RichText::new(format!("Build {}", crate::BUILD)) - .size(16.0) + .size(13.0) .color(Colors::title(false)), ); }