VOFA-NEXT v0.3.0 Release Notes
ATTENTION: There is a bug in the data panel that prevents clicks from navigating properly; you need to open the relevant panel from the menu bar.
注意:数据面板有点击无法跳转的bug,需要从菜单栏打开相关面板
✨ New Features
Compiler Pipeline
- Three-stage pipeline: HIR → plane projection → lowering. Backend owns all compilation; frontend reads snapshots only.
- Compile error view: offending nodes get red box-shadow, edges turn red, with structured help popovers.
String-Domain Plane
- New string plane alongside numeric plane, carrying TextInput, Str operations (Mid/Delete/Replace), and Trigger text outputs.
- Protocol out port exposes raw bytes as
strport (legacychplaceholders preserved with gating). - Raw data view shows the text port; UI syncs.
Trigger Backend-Driven
- Edge state (
prev_trigger) tracked backend‑side, eliminating false rising edges in manual mode; polling replaced by single event. - Text output routed via string plane; frontend read‑only.
Widget Palette
- Virtualized with
@tanstack/react-virtualfor large sets. - Compact collapsible layout with quick‑jump bar for filtering and navigation.
- Dedicated sections for Trigger, TextInput, and Str widgets.
Waveform Improvements
- History lookback while running: zoom/pan doesn’t pause refresh; scrub back without losing live tail.
- Cursor snaps to nearest visible channel instead of always channel 0.
Unified Error Crate
- Strong‑typed domain errors (protocol/node/transport, etc.) replace
Box<dyn Error>; frontend gets actionable structured guidance.
Auto‑Update
- Static release manifests replace GitHub API calls, bypassing rate limits and ensuring deterministic channel behavior.
🛠 Backend Refactor (Rust Workspace)
- Split into 23 focused sub‑crates + 7 façades (
core,protocol,buffer,nodes,transport,automotive,dsp);src-tauribecomes thin shell. - Commands split into 7
cmd_*sub‑crates; app shell split intoapp_state,notify_events,subscription,pipeline_*,menu_shell,update_flow. - Backend is sole authority for protocol ports, biquad packing, frame packing,
ProtocolSourceinjection, and Trigger edge detection. - Node engine arm‑ified per
NodeKindvariant – adding a new kind doesn’t touch unrelated code. - Tests reorganized per port domain and kind; Str coverage added; clippy
denycleaned.
🐛 Fixes & Performance
- Tab snapshot resilience: surviving tabs re‑sync to backend after deletion/replacement – no phantom nodes.
- Preset auto‑channels: auto‑derived channels always resolve correctly.
- SlidingPill indicator: uses
ResizeObserverper tab, follows active tab correctly after re‑render and resize. - Raw data append: active state shown in UI.
- Manual‑mode Trigger:
prev_triggertracked properly, preventing spurious rising edges on threshold toggle. - Waveform zoom/pan: no longer auto‑pause refresh, eliminating touchpad stalls.
- Light theme: backgrounds follow color tokens, no hard‑coded hex.
- Clippy deny: Rust 1.97 strict lints fixed across all crates.
📦 Installers
- macOS:
.dmg(universal / arm64 / amd64) - Linux:
.deb/.AppImage/.rpm - Windows:
.msi/.exe(NSIS)
✨ 新特性
编译器重构
- 三段流水线:HIR → 平面投影 → 降级。后端全权编译,前端只读快照。
- 编译错误视图:出错节点红框、连线染红,带结构化帮助气泡。
字符串域平面
- 新增字符串平面,与数值平面并列,承载 TextInput、Str 操作(Mid/Delete/Replace)及触发器文本输出。
- 协议 out 端口暴露原始字节为
str端口(旧ch占位保留,门控切换)。 - 原始数据视图显示文本端口,UI 同步更新。
触发器后端化
- 边沿状态(
prev_trigger)由后端追踪,消除手动模式假上升沿;轮询改单次事件。 - 文本输出走字符串平面,前端只读。
控件面板
- 虚拟化渲染(
@tanstack/react-virtual),支持海量控件。 - 紧凑折叠布局 + 快速跳转条,按名称过滤并一键跳转分类。
- 触发器、TextInput、Str 各自独立分组。
波形增强
- 运行中历史回看:缩放/平移不暂停刷新,可边实时边回看。
- 光标吸附最近可见通道,不再固定通道 0。
统一错误 crate
- 强类型领域错误(protocol/node/transport 等)替代
Box<dyn Error>,前端获得结构化可操作指引。
自动更新
- 静态发布清单替代 GitHub API,规避速率限制,通道行为确定。
🛠 后端重构(Rust 工作区)
- 拆分为 23 个聚焦子 crate + 7 个 façade(core/protocol/buffer/nodes/transport/automotive/dsp),
src-tauri收为薄壳。 - 命令拆为 7 个
cmd_*子 crate,应用壳拆为app_state、notify_events、subscription、pipeline_*、menu_shell、update_flow。 - 后端作为唯一权威:协议端口、双二阶节打包、帧打包、ProtocolSource 注入、触发器边沿检测均走单一所有者。
- 节点引擎按
NodeKindvariant 分臂实现,新增 kind 无需改动无关代码。 - 测试按端口域和 kind 拆分,新增 Str 覆盖,clippy deny 全部清理。
🐛 修复与性能
- Tab 快照韧性:删除/替换 Tab 后,存活 Tab 自动与后端同步,杜绝幻影节点。
- 预设自动通道:自动派生通道每次正确解析。
- SlidingPill 指示器:使用
ResizeObserver跟踪每个 Tab 尺寸,重渲染后仍正确跟随。 - 原始数据追加:UI 显式显示激活状态。
- 手动模式触发器:正确追踪
prev_trigger,防止阈值切换导致虚假上升沿。 - 波形缩放/平移:不再自动暂停刷新,消除触摸板卡顿。
- 浅色主题:背景改用颜色令牌,去除硬编码十六进制。
- Clippy deny:Rust 1.97 严格 lint 一次性修复。
📦 安装包
- macOS:
.dmg(universal / arm64 / amd64) - Linux:
.deb/.AppImage/.rpm - Windows:
.msi/.exe(NSIS)