Skip to content

feat: add native Blocks, Devframe MCP and deterministic E2E - #29

Merged
daguanren21 merged 9 commits into
mainfrom
feat/native-blocks-devframe-e2e
Oct 17, 2026
Merged

daguanren21 merged 9 commits into
mainfrom
feat/native-blocks-devframe-e2e

Conversation

@daguanren21

@daguanren21 daguanren21 commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

改动

新增 Registry-first 的可编辑原生 Blocks、Agent 组合、开发侧 Devframe MCP 与确定性 E2E。Registry 保持 renderer 的唯一作者源,应用继续拥有网络、上传、审批、持久化和执行政策。

  • 扩展 Agent Chat、Assistant Sheet、Source Chat、Activity、Model Compare、附件输入与传输,以及零售工具、应用工作流、Marketing、Operations、Data Workspace Blocks;各项目标以 manifest 为准。
  • 中立类型/行为与 H5、Wevu 原生 renderer 分离,现有生成器同步安装源、包投影与 inventory,保留 Agent Chat 的最小 conversation 依赖闭包。
  • 私有 apps/e2e 使用锁定依赖、无模型配置、retries: 0、独立证据目录和必需 test-target 验收;迁移已完成等价验证的三组浏览器 runner,原生旧入口保留至完整宿主 parity 验收。
  • 私有 packages/devtools 提供有权限边界的 Registry/source/plan 和 preview/check/E2E 工具,复用 CLI 与真实执行结果,不进入产品运行依赖。
  • 修复原生属性缺省、精确事件名/载荷、地区确认与取消、Markdown 运行时可移植性、编译分包引用及民用日期处理等集成问题。
  • Data Grid 按当前列权限检查实际保存提案,拒绝禁用、只读、移除字段与 no-op;H5 Assistant Sheet 保留入口实例,由 Drawer 恢复关闭后的焦点。
  • 文档的小程序区域固定微信目标,移除 profile 下拉和实验平台提示;底层 profile admission 保持 manifest 所定义的边界。同步双语文档与变更意图。

原生运行时修复

26d00f0 修复此前 CI 中的全部五项原生失败:Application 的表单默认提交一项,以及 Chat/Model Compare 的富文本观察四项。

补丁位于 patches/@weapp-vite__miniprogram-automator@1.3.0.patch,只作用于锁定的开发测试依赖。rich-text 数组和 HTML 转为模拟器渲染树中的文本与允许节点,保留实体解码、内容更新和字面内容;不执行 WXML/WXS 或不支持的节点/事件。原生提交按钮通过模拟器默认动作派发表单事件,收集具名字段并遵守自定义 form behaviors。

独立审查发现并修复了两个边界:null/undefined Boolean 绑定不能当作裸属性;复用按钮句柄时必须从当前渲染树读取字段值和禁用状态。两项均保留失败前/修复后回归。提交处理器错误正常传播,缺失的目标拒绝旧句柄操作。

原五项失败用例、必需 test-target 清单和业务驱动没有放宽或跳过;没有直接调用页面提交方法,也没有用业务状态替代渲染文本。

验证

  • 远端 CI #38884608861 正在验证提交 26d00f0;最终结论以该次 Check 为准。
  • 最终本地原生 E2E:91/91,run d775746a-fae0-436b-a0b3-a5fcced64f94。
  • 最终本地 H5/glass-easel Web E2E:74/74,run 84089b37-6040-4423-be46-6132fa24bd18。
  • 两个完整 suite 均为零失败、零 flaky、零选中跳过,串行运行。
  • 真实 Launcher 回归 4/4;独立最终原生探针 7/7,覆盖字面富文本、表单归属、旧句柄更新/移除及同步/异步提交异常。独立代码审查接受修复。
  • E2E 类型检查及正常 commit/push hooks 通过。Jev 仅作为辅助质量信号,不作验收证据。

一次中间 Web 运行因验证命令隐式触发 prepare,重建 Markdown runtime 时产生 HMR 404,以 73/74、非零退出保留原报告。此后使用直接 Node 验证并隔离运行时写入,最终完整 Web suite 达到上述 74/74。

剩余宿主边界

  • Headless、编译产物和浏览器预览不代表微信设备认证。原生完整宿主 parity、软键盘、安全区、权限与上传仍需授权 DevTools endpoint、有效本地 AppID 和设备验收。
  • SDK 现有 HTML 模式解析器会折叠单个 WXML 中的字面嵌套 form;本次验证覆盖渲染树中实际保留的组件内 form 归属,不声明字面嵌套 form 支持。
  • 语音仍需 STT/TTS 服务、认证与保留契约;Flow/Gantt/富文本编辑/白板/拖拽/虚拟化仍受原生宿主和性能 Gate 约束。
  • 不提供生产业务后端或应用授权;附件 demo 的有界本地存储不代替生产上传服务。未执行合并、npm 发布或部署,不改变实验 profile 的认证级别。

回退与参考

回退时同步处理 canonical 源、生成投影与 inventory、安装/工具依赖和命令迁移,不只回退生成文件。无数据库迁移或生产数据修改。

  • 实施与验收记录:docs/plans/varo-native-blocks-devframe-e2e.md
  • 上游 plain-slot 问题:weapp-vite#1172

@changeset-bot

changeset-bot Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 26d00f0

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 577 files, which is 477 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: b36e6564-c67b-441c-88a2-072effc094d6
📥 Commits

Reviewing files that changed from the base of the PR and between 7afa07e and 26d00f0.

