Skip to content

Releases: Respo/react.mbt

v0.4.0

Choose a tag to compare

@tiye tiye released this 04 Sep 01:22
f2cd556

中文

v0.4.0 将 React MoonBit 绑定与已发布的 tiye/dom-ffi@0.4.0 对齐,重点改善
事件载荷和表单数据的类型安全,同时保留 React SyntheticEvent 自身的语义。

主要变化

  • 新增公开且不透明的 NativeEvent 视图。DOMEvent::native_pointer_event
    DOMEvent::native_wheel_event 会验证实际使用的完整字段结构,再返回 dom-ffi
    PointerEvent / WheelEvent;事件族不匹配或载荷不完整时返回 None
  • React DOMEvent 仍然是 SyntheticEvent;prevent_default
    stop_propagation 继续走 React 事件对象,不会因原生载荷适配而改变传播行为。
  • 新增 ReactFormData::to_dom_form_data 零复制桥接,允许直接使用 dom-ffi
    FormData 的文本/文件联合值;get_string 不再重复手写 JavaScript
    FormData.get
  • 移除本地 Array.isArray FFI,改用 dom-ffi 已验证的
    JsObscure::is_array
  • 下游发布验证不再硬编码旧版 dom-ffi;它从 moon.mod 解析精确版本,以严格
    Semantic Versioning 2.0.0 规则校验,并按完整 package/version token 验证
    dependency tree 同时包含目标 React 与 dom-ffi 版本。

可验证指标

  • MoonBit tests:59/59。
  • Chromium conformance:12/12;新增真实 pointermovewheel 场景,各精确
    触发 1 次,非预期 React warnings/errors、page errors 和 unhandled
    rejections 为 0。
  • Pointer 精确载荷:pointerId 17、button 1、buttons 3、pressure 0.5
    clientX 24.5、clientY 48.5
  • Wheel 精确载荷:deltaX 1.5、deltaY -2.5、deltaMode 1
  • 公共 API 文档:235/235(100%),缺失 0。
  • 发布验证单测:3/3;覆盖 7 个合法与 9 个非法 SemVer 样例,并验证 RC 后缀不能
    冒充精确稳定版本。
  • Node Web Streams SSR、生成代码一致性、生产构建和严格 18 文件发布包门禁通过后
    才允许发布。
  • 发布后独立模块必须精确解析 tiye/react@0.4.0
    tiye/dom-ffi@0.4.0,并通过 check/build、Node SSR、Chromium
    render/hydration 和零 diagnostics 验证。

完整变更见 CHANGELOG.md。本项目仍处于实验阶段,不建议用于生产环境。


English

v0.4.0 aligns the React MoonBit bindings with the released
tiye/dom-ffi@0.4.0, focusing on type-safe event payloads and form data while
preserving React SyntheticEvent semantics.

Highlights

  • Adds a public opaque NativeEvent view. DOMEvent::native_pointer_event and
    DOMEvent::native_wheel_event validate the complete consumed payload shape
    before returning dom-ffi PointerEvent / WheelEvent; mismatched or partial
    event families return None.
  • React DOMEvent remains a SyntheticEvent. prevent_default and
    stop_propagation continue to use the React event object, so the native
    payload adapter does not change propagation semantics.
  • Adds a zero-copy ReactFormData::to_dom_form_data bridge for dom-ffi's
    text/file-aware FormData values. get_string no longer duplicates a direct
    JavaScript FormData.get accessor.
  • Removes the local Array.isArray FFI in favor of dom-ffi's tested
    JsObscure::is_array predicate.
  • Removes the stale dom-ffi hardcode from downstream release verification. The
    verifier derives the exact version from moon.mod, validates it with strict
    Semantic Versioning 2.0.0 rules, and matches complete package/version tokens
    for both target React and dom-ffi versions in the dependency tree.

Verifiable metrics

  • MoonBit tests: 59/59.
  • Chromium conformance: 12/12; adds real pointermove and wheel scenarios,
    each invoked exactly once, with zero unexpected React warnings/errors, page
    errors, or unhandled rejections.
  • Exact Pointer payload: pointerId 17, button 1, buttons 3, pressure
    0.5, clientX 24.5, and clientY 48.5.
  • Exact Wheel payload: deltaX 1.5, deltaY -2.5, and deltaMode 1.
  • Public API documentation: 235/235 (100%), with zero missing comments.
  • Release-verification unit tests: 3/3, covering 7 valid and 9 invalid SemVer
    samples plus rejection of an RC suffix masquerading as an exact stable
    version.
  • Node Web Streams SSR, generated-source consistency, production build, and
    the strict 18-file release package gate must pass before publication.
  • After publication, a fresh downstream module must resolve exact
    tiye/react@0.4.0 and tiye/dom-ffi@0.4.0, then pass check/build, Node SSR,
    Chromium render/hydration, and zero-diagnostics verification.

See CHANGELOG.md for the complete change list. This project remains
experimental and is not recommended for production use.

