Skip to content

Conversation

@weareoutman
Copy link
Member

@weareoutman weareoutman commented Oct 15, 2025

依赖检查

组件之间的依赖声明,是微服务组件架构下的重要信息,请确保其正确性。

请勾选以下两组选项其中之一:

  • 本次 MR 没有使用上游组件(例如框架、后台组件等)的较新版本提供的特性。

或者:

  • 本次 MR 使用了上游组件(例如框架、后台组件等)的较新版本提供的特性。
  • 在对应的文件中更新了该上游组件的依赖版本(或确认了当前声明的依赖版本已包含本次 MR 使用的新特性)。

提交信息检查

Git 提交信息将决定包的版本发布及自动生成的 CHANGELOG,请检查工作内容与提交信息是否相符,并在以下每组选项中都依次确认。

破坏性变更是针对于下游使用者而言,可以通过本次改动对下游使用者的影响来识别变更类型:

  • 下游使用者不做任何改动,仍可以正常工作时,那么它属于普通变更。
  • 反之,下游使用者不做改动就无法正常工作时,那么它属于破坏性变更。

例如,构件修改了一个属性名,小产品 Storyboard 中需要使用新属性名才能工作,那么它就是破坏性变更。
又例如,构件还没有任何下游使用者,那么它的任何变更都是普通变更。

破坏性变更:

  • ⚠️ 本次 MR 包含破坏性变更的提交,请继续确认以下所有选项:
  • 没有更好的兼容方案,必须做破坏性变更。
  • 使用了 feat 作为提交类型。
  • 标注了 BREAKING CHANGE: 你的变更说明
  • 同时更新了本仓库中所有下游使用者的调用。
  • 同时更新了本仓库中所有下游使用者对该子包的依赖为即将发布的 major 版本。
  • 同时为其它仓库的 Migrating 做好了准备,例如文档或批量改动的方法。
  • 手动验证过破坏性变更在 Migrate 后可以正常工作。
  • 破坏性变更所在的提交没有意外携带其它子包的改动。

新特性:

  • 本次 MR 包含新特性的提交,且该提交不带有破坏性变更,并使用了 feat 作为提交类型。
  • 给新特性添加了单元测试。
  • 手动验证过新特性可以正常工作。

问题修复:

  • 本次 MR 包含问题修复的提交,且该提交不带有新特性或破坏性变更,并使用了 fix 作为提交类型。
  • 给问题修复添加了单元测试。
  • 手动验证过问题修复得到解决。

杂项工作:

即所有对下游使用者无任何影响、且没有必要显示在 CHANGELOG 中的改动,例如修改注释、测试用例、开发文档等:

  • 本次 MR 包含杂项工作的提交,且该提交不带有问题修复、新特性或破坏性变更,并使用了 chore, docs, test 等作为提交类型。

Summary by CodeRabbit

  • 新功能

    • 事件处理新增支持 “context.set” 与 “state.set”,可通过内建事件设置上下文与组件状态。
    • 数据存储新增 “set” 更新方式,支持函数式更新并避免无效触发。
  • 样式

    • 样式赋值改进:正确处理 CSS 自定义属性(--*)、float 与普通样式键的赋值行为。
  • 测试

    • 新增样式赋值单元测试覆盖自定义属性、float 与多属性设置。
    • 新增“context.set”相关的数据更新测试。

@coderabbitai
Copy link

coderabbitai bot commented Oct 15, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

新增对内置动作 context.setstate.set 的运行时处理;DataStore 增加 set 更新方式以支持函数式更新;引入并导出 setValueForStyle,在样式赋值处使用;补充相应类型声明与单元测试覆盖。

Changes

Cohort / File(s) Change Summary
事件与类型扩展
packages/runtime/src/internal/bindListeners.ts, packages/types/src/manifest.ts
在监听器工厂中加入对内置动作 context.setstate.set 的分支(路由到对应处理函数);在类型定义中将 context.setstate.set 加入 BuiltinBrickEventHandler.action 联合。
DataStore 增强与测试
packages/runtime/src/internal/data/DataStore.ts, packages/runtime/src/internal/data/DataStore.spec.ts
DataStore.updateValue 新增 method: "set" 分支,支持传入 updater 函数并用 Object.is 判等避免无效更新;新增测试覆盖 context.set 场景及行为断言。
样式赋值重构与测试
packages/runtime/src/internal/compute/setRealProperties.ts, packages/runtime/src/internal/compute/setRealProperties.spec.ts
新增并导出 setValueForStyle(style, key, value),对 CSS 自定义属性(--*)、float(使用 cssFloat)与常规属性分别处理;在 setRealProperties 中改为调用该函数;新增对应单元测试。

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description Check ⚠️ Warning 作者提供的 PR 描述仅为原有模板内容,未填写任何依赖检查或提交信息检查的勾选项,也未补充对本次变更的简要说明,缺少必填信息导致描述不完整。 请在依赖检查部分根据实际情况勾选对应选项,并在提交信息检查部分选择正确的变更类型、填写相关项,最后补充对本次 MR 的简单描述和待办事项等信息。
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title Check ✅ Passed 标题简明地概述了主要变更,即新增对 context.set 和 state.set 的支持,并通过类比 React setState 提高可读性且无多余细节。
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch steve/v3-set-css-custom-property

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 5736c84 and 8218bba.