⛔ Files ignored due to path filters: 3
  • apps/playground-h5/src/features/marketing-source-flow.svg is excluded by !**/*.svg
  • apps/playground-weapp/src/blocks-lab/marketing/marketing-source-flow.svg is excluded by !**/*.svg
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing: 577
  • .changeset/thirty-papers-knock.md
  • .github/workflows/ci.yml
  • .gitignore
  • README.md
  • README.zh-CN.md
  • RELEASING.md
  • apps/docs/.vitepress/config.ts
  • apps/docs/ai/agent-activity-block.md
  • apps/docs/ai/agent-attachment-composer.md
  • apps/docs/ai/agent-chat.md
  • apps/docs/ai/agent-model-compare.md
  • apps/docs/ai/agent-source-chat.md
  • apps/docs/ai/agent-workspace.md
  • apps/docs/ai/citations.md
  • apps/docs/blocks/application-blocks.md
  • apps/docs/blocks/data-workspace.md
  • apps/docs/blocks/marketing-blocks.md
  • apps/docs/blocks/mobile-operations.md
  • apps/docs/blocks/retail-tools.md
  • apps/docs/components/dialog.md
  • apps/docs/components/drawer.md
  • apps/docs/components/menu.md
  • apps/docs/en/ai/agent-activity-block.md
  • apps/docs/en/ai/agent-attachment-composer.md
  • apps/docs/en/ai/agent-chat.md
  • apps/docs/en/ai/agent-model-compare.md
  • apps/docs/en/ai/agent-source-chat.md
  • apps/docs/en/ai/agent-workspace.md
  • apps/docs/en/ai/citations.md
  • apps/docs/en/blocks/application-blocks.md
  • apps/docs/en/blocks/data-workspace.md
  • apps/docs/en/blocks/marketing-blocks.md
  • apps/docs/en/blocks/mobile-operations.md
  • apps/docs/en/blocks/retail-tools.md
  • apps/docs/en/components/dialog.md
  • apps/docs/en/components/drawer.md
  • apps/docs/en/components/menu.md
  • apps/docs/en/guide/installation.md
  • apps/docs/guide/installation.md
  • apps/docs/package.json
  • apps/docs/scripts/smoke-native-preview.mjs
  • apps/docs/src/agent-component-catalog.ts
  • apps/docs/src/components/AgentComponentDemo.test.ts
  • apps/docs/src/components/AgentComponentDemo.vue
  • apps/docs/src/components/NativeSourcePreview.vue
  • apps/docs/src/components/agent-ui/AgentAttachmentComposer.vue
  • apps/docs/src/components/agent-ui/AgentModelSelector.vue
  • apps/docs/src/components/agent-ui/advanced-types.ts
  • apps/docs/src/components/agent-ui/advanced.ts
  • apps/docs/src/components/agent-ui/agent-attachment-composer.types.ts
  • apps/docs/src/components/agent-ui/agent-model-selector.types.ts
  • apps/docs/src/components/agent-ui/conversation.ts
  • apps/docs/src/components/agent-ui/index.ts
  • apps/docs/src/components/agent-ui/workspace.ts
  • apps/docs/src/components/block-gallery.ts
  • apps/docs/src/components/blocks/agent-chat.types.ts
  • apps/docs/src/components/blocks/agent-chat.vue
  • apps/docs/src/components/ui/button.ts
  • apps/docs/src/components/ui/icon.ts
  • apps/docs/src/components/ui/select.ts
  • apps/docs/src/lib/attachment-transfer/attachment-transfer.h5.ts
  • apps/docs/src/lib/attachment-transfer/attachment-transfer.ts
  • apps/docs/src/lib/varo-primitives.ts
  • apps/docs/src/styles/varo-button.css
  • apps/docs/src/styles/varo-icon.css
  • apps/docs/src/styles/varo-select.css
  • apps/e2e/e2e.config.ts
  • apps/e2e/engines/web.ts
  • apps/e2e/engines/wechat/driver.ts
  • apps/e2e/engines/wechat/index.ts
  • apps/e2e/engines/wechat/semantics.ts
  • apps/e2e/package.json
  • apps/e2e/required-pairs.json
  • apps/e2e/scripts/report.mjs
  • apps/e2e/scripts/run.mjs
  • apps/e2e/tests/h5/activity.e2e.ts
  • apps/e2e/tests/h5/application-blocks.e2e.ts
  • apps/e2e/tests/h5/attachments.e2e.ts
  • apps/e2e/tests/h5/blocks.e2e.ts
  • apps/e2e/tests/h5/chat-blocks.e2e.ts
  • apps/e2e/tests/h5/data-workspace.e2e.ts
  • apps/e2e/tests/h5/marketing-blocks.e2e.ts
  • apps/e2e/tests/h5/model-compare.e2e.ts
  • apps/e2e/tests/h5/operations.e2e.ts
  • apps/e2e/tests/h5/source-chat.e2e.ts
  • apps/e2e/tests/h5/workspace.e2e.ts
  • apps/e2e/tests/runner/fixtures/e2e.config.ts
  • apps/e2e/tests/runner/fixtures/flow.e2e.ts
  • apps/e2e/tests/runner/fixtures/site.mjs
  • apps/e2e/tests/runner/native-runtime.test.ts
  • apps/e2e/tests/runner/native-semantics.test.ts
  • apps/e2e/tests/runner/report-gate.test.ts
  • apps/e2e/tests/weapp-native/activity.e2e.ts
  • apps/e2e/tests/weapp-native/application-blocks.e2e.ts
  • apps/e2e/tests/weapp-native/attachments.e2e.ts
  • apps/e2e/tests/weapp-native/blocks.e2e.ts
  • apps/e2e/tests/weapp-native/capabilities.e2e.ts
  • apps/e2e/tests/weapp-native/capture.e2e.ts
  • apps/e2e/tests/weapp-native/chat-blocks.e2e.ts
  • apps/e2e/tests/weapp-native/chat-prompt.e2e.ts
  • apps/e2e/tests/weapp-native/data-workspace.e2e.ts
  • apps/e2e/tests/weapp-native/fixtures.ts
  • apps/e2e/tests/weapp-native/marketing-blocks.e2e.ts
  • apps/e2e/tests/weapp-native/model-compare.e2e.ts
  • apps/e2e/tests/weapp-native/operations.e2e.ts
  • apps/e2e/tests/weapp-native/retail-tools.e2e.ts
  • apps/e2e/tests/weapp-native/retail.e2e.ts
  • apps/e2e/tests/weapp-native/runtime.e2e.ts
  • apps/e2e/tests/weapp-native/source-chat.e2e.ts
  • apps/e2e/tests/weapp-native/workspace.e2e.ts
  • apps/e2e/tests/weapp-preview/motion-controls.e2e.ts
  • apps/e2e/tests/weapp-preview/preview.e2e.ts
  • apps/e2e/tests/weapp-preview/pull-refresh.e2e.ts
  • apps/e2e/tests/weapp-preview/support.ts
  • apps/e2e/tsconfig.json
  • apps/playground-h5/package.json
  • apps/playground-h5/scripts/attachment-demo.ts
  • apps/playground-h5/src/App.vue
  • apps/playground-h5/src/agent-ui.test.ts
  • apps/playground-h5/src/agent-workspace.test.ts
  • apps/playground-h5/src/blocks.test.ts
  • apps/playground-h5/src/chat-blocks.test.ts
  • apps/playground-h5/src/civil-date.test.ts
  • apps/playground-h5/src/components/agent-ui/AgentAttachmentComposer.vue
  • apps/playground-h5/src/components/agent-ui/AgentModelSelector.vue
  • apps/playground-h5/src/components/agent-ui/advanced-types.ts
  • apps/playground-h5/src/components/agent-ui/advanced.ts
  • apps/playground-h5/src/components/agent-ui/agent-attachment-composer.types.ts
  • apps/playground-h5/src/components/agent-ui/agent-model-selector.types.ts
  • apps/playground-h5/src/components/agent-ui/conversation.ts
  • apps/playground-h5/src/components/agent-ui/index.ts
  • apps/playground-h5/src/components/agent-ui/workspace.ts
  • apps/playground-h5/src/components/blocks/agent-activity-actions.ts
  • apps/playground-h5/src/components/blocks/agent-activity.vue
  • apps/playground-h5/src/components/blocks/agent-assistant-sheet.types.ts
  • apps/playground-h5/src/components/blocks/agent-assistant-sheet.vue
  • apps/playground-h5/src/components/blocks/agent-chat.types.ts
  • apps/playground-h5/src/components/blocks/agent-chat.vue
  • apps/playground-h5/src/components/blocks/agent-model-compare-actions.ts
  • apps/playground-h5/src/components/blocks/agent-model-compare.types.ts
  • apps/playground-h5/src/components/blocks/agent-model-compare.vue
  • apps/playground-h5/src/components/blocks/agent-source-chat.types.ts
  • apps/playground-h5/src/components/blocks/agent-source-chat.vue
  • apps/playground-h5/src/components/blocks/agent-workspace.vue
  • apps/playground-h5/src/components/blocks/appointment-booking-actions.ts
  • apps/playground-h5/src/components/blocks/appointment-booking.vue
  • apps/playground-h5/src/components/blocks/data-grid-actions.ts
  • apps/playground-h5/src/components/blocks/data-grid.vue
  • apps/playground-h5/src/components/blocks/marketing-articles.types.ts
  • apps/playground-h5/src/components/blocks/marketing-articles.vue
  • apps/playground-h5/src/components/blocks/marketing-contact.types.ts
  • apps/playground-h5/src/components/blocks/marketing-contact.vue
  • apps/playground-h5/src/components/blocks/marketing-faq.types.ts
  • apps/playground-h5/src/components/blocks/marketing-faq.vue
  • apps/playground-h5/src/components/blocks/marketing-hero.types.ts
  • apps/playground-h5/src/components/blocks/marketing-hero.vue
  • apps/playground-h5/src/components/blocks/marketing-pricing.types.ts
  • apps/playground-h5/src/components/blocks/marketing-pricing.vue
  • apps/playground-h5/src/components/blocks/marketing-process.types.ts
  • apps/playground-h5/src/components/blocks/marketing-process.vue
  • apps/playground-h5/src/components/blocks/metrics-chart-actions.ts
  • apps/playground-h5/src/components/blocks/metrics-chart.vue
  • apps/playground-h5/src/components/blocks/mobile-operations-actions.ts
  • apps/playground-h5/src/components/blocks/mobile-operations-detail.vue
  • apps/playground-h5/src/components/blocks/mobile-operations.vue
  • apps/playground-h5/src/components/blocks/onboarding-flow-actions.ts
  • apps/playground-h5/src/components/blocks/onboarding-flow.vue
  • apps/playground-h5/src/components/blocks/people-manager-actions.ts
  • apps/playground-h5/src/components/blocks/people-manager.vue
  • apps/playground-h5/src/components/blocks/schedule-calendar-actions.ts
  • apps/playground-h5/src/components/blocks/schedule-calendar.vue
  • apps/playground-h5/src/components/blocks/settings-panel-actions.ts
  • apps/playground-h5/src/components/blocks/settings-panel.vue
  • apps/playground-h5/src/components/blocks/status-timeline-actions.ts
  • apps/playground-h5/src/components/blocks/status-timeline.vue
  • apps/playground-h5/src/components/blocks/step-form-actions.ts
  • apps/playground-h5/src/components/blocks/step-form.vue
  • apps/playground-h5/src/components/blocks/summary-dashboard-actions.ts
  • apps/playground-h5/src/components/blocks/summary-dashboard.vue
  • apps/playground-h5/src/components/blocks/task-board-actions.ts
  • apps/playground-h5/src/components/blocks/task-board.vue
  • apps/playground-h5/src/components/ui/date-utils.ts
  • apps/playground-h5/src/components/ui/drawer.ts
  • apps/playground-h5/src/data-grid.test.ts
  • apps/playground-h5/src/features/ActivityDemo.vue
  • apps/playground-h5/src/features/ApplicationBlocksDemo.vue
  • apps/playground-h5/src/features/AttachmentDemo.vue
  • apps/playground-h5/src/features/ChatBlocksDemo.vue
  • apps/playground-h5/src/features/DataWorkspaceDemo.vue
  • apps/playground-h5/src/features/MarketingBlocksDemo.vue
  • apps/playground-h5/src/features/ModelCompareDemo.vue
  • apps/playground-h5/src/features/OperationsDemo.vue
  • apps/playground-h5/src/features/SourceChatDemo.vue
  • apps/playground-h5/src/features/WorkspaceDemo.vue
  • apps/playground-h5/src/features/useAgentDemo.ts
  • apps/playground-h5/src/features/useApplicationBlocksDemo.ts
  • apps/playground-h5/src/features/useAttachmentDemo.ts
  • apps/playground-h5/src/features/useChatBlocksDemo.ts
  • apps/playground-h5/src/features/useDataWorkspaceDemo.ts
  • apps/playground-h5/src/features/useMarketingBlocksDemo.ts
  • apps/playground-h5/src/features/useModelCompareDemo.ts
  • apps/playground-h5/src/features/useOperationsDemo.ts
  • apps/playground-h5/src/features/useSourceChatDemo.ts
  • apps/playground-h5/src/lib/attachment-transfer/attachment-transfer.h5.ts
  • apps/playground-h5/src/lib/attachment-transfer/attachment-transfer.ts
  • apps/playground-h5/src/main.ts
  • apps/playground-h5/src/styles/varo-card.css
  • apps/playground-h5/vite.config.ts
  • apps/playground-weapp-preview/package.json
  • apps/playground-weapp-preview/scripts/smoke-motion-controls.mjs
  • apps/playground-weapp-preview/scripts/smoke-preview.mjs
  • apps/playground-weapp-preview/scripts/smoke-pull-refresh.mjs
  • apps/playground-weapp/CHANGELOG.md
  • apps/playground-weapp/app.manifest.json
  • apps/playground-weapp/contracts/artifacts.spec.ts
  • apps/playground-weapp/e2e/dialog.spec.ts
  • apps/playground-weapp/package.json
  • apps/playground-weapp/scripts/verify-devtools-project.mjs
  • apps/playground-weapp/src/agent-mall.test.ts
  • apps/playground-weapp/src/agent-workspace.test.ts
  • apps/playground-weapp/src/app.vue
  • apps/playground-weapp/src/blocks-lab/application/index.vue
  • apps/playground-weapp/src/blocks-lab/application/use-application-demo.ts
  • apps/playground-weapp/src/blocks-lab/attachments/index.vue
  • apps/playground-weapp/src/blocks-lab/attachments/useAttachmentDemo.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/agent-model-compare-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/agent-model-compare.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/agent-model-compare.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/appointment-booking-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/appointment-booking.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/data-grid-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/data-grid.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-articles.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-articles.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-contact.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-contact.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-faq.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-faq.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-hero.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-hero.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-pricing.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-pricing.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-process.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/marketing-process.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/metrics-chart-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/metrics-chart.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/mobile-operations-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/mobile-operations-detail.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/mobile-operations.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/onboarding-flow-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/onboarding-flow.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/people-manager-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/people-manager.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-comparison.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-comparison.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-coupons.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-coupons.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-filters.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-filters.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-receipt.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-receipt.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-reviews.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-reviews.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-wishlist.types.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/retail-wishlist.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/schedule-calendar-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/schedule-calendar.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/settings-panel-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/settings-panel.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/status-timeline-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/status-timeline.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/step-form-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/step-form.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/summary-dashboard-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/summary-dashboard.vue
  • apps/playground-weapp/src/blocks-lab/components/blocks/task-board-actions.ts
  • apps/playground-weapp/src/blocks-lab/components/blocks/task-board.vue
  • apps/playground-weapp/src/blocks-lab/data-workspace/index.vue
  • apps/playground-weapp/src/blocks-lab/data-workspace/use-data-workspace-demo.ts
  • apps/playground-weapp/src/blocks-lab/marketing/index.vue
  • apps/playground-weapp/src/blocks-lab/marketing/useMarketingBlocksDemo.ts
  • apps/playground-weapp/src/blocks-lab/model-compare/index.vue
  • apps/playground-weapp/src/blocks-lab/model-compare/useModelCompareDemo.ts
  • apps/playground-weapp/src/blocks-lab/operations/index.vue
  • apps/playground-weapp/src/blocks-lab/operations/use-operations-demo.ts
  • apps/playground-weapp/src/blocks-lab/retail/ComparisonDemo.vue
  • apps/playground-weapp/src/blocks-lab/retail/CouponsDemo.vue
  • apps/playground-weapp/src/blocks-lab/retail/FiltersDemo.vue
  • apps/playground-weapp/src/blocks-lab/retail/ReceiptDemo.vue
  • apps/playground-weapp/src/blocks-lab/retail/RetailDemoStates.vue
  • apps/playground-weapp/src/blocks-lab/retail/ReviewsDemo.vue
  • apps/playground-weapp/src/blocks-lab/retail/WishlistDemo.vue
  • apps/playground-weapp/src/blocks-lab/retail/index.vue
  • apps/playground-weapp/src/blocks-lab/retail/retail-demo-data.ts
  • apps/playground-weapp/src/blocks.test.ts
  • apps/playground-weapp/src/components/agent-ui/AgentActivity.vue
  • apps/playground-weapp/src/components/agent-ui/AgentApproval.vue
  • apps/playground-weapp/src/components/agent-ui/AgentAttachmentComposer.vue
  • apps/playground-weapp/src/components/agent-ui/AgentCitations.vue
  • apps/playground-weapp/src/components/agent-ui/AgentComposer.vue
  • apps/playground-weapp/src/components/agent-ui/AgentEventRenderer.vue
  • apps/playground-weapp/src/components/agent-ui/AgentModelSelector.vue
  • apps/playground-weapp/src/components/agent-ui/AgentRadioGroup.vue
  • apps/playground-weapp/src/components/agent-ui/AgentRetrievalProgress.vue
  • apps/playground-weapp/src/components/agent-ui/AgentSourceReceipt.vue
  • apps/playground-weapp/src/components/agent-ui/AgentTaskRunner.vue
  • apps/playground-weapp/src/components/agent-ui/AgentThreadVersions.vue
  • apps/playground-weapp/src/components/agent-ui/advanced-types.ts
  • apps/playground-weapp/src/components/agent-ui/agent-attachment-composer.types.ts
  • apps/playground-weapp/src/components/agent-ui/agent-model-selector.types.ts
  • apps/playground-weapp/src/components/agent-ui/index.ts
  • apps/playground-weapp/src/components/blocks/agent-activity-actions.ts
  • apps/playground-weapp/src/components/blocks/agent-activity.vue
  • apps/playground-weapp/src/components/blocks/agent-assistant-sheet.types.ts
  • apps/playground-weapp/src/components/blocks/agent-assistant-sheet.vue
  • apps/playground-weapp/src/components/blocks/agent-chat.types.ts
  • apps/playground-weapp/src/components/blocks/agent-chat.vue
  • apps/playground-weapp/src/components/blocks/agent-source-chat.types.ts
  • apps/playground-weapp/src/components/blocks/agent-source-chat.vue
  • apps/playground-weapp/src/components/blocks/agent-workspace.vue
  • apps/playground-weapp/src/components/blocks/product-list-item.vue
  • apps/playground-weapp/src/components/demos/FormRegionMapDemo.vue
  • apps/playground-weapp/src/components/mall/MallAgentPanel.vue
  • apps/playground-weapp/src/components/ui/avatar.vue
  • apps/playground-weapp/src/components/ui/date-utils.ts
  • apps/playground-weapp/src/components/ui/select.vue
  • apps/playground-weapp/src/components/ui/v-button.vue
  • apps/playground-weapp/src/components/ui/v-drawer.vue
  • apps/playground-weapp/src/components/ui/v-input.vue
  • apps/playground-weapp/src/components/ui/v-region-picker.vue
  • apps/playground-weapp/src/components/ui/v-switch.vue
  • apps/playground-weapp/src/components/ui/v-theme-provider.vue
  • apps/playground-weapp/src/lib/attachment-transfer/attachment-transfer.ts
  • apps/playground-weapp/src/lib/attachment-transfer/attachment-transfer.weapp.ts
  • apps/playground-weapp/src/pages/agent-activity-demo/index.vue
  • apps/playground-weapp/src/pages/agent-activity-demo/useActivityDemo.ts
  • apps/playground-weapp/src/pages/agent-workspace-demo/index.vue
  • apps/playground-weapp/src/pages/chat-blocks/index.vue
  • apps/playground-weapp/src/pages/chat-blocks/useChatBlocksDemo.ts
  • apps/playground-weapp/src/pages/chat-prompt/index.vue
  • apps/playground-weapp/src/pages/index/index.vue
  • apps/playground-weapp/src/pages/source-chat/index.vue
  • apps/playground-weapp/src/pages/source-chat/useSourceChatDemo.ts
  • apps/playground-weapp/src/pages/web-preview-agent/index.vue
  • apps/playground-weapp/src/registry-expanded.test.ts
  • apps/playground-weapp/src/retail-showcase/index/index.vue
  • apps/playground-weapp/src/styles/varo-card.css
  • apps/playground-weapp/src/styles/varo-region-picker.css
  • apps/playground-weapp/starter/DEPENDENCIES.md
  • apps/playground-weapp/starter/package.json
  • apps/playground-weapp/vite.config.ts
  • docs/plans/varo-native-blocks-devframe-e2e.md
  • eslint.config.js
  • package.json
  • packages/agent-core/README.md
  • packages/agent-core/THIRD_PARTY_NOTICES.txt
  • packages/agent-core/build/base64.ts
  • packages/agent-core/build/markdown-runtime.ts
  • packages/agent-core/package.json
  • packages/agent-core/src/markdown.ts
  • packages/agent-core/tests/runtime-portability.test.ts
  • packages/agent-core/tsdown.config.ts
  • packages/agent-core/tsdown.runtime.config.ts
  • packages/build/package.json
  • packages/cli/package.json
  • packages/cli/src/index.ts
  • packages/cli/tests/preview.test.ts
  • packages/cli/tests/remote-registry.test.ts
  • packages/devtools/package.json
  • packages/devtools/src/cli.ts
  • packages/devtools/src/execution.ts
  • packages/devtools/src/filesystem.ts
  • packages/devtools/src/index.ts
  • packages/devtools/src/registry.ts
  • packages/devtools/tests/execution.test.ts
  • packages/devtools/tests/mcp.test.ts
  • packages/devtools/tests/registry.test.ts
  • packages/devtools/tsconfig.json
  • packages/hooks/package.json
  • packages/primitives-core/package.json
  • packages/primitives-h5/package.json
  • packages/registry/package.json
  • packages/registry/tests/registry.test.ts
  • packages/shared/package.json
  • packages/theme/package.json
  • packages/ui-h5/package.json
  • packages/ui-h5/src/date-utils.ts
  • packages/ui-h5/src/drawer.ts
  • packages/ui-h5/src/style.css
  • packages/ui-h5/src/styles/varo-card.css
  • packages/ui-weapp/README.md
  • packages/ui-weapp/native/src/components/ui/avatar.vue
  • packages/ui-weapp/native/src/components/ui/date-utils.ts
  • packages/ui-weapp/native/src/components/ui/select.vue
  • packages/ui-weapp/native/src/components/ui/v-button.vue
  • packages/ui-weapp/native/src/components/ui/v-drawer.vue
  • packages/ui-weapp/native/src/components/ui/v-input.vue
  • packages/ui-weapp/native/src/components/ui/v-region-picker.vue
  • packages/ui-weapp/native/src/components/ui/v-switch.vue
  • packages/ui-weapp/native/src/components/ui/v-theme-provider.vue
  • packages/ui-weapp/native/src/styles/varo-card.css
  • packages/ui-weapp/native/src/styles/varo-region-picker.css
  • packages/ui-weapp/package.json
  • packages/ui-weapp/src/style.css
  • packages/utils/package.json
  • packages/weapp-web/package.json
  • packages/weapp-web/src/runtime/native-elements.ts
  • packages/weapp-web/tests/native-form-behavior.test.ts
  • patches/@devframes__agentic@1.2.3.patch
  • patches/@e2e-dev__web@0.13.0.patch
  • patches/@weapp-vite__miniprogram-automator@1.3.0.patch
  • patches/devframe@1.2.3.patch
  • pnpm-workspace.yaml
  • registry/blocks/agent-activity/agent-activity-actions.ts
  • registry/blocks/agent-activity/h5.vue
  • registry/blocks/agent-activity/registry.json
  • registry/blocks/agent-activity/weapp-vite.vue
  • registry/blocks/agent-assistant-sheet/agent-assistant-sheet.types.ts
  • registry/blocks/agent-assistant-sheet/h5.vue
  • registry/blocks/agent-assistant-sheet/registry.json
  • registry/blocks/agent-assistant-sheet/weapp-vite.vue
  • registry/blocks/agent-chat/agent-chat.types.ts
  • registry/blocks/agent-chat/h5.vue
  • registry/blocks/agent-chat/registry.json
  • registry/blocks/agent-chat/weapp-vite.vue
  • registry/blocks/agent-model-compare/agent-model-compare-actions.ts
  • registry/blocks/agent-model-compare/agent-model-compare.types.ts
  • registry/blocks/agent-model-compare/h5.vue
  • registry/blocks/agent-model-compare/registry.json
  • registry/blocks/agent-model-compare/weapp-vite.vue
  • registry/blocks/agent-source-chat/agent-source-chat.types.ts
  • registry/blocks/agent-source-chat/h5.vue
  • registry/blocks/agent-source-chat/registry.json
  • registry/blocks/agent-source-chat/weapp-vite.vue
  • registry/blocks/agent-workspace/h5.vue
  • registry/blocks/agent-workspace/registry.json
  • registry/blocks/agent-workspace/weapp-vite.vue
  • registry/blocks/appointment-booking/appointment-booking-actions.ts
  • registry/blocks/appointment-booking/h5.vue
  • registry/blocks/appointment-booking/registry.json
  • registry/blocks/appointment-booking/weapp-vite.vue
  • registry/blocks/data-grid/data-grid-actions.ts
  • registry/blocks/data-grid/h5.vue
  • registry/blocks/data-grid/registry.json
  • registry/blocks/data-grid/weapp-vite.vue
  • registry/blocks/marketing-articles/h5.vue
  • registry/blocks/marketing-articles/marketing-articles.types.ts
  • registry/blocks/marketing-articles/registry.json
  • registry/blocks/marketing-articles/weapp-vite.vue
  • registry/blocks/marketing-contact/h5.vue
  • registry/blocks/marketing-contact/marketing-contact.types.ts
  • registry/blocks/marketing-contact/registry.json
  • registry/blocks/marketing-contact/weapp-vite.vue
  • registry/blocks/marketing-faq/h5.vue
  • registry/blocks/marketing-faq/marketing-faq.types.ts
  • registry/blocks/marketing-faq/registry.json
  • registry/blocks/marketing-faq/weapp-vite.vue
  • registry/blocks/marketing-hero/h5.vue
  • registry/blocks/marketing-hero/marketing-hero.types.ts
  • registry/blocks/marketing-hero/registry.json
  • registry/blocks/marketing-hero/weapp-vite.vue
  • registry/blocks/marketing-pricing/h5.vue
  • registry/blocks/marketing-pricing/marketing-pricing.types.ts
  • registry/blocks/marketing-pricing/registry.json
  • registry/blocks/marketing-pricing/weapp-vite.vue
  • registry/blocks/marketing-process/h5.vue
  • registry/blocks/marketing-process/marketing-process.types.ts
  • registry/blocks/marketing-process/registry.json
  • registry/blocks/marketing-process/weapp-vite.vue
  • registry/blocks/metrics-chart/h5.vue
  • registry/blocks/metrics-chart/metrics-chart-actions.ts
  • registry/blocks/metrics-chart/registry.json
  • registry/blocks/metrics-chart/weapp-vite.vue
  • registry/blocks/mobile-operations/h5.vue
  • registry/blocks/mobile-operations/mobile-operations-actions.ts
  • registry/blocks/mobile-operations/mobile-operations-detail.h5.vue
  • registry/blocks/mobile-operations/mobile-operations-detail.weapp-vite.vue
  • registry/blocks/mobile-operations/registry.json
  • registry/blocks/mobile-operations/weapp-vite.vue
  • registry/blocks/onboarding-flow/h5.vue
  • registry/blocks/onboarding-flow/onboarding-flow-actions.ts
  • registry/blocks/onboarding-flow/registry.json
  • registry/blocks/onboarding-flow/weapp-vite.vue
  • registry/blocks/people-manager/h5.vue
  • registry/blocks/people-manager/people-manager-actions.ts
  • registry/blocks/people-manager/registry.json
  • registry/blocks/people-manager/weapp-vite.vue
  • registry/blocks/product-list/product-list-item.weapp-vite.vue
  • registry/blocks/retail-comparison/registry.json
  • registry/blocks/retail-comparison/retail-comparison.types.ts
  • registry/blocks/retail-comparison/weapp-vite.vue
  • registry/blocks/retail-coupons/registry.json
  • registry/blocks/retail-coupons/retail-coupons.types.ts
  • registry/blocks/retail-coupons/weapp-vite.vue
  • registry/blocks/retail-filters/registry.json
  • registry/blocks/retail-filters/retail-filters.types.ts
  • registry/blocks/retail-filters/weapp-vite.vue
  • registry/blocks/retail-receipt/registry.json
  • registry/blocks/retail-receipt/retail-receipt.types.ts
  • registry/blocks/retail-receipt/weapp-vite.vue
  • registry/blocks/retail-reviews/registry.json
  • registry/blocks/retail-reviews/retail-reviews.types.ts
  • registry/blocks/retail-reviews/weapp-vite.vue
  • registry/blocks/retail-wishlist/registry.json
  • registry/blocks/retail-wishlist/retail-wishlist.types.ts
  • registry/blocks/retail-wishlist/weapp-vite.vue
  • registry/blocks/schedule-calendar/h5.vue
  • registry/blocks/schedule-calendar/registry.json
  • registry/blocks/schedule-calendar/schedule-calendar-actions.ts
  • registry/blocks/schedule-calendar/weapp-vite.vue
  • registry/blocks/settings-panel/h5.vue
  • registry/blocks/settings-panel/registry.json
  • registry/blocks/settings-panel/settings-panel-actions.ts
  • registry/blocks/settings-panel/weapp-vite.vue
  • registry/blocks/status-timeline/h5.vue
  • registry/blocks/status-timeline/registry.json
  • registry/blocks/status-timeline/status-timeline-actions.ts
  • registry/blocks/status-timeline/weapp-vite.vue
  • registry/blocks/step-form/h5.vue
  • registry/blocks/step-form/registry.json
  • registry/blocks/step-form/step-form-actions.ts
  • registry/blocks/step-form/weapp-vite.vue
  • registry/blocks/summary-dashboard/h5.vue
  • registry/blocks/summary-dashboard/registry.json
  • registry/blocks/summary-dashboard/summary-dashboard-actions.ts
  • registry/blocks/summary-dashboard/weapp-vite.vue
  • registry/blocks/task-board/h5.vue
  • registry/blocks/task-board/registry.json
  • registry/blocks/task-board/task-board-actions.ts
  • registry/blocks/task-board/weapp-vite.vue
  • registry/components/agent-attachment-composer/agent-attachment-composer.types.ts
  • registry/components/agent-attachment-composer/h5.vue
  • registry/components/agent-attachment-composer/registry.json
  • registry/components/agent-attachment-composer/weapp-vite.vue
  • registry/components/agent-conversation/h5.ts
  • registry/components/agent-model-selector/agent-model-selector.types.ts
  • registry/components/agent-model-selector/h5.vue
  • registry/components/agent-model-selector/registry.json
  • registry/components/agent-model-selector/weapp-vite.vue
  • registry/components/agent-ui/AgentActivity.vue
  • registry/components/agent-ui/AgentApproval.vue
  • registry/components/agent-ui/AgentCitations.vue
  • registry/components/agent-ui/AgentComposer.vue
  • registry/components/agent-ui/AgentEventRenderer.vue
  • registry/components/agent-ui/AgentRadioGroup.vue
  • registry/components/agent-ui/AgentRetrievalProgress.vue
  • registry/components/agent-ui/AgentSourceReceipt.vue
  • registry/components/agent-ui/AgentTaskRunner.vue
  • registry/components/agent-ui/AgentThreadVersions.vue
  • registry/components/agent-ui/advanced-types.ts
  • registry/components/agent-ui/advanced.ts
  • registry/components/agent-ui/h5/index.ts
  • registry/components/agent-ui/index.ts
  • registry/components/agent-ui/registry.json
  • registry/components/agent-workspace/h5.ts
  • registry/components/avatar/weapp-vite.vue
  • registry/components/button/weapp-vite.vue
  • registry/components/drawer/drawer.ts
  • registry/components/drawer/v-drawer.vue
  • registry/components/input/v-input.vue
  • registry/components/region-picker/v-region-picker.weapp-vite.vue
  • registry/components/select/weapp-vite.vue
  • registry/components/switch/weapp-vite.vue
  • registry/components/theme-provider/weapp-vite.vue
  • registry/themes/components/card/h5.css
  • registry/themes/components/card/weapp-vite.css
  • registry/themes/components/region-picker/weapp-vite.css
  • registry/utils/attachment-transfer/attachment-transfer.h5.ts
  • registry/utils/attachment-transfer/attachment-transfer.ts
  • registry/utils/attachment-transfer/attachment-transfer.weapp.ts
  • registry/utils/attachment-transfer/registry.json
  • registry/utils/date-utils/date-utils.ts
  • scripts/registry-artifacts.mjs
  • scripts/registry-artifacts.test.ts
  • scripts/registry-projections.json
  • scripts/sync-registry.mjs
  • turbo.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@daguanren21

