Skip to content

Releases: Feihei/PReferZ

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 11:25

v0.4.0

单二进制多模式(CLI 并入)+ MCP/CLI 协议栈:--headless JSONL、--mcp stdio
双栈协议、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 并提取 headless Session(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

Choose a tag to compare

@github-actions github-actions released this 09 Oct 10:06

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

Choose a tag to compare

@github-actions github-actions released this 28 Sep 08:32

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 一步);同向已有邻居时自动上下分叉避让重叠(移植 Excalidraw placeCluster)。按 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

preferz-0.1.0-alpha Pre-release
Pre-release

Choose a tag to compare

@Feihei Feihei released this 22 Jul 09:29

init release: basic functions