📒 Files selected for processing (4)
  • packages/runtime/src/internal/bindListeners.ts (4 hunks)
  • packages/runtime/src/internal/data/DataStore.spec.ts (1 hunks)
  • packages/runtime/src/internal/data/DataStore.ts (3 hunks)
  • packages/types/src/manifest.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • packages/runtime/src/internal/bindListeners.ts
  • packages/runtime/src/internal/data/DataStore.spec.ts
  • packages/types/src/manifest.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build (20.x)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (2)
packages/runtime/src/internal/data/DataStore.ts (2)

196-196: 方法签名更新正确

在 union type 中添加 "set" 选项是正确的,与新增的功能实现相匹配。


279-301: 实现逻辑正确,符合 React setState 模式

新增的 "set" 方法实现遵循 React setState 设计:

  • 支持直接传值或 updater 函数
  • 使用 Object.is() 进行变更检测(引用相等性)
  • 值未变化时提前返回,避免不必要的事件派发

实现细节:

  1. updater 通过 typeof 检查后安全调用
  2. 提前返回跳过 batchUpdate 检查和事件派发
  3. Object.is() 检查引用相等性,与 React 行为一致

context.setstate.set 已在 bindListeners.tsmanifest.ts 中正确集成。


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 and usage tips.

@weareoutman weareoutman changed the title Steve/v3-set-css-custom-property feat(): add support for context.set and state.set (like React setState) Oct 15, 2025

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

@codecov
Copy link

codecov bot commented Oct 15, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.20%. Comparing base (122eb51) to head (8218bba).
⚠️ Report is 3 commits behind head on v3.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##               v3    #4809   +/-   ##
=======================================
  Coverage   95.19%   95.20%           
=======================================
  Files         212      212           
  Lines        9302     9317   +15     
  Branches     1786     1792    +6     
=======================================
+ Hits         8855     8870   +15     
  Misses        328      328           
  Partials      119      119           
Files with missing lines Coverage Δ
packages/runtime/src/internal/bindListeners.ts 91.20% <ø> (ø)
.../runtime/src/internal/compute/setRealProperties.ts 77.77% <100.00%> (+17.77%) ⬆️
packages/runtime/src/internal/data/DataStore.ts 98.14% <100.00%> (+0.06%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@cypress
Copy link

cypress bot commented Oct 15, 2025

next-core    Run #11754

Run Properties:  status check passed Passed #11754  •  git commit 9ac9d0c8aa ℹ️: Merge 8218bba965b5946f51c92cea09e82aa93c7ca1ba into 122eb519a82ea6841fce85e4fb43...
Project next-core
Branch Review steve/v3-set-css-custom-property
Run status status check passed Passed #11754
Run duration 00m 24s
Commit git commit 9ac9d0c8aa ℹ️: Merge 8218bba965b5946f51c92cea09e82aa93c7ca1ba into 122eb519a82ea6841fce85e4fb43...
Committer Shenwei Wang
View all properties for this run ↗︎

Test results
Tests that failed  Failures 0
Tests that were flaky  Flaky 0
Tests that did not run due to a developer annotating a test with .skip  Pending 0
Tests that did not run due to a failure in a mocha hook  Skipped 0
Tests that passed  Passing 17
View all changes introduced in this branch ↗︎

@weareoutman weareoutman force-pushed the steve/v3-set-css-custom-property branch from 5736c84 to 8218bba Compare October 15, 2025 08:51
@qiaofengxi qiaofengxi merged commit 51e27f5 into v3 Oct 15, 2025
8 checks passed
@qiaofengxi qiaofengxi deleted the steve/v3-set-css-custom-property branch October 15, 2025 09:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants