| Files | Last commit | Last update |
|---|---|---|
fix(agent): add setContext call, fix TAG + apiArgs compilation - Index.ets: call runtime.setContext(getContext(this)) before initialize() to enable rawfile access for MCP loading and skill discovery - AgentRuntime.ets: fix TAG undefined, fix apiArgs untyped object literal Co-Authored-By: Claude <noreply@anthropic.com> | 4 months ago | |
refactor: 项目重命名 重命名项目目录与设计文档,并同步 README、构建脚本、签名配置与 .gitignore 排除规则。 | 2 months ago | |
doc: add ai-mode-skills design document Comprehensive design doc covering: - Overview and 3-stage pipeline (generate → validate → eval) - ascf-skills-generate: 6-phase workflow, independent subpackage architecture - ascf-skills-validate: 3-step verification, 16 static rules, error classification - ascf-skills-eval: 13-node pipeline, resume/cache, architecture - Cross-skill concepts: atomic APIs, atomic components, mcp.json, JSAPI whitelist - Integration points: ASCF AI Agent, ascf CLI, ASCF Toolkit, ascf-automator, LLM | 4 months ago | |
feat(engine): named slots for custom components (collapsible-view demo) JS backend: implement setSlot/slotName, aggregate __slotMap on slot hosts, push via FlexUIBridge.updateNode (ComponentAdapter.slots drives it). C++: CustomTsView multi-slot containers, parse __slotMap, route children per slot name, whitelist __slotMap in UpdateCustomTsProps. ArkTS: pre-create NodeContent per slotDeclarations, inject slotContents, FRCollapsibleView struct renders ContentSlot per slot, onSlotMapParsed drives hasButtonSlot observable for re-render. Adds collapsibleview-demo card, Jest slot.test.ts, design docs, and build/check-env tooling updates. | 3 months ago | |
fix(engine): keep __slotMap across attribute flushes on slot-host custom components Root cause: __slotMap is a JS-managed sticky ext prop pushed ONLY on structural changes (child attach/detach/slot re-assign), while regular attributes (e.g. collapsed-height on <collapsible-view>) are re-sent on every flush WITHOUT __slotMap. UpdateDomNodes' ext diff (DiffProps) treated the missing __slotMap as DELETED and SetExtStyleMap then wiped it from the node's ext map, so the ArkTS side only received setProp('__slotMap', null); FlexUICustomComponentView. _parseSlotMapProp early-returned and onSlotMapParsed never ran again (C++ slot routing was lost too). Fix (C++): UpdateDomNodes now re-injects the existing __slotMap into update_ext when it is omitted, and filters __slotMap out of ext auto-delete (only an explicit deleteProps entry clears it). Fix (ArkTS): _parseSlotMapProp also invokes onSlotMapParsed(empty map) on the null/empty branch so the subclass hook contract is never silently broken. Demo: collapsibleview-demo scenario 1 now carries collapsed-height=100 with a <text slot=button> child as an on-device regression scenario; docs updated (design flexui-component-slot.md edge case 8, extension guide known-constraint). | 2 months ago | |
docs: add module design docs, update README and CLAUDE.md - Add detailed design docs for all 7 modules in docs/design/ - flexui-core: component system, backend, template engine, data binding - flexui-ascf: ASCF adapter, built-in components, build integration - flexui-shadow-sync: cross-backend shadow tree sync, message channel - toolkit: Rust→WASM compilers, webpack plugin, LSP analyzer, devtools - flexui-engine: native rendering engine (OHOS/Android), DOM, driver - ascf-agent: on-device AI agent, AgentRuntime, tools, FlexView cards - skills: AI-assisted development skills system - Update README: full project/module introduction, remove License section - Update CLAUDE.md: architecture concepts, module dev guidance, subsystem index - Unify ASCF naming: wxa→ascf, WXML→HXML, WXSS→CSS, WXS→HJS, wx:→has: - Replace AscfLite→FlexView in all docs - Remove specific package name references Co-Authored-By: Claude <noreply@anthropic.com> | 4 months ago | |
feat(dfx): V8 路径 unhandledrejection 实现 + 多引擎分桶设计文档 - v8_vm.cc:V8 PromiseRejectCallback(SetPromiseRejectCallback 注册, kPromiseRejectWithNoHandler → DfxCollector::ReportRejection,与 JSH 的 OH_JSVM_SetHandlerForPromiseReject 同语义) ⚠️ 标注 TODO:待 Android 构建环境编译验证后覆盖(OHOS 走 JS_JSH 不编 本文件,条件编译隔离,build-engine 已确认无回归) - docs/design/flexui-dfx-multi-engine.md:多引擎分桶设计(per-engine collector 注册表 + 埋点惰性分叉 + sink 带 engine_key + DfxBridge 按引擎 路由 + 两步迁移路径 + 双引擎验证方案);当前单引擎零回归,待立项 | 2 months ago | |
fix(flexui-engine): Taitank box-sizing support + parent content-width % resolution pay-success-card 的 ps-info 整块超窗根因:引擎 Taitank 布局恒按 content-box 处理,width:100% + padding 时声明宽被当内容宽、padding 叠加在外 → 超出窗口; 且子元素 % 按父 style 宽(border-box 语义)解析而非父内容宽。 修复(flexui-engine/dom Taitank 布局层): - Parser 解析 box-sizing → box_sizing_border_box_ 标志 - GetParentStyleWidth/Height 返回父「内容宽」:父 border-box 时 = style 宽 − padding − border(标准 CSS % 语义) - ReResolvePercentageDims 保持 style dim = 声明宽(border-box 下即总宽), 数值/百分比 dim 原文保留(raw_dim_numbers_),布局前幂等重放 - 修复后 ps-card 总宽 = 窗口(不再变窄)、ps-info 按父内容宽解析不超窗 回归用例:apidemos/borderbox-demo(复刻 ps-card/ps-info 结构)+ engine-test-demo manifest card-layout-boxsizing(bug 级 layout 用例, PC uitest dumpLayout 断言 .bb-card/.bb-info 实际宽度 ≤ 窗口); docs/design/flexui-engine-css-support.md box-sizing 更新为 ✅。 真机验证:build-engine + build-hap 通过;card-layout-boxsizing PASS; test-engine all: total=37 pass=36 fail=0(唯一 error 为环境性 card-file 沙箱文件)。 | 2 months ago | |
feat(engine): 深色模式适配 — @media (prefers-color-scheme) 引擎 + colorMode 桥接 JS 层(flexui-backend): - CSSManager @media 引擎:规则存储/环境评估/重评估(prefers-color-scheme、 宽度/方向断点),兼容编译器 media 前缀;rebuildIndex 保留 scope 绑定 - NativeBackendContext colorMode 链路:has.ts 真身通知(绕过 entry_guard 代理)→ __GLOBAL__ 监听器 → 样式失效与防抖重渲染;getTheme 读真实主题 - StyleResolver 深色默认文字色(Text/Span/TextArea) - has.ts _applyEnv 检测 colorMode 并通知框架监听器 ETS/C++ 桥接: - FlexUIEngineManagerImpl:checkColorMode 初始化 + onConfigurationUpdated 监听(独立注册,不依赖 uiContext)+ pushColorModeToJs - Setting_SetColorMode(C++ FRPixelUtils::SetColorMode/IsDarkMode) - FlexUIBridgeManagerImpl nightMode 读系统 colorMode FlexView 修复: - 首次加载宽度竞态:推迟到测量后 + await 容器宽推送;vp2px 单位修正 (px 被当 vp 导致整卡放大 3.25 倍) - FlexUIWModuleManager 接口改用 worker 参数类(配合调用管控 worker 链路) ascf-agent 阶段1(深色切换/重建后卡片数据恢复): - InstanceManager 缓存最近 result + replayLastData 重放 - FlexCardView onViewReady 队列空时重放数据 文档:兼容性分析第2章修正、集成适配指导(新增)、CLAUDE.md capture 约束 单测:CSSManager @media 引擎 11 项全部通过 Co-Authored-By: Claude <noreply@anthropic.com> | 2 months ago | |
fix(engine): 修复 linear-gradient 渐变解析缺口并加 C++ 角度兜底 - StyleResolver.parseLinearGradient 支持无角度(默认 180deg)、命名方向 (to top/right/bottom/left + 4 对角)、transparent/命名色/8 位 hex 色标、 turn/rad/grad 单位,统一归一化为 CSS 度数下发(负角度归一化到 [0,360)) - background 简写识别 linear-gradient 改为大小写不敏感 - base_view.cc SetLinearGradientProp 对非法角度加 try/catch 兜底, 避免 std::stof 抛异常穿透 NAPI 边界;负角度归一化 - 新增 9 个 Jest 用例覆盖上述解析行为(41/41 通过) - 效果专项文档:docs/design/flexui-engine-effects-capability.md(新增) + flexui-engine-css-support.md 渐变行为同步 | 2 months ago | |
feat(engine): 深色模式适配 — @media (prefers-color-scheme) 引擎 + colorMode 桥接 JS 层(flexui-backend): - CSSManager @media 引擎:规则存储/环境评估/重评估(prefers-color-scheme、 宽度/方向断点),兼容编译器 media 前缀;rebuildIndex 保留 scope 绑定 - NativeBackendContext colorMode 链路:has.ts 真身通知(绕过 entry_guard 代理)→ __GLOBAL__ 监听器 → 样式失效与防抖重渲染;getTheme 读真实主题 - StyleResolver 深色默认文字色(Text/Span/TextArea) - has.ts _applyEnv 检测 colorMode 并通知框架监听器 ETS/C++ 桥接: - FlexUIEngineManagerImpl:checkColorMode 初始化 + onConfigurationUpdated 监听(独立注册,不依赖 uiContext)+ pushColorModeToJs - Setting_SetColorMode(C++ FRPixelUtils::SetColorMode/IsDarkMode) - FlexUIBridgeManagerImpl nightMode 读系统 colorMode FlexView 修复: - 首次加载宽度竞态:推迟到测量后 + await 容器宽推送;vp2px 单位修正 (px 被当 vp 导致整卡放大 3.25 倍) - FlexUIWModuleManager 接口改用 worker 参数类(配合调用管控 worker 链路) ascf-agent 阶段1(深色切换/重建后卡片数据恢复): - InstanceManager 缓存最近 result + replayLastData 重放 - FlexCardView onViewReady 队列空时重放数据 文档:兼容性分析第2章修正、集成适配指导(新增)、CLAUDE.md capture 约束 单测:CSSManager @media 引擎 11 项全部通过 Co-Authored-By: Claude <noreply@anthropic.com> | 2 months ago | |
fix(engine): harden JS layer — Hermes callback guards, error reporting channels, global handlers JS 层稳定性修复(docs/design/flexui-engine-stability-analysis.md 第 12 节): - J-01: Hermes JSI host function 回调(InvokeJsCallback/InvokePropertyCallback/ InvokeConstructorJsCallback)包 try/catch,异常不逃逸 JSI 边界; task 执行单元统一兜底(timer/idle、CallUIFunction、CallJs、WillExit/ UnloadInstance),CallJs 异常仍回调 CALL_FAILED,WillExit 保证 p.set_value 全路径执行(防 future.get() 挂起) - J-02: 实测 JSVM 无 env 级 rejection 回调 API → bootstrap 注册 unhandledrejection 钩子兜底记录 - J-03: __loadInstance__ 异常走上报通道(VM::HandleException → ETS onJsException), 不再只进 hilog - J-04: 评估通过(OHOS/Android exception_handler 已在 C++ 轮加固) - J-06: console.reportUncaughtException 死代码修正(throw → 记录); bootstrap 注册 unhandledrejection 钩子 - J-07: globalOptions.onError 扩展点(dispatchError 调用,throw 前保证触发); bootstrap 注册默认实现([BusinessError] stack 日志),宿主可覆写上报 同步:buildcore 重新生成 native_source_code_jsh/v8.cc; docs/learn/flexui-engine-arkts-api.md 场景七更新(J-03 新上报入口、 globalOptions.onError 扩展点、三类异常通路)。 已通过 build-engine(BUILD SUCCESSFUL)与 @openflexui/core rollup 构建验证。 Co-Authored-By: Claude <noreply@anthropic.com> | 2 months ago | |
docs: add module design docs, update README and CLAUDE.md - Add detailed design docs for all 7 modules in docs/design/ - flexui-core: component system, backend, template engine, data binding - flexui-ascf: ASCF adapter, built-in components, build integration - flexui-shadow-sync: cross-backend shadow tree sync, message channel - toolkit: Rust→WASM compilers, webpack plugin, LSP analyzer, devtools - flexui-engine: native rendering engine (OHOS/Android), DOM, driver - ascf-agent: on-device AI agent, AgentRuntime, tools, FlexView cards - skills: AI-assisted development skills system - Update README: full project/module introduction, remove License section - Update CLAUDE.md: architecture concepts, module dev guidance, subsystem index - Unify ASCF naming: wxa→ascf, WXML→HXML, WXSS→CSS, WXS→HJS, wx:→has: - Replace AscfLite→FlexView in all docs - Remove specific package name references Co-Authored-By: Claude <noreply@anthropic.com> | 4 months ago | |
refactor: 项目重命名 重命名项目目录与设计文档,并同步 README、构建脚本、签名配置与 .gitignore 排除规则。 | 2 months ago | |
feat(engine): multi-scope isolation & remove singleton design - FlexUIEngine: createEngine is the only entry (engineKey/groupId/scopeKey required, caller maintains default constants); sRegistry get/destroy/destroyAll; createScope/destroyScope/onReady(scopeKey)/loadCard(scopeKey) - FlexUIEngineManagerImpl: mScopeContexts registry (main scope key = params.scopeKey), CardSession extended with scopeKey/coreBundleLoader, per-scope routing for loadModuleWithListener/loadJsModule/destroyModule, codeCacheTag derived per scope - EnvAPI: global env state (_envState) pushed to each scope on bridge ready + broadcast on change (replaces single-queue pending replay) - FlexView: engineKey/scopeKey @Require, render binding uses scope's NativeRenderProvider - Callers: EntryAbility/Index/FlexCardView maintain ENGINE_KEY/SCOPE_KEY/ENGINE_GROUP_ID - Docs: docs/design/flexui-ohos-multi-runtime.md + learn API doc sync | 3 months ago | |
feat(engine): multi-scope isolation & remove singleton design - FlexUIEngine: createEngine is the only entry (engineKey/groupId/scopeKey required, caller maintains default constants); sRegistry get/destroy/destroyAll; createScope/destroyScope/onReady(scopeKey)/loadCard(scopeKey) - FlexUIEngineManagerImpl: mScopeContexts registry (main scope key = params.scopeKey), CardSession extended with scopeKey/coreBundleLoader, per-scope routing for loadModuleWithListener/loadJsModule/destroyModule, codeCacheTag derived per scope - EnvAPI: global env state (_envState) pushed to each scope on bridge ready + broadcast on change (replaces single-queue pending replay) - FlexView: engineKey/scopeKey @Require, render binding uses scope's NativeRenderProvider - Callers: EntryAbility/Index/FlexCardView maintain ENGINE_KEY/SCOPE_KEY/ENGINE_GROUP_ID - Docs: docs/design/flexui-ohos-multi-runtime.md + learn API doc sync | 3 months ago | |
docs: add module design docs, update README and CLAUDE.md - Add detailed design docs for all 7 modules in docs/design/ - flexui-core: component system, backend, template engine, data binding - flexui-ascf: ASCF adapter, built-in components, build integration - flexui-shadow-sync: cross-backend shadow tree sync, message channel - toolkit: Rust→WASM compilers, webpack plugin, LSP analyzer, devtools - flexui-engine: native rendering engine (OHOS/Android), DOM, driver - ascf-agent: on-device AI agent, AgentRuntime, tools, FlexView cards - skills: AI-assisted development skills system - Update README: full project/module introduction, remove License section - Update CLAUDE.md: architecture concepts, module dev guidance, subsystem index - Unify ASCF naming: wxa→ascf, WXML→HXML, WXSS→CSS, WXS→HJS, wx:→has: - Replace AscfLite→FlexView in all docs - Remove specific package name references Co-Authored-By: Claude <noreply@anthropic.com> | 4 months ago | |
docs: Android impl summary + development pitfalls - docs/design/impl-android.md: full Android agent-runtime implementation doc Architecture map, data flows, technology decisions, phase summary, dev commands - docs/dev-pitfalls.md: append 11 Android-specific pitfalls (sections 12-22) AGP/Compose compatibility, Compose API diff, JVM naming clash, kotlinx.serialization replacement, ChatViewModel architecture, dependency ordering, AndroidView integration, package rename, Logger usage Co-Authored-By: Claude <noreply@anthropic.com> | 3 months ago | |
feat(engine): 禁止业务 JS 动态代码执行(eval/Function/构造器链) | 2 months ago | |
feat(engine): 调用来源归因 rootId 卡片标识透传 + 卡片级定时器策略 + 引擎内置事件模块 C++ 入口统一打标(event/timer/api) + rootId 透传(替代 instanceId,引擎不感知业务标识);卡片级定时器权限 setCardTimerPermission;FlexUIEngineModule 引擎级事件通道;配套 ETS 模块 setCallRootId/getCallOrigin 与文档更新。 | 2 months ago | |
docs(design): JS→native 调用管控四件套设计 - js-native-call-permission.md: 需求模型(api全支持/component管控+配置放行/定时器独立管控)与执行场景穷举清单 - js-native-call-origin.md: 宏任务边界归因模型——单 scope 下的来源管控主方案(闭包打标+callId反查, 每调用O(1)) - js-native-call-entry-guard.md: 执行入口禁止——jsModuleList 受保护化(闭包注册表+全局抛错代理) - js-native-call-timer-policy.md: 定时器独立管控——注册经 ETS 决策(TimerPolicyModule), rAF 默认豁免 Co-Authored-By: Claude <noreply@anthropic.com> | 2 months ago | |
feat(engine): named slots for custom components (collapsible-view demo) JS backend: implement setSlot/slotName, aggregate __slotMap on slot hosts, push via FlexUIBridge.updateNode (ComponentAdapter.slots drives it). C++: CustomTsView multi-slot containers, parse __slotMap, route children per slot name, whitelist __slotMap in UpdateCustomTsProps. ArkTS: pre-create NodeContent per slotDeclarations, inject slotContents, FRCollapsibleView struct renders ContentSlot per slot, onSlotMapParsed drives hasButtonSlot observable for re-render. Adds collapsibleview-demo card, Jest slot.test.ts, design docs, and build/check-env tooling updates. | 3 months ago | |
fix(flexui): 定时器管控失败语义——JS 异常统一捕获上报不外抛,新增框架异常处理规范 - func_arr.ts safeCallback / Event.js __loadInstance__ 移除 rethrow: 所有 JS 异常在框架兜底处捕获并上报(dispatchError → 日志 + globalOptions.onError), 受控失败(定时器权限拒绝)就地上报(cardLoadFailed → onLoadCompleted(-205)),不外抛 - CLAUDE.md 新增「JS 框架代码异常处理规范(强制)」永久规则 - 同步 buildcore 产物(native_source_code_jsh/v8.cc)与设计/学习文档 | 2 months ago | |
feat(engine): 禁止业务 JS 动态代码执行(eval/Function/构造器链) | 2 months ago | |
提交js管控能力 | 2 months ago | |
docs: add module design docs, update README and CLAUDE.md - Add detailed design docs for all 7 modules in docs/design/ - flexui-core: component system, backend, template engine, data binding - flexui-ascf: ASCF adapter, built-in components, build integration - flexui-shadow-sync: cross-backend shadow tree sync, message channel - toolkit: Rust→WASM compilers, webpack plugin, LSP analyzer, devtools - flexui-engine: native rendering engine (OHOS/Android), DOM, driver - ascf-agent: on-device AI agent, AgentRuntime, tools, FlexView cards - skills: AI-assisted development skills system - Update README: full project/module introduction, remove License section - Update CLAUDE.md: architecture concepts, module dev guidance, subsystem index - Unify ASCF naming: wxa→ascf, WXML→HXML, WXSS→CSS, WXS→HJS, wx:→has: - Replace AscfLite→FlexView in all docs - Remove specific package name references Co-Authored-By: Claude <noreply@anthropic.com> | 4 months ago | |
docs: add module design docs, update README and CLAUDE.md - Add detailed design docs for all 7 modules in docs/design/ - flexui-core: component system, backend, template engine, data binding - flexui-ascf: ASCF adapter, built-in components, build integration - flexui-shadow-sync: cross-backend shadow tree sync, message channel - toolkit: Rust→WASM compilers, webpack plugin, LSP analyzer, devtools - flexui-engine: native rendering engine (OHOS/Android), DOM, driver - ascf-agent: on-device AI agent, AgentRuntime, tools, FlexView cards - skills: AI-assisted development skills system - Update README: full project/module introduction, remove License section - Update CLAUDE.md: architecture concepts, module dev guidance, subsystem index - Unify ASCF naming: wxa→ascf, WXML→HXML, WXSS→CSS, WXS→HJS, wx:→has: - Replace AscfLite→FlexView in all docs - Remove specific package name references Co-Authored-By: Claude <noreply@anthropic.com> | 4 months ago |
| Files | Last commit | Last update |
|---|---|---|
| 4 months ago | ||
| 2 months ago | ||
| 4 months ago | ||
| 3 months ago | ||
| 2 months ago | ||
| 4 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 4 months ago | ||
| 2 months ago | ||
| 3 months ago | ||
| 3 months ago | ||
| 4 months ago | ||
| 3 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 3 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 4 months ago | ||
| 4 months ago |