Skip to content

ref(apps): 统一 Web 应用与 Peer 命名 - #188

Merged
xiaoland merged 1 commit into
mainfrom
feat/app-peer-naming
Nov 5, 2026
Merged

xiaoland merged 1 commit into
mainfrom
feat/app-peer-naming

Conversation

@xiaoland

@xiaoland xiaoland commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

意图与范围

将产品中的 Web / WebExt 明确为 App,将运行参与者称为 Peer,避免应用命名暗示固定 Client–Server 层级。本 PR 将 apps/client-web / @inkcre/client-web 改为 apps/web / @inkcre/web,将 apps/client-webext / @inkcre/client-webext 改为 apps/webext / @inkcre/webext,并同步工作区、Runtime 导入、开发工具、构建、测试、CI、发布、Changesets 和现有文档。

内部应用角色采用 App / Web 名字,逻辑设计文档改为 App Runtime and Delegation,新增 OTEL 记录使用 inkcre.web。所有第一方 MF producer 的新构建输出改为 dist/web,发布清单、预览与验证脚本随之更新;module_federation 协议和 @inkcre/core Host ABI 保持原值。

主要实现范围:Web/WebExt App、Core 的应用身份、工作区与所有第一方 MF producer 工具链。

受影响发布项目:@inkcre/core、@inkcre/web、@inkcre/webext、@inkcre/ext-caldav、@inkcre/ext-capture、@inkcre/ext-github、@inkcre/ext-local-files、@inkcre/ext-mail、@inkcre/ext-memos、@inkcre/ext-twitter。保留现有版本线与历史 changelog,待消费 Changeset 使用新名称,没有重发旧版本。

兼容与明确保留的名字

浏览器配置键、Peer ID、WebExt 公钥/Gecko ID、IndexedDB、迁移格式、版本标签与下载文件名保持不变;本地 Portless origin 与开发凭据派生命名空间继续沿用,避免旧设置或凭据失效。已有开发数据库使用其保存的 runtime state,新建项目才采用 inkcre-web-<instance>。

Runtime 统一以 @inkcre/extension-runtime-web 导入,但安装别名仍指向已发布的 0.4.2 精确旧 tarball,锁文件保留真实旧包身份及完整性;没有假设新包已发布。只对该旧包的 Zod 依赖覆写为已有的 4.6.7,修复 GHSA-mrhx-c7xc-m3w5,没有全仓依赖升级或放宽安全检查。Registry 链接发送 app_origin,兼带同值 client_origin,支持新旧 Registry 部署。

Cloudflare 项目、生产 origin、preview/client-web/pr-* 与对应预览别名保持稳定。已通过 GitHub API 核对 main 的 required checks:Workspace contract、client-web E2E、client-webext E2E;保留这些 context 与 App 绑定,只改工作流显示名。真正的数据库/HTTP/OAuth client、第三方协议术语、不可变历史以及旧身份迁移输入也不机械改写。

兼容名称、原因和移除条件集中在 Web 交付文档,不声称所有 client 字面量消失。

下一步与跨仓关系

请维护者评审命名覆盖与兼容边界。统一跟踪:InKCre/docs#55;共享规范:InKCre/docs#56;Runtime/Registry 同步:InKCre/ext-reg#69。共享规范引用固定到已推送的 d7c4d0c998455d40c30deb25da5b5060eb85aba1,以独立提交更新。

新 Runtime 正式发布后,再准入真实的新 tarball 并移除限定 Zod 覆写;这不是本 PR 假造新包的前置步骤。当前双参数与精确旧包兼容允许 App/Registry 分别部署。生产发布、合并及本地浏览器 E2E 均未执行。

验证证据

  • 最终依赖状态 pnpm check 全通过:格式、类型感知 lint、workspace/runtime/database/locale 合同、全仓类型、Web/WebExt/所有扩展构建、包契约、独立 SDK tarball 与观测测试。
  • pnpm --filter @inkcre/webext build:firefox,Chromium/Firefox 产物身份和 WebExt 发布规则测试通过。
  • runtime probe、WebExt release、Pages preview、独立 MF release 共 8 项测试通过;受控 HTTP 的 MF publication 测试 2 项通过,未连接真实 Registry 或发布生产资产。
  • pnpm check:release:web、package 检查、changeset status、冻结安装、PDM lock 检查和固定版 actionlint 通过。
  • git diff --check 与共享文档 pre-bump / pre-commit 检查通过;浏览器扩展固定公钥与父分支逐字节一致。
  • 未执行本地 E2E,遵守本任务限制。现有云端 E2E 保留;当前 CI/Pages preview 只匹配 base main,本 stack 在父 PR 合并并 restack、更新 base 后取得云端证据。

复用现有构建、包与发布行为检查验证真实路径和产物身份,没有增加只匹配改名字符串的测试。

Stack

  • Parent PR:InKCre/impl-ts#186,base feat/observability-unification。
  • 已知子 PR 为 InKCre/impl-ts#189,修复 Dogfood 暴露的 Job 观测窗口与提交弹窗问题。
  • 依次合并父 PR,再将本 PR restack 到最新 main 并重跑正常云端检查。

风险、交付与回滚

主要风险是路径遗漏、安装别名解析、旧安装与部署标识不一致;全仓构建、冻结安装和双浏览器身份检查已覆盖可本地验证的边界。目录移动不迁移或删除用户数据,也不更新已发布 MF 坐标。生产资源、凭据与分支保护均未变更。

回滚源码提交可恢复旧目录、包名和工具链;保留的 origin、存储与浏览器身份使回滚仍读取同一份本机数据。共享规范引用可单独回退;已发布历史不重写。

- 将应用目录和包名迁移为 web 与 webext,更新构建、发布、检查和文档引用

- 以新 Runtime 导入名消费真实旧发布包,保留存储、浏览器身份、MF ABI 与部署兼容标识

- 对旧 Runtime 限定更新 Zod 依赖并记录兼容标识的移除条件
@xiaoland
xiaoland force-pushed the feat/app-peer-naming branch from 167a4b1 to e6333f6 Compare November 5, 2026 10:05
@xiaoland
xiaoland changed the base branch from feat/observability-unification to main November 5, 2026 10:05
@xiaoland
xiaoland marked this pull request as ready for review November 5, 2026 10:05
@xiaoland
xiaoland merged commit 4aaeb6d into main Nov 5, 2026
5 checks passed
@github-project-automation github-project-automation Bot moved this from Review / acceptance to Done in InKCre Current Work Nov 5, 2026

This branch was successfully deployed

1 active deployment
preview — e6333f65 Deployed Nov 5, 2026 by xiaoland via Retire exact Pages preview #167
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant