| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
chore(security): 新增 llm-config.sh/android-sign.sh 备份恢复工具,移除 Android demo 签名与文档凭据 - llm-config.sh: 备份/恢复 LLM 本地配置(local-config.ts / local-llm-config.json / local.properties) - android-sign.sh: 备份/恢复 Android demo 签名(flexuidemo.jks + build.gradle signingConfigs) - 移除 demos/android-demo/flexuidemo.jks 与 build.gradle 明文签名密码 - 文档中的 radui 上游模板加密密码替换为 ***REMOVED*** - CLAUDE.md 增加「本地敏感配置(禁止提交)」说明 | 11 天前 | |
fix(engine): cross-thread event snapshot + root-node dom-op serialization click-drop(多卡片共享引擎组,后建 scope DOM 在独立 dom_worker): - v2: hop 时刻快照 (currentId/id/eventPhase) 以 Object.defineProperty 写成 Event 实例 own data 属性遮蔽原型 getter-only accessor——v1 用 SetProperty ([[Set]]) 在 getter-only 原型 accessor 上静默失败,JS 仍读到漂移到 rootViewId 的 currentId 而 drop。flexui_141 真机验证 0 drop,外卖链路 list→detail→confirm 走通。 偶发 SIGSEGV(dom_worker2 内 UpdateDomNodes→DomNodeStyleDiffer::Calculate 哈希已释放内存): - RootNode 增加 operation_mutex_(recursive),统一串行化 JS 线程 inline sceneBuilder DOM 操作/EndBatch/布局 与 卡片 dom_worker 的 ReceivedEvent→ HandleEvent、native 布局及监听表读写(root_node.cc/h、dom_node.cc); - 锁内不跨线程等待,hop 回调仅 PostTask。 其他: - event_module:节点过期 getter 返回 undefined(原 CreateException+nullptr 防御) - 引擎配置透传 domManagerConcurrentNum(FlexUIEngineConfig),TwoScopeTest 冷启动开 2 构造跨 dom_worker 复现场景;JSFWK_MARKER 保留、清理本轮诊断日志 - 新增双 scope 复现页/卡片(TwoScopeTest、root-tap-card) | 2 天前 | |
feat(engine): has.onThemeChange 卡片归属式主题监听 + getCurrentRootId 引擎桥 getter 新增 has.onThemeChange(cb)/offThemeChange(wx.onThemeChange 语义对齐,回调收 {theme:'dark'|'light'})。注册时经引擎核心归属到所在卡片:entry_guard 卡片上下文 栈新增只读栈顶 getCurrentRootId(protect 后 __flexuiTimerPolicy 为抛错代理,业务 不可达不可伪造);flexui-backend engine-timer-policy 加载期 capture 转发(可选 接口成员 + typeof 守卫,兼容旧真身组合);has.ts __flexui_bridge__ 暴露 getCurrentRootId(只读数字,不暴露 timerPolicy 管控面)。has_apis 依此把监听器 归属 root:<rootId> 桶,无卡片上下文(脚本模式/bundle 顶层/await 延续)降级 scope 桶(warn 可观测)。分发器注册进 __GLOBAL__.__flexuiColorModeListeners(has.ts _applyEnv 真身广播通道),dedupe(bridge init 补推/同值推送不触发,基线从 __flexuiColorMode 播种)+ colorMode→theme 转换,每回调独立 try/catch(捕获+上报 不 rethrow);FlexUI 'destroyInstance'(__unloadInstance__ 广播,id=rootId 与归属 键同一 id 空间)驱动按卡片清扫——业务忘 off 也安全,避免死回调闭包泄露。 fix(engine): Event.js jsModuleList 改加载期 capture——protect() 把 __GLOBAL__.jsModuleList 替换为函数型抛错代理(属性访问静默返回 undefined), 而 __loadInstance__ 在保护化后才执行(卡片加载),运行时读取拿到代理 → 初始 Result 预投递(__ascfCallbacks)与 EventDispatcher 分发自 protect 落地起静默 失效。改为模块加载期 capture 真身引用(同 native2js.js 模式;加载序 Others(建 __GLOBAL__)→Dimensions(建 jsModuleList)→Event.js,后续模块注册进同一 对象,引用非快照)。此前 CardTester 真机验证未暴露:卡片 harmony-entry 在 run() 内先写 __ascfParsedParams__/__ascfResultData__ 全局中转(protect 后新属性为真身 可读),created() 直读路径先于监听器注册拿到数据——applyResult/setData 日志三 路径共用,特征日志 "Result event received" 才是预投递生效判据。 - engine-tests 新增 feature 用例 theme-change-listener(真机 24 断言: getCurrentRootId 三态直测〔脚本模式栈空===0、卡片上下文===引擎 rootId 且与 注入 __instanceId__ 同 id 空间、getter 导出兼容守卫〕、scope 桶降级、dedupe、 off 双路径(offThemeChange + 返回的反注册函数)、卡片上下文归属分发、 destroyModule 后卡片计数不变(清扫生效)而 scope 继续分发、引擎存活;colorMode 0→1 推送归一化使各轮计数与设备初始色模无关;重跑幂等清场) - engine-tests initial-result-card:modelContext 改白名单面 has.modelContext 优先,降级路径必须过 getContext 有效性校验(post-protect 裸读 __ascfModelContext 是函数型抛错代理,typeof==='function' 使 || 永不降级) - build-core.js:@babel/core 自愈回退(企业代理 npm install 失败时复用 toolkit/ascf-toolkit 的 node_modules,NODE_PATH 再执行本脚本,防递归守卫) - CLAUDE.md:真机日志抓取硬规则(Git Bash 下 hdc shell 引号形态只传首词 → 裸 hilog 实时跟随永不退出的卡死根因;每次抓取必须限时;先复现再抓; 过滤一律宿主侧对落盘文件做) 真机全量回归:65 PASS / 0 FAIL / 4 SKIP(manifest 设计性跳过,与基线一致) | 1 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 11 天前 | ||
| 2 天前 | ||
| 1 天前 |