Skip to content

feat(peer): 保存并切换多个命名连接 - #167

Draft
xiaoland wants to merge 2 commits into
mainfrom
feat/peer-saved-connections
Draft

xiaoland wants to merge 2 commits into
mainfrom
feat/peer-saved-connections

Conversation

@xiaoland

@xiaoland xiaoland commented Oct 25, 2026 •

Copy link
Copy Markdown
Member

目的与范围

Web 与浏览器扩展原先只保留一组连接配置,切换信息库需要覆盖地址和凭据。本次增加本地命名连接列表与当前选择,重新打开后恢复上次使用的连接。

  • Web 每个连接保留独立 Peer UUID 和运行设置;切回已保存条目复用原身份。保存并使用时先验证连接,连接或持久化失败不覆盖当前选择。
  • 切换前收束旧运行时,清理 Resolver 缓存以及连接相关的搜索、侧栏状态。旧单连接自动成为首项,保留原身份。
  • Web v3 备份包含所有连接、活动选择及语言,仍接受 v2 单连接备份;导入会替换本地列表,导出包含连接凭据。
  • 浏览器扩展在其现有 API 地址入口保存命名地址,其他打开的扩展页面通过 storage 变化同步选择。本 PR 不改其请求协议,不包含独立网页采集重写。
  • 不增加跨设备同步或数据库迁移。只携带本任务改动,不包含语义检索、提取结果读取或 shared-doc 子模块更新。

验证证据

  • 在最新 main e4f75a6 的独立工作树完成 pnpm install --frozen-lockfile 与完整 pnpm check,格式、lint、类型、构建及包合同均通过。
  • node --test scripts/tests/saved-connections.test.mjs:1 项通过,覆盖 A/B/A 身份保持、重新加载、连接/保存失败不提交,以及导入恢复。使用内存存储和隔离候选运行时,证明持久化边界,不代替数据库端到端。
  • pnpm exec playwright test --project browser-extension:2 项通过,包括真实 Chromium 扩展内的旧地址保留、多连接保存、重新打开及跨选项页切换。
  • 已更新运行时文档、双语文案、受影响的现有 E2E 标签/备份断言及 patch changeset。
  • 分支直接基于最新 main;没有父子 PR 依赖。

此前已用 built Web preview 和本机合成 PostgREST fixture 实测添加两项、A/B/A、刷新恢复、失败保留当前选择及完整列表导入/导出。该证据不代表真实多库验收;真实数据库 Web E2E 由 PR CI 执行,本地本轮未重跑。

交付影响

为 @inkcre/core、@inkcre/client-web、@inkcre/client-webext 记录 patch changeset。创建 PR 会触发现有隔离 Pages 预览和 CI;不发布正式软件包、不部署生产、不轮换凭据、不修改共享数据库。

同一用户需求的 Mac 实现在既有 draft PR:InKCre/impl-swift#2。两端独立保存,不存在跨仓合并顺序依赖。

配套 用户手册与产品约定 docs#43 说明 Web、Mac、扩展和 CLI 的保存/切换操作及备份、任务目标边界。多连接推荐按运行形态提供,通常适用于直接与用户交互的 Peer;固定服务一个信息库的 impl-py 服务器可继续使用单一部署配置。手册操作页随对应功能交付,不提前发布。

依赖关系

  • 父 PR:无。
  • 子 PR:无。

风险与回退

主要风险是切换后状态或身份仍属于旧连接,以及备份内容误被当作不含凭据的普通文件。连接身份、列表与选择一起持久化;失败保留已保存选择,备份继续按敏感配置管理。

可以回退此提交恢复原单连接界面;存储中的扁平活动配置保留供旧版本读取。回退前应导出多连接备份,避免旧版重新保存配置时丢失其他条目。浏览器扩展的旧 inkcreApi 值仍保留,但回退前需记录当前选中地址并在旧版重新配置。

- 持久化连接列表与当前选择,切换时保留各连接身份
- 更新完整备份和连接相关状态清理
- 验证重载、失败不覆盖及扩展跨页面同步

This branch was successfully deployed

1 active deployment
preview — 53eb0419 Deployed Oct 25, 2026 by xiaoland via Deploy pull-request preview #483
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant