diff --git a/frontend/src-tauri/build.rs b/frontend/src-tauri/build.rs
index f393099..d822f38 100644
--- a/frontend/src-tauri/build.rs
+++ b/frontend/src-tauri/build.rs
@@ -5,6 +5,7 @@ fn main() {
"host_capabilities",
"editor_capabilities",
"workspace_choose",
+ "workspace_open",
"workspace_tree",
"workspace_read",
"workspace_write",
diff --git a/frontend/src-tauri/capabilities/main.json b/frontend/src-tauri/capabilities/main.json
index 280df55..ba003a3 100644
--- a/frontend/src-tauri/capabilities/main.json
+++ b/frontend/src-tauri/capabilities/main.json
@@ -9,6 +9,7 @@
"core:default",
"allow-host-capabilities",
"allow-workspace-choose",
+ "allow-workspace-open",
"allow-workspace-tree",
"allow-workspace-read",
"allow-workspace-write",
diff --git a/frontend/src-tauri/permissions/autogenerated/workspace_open.toml b/frontend/src-tauri/permissions/autogenerated/workspace_open.toml
new file mode 100644
index 0000000..9f2f8d9
--- /dev/null
+++ b/frontend/src-tauri/permissions/autogenerated/workspace_open.toml
@@ -0,0 +1,11 @@
+# Automatically generated - DO NOT EDIT!
+
+[[permission]]
+identifier = "allow-workspace-open"
+description = "Enables the workspace_open command without any pre-configured scope."
+commands.allow = ["workspace_open"]
+
+[[permission]]
+identifier = "deny-workspace-open"
+description = "Denies the workspace_open command without any pre-configured scope."
+commands.deny = ["workspace_open"]
diff --git a/frontend/src-tauri/src/lib.rs b/frontend/src-tauri/src/lib.rs
index b88862e..54aebb2 100644
--- a/frontend/src-tauri/src/lib.rs
+++ b/frontend/src-tauri/src/lib.rs
@@ -1,3 +1,4 @@
//! 原生文件所有权与持久化 outbox;本库不依赖 WebView,可独立执行破坏性故障测试。
+pub mod recent;
pub mod workspace;
diff --git a/frontend/src-tauri/src/main.rs b/frontend/src-tauri/src/main.rs
index 2a372d1..1b72065 100644
--- a/frontend/src-tauri/src/main.rs
+++ b/frontend/src-tauri/src/main.rs
@@ -2,23 +2,20 @@
//! 预览 Host 只开放本地文件命令;未接通的 AI / 同步 / 凭据能力明确返回不可用。
+use notesagent_host::recent::{RecentVault, RecentVaultStore};
use notesagent_host::workspace::{Document, Entry, Workspace};
-use serde::Serialize;
+use std::path::Path;
use std::sync::Mutex;
use tauri::{Emitter, Manager, State};
#[derive(Default)]
-struct Host(Mutex