@hy-bricks/canvas 0.6.1 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @hy-bricks/canvas
|
|
2
2
|
|
|
3
|
+
## [0.6.3] - 2026-06-24 · persistInstanceState 透传
|
|
4
|
+
|
|
5
|
+
非破坏 patch。@hy-bricks 4 包同步升 0.6.3。机制本体(运行态快照拍照/还原 + watcher diff)在 `@hy-bricks/core`,详见 [core CHANGELOG](../core/CHANGELOG.md) §0.6.3。canvas 本次只把新 opt-in 开关一路透到编译组件 + 补 e2e。
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **`persistInstanceState` prop 透传**(`boolean`,默认 `false`,opt-in):从渲染器一路透到编译组件(`@hy-bricks/core` 的 `RuntimeBox` → `hcPersistInstanceState`),打开后实例**真被拆掉**(滚出视口虚拟化 dispose/重建)时拍 `$data` 可序列化子集、重建还原,修"看板组件滚出视口再滚回 / 重渲染后用户运行时选值复位"。新增公开面:
|
|
9
|
+
- **`HyperCardCanvasDesigner` 新 prop `persistInstanceState`**;
|
|
10
|
+
- **`HyperCardPageRenderer` 新 prop `persistInstanceState`**;
|
|
11
|
+
- **`RuntimeLayer` 新 prop `persistInstanceState`**。
|
|
12
|
+
- spec:新增 `persistInstanceState-renderer-e2e.spec.ts`(渲染器→编译组件 dispose/重建端到端,5 例);canvas test → 1722。
|
|
13
|
+
|
|
14
|
+
### 与 keepHiddenMounted(0.6.2)的关系(互补)
|
|
15
|
+
- `keepHiddenMounted`(默认 `true`):hidden(`v-show` / `display:none`)的 root 实例不被 dispose,vm 不拆 —— 根本不丢状态,不需要快照。
|
|
16
|
+
- `persistInstanceState`(默认 `false`):实例**真被拆掉**(滚出视口虚拟化 dispose/重建)才拍照+还原。
|
|
17
|
+
- 一句话:hidden 走保活(vm 不拆);scroll-out 拆了才用快照。
|
|
18
|
+
|
|
19
|
+
### 已知限制
|
|
20
|
+
- 异步 `mounted` 重置不在保护范围(还原同步、跑在 `userMounted` 之后);`instanceId` 必须逻辑唯一、不可删后复用(快照按 `(canvasId, instanceId)` + `componentId` 守卫)。详见 [core CHANGELOG](../core/CHANGELOG.md) §0.6.3。
|
|
21
|
+
|
|
22
|
+
### 依赖
|
|
23
|
+
- `@hy-bricks/core@0.6.3`(fixed 组同步;运行态快照持久化机制本体在 core)。
|
|
24
|
+
|
|
25
|
+
> 状态:本条目对应改动已收口、全验证绿,但**尚未 publish npm**(pre-1.0 手动 bump,待 `pnpm release`)。
|
|
26
|
+
|
|
27
|
+
## [0.6.2] - 2026-06-23 · 隐藏实例保活(修隐藏→恢复丢状态)
|
|
28
|
+
|
|
29
|
+
非破坏 patch。@hy-bricks 4 包同步升 0.6.2。
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
- **隐藏(`hidden`)实例再恢复显示时不再丢组件内部状态**:root 实例 `hidden=true`(`v-show` → `display:none`)会被 RenderScheduler 的 IntersectionObserver 判为"离开视口",超 `disposeDelayMs`(默认 1500ms)就 dispose 卸 vm → 恢复时重挂全新组件、用户选值 / 查询条件 / 取数结果复位(常见症状:恢复后取数裸跑、缺参报错)。修:`hidden` 的 root 实例自动 `RenderScheduler.setHeld` 保活,豁免视口外 dispose,恢复无缝(同一个 vm)。容器子走 Teleport 不经 scheduler,本就不受影响。
|
|
33
|
+
- **Teleport outlet `isConnected` 守卫**:父实例卸载瞬间 outlet DOM 已脱离文档但 ref 残留,`resolveOutlet` 加 `isConnected` 判断 → detached 返 null,不往已移除节点投(消除父卸载瞬间子 Teleport 竞态)。
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
- **`RenderScheduler.setHeld(id, held)`**:标记实例保活,豁免视口外 dispose(供渲染器实现 hidden 保活)。
|
|
37
|
+
- **`HyperCardPageRenderer` 新 prop `keepHiddenMounted`**(`boolean`,默认 `true`):隐藏实例保活开关;传 `false` 退回老行为(隐藏可被 dispose,省内存但恢复丢状态)。
|
|
38
|
+
- spec:`createRenderScheduler.spec.ts` +4(setHeld);canvas test → 1717。
|
|
39
|
+
|
|
40
|
+
> 已知小尾(记 `docs/feedback/portal-ui/`,后续增强):保活后隐藏实例的数据绑定 / 订阅仍在跑(给不可见组件推更新);要"隐藏暂停取数"需配套"显示时 invalidate 补数",否则恢复显旧值。
|
|
41
|
+
|
|
3
42
|
## [0.6.1] - 2026-06-16 · free-split 编辑控件可见性
|
|
4
43
|
|
|
5
44
|
free-split 容器编辑控件(分隔条 + 叶 affordance)的显示时机修复 + 常驻开关。非破坏,@hy-bricks 4 包同步升 0.6.1。
|