v0.3.0

Choose a tag to compare

@tiye tiye released this 31 Aug 15:54
e8abc85

中文

v0.3.0:React 19.2 能力正式交付

本版本正式发布此前已合并的 React 19.2 绑定:Activity、Promise resources 与局部 Error Boundary、Web Streams SSR/Suspense hydration、React DOM 操作 API,以及完整公共 API 文档门禁。

DOM FFI 兼容性

  • 消费已验证发布的 tiye/dom-ffi@0.3.0
  • Document.body() / Document.head() 的可空 Web IDL 契约显式处理;
  • 在 root 与 body 都缺失时安全跳过渲染,不再 panic。

发布验证

此 GitHub Release 触发 Actions:验证 tag/模块版本/主线祖先关系、MoonBit 构建和测试、生成代码与文档门禁、真实 Chromium 测试、浏览器构建、发布包校验与 mooncakes.io 下游 runtime 验证。

English

v0.3.0: Formal delivery of React 19.2 capabilities

This version formally releases the previously merged React 19.2 binding work: Activity, Promise resources and local Error Boundaries, Web Streams SSR/Suspense hydration, React DOM operational APIs, and the complete public API documentation gate.

DOM FFI compatibility

  • Consumes the verified tiye/dom-ffi@0.3.0 release;
  • Explicitly handles nullable Web IDL contracts for Document.body() and Document.head();
  • Safely skips rendering when both root and body are absent rather than panicking.

Publishing verification

This GitHub Release triggers Actions to verify tag/module-version/main-ancestry identity, MoonBit build and tests, generated-source and documentation gates, real Chromium tests, browser build, package contents, and downstream mooncakes.io runtime consumption.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 05:35
232c6cb

中文

v0.2.0 是一次向后兼容的实验版本更新,集中补齐 React 19 能力、类型化
DOM 表面以及真实浏览器符合度验证。

主要变化

  • 新增 54 个声明式生成的 HTML/SVG helper,并以生成器幂等性、公开接口与
    MoonBit smoke matrix 三层门禁防止漂移。
  • 新增外部 store、可复用/懒加载组件、Suspense、portal、imperative ref、
    SSR/hydration 与 React 19 form/action API。
  • 扩充 React 19.2.8 Chromium 符合度测试,覆盖生命周期、批处理、错误回调、
    hydration、表单 action、external store 与生成 DOM 行为。
  • 统一 moon.modpackage.json、Changelog、tag 与 GitHub Release 元数据,
    并新增发布制品白名单、SHA-256 与发布后下游安装验证。

可验证指标

  • MoonBit DOM helper smoke matrix:54/54。
  • Chromium 场景:以发布工作流的 Playwright 报告为准,要求 100% 通过且
    React diagnostics 为 0。
  • 发布压缩包:固定 17 个白名单文件;实际字节数与 SHA-256 见同一 Release
    附带的 SHA256SUMS
  • registry 发布后必须从全新下游模块精确解析 tiye/react@0.2.0,并通过
    moon check --target jsmoon build --target js

完整变更见 CHANGELOG.md。本项目仍处于实验阶段,不建议用于生产环境。

English

v0.2.0 is a backward-compatible experimental release focused on React 19
coverage, a typed DOM surface, and measurable real-browser conformance.

Highlights

  • Adds 54 declaratively generated HTML/SVG helpers, guarded by generator
    idempotence, public-interface checks, and a MoonBit smoke matrix.
  • Adds external stores, reusable and lazy components, Suspense, portals,
    imperative refs, SSR/hydration, and React 19 form/action APIs.
  • Expands React 19.2.8 Chromium conformance coverage across lifecycles,
    batching, error callbacks, hydration, form actions, external stores, and
    generated DOM behavior.
  • Aligns moon.mod, package.json, Changelog, tags, and GitHub Release
    metadata, with an archive allowlist, SHA-256, and post-publish downstream
    installation verification.

Verifiable metrics

  • MoonBit DOM-helper smoke matrix: 54/54.
  • Chromium scenarios: the release Playwright report is authoritative; 100%
    must pass with zero React diagnostics.
  • Release archive: exactly 17 allowlisted files; its byte count and SHA-256 are
    attached to the same Release in SHA256SUMS.
  • After registry publication, a fresh downstream module must resolve exactly
    tiye/react@0.2.0 and pass both moon check --target js and
    moon build --target js.

See CHANGELOG.md for the complete change list. This project remains
experimental and is not recommended for production use.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 09:48
7e2a81d

What's Changed

  • Adapt antd by @tiye in #1
  • fix: restore current MoonBit build baseline by @tiye in #8
  • feat: harden typed React props and FFI boundaries by @tiye in #9

New Contributors

  • @tiye made their first contribution in #1

Full Changelog: 0.0.3...v0.1.0

moving code to jsobscure

Choose a tag to compare

@tiye tiye released this 05 Oct 15:45