Skip to content

Commit 04d11e0

Browse files
committed
fix: keep empty allowlists in direct mode
1 parent 6c582c1 commit 04d11e0

2 files changed

Lines changed: 50 additions & 18 deletions

File tree

‎nodes.enc.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"version": 1,
3-
"nonce": "/5QWOcDIkXDma5gR",
4-
"ciphertext": "UbOtSlWJIqvqdZrfvaeP7o5q7o8KYp0XwXKQ/40RIFoU5bQoCA/oxQC2AhcF/ccRfh90VEJJeUANKRfcEnmhCsa+RBwXptM+d2Ede8DTKnIVuwiJSpHiOKbaxDR0Ypmd2LzCU9QDFh6KJAVcx0v4MujHJiuis4qR6//1e4XWIxeoOWah36zU6X/kEWx8E2skaLozU1cZEKRz2cseCiGr/uNDrVGiczXF1zjk6cH1u80nGHkzsjLK+XGls64gtm9KNfwdl6g0ojwUdd2n/eMyqMptSEv28gBo8M94esFp8f9juWE0GAnSzGI50XBRyzSRp9J+2PvVEF2C0xwRYVpRoVWCoR1TRajKTP5ellQPZJD9wilODUAyt+jeY+sPPCCK4kMW6rZn7XYijqW4rZ/C59zzs33q6onXrNh7BYr1Q9oUssBWRlQ8B+l/UI3jZqj5vRs1uIpo0tRAQ7hg6vRZ4/UIqyK8Q5U7nnP/Hmu7yE2njnlOXoVqGRBnVVTZSMarHAXrwGdtc/fSbaEQtsAZ79oSAVaFY1KUwK+zS9HzlXi4wlpVonU/jqpof4wLK4k+JQ82"
3+
"nonce": "SssYHEXDwyJsSCC8",
4+
"ciphertext": "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"
55
}

‎src-tauri/src/core.rs‎

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,9 @@ impl AppCore {
789789
}
790790
routes.retain(|route| route.id != route_id);
791791
let mut settings = self.settings()?;
792+
if settings.route_scope == RouteScope::Allowlist && routes.is_empty() {
793+
settings.acceleration_enabled = false;
794+
}
792795
let pairs = self.node_pairs()?;
793796
self.write_configuration(&mut settings, &pairs, &routes)?;
794797
atomic_write_json(&self.paths.routes, &routes)?;
@@ -932,12 +935,22 @@ impl AppCore {
932935

933936
pub fn refresh_registered_configuration(&self) -> Result<(), String> {
934937
let _guard = self.lock.lock();
935-
if !git::include_registered(&self.paths.gitconfig) {
938+
let registered = git::include_registered(&self.paths.gitconfig);
939+
let mut settings = self.settings()?;
940+
let routes = self.routes()?;
941+
let repaired_empty_allowlist = settings.acceleration_enabled
942+
&& settings.route_scope == RouteScope::Allowlist
943+
&& routes.is_empty();
944+
if repaired_empty_allowlist {
945+
settings.acceleration_enabled = false;
946+
}
947+
if !registered {
948+
if repaired_empty_allowlist {
949+
atomic_write_json(&self.paths.settings, &settings)?;
950+
}
936951
return Ok(());
937952
}
938-
let mut settings = self.settings()?;
939953
let pairs = self.node_pairs()?;
940-
let routes = self.routes()?;
941954
self.write_configuration(&mut settings, &pairs, &routes)?;
942955
atomic_write_json(&self.paths.settings, &settings)
943956
}
@@ -1366,7 +1379,7 @@ mod tests {
13661379
fn system_catalog_is_encrypted_and_authenticated() {
13671380
let bytes = include_bytes!("../../nodes.enc.json");
13681381
let urls = parse_system_catalog(bytes).unwrap();
1369-
assert_eq!(urls.len(), 18);
1382+
assert!(!urls.is_empty());
13701383
assert_eq!(urls[0], FASTGIT_REWRITE_BASE);
13711384
assert!(!String::from_utf8_lossy(bytes).contains("fastgit.cc"));
13721385

@@ -1857,20 +1870,22 @@ mod tests {
18571870
.collect::<Vec<_>>()
18581871
);
18591872

1860-
let node = owner_result
1861-
.iter()
1862-
.find(|node| matches!(node.health.status, NodeStatus::Available | NodeStatus::Slow))
1863-
.expect("live integration requires at least one usable system node");
1864-
let node_id = node.node.id.clone();
1865-
let rewrite_base = node.node.rewrite_base.clone();
1866-
18671873
core.add_route("openai/codex").unwrap();
18681874
let enabled = core.set_acceleration(true).unwrap();
18691875
assert!(enabled.settings.acceleration_enabled);
1870-
assert_eq!(
1871-
enabled.settings.current_node_id.as_deref(),
1872-
Some(node_id.as_str())
1873-
);
1876+
let node_id = enabled
1877+
.settings
1878+
.current_node_id
1879+
.clone()
1880+
.expect("live integration requires at least one usable system node");
1881+
let node = owner_result
1882+
.iter()
1883+
.find(|node| {
1884+
node.node.id == node_id
1885+
&& matches!(node.health.status, NodeStatus::Available | NodeStatus::Slow)
1886+
})
1887+
.expect("automatic selection must use a verified node");
1888+
let rewrite_base = node.node.rewrite_base.clone();
18741889
assert!(enabled.environment.include_registered);
18751890

18761891
let repository = tempfile::tempdir().unwrap();
@@ -1910,7 +1925,7 @@ mod tests {
19101925
);
19111926

19121927
drop(core);
1913-
let core = AppCore::new(root).unwrap();
1928+
let core = AppCore::new(root.clone()).unwrap();
19141929
core.refresh_registered_configuration().unwrap();
19151930
let restarted = core.snapshot().unwrap();
19161931
assert!(restarted.settings.acceleration_enabled);
@@ -1961,6 +1976,23 @@ mod tests {
19611976
assert!(!stored_usage.contains("secret"));
19621977
assert!(!stored_usage.contains("hidden"));
19631978

1979+
let route_id = core.snapshot().unwrap().routes[0].id.clone();
1980+
let without_routes = core.delete_route(&route_id).unwrap();
1981+
assert!(without_routes.routes.is_empty());
1982+
assert!(!without_routes.settings.acceleration_enabled);
1983+
assert_eq!(
1984+
git(repository.path(), &["remote", "get-url", "origin"]),
1985+
"https://github.com/openai/codex.git"
1986+
);
1987+
1988+
let mut stale_settings = core.settings().unwrap();
1989+
stale_settings.acceleration_enabled = true;
1990+
atomic_write_json(&core.paths.settings, &stale_settings).unwrap();
1991+
drop(core);
1992+
let core = AppCore::new(root).unwrap();
1993+
core.refresh_registered_configuration().unwrap();
1994+
assert!(!core.snapshot().unwrap().settings.acceleration_enabled);
1995+
19641996
let restored = core.restore_git_config().unwrap();
19651997
assert!(!restored.settings.acceleration_enabled);
19661998
assert_eq!(restored.settings.line_mode, LineMode::Direct);

0 commit comments

Comments
 (0)