v1.3.3
[v1.3.3] - 2026-04-24
本版本聚焦批量操作、框选稳定性、废纸篓管理与拖拽性能,补齐多选场景下的高频管理能力。
✨ 新特性 (Features)
-
框选碰撞检测更准确
框选逻辑从 DOM 读取重构为基于布局数据的 AABB 碰撞检测,提升大画布与视口外便签的选择稳定性。
- 支持选中视口外但与框选区域相交的便签。
- 避免
getBoundingClientRect()造成的布局抖动。 - Shift+框选会追加到现有选区,而不是覆盖已有选择。
-
批量管理操作增强
多选便签后可以批量折叠 / 展开、置顶 / 置底,减少整理大量便签时的重复操作。
- 批量置顶会保留选中便签组内部的相对层级顺序。
- 批量置底会整体移动到当前画布层级下方。
- 折叠 / 展开会根据当前选区状态自动选择更符合预期的方向。
-
选中便签支持精准导出
右键菜单支持将当前便签或选中便签导出为 JSON,复用现有导出链路并保持与全量导入兼容。
- 单选时可直接导出当前便签。
- 多选时导出完整选区。
- 导出数据可通过现有导入能力恢复。
-
废纸篓支持批量操作
废纸篓视图新增多选能力,支持批量还原和批量永久删除。
- 支持 Ctrl / Shift 点击进行多选。
- 批量还原会尽量回到原看板;原看板缺失时回退到当前看板。
- 批量永久删除带二次确认,降低误删风险。
🐛 问题修复 (Bug Fixes)
- 修复框选追加逻辑
修复 Shift+框选启动时旧选区被覆盖的问题,现在会在框选结束时正确合并新旧选区。
⚡ 性能优化 (Performance)
-
组拖拽性能显著提升
组拖拽期间使用元素注册表缓存 DOM 引用,消除每帧
querySelector查询,降低多便签拖拽时的主线程开销。- 停止拖拽时改为单次 Store 批量提交。
- 50 便签组拖拽场景下帧率约提升 12 倍。
- 拖拽过程继续避免 React 高频重渲染。
-
拖拽结束后延迟持久化
finalizeLayoutChange改为 2 秒防抖写盘,与其他状态更新保持一致,避免停止拖拽瞬间阻塞界面。
🔧 内部改进 (Internal)
- 布局常量统一
框选相关代码统一使用
LAYOUT.NOTE_WIDTH与LAYOUT.NOTE_MIN_HEIGHT,减少硬编码布局值带来的维护风险。