Copy link
Copy Markdown
Owner Author

CI 文档路由校验修复

修复提交:ec1c12893f54a0553bbe4e46384567fe1225f8be。

原失败:CI run 37914122461 / Unit tests。Registry 检查把 /blocks/application-blocks#appointment-booking 当成完整文件名,错误地查找 application-blocks#appointment-booking.md。

现在仅使用 URL 的 pathname 定位 Markdown 页面。manifest 中的深链接、文件存在性断言、测试集合和 CI 执行顺序均保留;没有移除锚点、跳过检查或重新定义原生失败为通过。

验证:

  • pnpm --filter @varo/registry test:16/16 通过。
  • CI 同入口 pnpm test:生成器 24 项通过,Turbo 21/21 个任务成功,0 缓存。
  • 同类扫描发现的 11 条带锚点路由均复用该检查;既有构建的两个文档页面中,11 个对应标题 ID 全部存在。
  • 本次只修改 Registry 契约检查和既有实施记录,不改产品运行时或 Registry manifests。

原生 E2E、真机与剩余独立审查阻塞仍按本 PR 原记录处理;这不是全流程 CI 或设备认证声明。

@daguanren21

Copy link
Copy Markdown
Owner Author

后续 CI:Web E2E 启动失败已修复

修复提交:0260e9344f70739cd83b7eb796acb3f311fed00c。

