更新日志
Ydesign 由多个独立发布的包组成,每个包都按自己的节奏迭代。本页汇总它们各自的版本历史。
📦 版本号遵循 语义化版本(SemVer)。从 v1.0 开始,我们保证公共 API 的破坏性变更都会通过主版本号体现。
| 包 | npm | 当前版本 | 状态 |
|---|---|---|---|
@ydesign/core | @ydesign/core | 0.3.0 | 公开预览 |
@ydesign/react-editor | @ydesign/react-editor | 0.3.1 | 公开预览 |
@ydesign/vue-editor | —— | —— | 规划中 |
目前所有公开包仍处于 0.x 阶段,部分接口可能随反馈调整。v1.0 稳定版将与博客 《Ydesign SDK v1.0 正式发布》 一起发布。
@ydesign/core
画布渲染核心,封装 Fabric.js v6,面向开发者的零 UI 依赖库。
0.3.0 (2026-06-22)
包含一处 Breaking Change:移除
nanoid重导出。在 0.x 阶段含 breaking 时按惯例升 minor,提前给依赖此包的项目(如@ydesign/react-editor)发出明确升级信号。请同步升级到@ydesign/react-editor@0.3.1或以上。
Added
- 新增
generateObjectId()(utils/id.ts),封装画布对象 id 生成规则;上层业务可直接import { generateObjectId } from '@ydesign/core',不再依赖具体实现库
Changed
GuidelinesHandler:智能参考线重构为两阶段触发——靠近时先显示参考线(视觉提示),继续靠近才吸附目标。可通过setConfig({ showThreshold, snapThreshold })自定义阈值,避免"显示即吸附"的拖拽手感GuidelinesHandler:每个轴向只吸附"最近"的候选,修复多目标场景下吸附位置被互相覆盖造成的抖动- 依赖:
fabric升级^6.7.1→^6.9.1,吸收上游toDataURL写错contextTop、文本宽度undefined + char、loadFromJSON多出objects属性等多个修复,并接收Text.tsReDoS(CWE-1333)安全补丁
Refactored
- 重组
src/common/:interfaces.ts+constants.ts合并为统一 barrel 出口,移除已废弃的src/interface/与src/constants/目录
Removed
- Breaking:移除
index.ts对nanoid的重导出。请将import { nanoid } from '@ydesign/core'改为import { generateObjectId } from '@ydesign/core'
0.2.2 (2026-06)
Changed
RulerHandler:拖动参考线进入标尺区域时,鼠标光标自动切换为not-allowed禁止图标,清晰提示"松手即删除";松手后自动恢复原光标
0.2.1 (2026-05)
Added
RulerHandler:注册为editor.rulerHandler,提供标尺 + 参考线能力- 标尺刻度自适应缩放,原点对齐 workarea 左上角
- 选中对象时标尺顶部 / 左侧出现蓝色高亮区段,两端显示精确坐标
- 拖出 / 拖动 / 拖回标尺即删除的完整参考线交互
- 参考线可延伸到 workarea 之外(绕过
canvas.clipPath裁剪) - 命中检测覆写
containsPoint,按"鼠标到线 6px 内"判定,比 fabric 默认更稳 - 自动置顶:图片 / 文字加入画布后参考线仍可被选中
- 对持久化系统透明:不进
store.objects、不进历史栈、excludeFromExport
Changed
ObjectsHandler:updateContextObjects自动过滤isGuideline对象,避免参考线触发自动保存EventHandler:object:modified事件中跳过参考线,不写入 history
0.2.0 (2026-04)
Added
InpaintHandler:消除笔新增橡皮擦(eraser)模式,可在画布上"擦掉"已经涂抹的 mask 区域InpaintHandler:新增撤销 / 重做栈,每一笔(pointerdown → pointerup)作为一次快照InpaintHandler:新增inpaint:status事件,外部 UI 可订阅并驱动 undo/redo 按钮可用态InpaintHandler:新增replaceTargetImageSrc(url),AI 处理结果可直接替换目标图片,并自动清空 mask、重置历史栈
Fixed
InpaintHandler圈选模式(lasso)拖动过程中不再实时填充蓝色覆盖层,改为只显示虚线轨迹,鼠标松开后才闭合并填充 mask —— 与 Photoshop / Figma 的套索一致
0.1.9 (2026-03)
Added
InpaintHandler:AI 消除笔支持涂抹 / 框选 / 圈选三种模式,可导出黑白 mask + 底图用于后端 AI 处理ImageStrokeHandler:图片描边支持虚线、外描边、内描边HotkeyHandler:快捷键绑定支持Ctrl/Command自动适配
Changed
- 性能:画布 resize 时的重绘批处理,大幅减少抖动
0.1.x (早期版本)
Added
- 内置 Handler:
WorkareaHandler/ZoomHandler/ObjectsHandler/EventHandler/HotkeyHandler/LockHandler/LayerHandler/AlignmentHandler/RendererHandler/HistoryHandler/SceneHandler/ImageFiltersHandler/ImageCropHandler/GuidelinesHandler/ResizeHandler/ImageStrokeHandler/InpaintHandler Editor通过EventManager作为事件总线CustomCanvas封装 FabricCanvas的初始化、销毁、尺寸同步- 工具函数:
parser、generateObjectId导出
@ydesign/react-editor
官方 React UI 层,基于 React 18 + Ant Design v6 + MobX + mobx-state-tree。
0.3.1 (2026-06-22)
Changed
- 依赖:
@ydesign/core升级到^0.3.0,吸收智能参考线两阶段触发、fabric ^6.9.1等改进 idphoto-panel.tsx:将内部nanoid()调用改为generateObjectId(),对齐@ydesign/core@0.3.0的导出变化(参考 核心 CHANGELOG)
Notes
- 公开 API 无变化;从
0.3.0升级仅需pnpm up @ydesign/react-editor - 升级后参考线行为由"达到阈值即吸附"改为"先提示再吸附"——可在业务层通过
store.editor?.guidelinesHandler.setConfig({ showThreshold, snapThreshold })自定义阈值
0.3.0 (2026-06-09)
Changed
- 构建工具迁移:
tsc + rollup→ Vite(多入口 ESM 产物 + UMD bundle 单文件) - 产物结构调整:
@ydesign/react-editor/bundle提供 CDN 适用的 UMD 单文件,window.YDesignEditor暴露完整能力 - 依赖收敛:将原 dependencies 中可内联的
react-sortablejs等转入 bundle 内联,减小 ESM 产物体积
Added
- CDN 演示示例(无打包器场景)
Refactored
- 重组 package.json
exports字段,更明确的多子路径导入:/toolbar、/side-panel、/topbar、/canvas/*、/model/*、/hooks/*、/utils/*、/config、/project
0.2.9 (2026-05)
Added
<RulerButton />:画布右下角的标尺与参考线开关,包含 antd Dropdown 菜单("显示标尺 / 清除参考线"),开关状态记忆在localStorage- 翻译键:新增
toolbar.ruler/toolbar.rulerShow/toolbar.rulerClear - demo 应用同步集成
<RulerButton />
0.2.8 (2026-04)
Added
- 消除笔(Inpaint)面板支持橡皮擦模式,可在画布上擦除已涂抹的 mask 区域
- 消除笔面板新增撤销 / 重做按钮,按状态自动启用 / 禁用
- 集成
@ydesign/core@0.2.0的消除笔扩展能力(橡皮擦、撤销 / 重做事件)
Changed
- 圈选模式下拖动时只显示虚线轨迹,松开鼠标后才自动闭合填充,体验对齐 Photoshop / Figma
- 进入消除笔模式时自动暂停项目自动保存(避免 mask 被误存);退出时恢复
- 侧边面板在移动端的布局与展开逻辑
Fixed
- 图片手动调整位置后
objects快照未同步的问题
0.2.7 (2026-03)
Added
- 模板加载到画布时推入历史栈,支持"加载后撤销"
0.2.6
Changed
- 内部稳定性修复与小幅优化
0.2.5
Added
createStore新增debug选项,打开可看到详细的事件日志
0.2.4
Fixed
- 某些场景下
store.objects被触发两次更新
0.2.3
Fixed
- 阴影效果应用逻辑修正
0.2.2
Added
- 画布背景支持动态切换(
store.backgroundColor可设为纯色或渐变对象)
0.2.1
Changed
- "框架"元素现在可选中
0.2.0
Changed
- 重命名:
design→scene(内部模型层) SceneHandler提供模板导入 / 导出的统一入口
0.1.x (早期版本)
Added
- 侧边面板:模板、文字、图片、形状、上传、背景、图层、尺寸、证件照、AI 消除笔,共 10 类
- 工具栏:根据选中元素类型动态切换(
textbox/image/path/ 多选 / 裁剪态 等) - 顶部栏:文件创建、画布尺寸调节、主题切换
<Workspace />:承载 Fabric canvas,提供缩放控件、快捷键、右键菜单- MST Store:统一管理
width/height/scale/selectedElementsIds/fonts/editor等状态 - 多语言:
setTranslations/getTranslations/translate/t - 后端对接:
setBaseURL/setAPI可替换内置接口实现 - 自定义上传:
setUploadFunc - 字体管理:
addGlobalFont/removeGlobalFont/replaceGlobalFonts/setGoogleFontsVariants
@ydesign/vue-editor
基于 Vue 3 + Pinia 的官方 UI 层。
未发布(规划中)
- 与
@ydesign/react-editorAPI 对齐 - 共享
@ydesign/core,JSON 数据格式完全互通 - 详细路线图见 Vue 集成
v1.0 发布计划
v1.0 会同时发布以下包:
@ydesign/core@1.0.0@ydesign/react-editor@1.0.0@ydesign/vue-editor@1.0.0-beta.1
进入 v1.0 后:
- ✅ 公共 API 进入稳定期,破坏性变更会走主版本号
- ✅
@ydesign/core与@ydesign/react-editor的 JSON schema 进入锁定,未来所有版本向后兼容 - ✅ 发布公告、升级指南会同步发布在 博客 中
有反馈或想法?欢迎到 GitHub Issues 一起讨论。