Merge branch 'dev' into fix/import-remote-profile

This commit is contained in:
❤是纱雾酱哟~
2026-09-28 20:47:28 +08:00
committed by GitHub
2 changed files with 16 additions and 9 deletions
+1
View File
@@ -5,6 +5,7 @@
- 修复「代理集合」「规则集合」订阅响应较慢时更新误报失败、且不显示真实失败原因的问题
- 修复读屏软件将普通模式下的侧边栏导航项播报为不可用的可拖拽控件的问题
- 修复订阅包含自定义 DNS 时,确认开启的 DNS 覆写在重启应用后被自动关闭的问题
- 修复通过 URL 导入订阅时,即使导入的订阅并非当前使用的订阅,也会重新加载当前配置的问题
**🖥️ Windows**
+15 -9
View File
@@ -108,8 +108,7 @@ impl DnsOverrideState {
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct ProfileDnsSettings {
pub enabled: bool,
// Force-enable confirmation is valid only for the current app session.
#[serde(skip)]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub confirmation: Option<String>,
}
@@ -195,7 +194,7 @@ mod tests {
}
#[test]
fn dns_override_confirmation_expires_on_restart() -> Result<()> {
fn dns_override_confirmation_survives_restart_only_for_the_same_source() -> Result<()> {
let source = Some("provider-dns".into());
let confirmed = IVerge {
profile_dns_settings: [(
@@ -208,15 +207,22 @@ mod tests {
.into(),
..IVerge::default()
};
let settings = confirmed.dns_settings_for("one");
assert!(DnsOverrideState::new("one", source.clone(), settings.enabled, settings.confirmation).enabled);
for saved in [
serde_yaml_ng::to_string(&confirmed)?,
"enable_dns_settings: true\ndns_override_confirmation: provider-dns".to_owned(),
let saved = serde_yaml_ng::to_string(&confirmed)?;
let mut restarted: IVerge = serde_yaml_ng::from_str(&saved)?;
let settings = restarted.dns_settings_for("one");
let state = DnsOverrideState::new("one", source.clone(), settings.enabled, settings.confirmation);
assert!(state.enabled);
assert!(!state.apply_to(&mut restarted));
for (saved, source) in [
(saved, Some("updated".into())),
(
"enable_dns_settings: true\ndns_override_confirmation: provider-dns".to_owned(),
source,
),
] {
let mut restarted: IVerge = serde_yaml_ng::from_str(&saved)?;
let settings = restarted.dns_settings_for("one");
let state = DnsOverrideState::new("one", source.clone(), settings.enabled, settings.confirmation);
let state = DnsOverrideState::new("one", source, settings.enabled, settings.confirmation);
assert!(!state.enabled, "a previous session must not bypass startup protection");
assert!(state.apply_to(&mut restarted));
assert!(!restarted.dns_settings_for("one").enabled);