| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
refactor: extract as_apis and android-modules from flexui-engine/modules/ Move modules/ohos/as_apis → as_apis/ and modules/android → android-modules/ to the repo root, alongside flexui-engine. These are independent build artifacts (HAR/AAR) not packaged by build-engine. - Update build configs: build-profile.json5, settings.gradle, cmake, oh-package.json5 - Update build scripts: pkg.sh, build-hap.sh, build-agent.sh - Add auto-clean in build-hap/build-agent to handle shared as_apis dependency - Fix AscfAIModuleModule.call() return type to match FlexUINativeModuleBase - Update docs paths Co-Authored-By: Claude <noreply@anthropic.com> | 1 个月前 | |
fix(devtools): 修复 JSH/JSVM inspector CDP 管道,Sources 面板可显示 JS 源码 三个叠加问题全部修复并实机验证: 1. JSVM 消息不派发:inspector 消息经 V8 RequestInterrupt 投递,仅 JS 代码执行时 触发(jsengine 源码确认)。新增 pump 循环:20ms 周期在 JS 线程调用空 JS 函数 (pump_fn_) 驱动派发;仅在收到前端消息(活跃 CDP 会话)后运行,避免空转。 2. scriptParsed 前端收不到:根因是 WaitForDebugger 阻塞 + 时序依赖。去掉 WaitForDebugger,OpenInspector 在 bundle 编译前开启,V8 原生在 Debugger.enable 时重放已编译脚本的 scriptParsed(实测验证:后连接收到 flexui_jsfwk.js 等)。 3. scriptParsed url 为空:设备 JSVM (v8 11.4) 只认 //# sourceURL= 注释, OH_JSVM_CompileScriptWithOrigin 的 resourceName 不生效。JSHCtx::RunScript 在 调试模式注入 sourceURL 前缀(SetInspectorEnabled 门控,不影响生产)。 附带:JSHDebugConnection 移除 -101/Resume 握手,Send 加锁串行化; debug_conn_ 跨线程访问加 mutex;jsh_debug_connection/jsh_get_url_connection/ web_socket_channel/js_driver_utils 补诊断日志;bugfix 文档更新为最终方案。 | 1 个月前 | |
fix(engine): multi-card DOM root routing — SceneBuilder ops carry root_id OHOS 多卡片共享单个 JSVM/Scope/Context,之前 SceneBuilder DOM 命令不带 root 参数、一律打到 scope 最后 attach 的 root,导致卡片间 DOM 写回串扰(第二张 卡片起无法渲染)。 C++ 侧: - SceneBuilder 增加 root_node_ 绑定,constructor 接收可选 root_id,从 RootNode::PersistentMap() 解析;7 个方法回调 + CreateNode/CreateDomInfo/ HandleJsValue 链统一走 ResolveSceneBuilderTarget(优先绑定 root,fallback scope 当前 root,向后兼容 Android/旧调用) - UIManagerModule::CallUIFunction 支持可选 root_id JS 侧(flexui-backend): - 6 个入队函数(create/update/delete/move/addEvent/removeEvent)加可选 rootId 参数,NativeBackendElement 全部调用点显式传 _context.rootViewId——事件驱动/ 异步渲染不再依赖全局 activeRoot 状态(修复 activeRoot 被污染导致 op 错标) - flushQueue 按 rootId 分组,每组一个绑定 root 的 SceneBuilder - reserveRootId 单值改为 Set(多卡 root id 全保留) - 新增 multi-root.test.ts(含 activeRoot 污染回归用例);id-collision 测试适配 Set 语义 其他: - SkillActivator 移除 skill-bootstrap.js 冗余调用(职责已由 has_apis/agent_api 覆盖) - build.sh 加 WSL bash 拦截;dev.sh 修 hdc install 双路径 bug(复用相对路径方案) - ascf-toolkit package.json 对齐 terser-webpack-plugin 版本(修 npm EOVERRIDE) - CLAUDE.md 补充 C++ 强制验证流程;docs/bugfix 归档本次修复 | 1 个月前 | |
feat(agent): card follow-up message → API execution + AgentLoop continuation - modelContext.ts: getContext() fallback to globalThis.__ascfInstanceId__; InstanceEventBus.addListener auto-registers unknown instances (fixes timing: component created() runs before native onInstanceCreate) - AscfAIModule.handleSendFollowUpMessage: parse JSON array content, resolve skillName from instanceId → InstanceManager → SkillDiscovery, execute api/call blocks directly via ToolRegistry (mcp__skill__api) - AgentRuntime.run(): accept preExecutedToolResults param, inject as tool messages before AgentLoop starts, trigger card rendering - AgentChatView.handleCardFollowUp: receive follow-up via static sOnFollowUp callback (survives @Prop deep-copy), start agent run with userText as user msg + api results as pre-executed tools - harmony-entry-template: register component adapters before creating NativeBackendContext (tap→click mapping in view-adapter) - transforms/template.js: remove bind:/catch: → has: conversion (WASM compiler supports bind:tap natively, has:tap is structural only) - build.sh: add do_build_ascf_demo + do_sync_ascf_rawfile steps to dev-agent flow, add do_build_jsfwk command - debugMockEnabled: false by default Co-Authored-By: Claude <noreply@anthropic.com> | 2 个月前 | |
feat(android): card rendering pipeline, skill management, debug tools Core fixes: - AscfAIModuleModule: fix @HippyMethod params HippyArray→HippyMap (JS sends objects) - McpConfigLoader: inject _componentPath from mcp.json entry metadata - SkillActivator: pass baseBundlePath for correct .pack.js asset paths - FlexUIView: use minContainerHeightPx (300dp) as root view initial height to prevent Yoga CalculateLayout(0,0) collapse - AscfAIModule.resolveSkillName: use InstanceInfo.skillName for accurate match (was broken with multiple skills — dir-name matching doesn't work) Skill session management: - AgentRuntime: skillFilter + disabledSkills to lock/filter tool definitions - ChatViewModel: track active skill, pass conversation history to LLM - ChatScreen: skills management dialog (enable/disable, dynamic toggle) Debug tooling: - ChatScreen: LLM message viewer dialog (JSON formatted, scrollable) - FlexUIEngine: enhanced exception handler logging (cause chain) - HippyBridgeManagerImpl/Impl: diagnostic logging for callFunction flow Card rendering: - FlexCardView: flushEvents on onViewReady (matching OHOS), accept repeat-load - AgentRuntime.run(): inject pre-executed tool results into conversation - MainActivity: baseBundlePath=ascf-ai-demo config, cleanup ConsoleModule test Also: - SystemPromptBuilder: full OHOS 8-section system prompt - NativeBackendContext.ts: fix extra closing brace - ascfCallbacks.ts: add diagnostic logging - entry.js: jsModuleList creation + __ascfCallbacks registration - build.gradle: remove afterEvaluate asset deletion - Build scripts: fix asset paths res/ → src/main/assets/ - docs: update dev-pitfalls.md (#22-29), add bugfix docs Co-Authored-By: Claude <noreply@anthropic.com> | 2 个月前 | |
refactor: extract as_apis and android-modules from flexui-engine/modules/ Move modules/ohos/as_apis → as_apis/ and modules/android → android-modules/ to the repo root, alongside flexui-engine. These are independent build artifacts (HAR/AAR) not packaged by build-engine. - Update build configs: build-profile.json5, settings.gradle, cmake, oh-package.json5 - Update build scripts: pkg.sh, build-hap.sh, build-agent.sh - Add auto-clean in build-hap/build-agent to handle shared as_apis dependency - Fix AscfAIModuleModule.call() return type to match FlexUINativeModuleBase - Update docs paths Co-Authored-By: Claude <noreply@anthropic.com> | 1 个月前 | |
fix(android): storage API, card rendering, and LLM tool_call flow fixes - StorageAPI: lazy-init SharedPreferences, JSON serialize/deserialize, raw value return for sync - CardRenderer: jsonToAny() preserves nested JSON types (Map/List) - AgentRuntime: convertJsonValue(), extractIsError(), assistant tool_calls message for pre-executed results - ChatViewModel: cancel previous run to prevent duplicate tool calls, pre-executed results in debug - ChatMessageList: Column+verticalScroll instead of LazyColumn to prevent card recycling - FlexCardView: stable instanceId key instead of hashCode - ASAPIsModule: lazy-init StorageAPI.init(context) on first call Co-Authored-By: Claude <noreply@anthropic.com> | 2 个月前 | |
fix(android): complex demo blank screen — ScrollView multi-child + Taitank % + batch splitting Root cause (3-layer): 1. Taitank drops percentage strings ('100%') → all nodes width=0 2. ScrollView multi-child → NestedScrollView IllegalStateException 3. triggerRender sync flush splits CreateDomNodes batch → parents not found → 288/290 nodes SKIPped → white/blank screen Fixes: - Template: wrap ScrollView children in a <view> (React pattern) - JS: existingIsView check prevents duplicate dynamic wrapper - JS: ROOT-DIM-FIX resolves root % to pixel values (getWindowWidth) - JS: recreate-on-flush with _createAttempts guards — retries creates skipped by batch splitting, no duplicate on first flush (SIGSEGV safe) - C++/Java: diagnostic logging in Taitank/DOM/RenderManager/NativeRenderer Verified: 0 ScrollView exceptions, 292/292 nodes created, all content visible. Safe for OHOS: _createAttempts>0 guard, Yoga unaffected by Taitank changes. Co-Authored-By: Claude <noreply@anthropic.com> | 2 个月前 | |
fix: use @ohos.zlib.decompressFile via temp files for ZIP deflate entries HarmonyOS zlib only provides file-to-file decompressFile API. Write compressed bytes to temp file, decompress to output temp, read result, cleanup. Keep stored (method 0) path for zero-cost extraction. Co-Authored-By: Claude <noreply@anthropic.com> | 2 个月前 | |
fix: use @ohos.zlib.decompressFile via temp files for ZIP deflate entries HarmonyOS zlib only provides file-to-file decompressFile API. Write compressed bytes to temp file, decompress to output temp, read result, cleanup. Keep stored (method 0) path for zero-cost extraction. Co-Authored-By: Claude <noreply@anthropic.com> | 2 个月前 | |
fix(native-backend): has:if replaceChild stale refId causes element reordering When multiple consecutive has:if virtual nodes are replaced in the same update batch, _findNotToSkipRef returns a refId pointing to a material child of a sibling virtual node. If that sibling is also replaced in the same batch, C++ SceneBuilder processes DELETEs before CREATEs and the refId becomes stale — new nodes fall back to append-at-end, breaking template source order. Root cause: C++ HippyBridge interprets empty refInfo as append-at-end (line 70), so nativeIdx alone cannot position nodes. _findNotToSkipRef scans FORWARD, skipping all virtual nodes and landing on a node inside the deletion zone. Fix: - replaceChild: use backward scan (_findPrevStableRef) to find a stable sibling BEFORE oldChild — guaranteed outside the deletion zone - New _insertAfter method: positions with RELATIVE_AFTER refInfo - Virtual guard in _insertAfter to catch misuse - Fixed text node ordering in _insertAfter when after is not text Diagnostic logging added to element.ts and proc_gen_wrapper.ts via ConsoleModule.Log (routes to hilog, survives Hermes CDP-only console). Documented in docs/bugfix/has-if-reorder-bug.md. Co-Authored-By: Claude <noreply@anthropic.com> | 2 个月前 | |
doc: update README with development workflow (ASCF build, skills pkg, logs) + add drink-skill components - README.md: add development workflow section covering: - build-ascf-demo: ASCF AI demo compilation - pkg-skills.sh: skills HSP packaging and CDN deployment - logs/status: log filtering and troubleshooting commands - Add drink-skill demo with full component set (address-card, drink-detail-card, drink-not-found-card, order-confirm-card, pay-success-card, recommended-drinks, store-status-card) - Add pkg-skills.sh: rawfile → skills.hsp packaging + CDN deployment - Add hilog-debug SKILL.md for log debugging workflow - Add docs/bugfix/vw-screen-reference-crash.md - scripts/logs.sh: improved default filter patterns - .gitignore: remove redundant build/ entries Co-Authored-By: Claude <noreply@anthropic.com> | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |