| chore(skills): 新增 tag-flexui-engine 技能(打 tag + 生成升级补丁,不发布) 覆盖「打 tag 生成 patch、不发布 ohpm」的场景,与既有 publish-flexui-engine 技能 互补(后者走 release 构建 + ohpm 发布)。 六阶段流程: 1. 检查仓库状态(分支/工作区/上次 tag/未推送提交;签名配置改动不入站) 2. 版本号(oh-package.json5)+ CHANGELOG(按提交类型归类 feat/build/fix) 3. commit(只显式 add 这 2 个文件,禁止 git add . 带入 signingConfigs) 4. 打 annotated tag release_<version> 并验证指向 5. 生成 git diff 形式(非 format-patch)的区间补丁 patches/<ver>/,含反向应用自检 6. push upstream(master + tag)并验证 rev-parse 明确边界:不跑 build-engine、不做 release 归档、不 ohpm publish; patch 产物不入 git;push 需用户确认。 | 1 天前 |
| chore: cleanup flexui-engine - remove iOS/Voltron, move configs/docs to root - Remove iOS-related dirs: framework/ios, modules/ios, tests, ios-demo - Remove Voltron: framework/voltron, modules/voltron, renderer/voltron - Remove unused: TDF renderer, buildconfig, devtools, pjdocs, vfs module - Move project configs to root: .editorconfig, .husky, commitlint.config.js - Move docs to docs/engine (merged Hippy docs replacing old engine docs) - Merge .github community templates from engine to root - Clean flexui-engine .gitignore (remove deleted paths) - Preserve only Harmony + Android + cross-platform essentials Co-Authored-By: Claude <noreply@anthropic.com> | 4 个月前 |
| fix(agent-runtime): Compose compatibility fixes for compileSdk 33 - Downgrade Compose deps from BOM 2024.02.00 to explicit 1.5.0/1.1.0 versions compatible with compileSdk 33 + Compose Compiler 1.4.7 - Replace HorizontalDivider/VerticalDivider with Divider/Box (Material3 API compat) - Fix TextAlign.Unspecified -> TextAlign.Start - Add AAR metadata check suppression in demo build.gradle Known limitation: Demo APK (:example:assembleDebug) requires AGP upgrade or compileSdk 34 due to transitive androidx deps in hippy-framework. Agent-runtime module itself compiles clean and all unit tests pass. Co-Authored-By: Claude <noreply@anthropic.com> | 3 个月前 |
| fix(security): LLM API key 改为本地 gitignored 配置读取,移除硬编码密钥 - Index.ets / MainActivity.kt / ascf-toolkit config.js 改为从本地配置读取 apiKey - 本地配置: ai-agent/.../local-config.ts、toolkit/local-llm-config.json、Android local.properties(llm.apiKey) - 新增 .example 模板 + .gitignore;文档中的 key 替换为占位符 | 2 个月前 |
| refactor(engine): decouple ASCF agent layer from engine core bundle - Move modelContext/__ascfCallbacks/callbackManager out of flexui-backend into agent_api.js (as_apis HAR rawfile), loaded via apiJSAssetsPaths - Generalize has.ts bridge: native module name from __flexui_apiModuleName; CallbackManager (generic, no agent semantics) lives in engine core as __callbackManager / __flexui_bridge__.callbackManager - has_apis.js declares module name; ASAPIsModule drops modelContext stubs (ModelContextAPI.ets removed) - FlexUIEngineConfig.apiJSAssetsPath → apiJSAssetsPaths (ordered array, loaded in sequence after core bundle init) - SkillActivator (OHOS/Android) no longer lazily loads agent_api.js; demo Index.ets drops onReady loadAgentApi hack - Sync manifest.json in dev-agent/sync-ascf-rawfile scripts (fixes skill discovery — rawfile directory listing is unavailable) - FlexUIEngine.kt: default bundle path flexui/jsfwk.js, fireJsCallback jsModuleName parameterized - Update flexui-engine-arkts-api.md: three-layer architecture, scenario 6 agent_api.js extension guide (two-file principle, promise bridge) Co-Authored-By: Claude <noreply@anthropic.com> | 3 个月前 |
| 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 个月前 |
| fix(engine): rpx 运行时按屏幕宽换算 + border 简写容错构建期产物 集成方(border-demo 卡片)反馈:样式表 rpx 不显示、#hex 边框显示成黑色。 定位到三处运行时缺陷 + 一处构建期产物形态问题: 1) rpx 运行时换算缺失:convertValue 的 rpx 分支原样透传字符串, C++ 布局只接受 number,rpx 值被静默丢弃。新增 rpx.ts 作为全工程唯一 基准源与换算函数:N rpx → N × device.screen.width / 750(保留 2 位小数)。 基准取真实屏幕宽(ETS 每次 Dimensions 推送携带 screenPhysicalPixels, 旋转自动跟随),不被卡片容器宽污染;切换「视口宽」基准的唯一注入点为 setRpxBaseWidthProvider。swiper-adapter 的 rpx 同步收敛到该基准源。 2) border 简写宽度 token 只认 px/rpx:WXSS 构建期把 rpx 换成 vw (write_maybe_rpx_dimension,rpx_ratio=750),运行时收到 "0.266667vw solid#007dff",宽度丢失 → 边框完全不渲染。 3) border 简写按空白切词:构建期重序列化会把 #hash 与前一个 token 之间的 空格吞掉(solid#007dff;Ident/Function 不受影响),导致 borderStyle 与 borderColor 一起丢失 → 原生按默认值渲染 → 黑色边框(集成方 D 行现象)。 改为 parseBorderShorthand 按 token 类型扫描(#hash / rgb()/hsl() / 长度 / 标识符),天然拆开粘连 token;同时排除 thin/medium/thick 与 !important 参与颜色判定,并兼容 rgb() 内含空格的函数色。 4) vw/vh 换算整数舍入把亚像素宽度抹成 0(1rpx→0.42px),改为保留 2 位小数。 测试与用例: - StyleResolver.test.ts 新增:编译产物 vw 宽度、粘连 hash、rgb()/rgba() 简写、 per-side、background、thin/medium/thick、!important、颜色前置写法(74 通过)。 - 新增 rpx.test.ts(基准注入/回退链/舍入/非法值)。 - 真机用例 rpx-units-conversion(自断言:换算比例 + 推容器宽后基准不变)、 rpx-visible-border(12 行可见对照)、card-border-real(真实 WXSS 源码卡片, 经 ASCF webpack + Rust 编译器产出,端到端复刻集成方链路)。 - 全量 207 passed;唯一失败 splice.test.ts 9 条经干净基线复跑确认为既有问题。 文档:06-css-style.md 单位/简写/遗留清单按当前代码更新(行号重算), wechat-parity-gap.md 的 rpx 行改为已支持并标注基准语义。 构建:build-engine-to-phone 改为产出 @atomicservice 包名的 atomic HAR。 | 1 天前 |
| fix(engine): rpx 运行时按屏幕宽换算 + border 简写容错构建期产物 集成方(border-demo 卡片)反馈:样式表 rpx 不显示、#hex 边框显示成黑色。 定位到三处运行时缺陷 + 一处构建期产物形态问题: 1) rpx 运行时换算缺失:convertValue 的 rpx 分支原样透传字符串, C++ 布局只接受 number,rpx 值被静默丢弃。新增 rpx.ts 作为全工程唯一 基准源与换算函数:N rpx → N × device.screen.width / 750(保留 2 位小数)。 基准取真实屏幕宽(ETS 每次 Dimensions 推送携带 screenPhysicalPixels, 旋转自动跟随),不被卡片容器宽污染;切换「视口宽」基准的唯一注入点为 setRpxBaseWidthProvider。swiper-adapter 的 rpx 同步收敛到该基准源。 2) border 简写宽度 token 只认 px/rpx:WXSS 构建期把 rpx 换成 vw (write_maybe_rpx_dimension,rpx_ratio=750),运行时收到 "0.266667vw solid#007dff",宽度丢失 → 边框完全不渲染。 3) border 简写按空白切词:构建期重序列化会把 #hash 与前一个 token 之间的 空格吞掉(solid#007dff;Ident/Function 不受影响),导致 borderStyle 与 borderColor 一起丢失 → 原生按默认值渲染 → 黑色边框(集成方 D 行现象)。 改为 parseBorderShorthand 按 token 类型扫描(#hash / rgb()/hsl() / 长度 / 标识符),天然拆开粘连 token;同时排除 thin/medium/thick 与 !important 参与颜色判定,并兼容 rgb() 内含空格的函数色。 4) vw/vh 换算整数舍入把亚像素宽度抹成 0(1rpx→0.42px),改为保留 2 位小数。 测试与用例: - StyleResolver.test.ts 新增:编译产物 vw 宽度、粘连 hash、rgb()/rgba() 简写、 per-side、background、thin/medium/thick、!important、颜色前置写法(74 通过)。 - 新增 rpx.test.ts(基准注入/回退链/舍入/非法值)。 - 真机用例 rpx-units-conversion(自断言:换算比例 + 推容器宽后基准不变)、 rpx-visible-border(12 行可见对照)、card-border-real(真实 WXSS 源码卡片, 经 ASCF webpack + Rust 编译器产出,端到端复刻集成方链路)。 - 全量 207 passed;唯一失败 splice.test.ts 9 条经干净基线复跑确认为既有问题。 文档:06-css-style.md 单位/简写/遗留清单按当前代码更新(行号重算), wechat-parity-gap.md 的 rpx 行改为已支持并标注基准语义。 构建:build-engine-to-phone 改为产出 @atomicservice 包名的 atomic HAR。 | 1 天前 |
| fix(engine): forward named-slot taps to custom components (collapsible-view toggle) Declarative onClick on a custom component struct cannot receive taps on native NodeContent slot content (ContentSlot host consumes the touch, and ContentSlot does not support hitTestBehavior). Fix by capturing the tap on the named-slot container in C++: - CustomTsView: named slot containers get TRANSPARENT hit-test + a tap gesture (SlotClickDelegate) forwarding clicks via ts_render_provider_ref_ to a new onSlotClickedForCApi provider call - ArkTS: NativeRenderProvider -> NativeRenderImpl -> FRViewManager -> FlexUICustomComponentView.onSlotClicked(slotName) virtual hook; default slot containers keep NONE hit-test (zero impact on existing components) - collapsible-view: collapsed state moved into the @Observed view class, toggled by both the built-in header onClick and the slot click hook Verified on device: content with its own bindtap wins the gesture (no double-fire), content without handlers falls back to the component hook. Co-Authored-By: Claude <noreply@anthropic.com> | 2 个月前 |
| chore: release @flexui/engine release_1.1.9 | 1 天前 |
| feat(engine): 打通页面显隐 pageLifetimes.show/hide(Page.onShow/onHide)全链路 + 真机 E2E | 29 天前 |
| fix(engine): rpx 运行时按屏幕宽换算 + border 简写容错构建期产物 集成方(border-demo 卡片)反馈:样式表 rpx 不显示、#hex 边框显示成黑色。 定位到三处运行时缺陷 + 一处构建期产物形态问题: 1) rpx 运行时换算缺失:convertValue 的 rpx 分支原样透传字符串, C++ 布局只接受 number,rpx 值被静默丢弃。新增 rpx.ts 作为全工程唯一 基准源与换算函数:N rpx → N × device.screen.width / 750(保留 2 位小数)。 基准取真实屏幕宽(ETS 每次 Dimensions 推送携带 screenPhysicalPixels, 旋转自动跟随),不被卡片容器宽污染;切换「视口宽」基准的唯一注入点为 setRpxBaseWidthProvider。swiper-adapter 的 rpx 同步收敛到该基准源。 2) border 简写宽度 token 只认 px/rpx:WXSS 构建期把 rpx 换成 vw (write_maybe_rpx_dimension,rpx_ratio=750),运行时收到 "0.266667vw solid#007dff",宽度丢失 → 边框完全不渲染。 3) border 简写按空白切词:构建期重序列化会把 #hash 与前一个 token 之间的 空格吞掉(solid#007dff;Ident/Function 不受影响),导致 borderStyle 与 borderColor 一起丢失 → 原生按默认值渲染 → 黑色边框(集成方 D 行现象)。 改为 parseBorderShorthand 按 token 类型扫描(#hash / rgb()/hsl() / 长度 / 标识符),天然拆开粘连 token;同时排除 thin/medium/thick 与 !important 参与颜色判定,并兼容 rgb() 内含空格的函数色。 4) vw/vh 换算整数舍入把亚像素宽度抹成 0(1rpx→0.42px),改为保留 2 位小数。 测试与用例: - StyleResolver.test.ts 新增:编译产物 vw 宽度、粘连 hash、rgb()/rgba() 简写、 per-side、background、thin/medium/thick、!important、颜色前置写法(74 通过)。 - 新增 rpx.test.ts(基准注入/回退链/舍入/非法值)。 - 真机用例 rpx-units-conversion(自断言:换算比例 + 推容器宽后基准不变)、 rpx-visible-border(12 行可见对照)、card-border-real(真实 WXSS 源码卡片, 经 ASCF webpack + Rust 编译器产出,端到端复刻集成方链路)。 - 全量 207 passed;唯一失败 splice.test.ts 9 条经干净基线复跑确认为既有问题。 文档:06-css-style.md 单位/简写/遗留清单按当前代码更新(行号重算), wechat-parity-gap.md 的 rpx 行改为已支持并标注基准语义。 构建:build-engine-to-phone 改为产出 @atomicservice 包名的 atomic HAR。 | 1 天前 |
| docs(license): normalize LICENSE/NOTICE and add package license files - root LICENSE restored to the project MIT license after it had been overwritten by a copy of the engine LICENSE; a scope section now points to the NOTICE file so that flexui-engine/ is not mistaken for MIT - NOTICE is now the single attribution hub: Tencent Hippy, glass-easel, Hippy DevTools, chii (js-devtools), Chrome DevTools Protocol, Vue and the MDN content used by the analyzer backend configuration - @flexui/engine package: LICENSE normalized to Apache-2.0 with the copyright holder filled in, plus a new package level NOTICE shipped with the HAR - added 16 missing LICENSE/NOTICE files and the missing package.json license fields (MIT, Apache-2.0, BSD-3-Clause as declared by each package) - pinned LICENSE/NOTICE to LF in .gitattributes and normalized line endings - README: added a license section; engine README and docs updated to point at the right license files | 1 个月前 |
| fix(workspace): 移除悬空依赖 @openflexui/ascf + pnpm12 allowBuilds 修复(解锁 jest 单测) | 29 天前 |
| chore: cleanup flexui-engine - remove iOS/Voltron, move configs/docs to root - Remove iOS-related dirs: framework/ios, modules/ios, tests, ios-demo - Remove Voltron: framework/voltron, modules/voltron, renderer/voltron - Remove unused: TDF renderer, buildconfig, devtools, pjdocs, vfs module - Move project configs to root: .editorconfig, .husky, commitlint.config.js - Move docs to docs/engine (merged Hippy docs replacing old engine docs) - Merge .github community templates from engine to root - Clean flexui-engine .gitignore (remove deleted paths) - Preserve only Harmony + Android + cross-platform essentials Co-Authored-By: Claude <noreply@anthropic.com> | 4 个月前 |
| chore: flatten directory structure, move glass-easel contents to root Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | 4 个月前 |
| chore: flatten directory structure, move glass-easel contents to root Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | 4 个月前 |
| docs(license): normalize LICENSE/NOTICE and add package license files - root LICENSE restored to the project MIT license after it had been overwritten by a copy of the engine LICENSE; a scope section now points to the NOTICE file so that flexui-engine/ is not mistaken for MIT - NOTICE is now the single attribution hub: Tencent Hippy, glass-easel, Hippy DevTools, chii (js-devtools), Chrome DevTools Protocol, Vue and the MDN content used by the analyzer backend configuration - @flexui/engine package: LICENSE normalized to Apache-2.0 with the copyright holder filled in, plus a new package level NOTICE shipped with the HAR - added 16 missing LICENSE/NOTICE files and the missing package.json license fields (MIT, Apache-2.0, BSD-3-Clause as declared by each package) - pinned LICENSE/NOTICE to LF in .gitattributes and normalized line endings - README: added a license section; engine README and docs updated to point at the right license files | 1 个月前 |
| fix(security): 恢复 replace-text 误伤的 flexuidemo.jks 文件名引用 filter-repo --replace-text 将当前树中 android-sign.sh/CLAUDE.md/.gitignore 里的 flexuidemo.jks 一并替换为 ***REMOVED***,此处恢复为可读的文件名(历史中该文件已删除) | 2 个月前 |
| chore: cleanup flexui-engine - remove iOS/Voltron, move configs/docs to root - Remove iOS-related dirs: framework/ios, modules/ios, tests, ios-demo - Remove Voltron: framework/voltron, modules/voltron, renderer/voltron - Remove unused: TDF renderer, buildconfig, devtools, pjdocs, vfs module - Move project configs to root: .editorconfig, .husky, commitlint.config.js - Move docs to docs/engine (merged Hippy docs replacing old engine docs) - Merge .github community templates from engine to root - Clean flexui-engine .gitignore (remove deleted paths) - Preserve only Harmony + Android + cross-platform essentials Co-Authored-By: Claude <noreply@anthropic.com> | 4 个月前 |
| chore: flatten directory structure, move glass-easel contents to root Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | 4 个月前 |
| chore: flatten directory structure, move glass-easel contents to root Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | 4 个月前 |
| feat(dfx): 新增卡片渲染耗时上报 onCardRenderReport + 排队/执行拆分 - 引擎侧 CardRenderPerfCollector 打点链路(aboutToAppear→loadCard→bundle 完成→FVA→FCP),FCP 到达组装分段耗时 JSON 逐卡上报(onCardRenderReport, 复用 enable_render_timing 开关,逐卡一条不去重) - C++ Scope::LoadInstance 入口打点 loadInstanceStartMs(JS 线程,墙钟 ms 与 Date.now 同基准);FCP 时 ETS 经新 NAPI Dfx_GetCardLoadInstanceStartMs 查询,把 bundleToFvaMs 拆成 queuedMs(排队等待:bundle 就绪→实际开始执行, 并发多卡随卡序递增)/execMs(实际执行→FVA,单卡真实渲染成本)——分离 "耗时逐渐增加"的来源与单卡真实成本 - 新 NAPI:Dfx_ReportCardRender(透传)+ Dfx_GetCardLoadInstanceStartMs - 测试台 dfx-card-render(feature):dfxperf 唯一 scheme + MemoryResourceLoader 注入 minimal(FCP 必触发),断言 payload 含分段字段且强制拆分生效 (queued+exec≈bundleToFva);真机回归通过(feature 4 次跑 dfx-card-render 全绿) - 接口文档同步:flexui-engine-arkts-api.md 自 docs/learn/ 迁移至 docs/flexui-engine/(DFX 七回调 + onCardRenderReport payload + 移除 onWindowSummary/onCrashReport 已生效纠正 + 链接修正),README 登记, CLAUDE.md 新增对外接口同步更新规则,capabilities/18-dfx-monitoring.md 同步 | 1 个月前 |
| fix: update import paths to scoped packages and fix wx→has prefix test spans - Update all import paths: flexui → @flexui/core, flexui-template-compiler → @flexui/template-compiler, etc. - Fix template compiler Rust test span values for wx: → has: prefix shift - Add non-null assertions in class_list.ts for strict null check compliance - Fix webpack plugin CSS loader path and config references - Update doc examples with correct package names - Fix chaining.test.ts ts-expect-error placement Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | 4 个月前 |
| chore: update cargo workspace, READMEs, and config for flexui rebrand Updated root Cargo.toml workspace members to new toolkit/ paths. Rewrote README.md and README-zh_CN.md with flexui branding, updated package names, links, badges, and copyright. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | 4 个月前 |
| docs(license): normalize LICENSE/NOTICE and add package license files - root LICENSE restored to the project MIT license after it had been overwritten by a copy of the engine LICENSE; a scope section now points to the NOTICE file so that flexui-engine/ is not mistaken for MIT - NOTICE is now the single attribution hub: Tencent Hippy, glass-easel, Hippy DevTools, chii (js-devtools), Chrome DevTools Protocol, Vue and the MDN content used by the analyzer backend configuration - @flexui/engine package: LICENSE normalized to Apache-2.0 with the copyright holder filled in, plus a new package level NOTICE shipped with the HAR - added 16 missing LICENSE/NOTICE files and the missing package.json license fields (MIT, Apache-2.0, BSD-3-Clause as declared by each package) - pinned LICENSE/NOTICE to LF in .gitattributes and normalized line endings - README: added a license section; engine README and docs updated to point at the right license files | 1 个月前 |
| docs(license): normalize LICENSE/NOTICE and add package license files - root LICENSE restored to the project MIT license after it had been overwritten by a copy of the engine LICENSE; a scope section now points to the NOTICE file so that flexui-engine/ is not mistaken for MIT - NOTICE is now the single attribution hub: Tencent Hippy, glass-easel, Hippy DevTools, chii (js-devtools), Chrome DevTools Protocol, Vue and the MDN content used by the analyzer backend configuration - @flexui/engine package: LICENSE normalized to Apache-2.0 with the copyright holder filled in, plus a new package level NOTICE shipped with the HAR - added 16 missing LICENSE/NOTICE files and the missing package.json license fields (MIT, Apache-2.0, BSD-3-Clause as declared by each package) - pinned LICENSE/NOTICE to LF in .gitattributes and normalized line endings - README: added a license section; engine README and docs updated to point at the right license files | 1 个月前 |
| docs(license): normalize LICENSE/NOTICE and add package license files - root LICENSE restored to the project MIT license after it had been overwritten by a copy of the engine LICENSE; a scope section now points to the NOTICE file so that flexui-engine/ is not mistaken for MIT - NOTICE is now the single attribution hub: Tencent Hippy, glass-easel, Hippy DevTools, chii (js-devtools), Chrome DevTools Protocol, Vue and the MDN content used by the analyzer backend configuration - @flexui/engine package: LICENSE normalized to Apache-2.0 with the copyright holder filled in, plus a new package level NOTICE shipped with the HAR - added 16 missing LICENSE/NOTICE files and the missing package.json license fields (MIT, Apache-2.0, BSD-3-Clause as declared by each package) - pinned LICENSE/NOTICE to LF in .gitattributes and normalized line endings - README: added a license section; engine README and docs updated to point at the right license files | 1 个月前 |
| fix(security): 恢复 replace-text 误伤的 flexuidemo.jks 文件名引用 filter-repo --replace-text 将当前树中 android-sign.sh/CLAUDE.md/.gitignore 里的 flexuidemo.jks 一并替换为 ***REMOVED***,此处恢复为可读的文件名(历史中该文件已删除) | 2 个月前 |
| fix(engine): rpx 运行时按屏幕宽换算 + border 简写容错构建期产物 集成方(border-demo 卡片)反馈:样式表 rpx 不显示、#hex 边框显示成黑色。 定位到三处运行时缺陷 + 一处构建期产物形态问题: 1) rpx 运行时换算缺失:convertValue 的 rpx 分支原样透传字符串, C++ 布局只接受 number,rpx 值被静默丢弃。新增 rpx.ts 作为全工程唯一 基准源与换算函数:N rpx → N × device.screen.width / 750(保留 2 位小数)。 基准取真实屏幕宽(ETS 每次 Dimensions 推送携带 screenPhysicalPixels, 旋转自动跟随),不被卡片容器宽污染;切换「视口宽」基准的唯一注入点为 setRpxBaseWidthProvider。swiper-adapter 的 rpx 同步收敛到该基准源。 2) border 简写宽度 token 只认 px/rpx:WXSS 构建期把 rpx 换成 vw (write_maybe_rpx_dimension,rpx_ratio=750),运行时收到 "0.266667vw solid#007dff",宽度丢失 → 边框完全不渲染。 3) border 简写按空白切词:构建期重序列化会把 #hash 与前一个 token 之间的 空格吞掉(solid#007dff;Ident/Function 不受影响),导致 borderStyle 与 borderColor 一起丢失 → 原生按默认值渲染 → 黑色边框(集成方 D 行现象)。 改为 parseBorderShorthand 按 token 类型扫描(#hash / rgb()/hsl() / 长度 / 标识符),天然拆开粘连 token;同时排除 thin/medium/thick 与 !important 参与颜色判定,并兼容 rgb() 内含空格的函数色。 4) vw/vh 换算整数舍入把亚像素宽度抹成 0(1rpx→0.42px),改为保留 2 位小数。 测试与用例: - StyleResolver.test.ts 新增:编译产物 vw 宽度、粘连 hash、rgb()/rgba() 简写、 per-side、background、thin/medium/thick、!important、颜色前置写法(74 通过)。 - 新增 rpx.test.ts(基准注入/回退链/舍入/非法值)。 - 真机用例 rpx-units-conversion(自断言:换算比例 + 推容器宽后基准不变)、 rpx-visible-border(12 行可见对照)、card-border-real(真实 WXSS 源码卡片, 经 ASCF webpack + Rust 编译器产出,端到端复刻集成方链路)。 - 全量 207 passed;唯一失败 splice.test.ts 9 条经干净基线复跑确认为既有问题。 文档:06-css-style.md 单位/简写/遗留清单按当前代码更新(行号重算), wechat-parity-gap.md 的 rpx 行改为已支持并标注基准语义。 构建:build-engine-to-phone 改为产出 @atomicservice 包名的 atomic HAR。 | 1 天前 |
| refactor: replace ALL hippy/Hippy → flexui/FlexUI across entire codebase Comprehensive replacement covering: - C++ byte arrays (native_source_code_jsh.cc): decoded, replaced, re-encoded - Bridge function names: hippyCallNatives→flexuiCallNatives, hippyBridge→flexuiBridge - Global object key: "Hippy"→"FlexUI" (scope.cc, js_driver_utils.cc) - Internal constants: __HIPPYNATIVEGLOBAL__→__FLEXUINATIVEGLOBAL__, etc. - Map key: hippy.js→flexui.js - Variable names, comments, license banners - Toolkit/webpack-plugin: @hippy→@flexui (consistent with engine now) Excluded from replacement: - InfraPackagesModule.cmake: external CDN URL (infra-packages.openhippy.com) - docs/: engine reference documentation - devtools/: browser extension (separate module) - rawfile/: compiled bundles (regenerated by build-demo) Co-Authored-By: Claude <noreply@anthropic.com> | 3 个月前 |
| feat: flexui适配层分为frontend和backend | 3 个月前 |
| 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 增加「本地敏感配置(禁止提交)」说明 | 2 个月前 |
| docs(license): normalize LICENSE/NOTICE and add package license files - root LICENSE restored to the project MIT license after it had been overwritten by a copy of the engine LICENSE; a scope section now points to the NOTICE file so that flexui-engine/ is not mistaken for MIT - NOTICE is now the single attribution hub: Tencent Hippy, glass-easel, Hippy DevTools, chii (js-devtools), Chrome DevTools Protocol, Vue and the MDN content used by the analyzer backend configuration - @flexui/engine package: LICENSE normalized to Apache-2.0 with the copyright holder filled in, plus a new package level NOTICE shipped with the HAR - added 16 missing LICENSE/NOTICE files and the missing package.json license fields (MIT, Apache-2.0, BSD-3-Clause as declared by each package) - pinned LICENSE/NOTICE to LF in .gitattributes and normalized line endings - README: added a license section; engine README and docs updated to point at the right license files | 1 个月前 |
| fix(workspace): 移除悬空依赖 @openflexui/ascf + pnpm12 allowBuilds 修复(解锁 jest 单测) | 29 天前 |
| fix(workspace): 移除悬空依赖 @openflexui/ascf + pnpm12 allowBuilds 修复(解锁 jest 单测) | 29 天前 |
| feat: flexui适配层分为frontend和backend | 3 个月前 |
| chore(security): 移除签名材料与 signingConfigs 配置,gitignore + CLAUDE.md 说明,新增 sign.sh 备份/恢复工具 - 删除 ai-agent/sign/(*.p12/*.cer/*.p7b + material/),备份见 sign-backup/(gitignored) - 4 个 build-profile.json5 移除 signingConfigs(本地签名配置,不再提交) - .gitignore 增加 *.p12/*.cer/*.p7b/*.csr、/ai-agent/sign/、/sign-backup/ 规则 - CLAUDE.md 增加「签名配置(禁止提交)」说明 - 新增 sign.sh:backup/pack/restore 三命令,支持其他机器一键恢复签名 | 2 个月前 |
| chore: flatten directory structure, move glass-easel contents to root Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | 4 个月前 |