diff --git a/apps/ai-game-creator-shell/src-tauri/src/tests/collaboration/recovery.rs b/apps/ai-game-creator-shell/src-tauri/src/tests/collaboration/recovery.rs index e1b84a8c2..a02b21534 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/tests/collaboration/recovery.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/tests/collaboration/recovery.rs @@ -2286,6 +2286,7 @@ async fn project_supervisor_mixed_run_status_recovery_reuses_partial_isolated_cl #[tokio::test] async fn project_supervisor_resume_rechecks_delegate_policy_after_delivery_reservation() { + let _config_guard = write_test_local_config("{}".to_string()); let root = unique_project_path(); init_local_game_project_at(&root, "project-1", "项目总控委派恢复策略测试") .expect("project init"); diff --git a/apps/ai-game-creator-shell/src-tauri/src/tests/runtime_state.rs b/apps/ai-game-creator-shell/src-tauri/src/tests/runtime_state.rs index 7a8db23a2..4d013debf 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/tests/runtime_state.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/tests/runtime_state.rs @@ -3311,6 +3311,7 @@ fn supervisor_background_task_persists_one_public_start_status_before_execution( #[test] fn accepted_supervisor_preparing_task_recovers_to_runnable_queue() { + let _config_guard = write_test_local_config("{}".to_string()); let root = unique_project_path(); init_local_game_project_at(&root, "project-1", "Supervisor 启动确认恢复测试") .expect("project init"); diff --git a/apps/ai-game-creator-shell/tests/clientRuntimeErrorBoundary.test.ts b/apps/ai-game-creator-shell/tests/clientRuntimeErrorBoundary.test.ts index f6594128f..23d82084d 100644 --- a/apps/ai-game-creator-shell/tests/clientRuntimeErrorBoundary.test.ts +++ b/apps/ai-game-creator-shell/tests/clientRuntimeErrorBoundary.test.ts @@ -1,7 +1,7 @@ /** @vitest-environment jsdom */ -import { createElement } from 'react'; import { fireEvent, render, screen } from '@testing-library/react'; +import { createElement } from 'react'; import { afterEach, describe, expect, it, vi } from 'vitest'; import { ClientRuntimeErrorBoundary } from '../src/app/AuthenticatedClient'; diff --git a/docs/project-memory/shared-memory/decision-log.md b/docs/project-memory/shared-memory/decision-log.md index e407494f0..efb7630c3 100644 --- a/docs/project-memory/shared-memory/decision-log.md +++ b/docs/project-memory/shared-memory/decision-log.md @@ -7020,7 +7020,7 @@ ## 2026-08-10 AGC 普通 release 固定连接 dev API - 决策:普通 AGC Tauri release 的平台认证与客户端 API 固定访问 `https://dev.genarrative.world/api/*`;本地 `npm run agc` 继续使用 Vite `/api` 代理,普通网页构建继续使用同源相对路径,game-chat release 继续绕过平台登录。 -- 传输边界:dev 公网入口不接受 Tauri WebView 的跨域 OPTIONS 预检,因此 release 使用 `tauri-plugin-http` 原生 transport。插件 capability 与前端 URL 解析双重限制为 `https://dev.genarrative.world/api/*`,不为 WebView CSP 增加远程 `connect-src`,也不开放任意 HTTP(S) 目标。 +- 传输边界:dev 公网入口不接受 Tauri WebView 的跨域 OPTIONS 预检,因此 release 使用 `tauri-plugin-http` 原生 transport。插件的 npm 依赖只归属 AGC 子包及其 lockfile,根 H5 package 与根 lockfile 不得引入任何 Tauri guest 依赖。插件 capability 与前端 URL 解析双重限制为 `https://dev.genarrative.world/api/*`,不为 WebView CSP 增加远程 `connect-src`,也不开放任意 HTTP(S) 目标。 - 会话边界:插件默认 Cookie Store 持久化 refresh Cookie;访问 Token 继续保存在现有客户端存储并通过 Authorization header 发送,不把 Token、Cookie 或登录正文写入日志、配置文件或仓库。 ## 2026-08-10 AGC monorepo 构建强制复用单一 React runtime diff --git a/package-lock.json b/package-lock.json index 5a0999288..ea348739a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "@lexical/react": "^0.47.0", "@lexical/utils": "^0.47.0", "@tailwindcss/vite": "^4.1.14", - "@tauri-apps/plugin-http": "^2.5.9", "@vitejs/plugin-react": "^5.0.4", "dotenv": "^17.2.3", "expo": "^56.0.12", @@ -6978,16 +6977,6 @@ "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, - "node_modules/@tauri-apps/api": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.11.1.tgz", - "integrity": "sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==", - "license": "Apache-2.0 OR MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, "node_modules/@tauri-apps/cli": { "version": "2.11.2", "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.11.2.tgz", @@ -7205,15 +7194,6 @@ "node": ">= 10" } }, - "node_modules/@tauri-apps/plugin-http": { - "version": "2.5.9", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-http/-/plugin-http-2.5.9.tgz", - "integrity": "sha512-lCiY0+vs4HvIUSvZrBs8TC3TiCB0MOPRmiUjTq4prW7SlcJE2jdLeT6KBsJrT9Tlplufl7W1pY6SFAO3gCWxDA==", - "license": "MIT OR Apache-2.0", - "dependencies": { - "@tauri-apps/api": "^2.11.0" - } - }, "node_modules/@testing-library/dom": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", @@ -25587,11 +25567,6 @@ "tailwindcss": "4.2.2" } }, - "@tauri-apps/api": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.11.1.tgz", - "integrity": "sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==" - }, "@tauri-apps/cli": { "version": "2.11.2", "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.11.2.tgz", @@ -25688,14 +25663,6 @@ "dev": true, "optional": true }, - "@tauri-apps/plugin-http": { - "version": "2.5.9", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-http/-/plugin-http-2.5.9.tgz", - "integrity": "sha512-lCiY0+vs4HvIUSvZrBs8TC3TiCB0MOPRmiUjTq4prW7SlcJE2jdLeT6KBsJrT9Tlplufl7W1pY6SFAO3gCWxDA==", - "requires": { - "@tauri-apps/api": "^2.11.0" - } - }, "@testing-library/dom": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", diff --git a/package.json b/package.json index d52162d0e..71533ac35 100644 --- a/package.json +++ b/package.json @@ -173,7 +173,6 @@ "@lexical/react": "^0.47.0", "@lexical/utils": "^0.47.0", "@tailwindcss/vite": "^4.1.14", - "@tauri-apps/plugin-http": "^2.5.9", "@vitejs/plugin-react": "^5.0.4", "dotenv": "^17.2.3", "expo": "^56.0.12",