From 96f6dc88c5f6d80608789dfd54f864dd84d238f4 Mon Sep 17 00:00:00 2001 From: l0ng-ai <24760907+l0ng-ai@users.noreply.github.com> Date: Sat, 8 Aug 2026 03:34:29 +0800 Subject: [PATCH] fix(settings): break the SSH Advanced list into groups you can scan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nineteen rows in one undivided run, from identity files to warn-on-close, in the order the form happens to build them. They now carry six quiet headings — Authentication, Proxies, Algorithms, Connection, Session, Security — of two to four rows each. No row moved: the existing order already grouped this way, it just never said so. --- src/ui/i18n/en.rs | 6 ++++++ src/ui/i18n/ja.rs | 6 ++++++ src/ui/i18n/mod.rs | 12 ++++++++++++ src/ui/i18n/zh.rs | 6 ++++++ src/ui/settings.rs | 18 ++++++++++++++++++ 5 files changed, 48 insertions(+) diff --git a/src/ui/i18n/en.rs b/src/ui/i18n/en.rs index f8767753..3dce9fcb 100644 --- a/src/ui/i18n/en.rs +++ b/src/ui/i18n/en.rs @@ -214,6 +214,12 @@ pub fn translate_en(key: L10nKey) -> &'static str { L10nKey::SettingsAdvancedSummary => { "algorithms / keepalive / proxies / X11 / login scripts" } + L10nKey::SettingsGroupAuthentication => "Authentication", + L10nKey::SettingsGroupProxies => "Proxies", + L10nKey::SettingsGroupAlgorithms => "Algorithms", + L10nKey::SettingsGroupConnection => "Connection", + L10nKey::SettingsGroupSession => "Session", + L10nKey::SettingsGroupSecurity => "Security", L10nKey::SettingsIdentityFiles => "Identity files", L10nKey::SettingsIdentityFilesDesc => "Private-key paths, one per line (%h/%r expand).", L10nKey::SettingsAgentForwarding => "Agent forwarding", diff --git a/src/ui/i18n/ja.rs b/src/ui/i18n/ja.rs index 2641042d..3b4577de 100644 --- a/src/ui/i18n/ja.rs +++ b/src/ui/i18n/ja.rs @@ -212,6 +212,12 @@ pub fn translate_ja(key: L10nKey) -> Option<&'static str> { L10nKey::SettingsAdvancedSummary => { "アルゴリズム / キープアライブ / プロキシ / X11 / ログインスクリプト" } + L10nKey::SettingsGroupAuthentication => "認証", + L10nKey::SettingsGroupProxies => "プロキシ", + L10nKey::SettingsGroupAlgorithms => "アルゴリズム", + L10nKey::SettingsGroupConnection => "接続", + L10nKey::SettingsGroupSession => "セッション", + L10nKey::SettingsGroupSecurity => "セキュリティ", L10nKey::SettingsIdentityFiles => "秘密鍵ファイル", L10nKey::SettingsIdentityFilesDesc => "秘密鍵のパス(1 行に 1 つ。%h/%r は展開されます)", L10nKey::SettingsAgentForwarding => "エージェント転送", diff --git a/src/ui/i18n/mod.rs b/src/ui/i18n/mod.rs index add96591..5341ede6 100644 --- a/src/ui/i18n/mod.rs +++ b/src/ui/i18n/mod.rs @@ -219,6 +219,12 @@ pub enum L10nKey { SettingsFwdNeedsListen, SettingsAdvanced, SettingsAdvancedSummary, + SettingsGroupAuthentication, + SettingsGroupProxies, + SettingsGroupAlgorithms, + SettingsGroupConnection, + SettingsGroupSession, + SettingsGroupSecurity, SettingsIdentityFiles, SettingsIdentityFilesDesc, SettingsAgentForwarding, @@ -1254,6 +1260,12 @@ mod tests { L10nKey::SettingsFwdNeedsListen, L10nKey::SettingsAdvanced, L10nKey::SettingsAdvancedSummary, + L10nKey::SettingsGroupAuthentication, + L10nKey::SettingsGroupProxies, + L10nKey::SettingsGroupAlgorithms, + L10nKey::SettingsGroupConnection, + L10nKey::SettingsGroupSession, + L10nKey::SettingsGroupSecurity, L10nKey::SettingsIdentityFiles, L10nKey::SettingsIdentityFilesDesc, L10nKey::SettingsAgentForwarding, diff --git a/src/ui/i18n/zh.rs b/src/ui/i18n/zh.rs index cd02070f..f897f830 100644 --- a/src/ui/i18n/zh.rs +++ b/src/ui/i18n/zh.rs @@ -186,6 +186,12 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> { L10nKey::SettingsFwdNeedsListen => "需要监听端口——不会被保存。", L10nKey::SettingsAdvanced => "高级", L10nKey::SettingsAdvancedSummary => "算法 / 保活 / 代理 / X11 / 登录脚本", + L10nKey::SettingsGroupAuthentication => "认证", + L10nKey::SettingsGroupProxies => "代理", + L10nKey::SettingsGroupAlgorithms => "算法", + L10nKey::SettingsGroupConnection => "连接", + L10nKey::SettingsGroupSession => "会话", + L10nKey::SettingsGroupSecurity => "安全", L10nKey::SettingsIdentityFiles => "身份文件", L10nKey::SettingsIdentityFilesDesc => "私钥路径,每行一个(支持 %h/%r 展开)。", L10nKey::SettingsAgentForwarding => "ssh-agent 转发", diff --git a/src/ui/settings.rs b/src/ui/settings.rs index 3a893306..6417db37 100644 --- a/src/ui/settings.rs +++ b/src/ui/settings.rs @@ -953,6 +953,18 @@ impl Tty7App { .child(title.to_string()) } + /// A heading *inside* a section — quieter than `section_header`, for + /// breaking a long run of rows into groups you can scan. + fn subgroup_header(&self, key: L10nKey, cx: &Context) -> Div { + div() + .pt_4() + .pb_1() + .text_xs() + .font_weight(FontWeight::MEDIUM) + .text_color(cx.theme().muted_foreground) + .child(t(key)) + } + pub(crate) fn section_header(&self, title: &str, cx: &Context) -> Div { self.header_text(title, cx).mb_4() } @@ -3058,6 +3070,7 @@ impl Tty7App { }; section = section + .child(self.subgroup_header(L10nKey::SettingsGroupAuthentication, cx)) .child(text_row( self, t(L10nKey::SettingsIdentityFiles), @@ -3081,6 +3094,7 @@ impl Tty7App { cx, ), ) + .child(self.subgroup_header(L10nKey::SettingsGroupProxies, cx)) .child(text_row( self, t(L10nKey::SettingsProxyCommand), @@ -3102,6 +3116,7 @@ impl Tty7App { &form.http, cx, )) + .child(self.subgroup_header(L10nKey::SettingsGroupAlgorithms, cx)) .child(text_row( self, t(L10nKey::SettingsKexAlgorithms), @@ -3130,6 +3145,7 @@ impl Tty7App { &form.hostkey, cx, )) + .child(self.subgroup_header(L10nKey::SettingsGroupConnection, cx)) .child(text_row( self, t(L10nKey::SettingsCompression), @@ -3158,6 +3174,7 @@ impl Tty7App { &form.connect_timeout, cx, )) + .child(self.subgroup_header(L10nKey::SettingsGroupSession, cx)) .child( self.settings_row( t(L10nKey::SettingsX11Forwarding), @@ -3213,6 +3230,7 @@ impl Tty7App { cx, ), ) + .child(self.subgroup_header(L10nKey::SettingsGroupSecurity, cx)) .child(self.settings_row( t(L10nKey::SettingsVerifyHostKeys), t_fmt(