跳到主要内容

更新日志

Ydesign 由多个独立发布的包组成,每个包都按自己的节奏迭代。本页汇总它们各自的版本历史。

📦 版本号遵循 语义化版本(SemVer)。从 v1.0 开始,我们保证公共 API 的破坏性变更都会通过主版本号体现。

npm当前版本状态
@ydesign/core@ydesign/core0.3.0公开预览
@ydesign/react-editor@ydesign/react-editor0.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 + charloadFromJSON 多出 objects 属性等多个修复,并接收 Text.ts ReDoS(CWE-1333)安全补丁

Refactored

  • 重组 src/common/interfaces.ts + constants.ts 合并为统一 barrel 出口,移除已废弃的 src/interface/src/constants/ 目录

Removed

  • Breaking:移除 index.tsnanoid 的重导出。请将 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

  • ObjectsHandlerupdateContextObjects 自动过滤 isGuideline 对象,避免参考线触发自动保存
  • EventHandlerobject: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 封装 Fabric Canvas 的初始化、销毁、尺寸同步
  • 工具函数:parsergenerateObjectId 导出

@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 + rollupVite(多入口 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

  • 重命名designscene(内部模型层)
  • 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-editor API 对齐
  • 共享 @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 一起讨论。