Repository navigation
v1.0.2
The first feature release since 1.0.0. Blender integration is now one click, blueprint layout was rewritten, and a batch of full-table scans that made large vaults unusable are fixed. One breaking change to the sequencer tools — see below.
Added
- Blender integration is now one click. Trigger it from Preferences → MCP; dependency install, path entry and environment variables are handled by the app. If the install location is not detected, it can be selected manually.
ue_set_transformgained anarrangeoperation. It reads each actor's bounding box and lays them out along an axis, withgapmeasured edge to edge.locationsets the mesh origin, and where that origin sits relative to the geometry is decided by the asset — so layouts computed from nominal dimensions are wrong for a significant share of assets, and the engine reports no error when they are.alignsnaps a batch to a shared line on another axis. Limit of 100 per call.- Blueprint layout algorithm rewritten. Execution and data flow share one longest-path column assignment, so no connection runs backwards. Pure getters referenced from far away are duplicated locally instead of drawing a wire across the graph (
duplicate_getters: falsedisables this). Comment boxes are now readable and writable, and move together with the nodes they enclose. - Automatically detected updates now surface in the app. Previously
updater:update-availablewas only observed by the Settings → About panel, so the event was lost whenever that panel was not mounted. The title bar badge is now three-state: update available, downloading, restart pending.
Changed
- Breaking:
sequence_camera_cutsno longer deletes existing camera cut sections on its own. The previous behaviour was to delete all existing sections and rebuild a single one, so a multi-camera sequence with a single uncovered frame collapsed to one camera after a single call. It now returns 409 without modifying anything when coverage is incomplete; rebuilding requires an explicitrebuild=true, and the response reports how many sections were removed.sequence_camera_keysgains the correspondingrebuild_camera_cuts. - MCP settings are read and written per entry. Save and delete now act on a single server. The previous combined "save and connect" submitted unrelated servers together, so one invalid entry blocked all of them.
- Tools are loaded on demand. Low-frequency tools are grouped and deferred, high-frequency groups stay resident. The first-turn tool prefix is roughly a third of a full injection. Read-only sessions, Ask mode, and sessions with an explicit tool allowlist are never deferred.
Fixed
- A system proxy could block the plugin from connecting while every diagnostic still reported success. Unreal's WebSocket implementation applies the system proxy to all connections, with no exception for localhost. The plugin and
uebox doctornow report the proxy variables they detect; the troubleshooting guide documents how to start the editor without a proxy and what that costs. - Sequencer writes are now transactional. That command family did not use
FUAL_ScopedTransaction, so deleted camera cut sections and overwritten keyframes could not be undone with Ctrl+Z orue_undo— while the tool reported success. All validation was also moved ahead of the first modification, so a failure no longer leaves a generated camera behind in the level. - Update installation failures are now visible.
quitAndInstall()returned void, so a failure (a cancelled UAC prompt, for example) was discarded silently while the IPC call still returned success. A failure to start the download was unhandled at both call sites, leaving the badge on an unresponsive "downloading 0%". When no update feed is configured, that is now stated explicitly. arrangeno longer reports success after a partial failure, and returns the completed count plus astartvalue for retrying.- Two query regressions: an index predicate that disabled the index (opening a folder in a 520k-row vault went from 0.08 ms to 5.2 s), and FTS recall truncation applied before filtering and paging, which returned 0 rows when filtering by folder and empty pages past a certain point.
- Guidance for two failure modes the model kept hitting: after a Python timeout, further probing commands are useless, because the script holds the editor's main thread and every subsequent command times out with it; and "nothing to save" right after a change almost always means that change went through Python, which bypasses the transaction system, leaves the package unmarked, and causes the save to be skipped.
adm-zipupgraded to 0.6.1, closing an outstanding high-severity advisory.
Performance
Every main-process query was profiled with EXPLAIN against a real 520k-row / 975 MB vault, and a batch of full-table scans and whole-table loads were fixed (measured before → after): remote import write phase, 4.1 s per file → 0.06 ms; Spotlight per keystroke, 5.7 s → FTS; filter dropdown, 8.3 s → 0.3 s; dependency graph, 50 s and 1.5 GB of heap → 7 s; emptying the trash, 7.1 s → 0.4 s; media read permissions, 4.7 s → 0.03 ms. The project never ran ANALYZE; it now runs once when a vault is opened.
Known impact and what is not covered: opening an existing vault for the first time builds 6 indexes and runs ANALYZE, which takes about 70 seconds on a 520k-row vault with the interface unresponsive. This happens once; small vaults take seconds. Not addressed: the multi-column LIKE fallback used while FTS is not ready (recovers within about 20 seconds of a full sync), the whole-table load used by cloud backup, and full sync holding 520k rows in memory at once (1.5 GB).
Download
Windows only — uebox-1.0.2-setup.exe. An existing install will find this update on its own.
Supports Unreal Engine 5.0 through 5.8. The UnrealAgentLink plugin ships prebuilt and installs itself when you import a project.
The installer is not code-signed, so Windows SmartScreen will warn on first run.
New here? Read the 1.0.0 release notes — they describe what the app actually does.
License
Apache-2.0 for the application, MIT for the UnrealAgentLink plugin.
This project is not affiliated with or endorsed by Epic Games. Unreal and Unreal Engine are trademarks of Epic Games, Inc.
🐛 Issues · 🔒 Report security vulnerabilities privately per SECURITY.md
中文
1.0.0 以来第一个功能版本。Blender 接入改为一键完成,蓝图排版算法重写,大库上一批导致卡死的全表扫描已修复。定序器工具有一处破坏性变更,见下。
新增
- Blender 接入改为一键完成。 偏好设置 → MCP 中触发,依赖安装、路径写入、环境变量配置由应用执行。未探测到安装位置时可手动指定目录。
ue_set_transform新增arrange操作。 读取每个物体的包围盒,沿指定轴排开,gap为边到边间距。location设置的是网格原点,而原点相对几何体的位置由资产决定,因此按标称尺寸推算的排布对相当一部分资产不成立,且引擎不会报错。align可将一批物体对齐到另一轴的同一条线上。单次上限 100 个。- 蓝图排版算法重写。 执行流与数据流共同计算最长路径定列,不再出现反向连线;被远处节点引用的纯 getter 就近复制一份,替代跨图长线(
duplicate_getters: false可关闭)。注释框支持读写,整理时随其框选的节点一同移动。 - 自动检查到的新版本会在应用内提示。 此前
updater:update-available仅由「设置 → 关于」面板监听,该面板未挂载时事件丢失。标题栏角标改为三态:可更新、下载中、待重启。
变更
- 破坏性:
sequence_camera_cuts不再自动删除已有切轨段。 此前补全切轨的做法是删除全部已有段后重建为一整段,因此一条多机位序列只要存在一帧未覆盖,调用一次即只剩一台相机。现在未完全覆盖时直接返回 409 且不做修改,重建需显式传rebuild=true,返回中给出删除数量。sequence_camera_keys对应新增rebuild_camera_cuts。 - MCP 设置改为逐条读写。 保存与删除作用于单条服务。此前的统一「保存并连接」会把互不相关的服务绑为一次提交,其中一条无效则全部无法保存。
- 工具改为按需加载。 低频工具按组折叠,高频工具整组常驻,首轮工具前缀约为全量注入的三分之一。只读会话、Ask 模式、以及指定了工具白名单的会话不折叠。
修复
- 系统代理会导致插件无法连入,且各层检查均为通过状态。 虚幻的 WebSocket 实现对所有连接套用系统代理,不对 localhost 例外。插件与
uebox doctor现在会输出检测到的代理变量;排障文档补充了绕开代理的启动方式及其影响。 - 定序器写入纳入事务。 此前该命令族未使用
FUAL_ScopedTransaction,删除的切轨段与覆盖的关键帧无法通过 Ctrl+Z 或ue_undo撤销,而工具返回成功。同时将全部校验前移至修改之前,避免失败时在关卡中残留已生成的相机。 - 更新安装失败现在可见。
quitAndInstall()原为 void 返回,失败(如用户取消 UAC)被静默丢弃,IPC 仍返回成功;下载启动失败在两处调用点均未处理,角标会停留在无法响应的「下载中 0%」。未配置更新源时明确提示。 arrange中途失败不再返回成功,并给出已完成数量与可用于重试的start。- 两处查询回归:部分索引谓词导致索引失效(52 万行库中打开目录由 0.08 毫秒变为 5.2 秒);FTS 召回截断发生在筛选与分页之前,表现为按目录筛选返回 0 条、翻页超出后为空。
- 两类失败模式补充了说明:Python 脚本超时后继续发送命令探测无效,因为脚本占用编辑器主线程,后续命令会一并超时;「刚修改完却提示没有需要保存的内容」对应的原因是该次修改经由 Python 执行,未经过事务系统,包未标记为脏,保存被跳过。
adm-zip升级至 0.6.1,修复此前未处理的高危公告。
性能
在 52 万行 / 975 MB 的真实镜像库上,对主进程查询逐条 EXPLAIN 并计时,修复一批全表扫描与整表载入(修前 → 修后实测):远端导入写入阶段每文件 4.1 秒 → 0.06 毫秒;Spotlight 每次按键 5.7 秒 → 走 FTS;筛选下拉 8.3 秒 → 0.3 秒;依赖关系图 50 秒、堆 1.5 GB → 7 秒;清空回收站 7.1 秒 → 0.4 秒;媒体读取权限 4.7 秒 → 0.03 毫秒。此前项目从不执行 ANALYZE,现在打开库时补跑一次。
已知影响与未覆盖项:老库首次打开需新建 6 个索引并执行 ANALYZE,52 万行约 70 秒,期间界面无响应,仅出现一次,小库为数秒。未处理:FTS 未就绪时的多列 LIKE 兜底查询(全量同步后约 20 秒内恢复)、网盘备份使用的整表载入、全量同步过程中 52 万行同时驻留内存(1.5 GB)。
下载
仅 Windows —— uebox-1.0.2-setup.exe。已安装的版本会自己检查到这个更新。
支持 虚幻引擎 5.0 至 5.8。UnrealAgentLink 插件随包预编译,导入工程时自动安装。
安装包未做代码签名,首次运行会被 Windows SmartScreen 拦一下。
第一次接触?读 1.0.0 的发版说明,那里写了这个应用到底做什么。
许可
应用为 Apache-2.0,UnrealAgentLink 插件为 MIT。
本项目与 Epic Games 无隶属关系,也未获其背书。Unreal 与 Unreal Engine 是 Epic Games, Inc. 的商标。
🐛 问题反馈 · 🔒 安全漏洞请按 SECURITY.md 私下报告