# CHANGELOG ## v1.0.22 (2026-07-04) ### 核心增强与样式合并优化 - **双向样式智能合并与排序**: - 重构了组件合并时的类名/样式排列机制。现在应用层(外部宿主)写的 `class/style` 将始终按高优先级排在组件内部样式的后侧(右侧),结构严格符合 `[内部静态, 内部动态, 外部动态, 外部静态]`。 - 引入了**动态模板字符串合并(Template String Merging)**算法。当组件内外同时存在 `$class`/`$style` 或 `st-class`/`st-style` 绑定时,不采用覆写替换,而是将其物理合并为单一大模板字符串,确保各动态表达式能在正确的上下文(通过 parent 链)中独立安全求值。 - 在 `_updateBinding` 渲染分支中加入了对 class 和 style 的**惰性捕获备份(Lazy Cache)**机制,只在首次更新时从 DOM 读取备份静态基准值,大幅减少不必要的 DOM 属性重置。 ### 修复 - **双重解析指令修复**: - 修复了自 v1.0.19 大重构后,由于硬编码属性匹配列表导致双重解析指令(`$$if` / `$$each` 等)全系失效的 Bug。已恢复对非 `TEMPLATE` 节点的自动包裹提升以及对 `TEMPLATE` 节点上双重指令的正常提取。 - **自动化测试缺陷修正**: - 修正了在测试中因重写 `document.body.innerHTML` 导致 `body` 内已被挂载的 `template` 元素被误抹去的严重缺陷。 - 修正了 `testPriority` 全局 `window.state` 缺失导致的空值求值缺陷,补齐了由于 `MutationObserver` 异步微任务渲染时序所需的 `await` 等待。 - 修正了 `testMerging` 里非法 CSS 属性赋予 JS 动态绑定 `$style` 导致的语法解析错误,并补全了对同名动态绑定合并与优先级的断言。 ## v1.0.17 (2026-06-05) ### 重大变更 (Philosophical Restoration) - **核心逻辑回位**: 物理还原 v2.3 原始架构,彻底消灭所有 ESM 时期的“Magic”补丁逻辑(如 `_stManaged` 等标志位)。 - **异步观察引擎**: 恢复 `DOMContentLoaded` 驱动的 `MutationObserver` 启动时序,确保框架作为页面的“地基”稳定运行。 - **危险 API 重命名**: 将 `RefreshState` 重命名为 `_unsafeRefreshState`。此 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` 指令时,框架自动创建 `