Repository navigation
Releases: Feihei/PReferZ
Release list
v0.4.0
v0.4.0
单二进制多模式(CLI 并入)+ MCP/CLI 协议栈:
--headlessJSONL、--mcpstdio
双栈协议、GUI 代理桥接(OpenCADStudio 模式),MCP 工具扩到 18 个;图表手绘风格。
下载:Windows x64 / Linux x64 / Linux aarch64 / macOS universal(各平台 zip 或 tar.gz),
随附 SHA256SUMS。
亮点
- 单二进制多模式(Blender 式):GUI 与 CLI 合并为同一个
preferz.exe——
无参 / 位置参数.prz打开 GUI,--mcp/--exec/--headless进无头模式;
独立的 preferz-cli 二进制不再存在。 - headless JSONL 接口:
preferz --headless走 stdin/stdout,每行一个 JSON 请求,
脚本化批量操作画布(创建图形 / 文本 / mermaid / 图表 / 排列 / 撤销重做 / 存取)。 - MCP stdio 服务器:
preferz --mcp起 JSON-RPC 2.0 双栈协议——同时支持
2026-07-28 无状态规范(server/discover+_meta协议版本校验)与旧版
initialize握手;18 个工具与 JSONL 命令一一对应,共享同一 undo 通道。 - GUI 代理桥(OpenCADStudio 模式):GUI 启动即内嵌本地 TCP 监听,
preferz --mcp探测到活实例则纯转发——工具实时操作已打开窗口的画布,
边调边渲;无实例降级 headless 单文档模式。 - MCP 工具 15 → 18:
add_image:从磁盘导入图片,可指定位置与尺寸;arrange:布局整理(横排 / 网格等 GUI 同款模式);screenshot:截取窗口视口回传 PNG(base64 image content),LLM 画完即可
自查成果,形成闭环;可选max_width等比降采样。
- 图表手绘风格:图表接入手绘四档体系——Architect 档抖动轴线、柱体 hachure
斜线填充、851 手写体标签;暗色主题下过暗系列色自动提亮,不再有黑柱黑线。
改进
- MCP 工具调用注入主题默认色:未显式给色时跟随 GUI 当前主题(暗色主题画黑、
亮色主题画白的回归修复),显式给色不覆盖。 - 自由文字落点默认色跟随主题(不再写死白色)。
- 工具栏按钮顺序与快捷键角标对齐:角标自上而下 1→2→…→8→F 连贯递增。
- README 精简:快捷键指引帮助画布,补 CLI/MCP 说明与致谢。
修复
- Fix 窗口最小化时 MCP 请求挂起——超时 3s 兜底回结构化错误(连接线程不挂死)。
内部
- core 下沉
UndoStack并提取 headlessSession(Scene+ViewportState+UndoStack,
GUI 与 CLI 模式共用);协议核心(JSONL/MCP)下沉preferz-core/src/rpc/,
egui-free 可无头测试。 - 全量测试 411 项,
cargo fmt --check/clippy -D warnings零警告。
破坏性变更
- 独立
preferz-cli二进制移除(并入preferz单二进制):脚本改用
preferz --headless/preferz --mcp/preferz --exec。 - 新增 MCP 工具使工具总数从 15 变为 18(枚举客户端按名发现不受影响)。
v0.3.0
v0.3.0
对齐 Excalidraw 的第二个打磨批次:elbow 直角连线自动避障、mermaid 图更整洁、
手绘风填充补全,新增元素超链接与内置帮助文档。
下载:Windows x64 / Linux x64 / Linux aarch64 / macOS universal(各平台 zip 或 tar.gz),
随附 SHA256SUMS。
亮点
- elbow 连线自动避障:两端绑定图形的直角连线自动绕开遮挡元素,拖动节点实时重路由
(移植 Excalidraw elbowArrow 算法:非均匀网格 + 转弯罚,最少转弯优先)。 - elbow 中间段固定:选中连线后每个中间段带拖拽手柄——拖动即固定该段,其余段自动
绕行重算;再拖已固定段改位。 - elbow 取向稳定:连线走向改由端点锚定的图形边缘法线决定,拖动绑定图形跨过对角线
不再 90° 跳变;无绑定端有 1.3× 滞回稳定带。 - mermaid 图布局质量:同层节点重心排序减少交叉;连线默认直角 elbow,节点拖动自动
重路由。 - 手绘风填充补全:填充样式新增之字线与圆点两档(rough.js 自移植,确定性
随机);椭圆收笔「画过起点再收」,更接近 rough.js 观感。 - 元素超链接:给任意元素挂 web 链接或本地
.prz文件——悬停显示右上角 ↗ 徽标点击
打开(本地文件开新窗口);Ctrl+K编辑,props 面板与右键菜单均可增删。 - 内置帮助文档:左下 HUD
?按钮打开独立帮助实例(help.prz 内嵌随包分发,沙箱
语义:改动不落盘),内容随版本同步更新。 - 全选套件:
Ctrl+A全选、Ctrl+Shift+A取消全选(绑定文字随容器联动,不单独入选)。
改进
- 属性面板:跨类型多选时显示属性级交集(颜色 / 线宽)批量编辑,一条 undo;
面板宽度钳制、高度撑满窗口、内容超高时竖向滚动。 - 属性面板数字项支持按住左右拖连续调值(Blender 式),拖拽速度按字段量程配速。
- 缩放 HUD 移至左下角(不再被撑满的侧栏遮挡),与语言 / 主题 / 默认风格开关合并为单块弹层。
- 欢迎页与内置帮助文档文案精简。
修复
- Fix 文字工具单击创建的编辑框被点击释放沿误关,现在单击即可进入编辑(
e06e830) - Fix 右侧栏高度从未真正撑满窗口(anchored Area 自引用冻结),并修宽度吃满的回归(
9e2e083/8f24949) - Fix 点选已吸附连线时高亮框残留、端点绑定被静默清空导致路径翻转跳变(
0b7dd0f) - Fix 链接输入框打字被逐帧清空、无法编辑(
052f608) - Fix zigzag 填充长线上两笔重叠看不出锯齿,重写为连续锯齿折线;dots 行距减半变密(
b243a61)
内部
- core 新增
routing.rs(headless 纯函数):A* 网格路由与固定段缝合独立于 egui 可测。 .prz向后兼容:link/elbow_axis/fixed_segments等新字段serde(default)零迁移;
items 表link列自动ALTER TABLE就地迁移,USER_VERSION不变。
破坏性变更
- 无。
v0.2.0
v0.2.0
两个月、214 个 commit 的一次大版本:绘图能力对齐 Excalidraw(手绘风逐行对齐 rough.js 4.6.6、
elbow 直角连线、多边形节点编辑、徒手墨迹),新增流程图 / mermaid / 图表 / 自动保存 / 选区导出,
底层完成 egui 0.29 → 0.36 与 core 架构整固。首个正式版(此前只有 alpha 预发布)。
下载:Windows x64 / Linux x64 / Linux aarch64 / macOS universal(各平台 zip 或 tar.gz),随附 SHA256SUMS。
绘图
- 手绘风对齐 rough.js 4.6.6:抖动幅度改用 rough.js 的
maxRandomnessOffset = 2画布px ×roughnessGain公式(小图衰减、短线衰减一并继承)、bowing 每次随机符号(消除"吹气感")、 Architect/Artist 端点精确不抖、hachure 填充四件套(49° 仰角、半宽线、完整双线抖动、随机相位)、 椭圆自适应采样 + 随机起始相位、solid 填充顶点跟随抖动、箭头两翼改抖。 - 四档 sloppiness(规整 / 建筑 / 艺术家 / 漫画家)替代原来的开关,档位差异肉眼可辨。
- 徒手绘制(freedraw):新增「自由绘制」工具(
P/Num7),按运笔速度给出「收笔尖、运笔粗」 的锥形墨迹(egui 无压感输入,以点间距作速度代理);落笔时 Catmull-Rom 重采样平滑;选中可改 颜色与粗细。 - 多边形节点编辑:
Alt+单击删顶点、Alt+拖端点延伸出新顶点、把端点拖回起点 8px 内 自动闭合成多边形(并可再拖开自动恢复开放);闭合处首尾重合点视作一个点,圆滑模式接缝 无回钩。 - 线性对象:直线与箭头统一为一条折线模型;端点吸附图形边缘并以锚点绑定(端点钉在目标表面同一处,不随矩形移动而沿边滑动);整条线贴合图形时自动建绑定,
Ctrl+Z一步撤回。 - elbow 直角折线(线性对象第三种边角模式,流程图连线默认):
- 中间正交段(bar)可拖平移走线,拖近端点自动钳住不出回钩;
- 多顶点 elbow 走顶点锚定 bar 纯函数推导——拖顶点即平移整根横/竖段,拖到与邻居对齐
折线自动变直(对齐免费获得,无需 Excalidraw 那套共线检测簿记); - 双击连线任意处插入顶点(走线不变),插入后顶点可拖、
Alt+单击可删; - 复用矩形圆角档位给直角拐角倒角,渲染 / 命中同源。
- 形状与样式:调色板对齐 Excalidraw(描边与填充同 5 色)、填充不透明度滑块(默认 50%)、 矩形圆角、闭合多边形工具(点击加点、双击或回车闭合)。
- 编组 / 解组:
Ctrl+G/Ctrl+Shift+G,点击组内任一成员即选整组、整体移动/复制/对齐分布。 - 对齐与分布:6 向对齐 + 4 种分布(等距 / 等心 × 横向 / 纵向),在右侧属性栏与右键菜单。
文字
- 新增文字工具(工具栏「T」/
Num8):单击画布即在落点起自由文本,起完自动回到选择工具。
双击职责归位给元素编辑——双击图片仍是适配视图、双击封闭形状 / 文本仍编辑其内容、双击
elbow 线插入顶点,不再冒出文本便签。 - 文字绑定形状:封闭形状内文字支持水平/垂直对齐、字号、字体族;手写体为内嵌的 851 远星夜行
(字体文件 deflate 压缩随包分发,运行时解压)。 - 文字默认无背景色,背景矩形跟随实际排版结果。
流程图 / 图表 / mermaid
- 流程图创建与导航:单选矩形/椭圆/菱形按
Ctrl+方向立即克隆出同类型同大小同配色的新节点并连一条两端绑定的箭头(连按接链,一条 undo 一步);同向已有邻居时自动上下分叉避让重叠(移植 ExcalidrawplaceCluster)。按Alt+方向沿连线跳到该方向的邻居节点。 - mermaid 代码转流程图:右键「Mermaid 图表…」贴入
flowchart TD/graph LR文本即可生成分层布局的流程图。支持节点外形[]/()/((/{/([/[[/[(/{{/>/ 引号标签、边标签-->|是|与-- 是 -->、箭头族---/-.->/==>/<-->、一行多分支a --> b & c;解析错误报出行号且输入保留。 - 两列数据粘贴成图表:在 Excel / 表格软件里框选「标签 + 数值」两列复制,画布
Ctrl+V→ 选柱状或折线,生成在视口中心(一条 undo)。矢量渲染,缩放不糊。 - 自动保存:打开的
.prz静置 30 秒无操作即在同目录写.prz.autosave(不覆盖原文件); 重新打开时若检测到更新的 autosave 会询问恢复或忽略。间隔可在设置面板调整。
画框与演示
- 画框支持编号(插入式顺移重编号)、框选连带成员、常用比例预设(16:9 / 16:10 / 4:3 / 3:2 / 1:1 + A4 竖/横,中心锚定套用)。
F5进入演示模式:全屏、视口适配到画框、方向键翻页。
导入 / 导出
- 导出选区对话框(
Ctrl+Shift+E):实时预览、透明背景开关、PNG / SVG / 复制到剪贴板, 分辨率 @2x。矢量元素(形状、手绘风曲线、箭头、图表)首次真正进导出——此前逐像素采样导出 只处理位图。 - 图片导入拖放 / 菜单 /
Ctrl+V;裁剪框跟随旋转、裁剪遮罩不再闪黑;水平/垂直翻转、灰度、 取色器、不透明度;布局整理(MaxRects 装箱)。
界面
- 明暗两套主题(Light / Dark / Auto),左下悬浮 HUD 一键切换,Auto 按当前生效外观显示。
- 工具栏与属性栏改为悬浮 bar(
T/N显隐,带滑入滑出动画);底部状态栏移除。 - 右侧调色板对齐 Excalidraw:内联色块 + Colors / Shades / Hex 三层弹层,文字与填充可「跟随形状」。
- 属性面板的数值改分档步进器,新增 z 序上移 / 下移一层。
- 框选采用 CAD 语义:左→右为窗口选择、右→左为交叉选择。
- 缩放套件:
Shift+1显示全部、Shift+2缩放到选中、Shift+3回 100%;右下角缩放 HUD 可直接输入数值。 - 缩放范围 10%–1000%;滚轮缩放手感按 glow 后端重新对齐。
- 拖拽修饰键:
Ctrl+拖动复制并移动副本、Shift+拖动水平/垂直约束、Ctrl+D原位复制。 Ctrl+C/Ctrl+X/Ctrl+V复制 / 剪切 / 粘贴;Ctrl+Z/Ctrl+Y撤销重做。- 中 / English 双语,toast 提示与后台进度条全部走 i18n(此前切英文仍会弹中文)。
- 默认风格总开关:新建元素默认手绘(草绘)或规整(规整),左下 HUD 与设置面板均可切换。
内部
- egui / eframe 0.29 → 0.36,backend 由 wgpu 切换为 glow(显式关闭默认 features 绕开 wgpu),获得上游字体渲染与 tessellation 改进。
- rusqlite 0.31 → 0.40(捆绑 SQLite 3.45 → 3.53.2)。
- 架构整固:
ViewportState等纯领域决策下沉到preferz-core,egui 坐标边界收口到单一ViewportEgui桥接层;preferz_app.rs(9230 行)拆为 12 个子模块。全程零行为改动。 - 移除
.bee兼容层,只保留.prz(SQLite + 内嵌附件);移除零引用依赖。 - CI 增加
cargo fmt/clippy -D warnings门禁;发布产物覆盖 Windows x64、Linux x64、Linux aarch64、macOS universal(lipo 合并)并附 SHA256SUMS。
破坏性变更
- 不再支持
.bee格式,只读写.prz。与 BeeRef 的.bee不兼容(列结构与主键均不同,需用本应用重新导出)。 - 旧
.prz存档向后兼容:新字段一律serde(default),items 表加列走ALTER TABLE就地迁移。
本版全部条目已过一轮人工 cargo run 观感验收(含 egui 0.36 升级后的 GUI 回归与 rusqlite 0.40的真实 .prz 往返)。若发现观感问题,欢迎开 issue 附截图。
preferz-0.1.0-alpha
init release: basic functions