优化: AI授权目录改进(误弹窗根因+安全加固)
strip_verbatim比对侧收口/黑名单统一/symlink/bind双路径reload/toast接线;cargo test 18✅
This commit is contained in:
@@ -109,6 +109,11 @@ async fn create_with_binding(
|
||||
updated_at: now,
|
||||
};
|
||||
state.projects.insert(record.clone()).await.map_err(err_str)?;
|
||||
// F-260620: 绑定目录变更后立即 reload 白名单(reload_allowed_dirs 读 projects.path 合并 persistent),
|
||||
// 否则新绑定目录需重启/改 Settings 才生效 → AI 访问误弹窗(已绑定重复弹窗主因,agent3 问题5)
|
||||
if record.path.is_some() {
|
||||
state.reload_allowed_dirs().await;
|
||||
}
|
||||
Ok(record)
|
||||
}
|
||||
|
||||
@@ -208,7 +213,12 @@ pub async fn update_project(
|
||||
.projects
|
||||
.update_field(&id, &field, &value)
|
||||
.await
|
||||
.map_err(err_str)
|
||||
.map_err(err_str)?;
|
||||
// F-260620: path 字段变更后立即 reload 白名单(新绑定/重绑目录即时生效,防 AI 误弹窗)
|
||||
if field == "path" {
|
||||
state.reload_allowed_dirs().await;
|
||||
}
|
||||
Ok(true)
|
||||
}
|
||||
|
||||
/// 删除项目(软删 → 回收站,可恢复)
|
||||
@@ -307,6 +317,8 @@ pub async fn relocate_project_path(
|
||||
.update_field(&id, "path", &new_path)
|
||||
.await
|
||||
.map_err(err_str)?;
|
||||
// F-260620: 重定位目录后立即 reload 白名单(新路径即时授权,防 AI 误弹窗)
|
||||
state.reload_allowed_dirs().await;
|
||||
state
|
||||
.projects
|
||||
.update_field(&id, "stack", &stack_json)
|
||||
|
||||
Reference in New Issue
Block a user