CI run 38039991931 已通过先前失败的 Unit tests、构建、产物和 runner 反例检查。随后没有执行任何 Web 用例,原因来自保留的 runner.log:APP_UNREACHABLE → pnpm exec vite 在 E2E 受限子进程环境下触发 install → ERR_PNPM_ABORTED_REMOVE_MODULES_DIR_NO_TTY。

修复归属 apps/e2e/e2e.config.ts 的两个浏览器 target:按目标 playground 解析其实际安装的 Vite CLI,再由当前 Node 启动。依赖安装仍由独立的 frozen-lockfile 步骤完成。没有设置 confirmModulesPurge=false、扩大环境继承、自动重装依赖、延长重试或接受缺失报告。

验证:

  • E2E 类型检查与定向 ESLint 通过。
  • 真实框架、真实受限 app 环境下的完整 Web run 5e73be2a-3720-4b02-b59a-909f3e6c69f6:73/73 passed,0 failed / flaky / skipped / interrupted。
  • 两个 app 都正常启动并清理。运行前后 .modules.yaml、pnpm-lock.yaml 和 Markdown runtime 的内容哈希、mtime、inode 均未变化,未再触发此前的依赖/运行时重建。
  • 保留原始启动失败与非零结果;RELEASING.md 中明确禁止并发 install/build 污染活跃 E2E。

