- TopBar: 左工具组(选择/文字/矩形/图片,切换走命令表,键位 tooltip)、 中画布尺寸(预设/比例锁/自定义宽高,逻辑从 CanvasPanel 搬来)、 右撤销重做(禁用态随 canUndo/canRedo)+ 导出入口(滚到右栏导出区) - BottomDock: 悬浮缩放胶囊,±/百分比菜单(50/100/200、适应、缩放到选中) 与适应画布按钮;有命令的一律走命令表,任意数值档走 zoomAt 锚点缩放 - 图标全部内联 SVG,不引依赖
布局改成 顶部工具栏 / 左图层 / 中画布 / 右属性 / 底部悬浮胶囊。 新内核: - 图层模型:fabric 对象是唯一真源,LayerInfo 是只读投影; id/名字/锁定挂在 customProperties 上,随 toJSON 持久化 - 视口:zoom/pan 走 viewportTransform,只影响显示; 导出改为按视口裁剪(artboardExportOptions),旧的「multiplier 恒为 1」 在画布铺满工作区之后不再成立 - 历史:快照式撤销重做,30 步上限,带重入保护 - 命令表:快捷键 / 右键菜单 / 工具栏三个入口共用一份注册表 键位取自 Penpot 快捷键表 - 画板用 backgroundImage 画(跟随视口且不进 getObjects) 两个 fabric 陷阱已在注释里记下: - Rect 默认原点是中心,left:0/top:0 不写 originX/originY 会画错位置 - canvas.clipPath 不吃 viewportTransform,不能用来裁画板