补点选不改变预览适配的行为合同与证据
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled

- 功能说明「必须成立的行为」新增第 7、8 条:点选不改变预览适配、命中区域裁剪在画布内
- 功能说明「验收标准与证据」补两行:尺寸稳定性用例(5 例)与真实 Chromium 对照值、命中区域裁剪与退化证据
- PRD §3.4「点选素材」条款末尾补一句:点选不得改变预览的内容尺寸与适配缩放,命中区域只取画布内可见部分
This commit is contained in:
2026-10-05 17:11:45 +08:00
parent 7ad412f0ec
commit 582fabdfbb
2 changed files with 5 additions and 1 deletions
@@ -76,7 +76,7 @@
- 运行视窗必须占满中央工作区为游戏保留的可用区域。loopback 预览页通过客户端本地 preview server 注入的只读尺寸桥上报文档实际宽高;宿主只接受当前 iframe、当前 loopback origin 的固定版本消息,并将完整游戏文档等比缩放、居中放入视窗。iframe 首次适配后发生的真实内容增高或缩短仍必须被接受;仅浏览上下文宽高回灌或内容宽高未变化时保持当前状态,不触发重复渲染。
- 窗口或中央区域尺寸变化后必须重新测量和适配;内容已经放得下时保持 `1:1`,不得无故放大。游戏文档宽高超过视窗时缩小整体画面,不显示 iframe 横向或纵向滚动条,也不得用单纯裁切替代完整展示。尺寸桥以根布局 `ResizeObserver` 为主,并在页面可见时每 `500ms` 至多探测 `512` 个元素作为绝对定位溢出的低频兜底;探测截断时不得用部分样本下调尺寸,viewport 耦合的 `100vh / 100% / bottom / right` 布局也不得形成自反馈。相同测量结果去重,不监听整页属性、文本或子节点突变;桥不读取项目正文、不修改 manifest、游戏文件或运行业务状态。桥脚本只能注入到真实 HTML 标签上下文,不能把脚本、样式、模板或注释中的 `</body>` / `</html>` 文本误判为结束标签;省略结束标签的 UTF-8 HTML 仍需安全注入。
- 运行视窗右下角提供“全屏预览”:只把游戏画面那一格送进全屏,顶部页签、右侧对话和底部信息栏不跟着放大;再次点击该入口、按 `Esc` 或由宿主退出全屏都回到原布局。宿主没有 Fullscreen API 时整枚入口不渲染,不留点了没反应的按钮。
- 运行视窗提供“点选素材”:把画面上点中的内容落成一条 `runtime-region` 引用插入对话,只影响这一次引用——不改资源选中、不改信息栏判据、不写 manifest 或版本、不重载预览,也不代表“该素材正在被这个位置使用”。预览页是 Phaser 4 或 three.js 玩法时,点中由**已登记素材**渲染的精灵、图集帧、贴图网格或模型,引用必须带该素材的稳定 id,显示名与其它引用入口一致;玩法没有发布引擎句柄、对象既没有标注也取不到贴图地址、或画面是程序化绘制时,退化为不带素材的区域引用——不报错、不伪造 id、引用照常能插入能发送。
- 运行视窗提供“点选素材”:把画面上点中的内容落成一条 `runtime-region` 引用插入对话,只影响这一次引用——不改资源选中、不改信息栏判据、不写 manifest 或版本、不重载预览,也不代表“该素材正在被这个位置使用”。预览页是 Phaser 4 或 three.js 玩法时,点中由**已登记素材**渲染的精灵、图集帧、贴图网格或模型,引用必须带该素材的稳定 id,显示名与其它引用入口一致;玩法没有发布引擎句柄、对象既没有标注也取不到贴图地址、或画面是程序化绘制时,退化为不带素材的区域引用——不报错、不伪造 id、引用照常能插入能发送;点选不得改变预览的内容尺寸与适配缩放,命中区域只取画布内可见部分。
- 运行视窗下方的信息栏只在**有真实内容**时存在(当前判据是**资源选中态**:在资源画布或浮层资源面板里选中一张资源后切到运行页签仍保留,信息栏渲染它的只读字段;运行画面上的“点选素材”只往对话插入引用,不改选中):没有内容时整栏不渲染,有内容时自动展开并可手动收起到只剩一行开合按钮;不显示示例字段、默认数值、未载入控件或功能说明。暂时没有数据源的区域(「数值微调」的登记表)不渲染区域标题与卡片,等编辑态登记表接进来后与内容一起出现。Agent 对话标题栏不显示头像图标,“与陶泥儿的对话”及副标题按标题栏左侧对齐,钱包和审批入口继续位于右侧。
- 数值修改立即写入当前项目的编辑态配置。