Files
胡飞 a46bb4b995 feat(extension)!: 页面走 host ABI v2,扩展收成一个 nsh app
页面与宿主的接口换到 v2 四通道:
- host.params 承载启动事实(apiVersion / extension / backends / connection /
  route),首帧同步可读,删掉 navop.context.current 启动 RPC;
- host.on("navop.event") 承接资源事件(批次 <= 64、溢出带 EVENT_OVERFLOW 与
  since 续订),删掉 navop.event.read 轮询;
- host.call 只留动作(resource / job / blob / event.subscribe / runtime.info /
  dev),host.post 只留 navop.log;
- 错误走 nsh 的 JsError::Fields(code / retryable / details),删掉
  __NAVOP_ERROR__ base64 信封;nsh 依赖随之 bump 到 fc4c88e6。

权限收成单层:declared = granted = grant(modules ∩ permissions),harden 恒开,
未声明模块仍然注册 handler 但在调用时回 PERMISSION_DENIED(details.module),
dev 模块只给 com.navop.devtools。

扩展形态从「一页一个 nsh 包」收成「一个扩展一个 app」:contributes.shellApp
取代 shellViews,宿主一个 app 一个 tab,页面由 app 内部路由组织,host.params
多一个 route。文档新增 host-abi-v2.md / plugin-app.md,page-guide、
development-guide、migration-plan 同步。

验证:cargo test -p extension-runtime --lib 212 passed;
cargo test -p universal-plugins --features nsh-host 33 passed;
cargo check -p navop_app;7 个页面 app 的 nsh build/test 全绿;
子仓 node --test tests/scripts.test.mjs 141 passed。
2026-11-04 12:33:55 +08:00
..