# CHANGELOG ## v1.0.17 (2026-06-05) ### 重大变更 (Philosophical Restoration) - **核心逻辑回位**: 物理还原 v2.3 原始架构,彻底消灭所有 ESM 时期的“Magic”补丁逻辑(如 `_stManaged` 等标志位)。 - **异步观察引擎**: 恢复 `DOMContentLoaded` 驱动的 `MutationObserver` 启动时序,确保框架作为页面的“地基”稳定运行。 - **危险 API 重命名**: 将 `RefreshState` 重命名为 `__RefreshState_Internal_Force_Full_Scan_Only_In_Extreme_Performance_Scenarios`。此 API 仅供极端性能调优使用,严禁在常规业务中调用,旨在物理隔绝 AI 幻觉和不合理使用。 ### 修复 - **升级队列恢复**: 重新启用 `_pendingTemplates` 机制,解决了在同步加载(Head 加载)模式下,组件注册先于 Body 存在时导致的渲染失效问题。 - **Hash setter 同步**: 修复了 `Hash` 对象在赋值后内部状态更新延迟的问题,确保响应式即时可见。 ### 增强 (批准合入) - **样式智能合并**: 优化 `_mergeNode` 逻辑,支持组件内外 `style` 属性合并。 - **Keyed Each**: 仅在克隆环节增加 `key` 支持,不破坏原有递归扫描哲学。 ## v1.0.16 (2026-06-05) ### 修复 - **挂载节点绑定失效**: 修复了在离线/内存中提早调用 `_scanTree` 时子节点被错打 `_stScanned` 标记,导致节点被真正挂载(`isConnected`)时因 `_stScanned` 为真而被 MutationObserver 跳过,从而使其上的表达式绑定未被计算的 Bug。现在只有当节点真正 connected 时才记录 `_stScanned = true`,且在模板包装节点时主动删除原有的 `_stScanned` 标记。 ## v1.0.15 (2026-06-05) ### 修复 - Bump package version and prep tags. ## v1.0.14 (2026-06-05) ### 修复 - **微任务扫描死循环**: 引入 `_stScanned` 标记对新挂载节点进行幂等拦截,防止在复杂嵌套(如 `$if` / `$each`)及大数据量场景下,新老节点重组重排循环触发 MutationObserver 造成浏览器卡死的微任务无限扫描死循环。 - **状态更新防御**: 在 `_updateBinding` 逻辑中加入同值校验,避免当目标值与原值相等时重复赋值,杜绝不必要的 Observer 触发与重绘。 ## v1.0.13 (2026-05-26) ### 新特性 - **双重计算指令 ($$)**: 引入了 `$$` 前缀指令支持(如 `$$if`, `$$each`, `$$text` 等)。该指令会先评估表达式获取字符串结果,随后将该字符串作为代码进行二次评估。这为高度动态的界面逻辑(如由后端下发的动态指令字符串)提供了原生支持。 ### 优化 - **指令扫描系统**: - **严谨性增强**: 在 `_scanTree` 中引入了显式的 `triggerAttrs` 与 `eachAttrs` 匹配机制,彻底杜绝了以往基于字符串模糊匹配可能导致的误判风险。 - **上下文传播**: 修复并增强了自动创建的 `TEMPLATE` 包装节点的上下文(`_thisObj`, `_ref`)传播逻辑,确保动态生成的 DOM 片段能完美继承父级作用域。 - **端口修复**: 修复了自动化测试脚本中的端口配置冲突,确保 CI/CD 流程的稳定性。 ## v1.0.12 (2026-05-25) ### 修复 - **上下文绑定**: 修复了在对非 `template` 节点使用 `$if` 或 `$each` 指令时,框架自动创建 `