From 4acc81747a0e5be9b999d8e07f9c38c293a9110a Mon Sep 17 00:00:00 2001 From: kdletters Date: Wed, 17 Jun 2026 21:54:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=85=A5=20Tauri=20=E6=A1=8C=E9=9D=A2?= =?UTF-8?q?=E5=89=AA=E8=B4=B4=E6=9D=BF=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 Tauri clipboard-manager 依赖并通过 HostBridge 写入系统剪贴板 同步桌面壳能力清单和真实品牌图标配置 补充桌面壳配置守门、测试和宿主壳文档记忆 --- apps/desktop-shell/scripts/check-config.mjs | 25 +- apps/desktop-shell/src-tauri/Cargo.lock | 341 ++++++++++++++++++ apps/desktop-shell/src-tauri/Cargo.toml | 1 + apps/desktop-shell/src-tauri/icons/icon.png | Bin 0 -> 94037 bytes apps/desktop-shell/src-tauri/src/main.rs | 60 ++- apps/desktop-shell/src-tauri/tauri.conf.json | 6 +- .../shared-memory/decision-log.md | 2 +- ...ExpoReactNative与Tauri宿主壳方案-2026-06-17.md | 2 +- 8 files changed, 423 insertions(+), 14 deletions(-) create mode 100644 apps/desktop-shell/src-tauri/icons/icon.png diff --git a/apps/desktop-shell/scripts/check-config.mjs b/apps/desktop-shell/scripts/check-config.mjs index 45adb581..9d548665 100644 --- a/apps/desktop-shell/scripts/check-config.mjs +++ b/apps/desktop-shell/scripts/check-config.mjs @@ -9,6 +9,7 @@ const capabilityPath = new URL( const capability = JSON.parse(fs.readFileSync(capabilityPath, 'utf8')); const buildScriptPath = new URL('../src-tauri/build.rs', import.meta.url); const buildScript = fs.readFileSync(buildScriptPath, 'utf8'); +const iconPath = new URL('../src-tauri/icons/icon.png', import.meta.url); if (config.build?.frontendDist !== '../../../dist') { throw new Error('desktop shell must package the root H5 dist'); @@ -23,13 +24,17 @@ if (!mainWindow || mainWindow.create !== false) { throw new Error('desktop shell must create the main window from Rust setup'); } +if (!config.bundle?.icon?.includes('icons/icon.png')) { + throw new Error('desktop shell must use the real brand icon asset'); +} + const requiredUrlParts = [ 'clientRuntime=native_app', 'clientType=native_app', 'hostShell=tauri_desktop', 'hostPlatform=unknown', 'bridgeVersion=1', - 'hostCapabilities=host.getRuntime,app.openExternalUrl', + 'hostCapabilities=host.getRuntime,app.openExternalUrl,clipboard.writeText', ]; for (const part of requiredUrlParts) { @@ -46,6 +51,10 @@ const requiredPermissions = [ 'allow-host-bridge-request', ]; const requiredBuildCommands = ['host_bridge_request']; +const requiredMainSnippets = [ + 'tauri_plugin_clipboard_manager::init()', + '"clipboard.writeText"', +]; for (const permission of requiredPermissions) { if (!capability.permissions?.includes(permission)) { @@ -62,3 +71,17 @@ for (const command of requiredBuildCommands) { if (buildScript.includes('resolve_desktop_shell_runtime')) { throw new Error('desktop shell build manifest exposes an unused runtime command'); } + +const icon = fs.readFileSync(iconPath); +if (icon.length < 10000) { + throw new Error('desktop shell icon must use a real brand asset'); +} + +const mainPath = new URL('../src-tauri/src/main.rs', import.meta.url); +const main = fs.readFileSync(mainPath, 'utf8'); + +for (const snippet of requiredMainSnippets) { + if (!main.includes(snippet)) { + throw new Error(`desktop shell Rust host bridge missing ${snippet}`); + } +} diff --git a/apps/desktop-shell/src-tauri/Cargo.lock b/apps/desktop-shell/src-tauri/Cargo.lock index 42996dce..e694380c 100644 --- a/apps/desktop-shell/src-tauri/Cargo.lock +++ b/apps/desktop-shell/src-tauri/Cargo.lock @@ -47,6 +47,27 @@ version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +[[package]] +name = "arboard" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" +dependencies = [ + "clipboard-win", + "image", + "log", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "parking_lot", + "percent-encoding", + "windows-sys 0.59.0", + "wl-clipboard-rs", + "x11rb", +] + [[package]] name = "async-broadcast" version = "0.7.2" @@ -334,6 +355,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + [[package]] name = "bytes" version = "1.11.1" @@ -465,6 +492,15 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "clipboard-win" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" +dependencies = [ + "error-code", +] + [[package]] name = "combine" version = "4.6.7" @@ -567,6 +603,12 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + [[package]] name = "crypto-common" version = "0.1.7" @@ -783,6 +825,12 @@ dependencies = [ "tendril", ] +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + [[package]] name = "dpi" version = "0.1.2" @@ -908,6 +956,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + [[package]] name = "event-listener" version = "5.4.1" @@ -935,6 +989,12 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +[[package]] +name = "fax" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" + [[package]] name = "fdeflate" version = "0.3.7" @@ -960,6 +1020,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" version = "1.1.9" @@ -1215,6 +1281,7 @@ dependencies = [ "serde_json", "tauri", "tauri-build", + "tauri-plugin-clipboard-manager", "tauri-plugin-opener", ] @@ -1228,6 +1295,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix", + "windows-link 0.2.1", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -1412,6 +1489,17 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1698,6 +1786,20 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "image" +version = "0.25.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" +dependencies = [ + "bytemuck", + "byteorder-lite", + "moxcms", + "num-traits", + "png 0.18.1", + "tiff", +] + [[package]] name = "indexmap" version = "1.9.3" @@ -2016,6 +2118,16 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + [[package]] name = "muda" version = "0.19.3" @@ -2067,6 +2179,15 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + [[package]] name = "num-conv" version = "0.2.2" @@ -2124,6 +2245,7 @@ dependencies = [ "block2", "objc2", "objc2-core-foundation", + "objc2-core-graphics", "objc2-foundation", ] @@ -2333,6 +2455,16 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "os_pipe" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "pango" version = "0.18.3" @@ -2399,6 +2531,17 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap 2.14.0", +] + [[package]] name = "phf" version = "0.13.1" @@ -2621,6 +2764,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "pxfm" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + [[package]] name = "quick-xml" version = "0.39.4" @@ -3443,6 +3598,21 @@ dependencies = [ "walkdir", ] +[[package]] +name = "tauri-plugin-clipboard-manager" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206dc20af4ed210748ba945c2774e60fd0acd52b9a73a028402caf809e9b6ecf" +dependencies = [ + "arboard", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", +] + [[package]] name = "tauri-plugin-opener" version = "2.5.4" @@ -3628,6 +3798,20 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "tiff" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" +dependencies = [ + "fax", + "flate2", + "half", + "quick-error", + "weezl", + "zune-jpeg", +] + [[package]] name = "time" version = "0.3.49" @@ -3928,6 +4112,17 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "tree_magic_mini" +version = "3.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" +dependencies = [ + "memchr", + "nom", + "petgraph", +] + [[package]] name = "try-lock" version = "0.2.5" @@ -4242,6 +4437,76 @@ dependencies = [ "semver", ] +[[package]] +name = "wayland-backend" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" +dependencies = [ + "bitflags 2.13.0", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" +dependencies = [ + "bitflags 2.13.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" +dependencies = [ + "bitflags 2.13.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" +dependencies = [ + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.102" @@ -4344,6 +4609,12 @@ dependencies = [ "windows-core 0.61.2", ] +[[package]] +name = "weezl" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" + [[package]] name = "winapi" version = "0.3.9" @@ -4823,6 +5094,24 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wl-clipboard-rs" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9651471a32e87d96ef3a127715382b2d11cc7c8bb9822ded8a7cc94072eb0a3" +dependencies = [ + "libc", + "log", + "os_pipe", + "rustix", + "thiserror 2.0.18", + "tree_magic_mini", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-wlr", +] + [[package]] name = "writeable" version = "0.6.3" @@ -4894,6 +5183,23 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "x11rb" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "gethostname", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + [[package]] name = "yoke" version = "0.8.3" @@ -4978,6 +5284,26 @@ dependencies = [ "zvariant", ] +[[package]] +name = "zerocopy" +version = "0.8.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + [[package]] name = "zerofrom" version = "0.1.8" @@ -5038,6 +5364,21 @@ version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +[[package]] +name = "zune-core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core", +] + [[package]] name = "zvariant" version = "5.12.0" diff --git a/apps/desktop-shell/src-tauri/Cargo.toml b/apps/desktop-shell/src-tauri/Cargo.toml index eb9e145d..79c83770 100644 --- a/apps/desktop-shell/src-tauri/Cargo.toml +++ b/apps/desktop-shell/src-tauri/Cargo.toml @@ -11,4 +11,5 @@ tauri-build = { version = "2.6.2", features = [] } serde = { version = "1", features = ["derive"] } serde_json = "1" tauri = { version = "2.11.2", features = [] } +tauri-plugin-clipboard-manager = "2.3.2" tauri-plugin-opener = "2.5.4" diff --git a/apps/desktop-shell/src-tauri/icons/icon.png b/apps/desktop-shell/src-tauri/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa1f7d8b6bd0e3d11963a518a39da5a3f738377 GIT binary patch literal 94037 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 |UveRVXDekqvCSMyQh+LIts*9KI${w8*|( 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 literal 0 HcmV?d00001 diff --git a/apps/desktop-shell/src-tauri/src/main.rs b/apps/desktop-shell/src-tauri/src/main.rs index b6688698..ef243499 100644 --- a/apps/desktop-shell/src-tauri/src/main.rs +++ b/apps/desktop-shell/src-tauri/src/main.rs @@ -1,5 +1,6 @@ use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; +use tauri_plugin_clipboard_manager::ClipboardExt; use tauri_plugin_opener::OpenerExt; const HOST_BRIDGE_PROTOCOL: &str = "GenarrativeHostBridge"; @@ -57,7 +58,11 @@ fn desktop_platform() -> &'static str { } fn capabilities() -> Vec<&'static str> { - vec!["host.getRuntime", "app.openExternalUrl"] + vec![ + "host.getRuntime", + "app.openExternalUrl", + "clipboard.writeText", + ] } fn ok(id: String, result: Value) -> HostBridgeResponse { @@ -97,6 +102,24 @@ fn validate_request(request: &HostBridgeRequest) -> Option { None } +fn required_string_payload<'a>( + request: &'a HostBridgeRequest, + field: &'static str, +) -> Result<&'a str, HostBridgeResponse> { + request + .payload + .as_ref() + .and_then(|value| value.get(field)) + .and_then(Value::as_str) + .ok_or_else(|| { + failed( + request.id.clone(), + "invalid_request", + format!("{} is required", field), + ) + }) +} + fn resolve_host_bridge_request(request: HostBridgeRequest) -> HostBridgeResponse { if let Some(response) = validate_request(&request) { return response; @@ -132,13 +155,9 @@ async fn host_bridge_request( match request.method.as_str() { "app.openExternalUrl" => { - let Some(url) = request - .payload - .as_ref() - .and_then(|value| value.get("url")) - .and_then(Value::as_str) - else { - return failed(request.id, "invalid_request", "url is required"); + let url = match required_string_payload(&request, "url") { + Ok(url) => url, + Err(response) => return response, }; match app.opener().open_url(url, None::<&str>) { @@ -146,12 +165,24 @@ async fn host_bridge_request( Err(error) => failed(request.id, "host_error", error.to_string()), } } + "clipboard.writeText" => { + let text = match required_string_payload(&request, "text") { + Ok(text) => text, + Err(response) => return response, + }; + + match app.clipboard().write_text(text) { + Ok(()) => ok(request.id, json!(true)), + Err(error) => failed(request.id, "host_error", error.to_string()), + } + } _ => resolve_host_bridge_request(request), } } fn main() { tauri::Builder::default() + .plugin(tauri_plugin_clipboard_manager::init()) .plugin(tauri_plugin_opener::init()) .setup(|app| { let window_config = app.config().app.windows.get(0).cloned(); @@ -210,4 +241,17 @@ mod tests { assert!(!response.ok); assert_eq!(response.error.expect("error").code, "invalid_request"); } + + #[test] + fn invalid_string_payload_is_rejected() { + let mut invalid = request("clipboard.writeText"); + invalid.payload = Some(json!({ "text": 123 })); + + let response = required_string_payload(&invalid, "text").expect_err("invalid payload"); + + assert!(!response.ok); + let error = response.error.expect("error"); + assert_eq!(error.code, "invalid_request"); + assert_eq!(error.message, "text is required"); + } } diff --git a/apps/desktop-shell/src-tauri/tauri.conf.json b/apps/desktop-shell/src-tauri/tauri.conf.json index e6671a8c..953f2ee1 100644 --- a/apps/desktop-shell/src-tauri/tauri.conf.json +++ b/apps/desktop-shell/src-tauri/tauri.conf.json @@ -6,7 +6,7 @@ "build": { "beforeDevCommand": "npm --prefix ../.. run dev:web", "beforeBuildCommand": "npm --prefix ../.. run build:raw && npm run typecheck", - "devUrl": "http://127.0.0.1:3000/?clientRuntime=native_app&clientType=native_app&hostShell=tauri_desktop&hostPlatform=unknown&hostVersion=0.1.0&bridgeVersion=1&hostCapabilities=host.getRuntime,app.openExternalUrl", + "devUrl": "http://127.0.0.1:3000/?clientRuntime=native_app&clientType=native_app&hostShell=tauri_desktop&hostPlatform=unknown&hostVersion=0.1.0&bridgeVersion=1&hostCapabilities=host.getRuntime,app.openExternalUrl,clipboard.writeText", "frontendDist": "../../../dist" }, "app": { @@ -14,7 +14,7 @@ { "create": false, "label": "main", - "url": "index.html?clientRuntime=native_app&clientType=native_app&hostShell=tauri_desktop&hostPlatform=unknown&hostVersion=0.1.0&bridgeVersion=1&hostCapabilities=host.getRuntime,app.openExternalUrl", + "url": "index.html?clientRuntime=native_app&clientType=native_app&hostShell=tauri_desktop&hostPlatform=unknown&hostVersion=0.1.0&bridgeVersion=1&hostCapabilities=host.getRuntime,app.openExternalUrl,clipboard.writeText", "title": "Genarrative", "width": 1280, "height": 820, @@ -29,6 +29,6 @@ "bundle": { "active": true, "targets": "all", - "icon": [] + "icon": ["icons/icon.png"] } } diff --git a/docs/project-memory/shared-memory/decision-log.md b/docs/project-memory/shared-memory/decision-log.md index 3816f569..ccf36b2d 100644 --- a/docs/project-memory/shared-memory/decision-log.md +++ b/docs/project-memory/shared-memory/decision-log.md @@ -20,7 +20,7 @@ - 背景:后续需要移动端 App 和桌面端 App,但现有主站、固定玩法 runtime、小程序壳和未来 AI H5 sandbox 已经以 H5 为主线;如果移动端重写 React Native UI、桌面端重写 Rust/Tauri UI,会形成玩法、登录、支付、分享和运行态的多套实现。 - 决策:移动端原生壳采用 `Expo + React Native`,桌面端壳采用 `Tauri`。两者都只作为 `native_app` 宿主壳和 HostBridge adapter,不重写现有 React H5 主站,不把固定内置玩法迁到 React Native / Rust UI,也不让 AI 生成 H5 游戏直接访问完整 HostBridge。Expo 壳通过 `react-native-webview` 承接 H5 与 native 通信,Tauri 壳通过受控 command 和 capabilities 承接桌面能力;新增能力必须先进入 HostBridge 契约和测试。 -- 2026-06-17 首轮落地:新增 `packages/shared/src/contracts/hostBridge.ts`、`src/services/host-bridge/nativeAppHostBridge.ts`、`apps/mobile-shell/` 和 `apps/desktop-shell/`。首轮壳只声明并实现真实可用能力;登录、支付、桌面剪贴板等未接入真实 SDK / 插件前必须返回 unsupported 并让 H5 fallback,生产代码禁止 mock 成功。 +- 2026-06-17 首轮落地:新增 `packages/shared/src/contracts/hostBridge.ts`、`src/services/host-bridge/nativeAppHostBridge.ts`、`apps/mobile-shell/` 和 `apps/desktop-shell/`。壳只声明并实现真实可用能力;桌面壳已通过 Tauri clipboard-manager 接入 `clipboard.writeText`,登录、支付、桌面分享等未接入真实 SDK / 插件前必须返回 unsupported 并让 H5 fallback,生产代码禁止 mock 成功。 - 影响范围:`src/services/host-bridge/`、未来 `apps/mobile-shell/`、未来 `apps/desktop-shell/`、移动端支付 / 分享 / 深链 / 推送、桌面端系统能力、AI H5 sandbox 的 GameBridge 边界。 - 验证方式:普通浏览器、小程序、Expo 壳、Tauri 壳都能返回正确 `getHostRuntime()`;未支持能力能回退 H5;固定玩法在各宿主中读取同一作品数据和运行态 snapshot;AI sandbox 无法直接调用 HostBridge;Tauri release 不允许任意远端页面调用桌面命令。 - 关联文档:`docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md`、`docs/【前端架构】宿主壳能力统一协议-2026-06-17.md`。 diff --git a/docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md b/docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md index 3cd24040..065e6c36 100644 --- a/docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md +++ b/docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md @@ -249,7 +249,7 @@ GameBridge 禁止: - 实现 runtime、openExternalUrl、clipboard、share fallback、窗口标题同步。 - 验证 macOS / Windows / Linux 至少一条本地 smoke。 -当前状态:已新增 `apps/desktop-shell/`,Tauri dev 直接加载本地主站 Vite,release 打包根 `dist` 主站资产。Rust 侧只把 `host_bridge_request` command 授给主窗口,`app.openExternalUrl` 由 Rust 内部通过 opener 插件执行,不把 opener 插件直接暴露给前端;首轮真实能力为 `host.getRuntime` 和 `app.openExternalUrl`。剪贴板、分享面板、登录和支付未接入真实插件 / 渠道前不声明支持,不返回 mock 成功。 +当前状态:已新增 `apps/desktop-shell/`,Tauri dev 直接加载本地主站 Vite,release 打包根 `dist` 主站资产。Rust 侧只把 `host_bridge_request` command 授给主窗口,`app.openExternalUrl` 由 Rust 内部通过 opener 插件执行,`clipboard.writeText` 由 Rust 内部通过 clipboard-manager 插件写入系统剪贴板;不把 opener 或 clipboard 插件命令直接暴露给前端。当前真实能力为 `host.getRuntime`、`app.openExternalUrl` 和 `clipboard.writeText`。分享面板、登录和支付未接入真实插件 / 渠道前不声明支持,不返回 mock 成功。 ### Phase 4:宿主能力扩展