Files
MapLibreParticleLab/docs/报告/STEP-064_RN纯FieldRenderer接口V2_Codex完成报告_v1.md
OpenAI Codex 2e3ab26275
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: close STEP-064 RN release
2026-09-10 09:40:37 +08:00

4.5 KiB
Raw Permalink Blame History

STEP-064 RN 纯 Field Renderer 接口 V2 完成报告

状态:RELEASED / CLOSED / PASS

完成内容

@navsea/maplibre-particle-rn 已升为 13.4.1-particle.2。根入口仅公开 FieldRuntime、纯渲染类型、particleFieldIds 与 createParticleFieldStyleFragment();旧 Weather/Wind 公共名称、MLRN facade 导出与兼容 wrapper 均已删除。

FieldRuntime.submitField() / clearFields() 继续薄映射既有 Native ingress。图场与粒子消费同一 canonical Field,分别由 setFieldVisible() 与 setParticleVisible() 控制。FieldColorStop 使用 value,RN 内部才转换既有 Native ABI 所需字段。

package 内 WeatherV2 HTTP、manifest、time index、WVECBIN1 decoder 与高层 loader 已移除。Consumer Test Host 改为直接使用官方 MLRN 的 Map/Camera,并自行保有 GSI、真实 fixture 与本地文件物化;最终仍只向 SDK 提交 metadata 与 file URI。

冻结边界

  • Native/Core/JNI/shader/Android AAR 未修改。
  • Native artifact 为 cc.navsea.maplibre:android-sdk-particle-opengl:13.4.1-particle.1;.2 仅为 RN/TS 公共 API revision。
  • 未构建/发布 AAR,未执行 Android Gradle、APK、ADB 或 Jest,未进入 NavSea。

静态验证

  • package TypeScript typecheck:通过。
  • Consumer TypeScript typecheck:通过;因 Consumer 尚未安装 .2 发布包,检查采用临时 TypeScript module-resolution 配置,不改变 Consumer 产品依赖。
  • npm pack:通过,.2 tarball 仅生成在 /tmp/step064-pack/,未触碰仓库既有未跟踪 .1 tarball。
  • tarball 内容审计:通过;不含 src/weatherV2/、WeatherV2 HTTP/decoder/loader、Test Host、node_modules 或构建缓存。
  • package 根导出、业务语义残留审计和 git diff --check:通过。旧 Weather/Wind 名称仅留在内部 Native ABI/codegen 接缝及其薄映射实现,不构成公开 API。
  • RN 0.85.2 Codegen parser 已核对支持 TurboModuleRegistry.get() 与 getEnforcing();当前 import-safe get() 方案保留。
  • 收尾复审修正:.2 Consumer validation 明确为 pending,.1 PASS 仅作为 previous baseline;FieldColorStop 文档示例改为满足至少 2 个 stop 的既有 Native 契约。

未完成与后续最小验证

Consumer 尚未安装最终 .2 tarball 并在既有 .1 Native artifact 的 APK 中运行。后续最小步骤是:安装 .2 tarball,启动 Metro,确认 Map/Camera 来自官方 MLRN,加载宿主 canonical T0-T3 fixture,确认 FieldRuntime attach、提交、独立开关与控制命令正常。该人工 Consumer 验证完成前,本 Step 保持等待状态。

Git 收尾

  • 实现提交:59a48608fb140d04f9008cb8273119999a87b6ef
  • 提交信息:refactor: make RN particle API field-renderer only
  • Push:成功,particle/main -> origin/particle/main。
  • 实现提交 push 后:HEAD == origin/particle/main == 59a48608fb140d04f9008cb8273119999a87b6ef。
  • Codex sandbox 曾因 .git/index.lock 只读失败未能自行提交;最终由 ChatGPT 通过同一 Linux 仓库精确 stage、commit、push,本任务无关 modified/untracked 文件未带入。
  • 本段为 docs-only 收尾更新;最终仓库 HEAD 以任务最终回复记录为准。

2026-09-10 Consumer 验证与 Release Freeze 前结论

  • 固定 Win11 Consumer 已安装 .2 tgz,依赖树为一份 @maplibre/maplibre-react-native@11.3.6。
  • 首轮发现 createParticleFieldStyleFragment() 使用无效 raster-particle-opacity,Native 报 particle layer missing;已在 RN-only 范围改为 raster-particle-active。
  • 修正后 attach、T0–T3、Runtime READY、图场/粒子独立开关及恢复均通过。
  • 未重新构建 Android APK/AAR;复用既有 Native .1 APK + Metro 验证 RN .2。
  • hard gate 无上述 Native/崩溃错误。当前允许进入 release tag 与固定 HTTPS tgz 发布。

正式发布结果

  • Release source:e43b58707cfd0f87965424477ed3f95625b3f724。
  • Tag:maplibre-particle/rn/13.4.1-particle.2,已推送远端。
  • 正式 tgz URL:https://pbf.jpcn.ccwu.cc/npm/navsea-maplibre-particle-rn-13.4.1-particle.2.tgz。
  • size:10,660 bytes;SHA256:ace9e0401824839d18a93cc4201c1f5d4cccbff0636570cfde82fd80b60779b5。
  • NAS 文件、tag pack 与公网重新下载内容一致;公网返回 HTTP 200。
  • Win11 固定 Consumer 从正式 HTTPS URL 重装成功,@navsea/maplibre-particle-rn=13.4.1-particle.2、MLRN=11.3.6 且 dedupe,TypeScript PASS。
  • Native AAR 仍为 13.4.1-particle.1,本次没有重新构建、修改或发布 AAR。