原生运行时的既有六项阻塞没有更改或跳过,PR 仍为 Draft;后续 CI 以此提交的实际执行结果为准。

@daguanren21

Copy link
Copy Markdown
Owner Author

已发布 7.5.0:#1172 下游与边界验证

验证对象为 weapp-vite / wevu 7.5.0,@weapp-vite/miniprogram-automator 1.3.0。这是本地候选依赖实验,尚未提交或推送依赖升级,不是 PR 当前 CI 全绿或设备认证声明。

插槽边界

使用发布提交 0012b9009d3e1f21bc2a1a24b35b65486a8b54ff 的 23 个源文件,两种模式合计 46 份本地副本均已通过原始字节 Git blob SHA 对比并保存执行记录。使用该提交的 e2e/ide/issue1172/dom.ts 期望,场景来自 e2e/ide/issue-1172.test.ts,通过发布的编译器和 automator 公共接口运行。

  • native / scopedSlotsRequireProps: true:8/8,38 个检查点。
  • augmented / false 对照:5/5,16 个检查点;不声称复跑了 native 专属的另外 3 个场景。
  • 合计 13/13、54 个检查点、1,038 个节点检查;两种模式用例验收窗口的 runtime exceptions 均为 0。临时 runner 没有完整 teardown 的累计异常拒绝门禁,因此不承诺关闭全生命周期零异常,也不把它作为通用异常验收器复用。run slot1172-matrix-985c7b09-7809-4611-9422-780df5ba34de。
  • 覆盖对象/ref/action 严格身份、Provider 隔离、最近祖先、具名/包裹/转发插槽、初始关闭 outlet、晚插入、keyed 重排与 key 归一化、卸载重建、过滤公开 export 的 Provider 及原生 slot/export 对照。
  • 这是编译后的微信 headless 运行,不将节点存在性当成几何可见性;没有以私有状态写入、强制打开 outlet 或下游 context bridge 代替行为。

