diff --git a/docs/project-memory/shared-memory/decision-log.md b/docs/project-memory/shared-memory/decision-log.md index c8e0b8001..6af27db6e 100644 --- a/docs/project-memory/shared-memory/decision-log.md +++ b/docs/project-memory/shared-memory/decision-log.md @@ -14280,7 +14280,7 @@ - AGC 登录页提供 `release`(`https://www.genarrative.world`)、`dev`(`https://dev.genarrative.world`)和 `custom` 三种服务器选择;选择持久化在客户端本地存储,登录、验证码、刷新和原生平台会话安装统一使用当前选择。 - custom 只接受纯 HTTPS origin;`localhost` / loopback 的 HTTP 也允许用于本机服务,禁止把路径、查询参数、凭据或非本机明文 HTTP 地址作为服务器地址。 -- Tauri release 的 HTTP capability scope 必须覆盖 release、dev、custom HTTPS 以及 loopback HTTP,否则前端选择虽能保存,plugin-http 仍会在请求层拒绝登录。 +- Tauri release 的 HTTP capability scope 必须覆盖 release、dev、custom HTTPS 以及 loopback HTTP,`check:native-shells` 以该精确 allowlist 作为源码门禁;否则前端选择虽能保存,plugin-http 仍会在请求层拒绝登录。 - 直连 Codex 的本机 External Editor API Key 必须按服务器 origin 独立存储。登录服务器切换后禁止复用另一 origin 的历史 Key 或 base URL;否则会出现登录走新服务器、平台资源生成仍请求旧服务器的漂移。 ## 2026-08-18 AGC 登录网络错误与 Web Build 门禁对齐 diff --git a/scripts/check-native-shells.mjs b/scripts/check-native-shells.mjs index 7e4cd1082..f99af428f 100644 --- a/scripts/check-native-shells.mjs +++ b/scripts/check-native-shells.mjs @@ -2441,10 +2441,16 @@ function assertAiGameCreatorShellUserDevBoundary() { if ( !httpPermission || JSON.stringify(httpPermission.allow ?? []) !== - JSON.stringify([{ url: 'https://dev.genarrative.world/api/*' }]) + JSON.stringify([ + { url: 'https://dev.genarrative.world/api/*' }, + { url: 'https://www.genarrative.world/api/*' }, + { url: 'https://*/api/*' }, + { url: 'http://localhost:*/*' }, + { url: 'http://127.0.0.1:*/*' }, + ]) ) { throw new Error( - 'AI game creator native HTTP scope must stay limited to the dev API', + 'AI game creator native HTTP scope must match the release, dev, custom HTTPS, and loopback API boundary', ); }