feat: 用 Endor 脚本实现龙与文字绕排并补齐通用图形输入能力 #9

Merged
Zayden-Jung merged 3 commits from codex/dragon-manuscript into main 2026-11-12 03:12:09 +00:00
Collaborator

用普通 Endor 程序实现龙跟随鼠标、文字实时绕排、喷火与文字受热效果。完整示例为 examples/illustrated-manuscript.endor,297 行;龙身链条、粒子、输入规则、动画调度和热力效果均在脚本中。宿主新增的是可复用的资源/绘图/文字/指针能力,没有原生 Dragon/Flame 类型或专用演示入口。

依赖:先审阅并手动合并 Aster PR Zayden-Jung/endorphin-aster-vm#2 (5ff1c68)。本 PR 把 vendor/aster 指向该公开工作分支提交,保留最新 main 的精确读取接口。已基于用户合并 PR #6 后的 main d29a1be 集成。

实现:

  • ui.graphics 提供有界 PNG/字体/UTF-8 资源、通用数学、准备文字、图像命令与几何避让。图片、词/字素图像共享;资源不在 paint 中读取。
  • Frame/DisplayList/CPU renderer 支持带旋转、透明度与 RGB tint 的不可变图像,沿用裁剪、平移和缩放。
  • 普通 RectBlock 源子类组合文字与图片,Page-owned Task 调用脚本 tick;关闭 Page 停止动画。
  • 火焰按最长边限定 12–20 个画布单位,最多 12 个;各 PNG 的原始轴角在脚本 FireArt 中记录,绘制角=速度角−素材轴角;舌头局部偏移同样随头旋转。
  • ObjectList 增加通用编辑与 extend,前端适配新控制流的源码位置和 Sources 投影。
  • 原生指针显式订阅;生产端合并相邻绝对移动、保留动作边界;后台 relay 直接进入同一个 worker 队列。旧刷新结束后重验 session/Mount、再更新连续输入版本。外部 HTTP 不能构造内部 envelope,仍严格检查版本。

验证:

  • GUI 本地全套 191 passed / 1 ignored(PR #6 的性能基准默认 ignored,本次未重跑该历史基准)。
  • Clippy --all-targets -D warnings、格式、最终合并差异空白检查通过;字体许可文本只归一化行尾,正文与字体文件保留。
  • 实际 Endor VM→Frame→软件渲染生成宽/窄、静止/跟随/喷火 PNG;覆盖持续喷火、尺寸和角度、粒子回收、Task 调度与关闭 Page 停止。
  • 新增真实 HTTP 指针白名单/坐标/版本回归,内部 native envelope 换帧/旧会话回归,输入合并不跨动作边界回归。
  • 用户在最终实际窗口确认:持续跟随正常,松开停止喷火正常。系统自动事件投递/截图权限未开启,未将自动桌面操作声称通过。

运行与逐段解释见 docs/illustrated-manuscript.md。启动普通 Tessera 后通过常规 PUT /v1/namespaces/app.main/code 提交脚本,资源路径相对应用工作目录(示例从仓库根目录运行)。素材/字体与来源许可均在 examples/assets/manuscript/。

限制:CPU 后端;本机 release 16 次持续喷火的 VM/Frame 刷新约 1.4 秒,不含 OS 呈现,不声称 60 FPS。文字流当前面向 LTR,字素效果有字偶距取舍;通用资源读取是有界同步初始化接口,非完整资源沙箱。

工作分支 codex/dragon-manuscript → main;提交 2715c1c、09c1090。等待用户手动合并,bot 未合并或部署。

用普通 Endor 程序实现龙跟随鼠标、文字实时绕排、喷火与文字受热效果。完整示例为 examples/illustrated-manuscript.endor,297 行;龙身链条、粒子、输入规则、动画调度和热力效果均在脚本中。宿主新增的是可复用的资源/绘图/文字/指针能力,没有原生 Dragon/Flame 类型或专用演示入口。 依赖:先审阅并手动合并 Aster PR https://gitea.entroia.com/Zayden-Jung/endorphin-aster-vm/pulls/2 (5ff1c68)。本 PR 把 vendor/aster 指向该公开工作分支提交,保留最新 main 的精确读取接口。已基于用户合并 PR #6 后的 main d29a1be 集成。 实现: - ui.graphics 提供有界 PNG/字体/UTF-8 资源、通用数学、准备文字、图像命令与几何避让。图片、词/字素图像共享;资源不在 paint 中读取。 - Frame/DisplayList/CPU renderer 支持带旋转、透明度与 RGB tint 的不可变图像,沿用裁剪、平移和缩放。 - 普通 RectBlock 源子类组合文字与图片,Page-owned Task 调用脚本 tick;关闭 Page 停止动画。 - 火焰按最长边限定 12–20 个画布单位,最多 12 个;各 PNG 的原始轴角在脚本 FireArt 中记录,绘制角=速度角−素材轴角;舌头局部偏移同样随头旋转。 - ObjectList 增加通用编辑与 extend,前端适配新控制流的源码位置和 Sources 投影。 - 原生指针显式订阅;生产端合并相邻绝对移动、保留动作边界;后台 relay 直接进入同一个 worker 队列。旧刷新结束后重验 session/Mount、再更新连续输入版本。外部 HTTP 不能构造内部 envelope,仍严格检查版本。 验证: - GUI 本地全套 191 passed / 1 ignored(PR #6 的性能基准默认 ignored,本次未重跑该历史基准)。 - Clippy --all-targets -D warnings、格式、最终合并差异空白检查通过;字体许可文本只归一化行尾,正文与字体文件保留。 - 实际 Endor VM→Frame→软件渲染生成宽/窄、静止/跟随/喷火 PNG;覆盖持续喷火、尺寸和角度、粒子回收、Task 调度与关闭 Page 停止。 - 新增真实 HTTP 指针白名单/坐标/版本回归,内部 native envelope 换帧/旧会话回归,输入合并不跨动作边界回归。 - 用户在最终实际窗口确认:持续跟随正常,松开停止喷火正常。系统自动事件投递/截图权限未开启,未将自动桌面操作声称通过。 运行与逐段解释见 docs/illustrated-manuscript.md。启动普通 Tessera 后通过常规 PUT /v1/namespaces/app.main/code 提交脚本,资源路径相对应用工作目录(示例从仓库根目录运行)。素材/字体与来源许可均在 examples/assets/manuscript/。 限制:CPU 后端;本机 release 16 次持续喷火的 VM/Frame 刷新约 1.4 秒,不含 OS 呈现,不声称 60 FPS。文字流当前面向 LTR,字素效果有字偶距取舍;通用资源读取是有界同步初始化接口,非完整资源沙箱。 工作分支 codex/dragon-manuscript → main;提交 2715c1c、09c1090。等待用户手动合并,bot 未合并或部署。
codex-bot added 2 commits 2026-11-12 02:55:00 +00:00
codex-bot added 1 commit 2026-11-12 03:11:19 +00:00
Zayden-Jung merged commit f00fd05754 into main 2026-11-12 03:12:09 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Zayden-Jung/endorphin-tessera-gui#9