独立 verifier 未读取主矩阵结果;它从原 fixture 推导并运行了另外 3 个 native 场景、25 个检查点、977 次节点观测:基础投影、关闭 outlet 下的重排/晚插入/卸载重建,以及过滤 export 的 Provider 双向隔离。结论为接受这些有界 headless 声明;无 runtime exception,独占锁与临时脚本已清理。它没有独立重跑完整 13 项,也没有重跑 Varo 原 Form 场景或 augmented 对照。

Varo 原场景

  • 原 VFormItem must be used inside VForm 初始化阻塞在本次 7.5 运行中消失,Form 页面和区域选择面板能够打开。
  • 原完整 Region 场景仍失败:run issue1172-750-a43f1789-5ece-47ea-9e1d-da2dcba7a63b,1 个选中场景执行后失败;点击“中国”时为 ACTION_FAILED: Native control is hidden or disabled。独立读取 SDK 节点观察到 disabled="";尚未据此确定是产品、SDK 序列化还是适配器解释的责任,不把它报告成已修复或放宽禁用守卫。
  • 在新生成的原生产物浏览器预览中用 ego browser 实际操作:初始关闭的 Dialog 可以打开;第一次关闭被同步取消,允许后关闭且 update 计数为 2;Provider/Consumer 更新、卸载、重挂载后两者挂载/卸载计数均为 2 / 1,新注入值为 #3。
  • Menu 已能展开;通过键盘选择 B 后为 value=source-b;payload=source-b:来源 B。指针点击 B 未通过,命中测试被 wx-view 截获;DOM containment/overflow 诊断表明选项处于裁剪边界之外。不能用键盘成功冒充指针路径通过,也不将此问题直接归因于 7.5。
  • Ego 截图调用持续超时,本轮只报告实际交互、DOM 与可访问快照,不声称像素或视觉验收通过。预览服务还保留原生 ARIA property 警告,不声称零 warning。

整仓采用门禁仍不通过

pnpm --filter @varo/playground-weapp build 的候选编译产物主包为 2,284,940 bytes,高于既有 2,097,152 bytes 上限 187,788 bytes。没有放宽包体门禁、跳过原断言或提交应用层上下文补丁。

本次范围是微信目标、编译后的 Wevu 组件及默认 attached setup。7.5 发布说明 已明确记录这一有界支持契约,不能再用旧 Issue 的待回复记录声称协议尚未发布。created setup、attached 前公开实例恢复、未参与协议的第三方组件、其他平台及物理设备不在本次证明范围;原生 slot/export 对照通过也不等于原生第三方组件获得了 Wevu inject 协议。

PR 保持 Draft。当前提交 0260e9344f70739cd83b7eb796acb3f311fed00c 的 CI run 38190721661 已越过 Web 启动故障、完整 Web 通过,仍在原生 E2E 失败;不能把这次局部 7.5 实验改写成远端完整原生验收通过。

收尾与交付

已恢复实验前的六份 package manifests 和原始 lockfile,并完成 pnpm install --frozen-lockfile。7.5 候选补丁、完整 fixture/运行结果和独立验证证据留存在会话归档;临时源码与 runner 已移除,ego 任务页和本次预览服务已关闭。没有提交/推送依赖升级,没有变更 canonical 组件或验收阈值,也没有合并或发布。

恢复后的 7.4 基线已重新运行 pnpm --filter @varo/playground-weapp build:生产构建、递归组件路径/编译样式与 255 条同步脚本引用校验通过,主包恢复为 2,076,870 / 2,097,152 bytes。这是回收实验后的基线验证,不是 7.5 的通过结果。

@daguanren21

Copy link
Copy Markdown
Owner Author

7.5 升级与剩余验收边界

提交:6b5e5c3c60587d93e9e4a519ae61c508400479b4。已推送至本 PR 分支;pre-commit 通过,提交后的生成漂移/架构检查通过,独立验证过的两个 Form owner 源码哈希未被 hook 改变。

这次不是仅保留升级实验:weapp-vite / wevu 已采用 7.5.0,automator 1.3.0;根/独立 Realworld 锁文件、Wevu retail starter 与中英文文档同步。PR 继续保持 Draft,不合并、不发布、不把 headless 当作设备认证。

已修复

  1. 主包归属:25 个只由 blocks-lab 使用的 Block 的 52 份 playground 投影移入现有分包。Registry 仍是唯一作者源;生成器用 TS/SFC AST 重写 import,摘要保护的旧投影删除规则保留。公共安装路径、H5/docs/npm 路径与页面路由不变。
  2. 跨包共享工具:首次迁移构建正确拒绝 v-date-field.js 从主包同步引用 blocks-lab/common.js;现在主包 UI helper 有显式 chunk 归属。主包 1,989,897 / 2,097,152 bytes,315 条同步脚本引用及递归组件/样式检查通过。没有放宽阈值或删除功能;被拒绝的压缩方案和新增 minifier 已撤回。代码移入分包,不宣称总应用体积减少同样字节数。
  3. Region 完整流程:原生 Region/Select/AgentRadioGroup 显式归一化可选 disabled,保留真正禁用/隐藏保护。Region 页面单一表单模型改为 ref-backed,与生成的嵌套 v-model setter 一致;原确认、回显、取消草稿、重开选中态流程通过,没有上下文桥或动作重试。
  4. Menu 指针:canonical H5/native Card 不再无条件裁剪后代弹层,调用者明确要求的媒体裁剪保留。ego browser 普通指针选择 B 成功;新增必需浏览器回归,并实际检查 Chromium E2E 截图。Ego 自身截图接口超时仍记录,不冒充 Ego 截图成功。
  5. 恢复独立审查后发现的应用边界:售后/评价在等待接受期间切入阻止状态后,不再修改订单、评价数或草稿;异步表单在权限、步骤或数据已变时不再发布旧错误或提交旧数据。拒绝/取消和后续有效请求仍可用。修复位于应用 owner,不修改 Registry API 或模拟 native form 提交。

实际验证

  • 生成漂移与 537 文件架构检查通过;52 个旧投影路径消失,新路径唯一。
  • workspace typecheck、workspace 单测、生产包/应用构建、生成器 45 项、原生产物 17 项、runner 5 项反例通过。
  • 六个新鲜 tarball/source/package 消费者及 7 个 native 编译/产物 profile 通过。
  • 独立导出的 29 页 / 127 文件 Wevu retail starter:frozen install、编译和递归路径/样式检查通过,无 AppID/设备声明。
  • 最终 Web run 4e3a3469-e6ce-4b62-8fd0-ee3240445782:74/74 passed,无 skipped/flaky/interrupted。
  • 扩展 native run 09d85c2c-31ab-46fe-a95a-b960689724b6:86/91 passed、5 failed,无 skipped/flaky/interrupted。这个失败 run 保留原判定,不换成较小定向报告。
  • 原生接受边界回归:修复前 7/7 失败,修复后 7/7 通过;两个 Form owner 新增场景修复前各 30 failed / 6 passed,对应完整文件修复后 H5 57/57、native owner 40/40。
  • 独立 verifier:真实 CLI 安装并编译三个 Boolean 组件,覆盖缺省/false/true、动态切换、no-op、选中态与精确事件次数;Retail 9 场景 / 122 动作 / 74 检查点;最终实际生产 Vue/Wevu Form owner API 272/272。两位原先受证书错误阻断的源码 reviewer 已关闭发现并批准各自范围。
  • 源码 ESLint 0 errors、Stylelint 通过;既有 warnings 保留。Jev 只是辅助信号,不算验收证据。

仍失败的 5 项:没有绕过

  • 1 项 Application 多步表单:SDK headless 不执行原生 form 默认提交。
  • 4 项 Chat / Model Compare:SDK headless 不完整观察 rich-text 渲染文本。

已用没有 Varo 组件或编译器的最小原生工程隔离:真实 button tap 计数为 1,submit 计数仍 0;普通 text 返回 Rendered content,rich-text.text() 返回空串,nodes 属性为 [object Object],runtime errors 为空。查询公开 latest 仍是 automator 1.3.0;本次没有可用的授权 DevTools endpoint。

原断言、必需 test-target 与非零退出均保留;不手动触发 submit、不读取业务状态伪装可见文本、不跳过用例、不改成全绿。完整 native parity、IDE/设备、软键盘/安全区和实际宿主权限仍是独立 Gate。详细历史与修复前/后证据见 docs/plans/varo-native-blocks-devframe-e2e.md。

@daguanren21

Copy link
Copy Markdown
Owner Author

新提交的远端 CI 核对

对应提交 6b5e5c3c60587d93e9e4a519ae61c508400479b4,实际合并测试提交 bf91607067d409210a2440ee7b64a92a7f890b1a。CI run 38216997934 / Check 已结束,结论仍为 failure,没有重跑或改变失败分类。

已通过:依赖安装、源码归属/生成检查、类型检查、单测、包/应用构建、17 项原生产物契约、5 项 runner 失败/取消反例,以及完整 Web E2E。

Ubuntu CI 的原生主包为 1,989,931 / 2,097,152 bytes,315 条同步脚本引用校验通过;与本地数值分别记录。

失败仍只列出同样五个必需 native 场景:

  • Application:原生 form 默认提交。
  • Chat:失败后重试完成内容的 rich-text 观测。
  • Model Compare:共享提示词、独立重试、普通 Chat 组合的三项 rich-text 观测。

CI 的 Web run 为 27dea1cd-1182-4970-b0d4-68dd02c290e9,状态 passed;native run 为 7a0915a9-3a4f-44d3-865e-537d34db228e,状态 failed,原始 errors 保留。详细证据已由工作流上传至 e2e-evidence。

消费者与 native profile 两个后续 CI 步骤因前序失败而 skipped;此前报告的六包新鲜消费者与七平台产物通过是本地实际执行结果,不把 CI skipped 写成 passed。PR 保持 Draft;剩余 headless 能力需要在驱动/宿主边界解决,不在 Varo 添加提交注入、文本回显或跳过。

@daguanren21
daguanren21 marked this pull request as ready for review October 16, 2026 08:54
@daguanren21
daguanren21 merged commit 9f0f739 into main Oct 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant