mirror of
https://github.com/nexu-io/open-design.git
synced 2026-10-27 09:51:12 +01:00
* chore: unify product name display to OpenDesign repo-wide Rename the user-facing product name from "Open Design" to "OpenDesign" across documentation, web/desktop UI strings, i18n locales, prompts, plugin/skill/design-system content, changelogs, and specs, matching the landing-page rename already in flight. Deliberately excluded so installed-app identity stays untouched: - packages/release PRODUCT_NAME and everything derived from it (app bundle names, installer/registry identity, updater feeds) - tools/pack, tools/release, apps/packaged, landing page (PR #6983) - mocks/ recorded traces and LICENSE - test fixtures and comments that encode real on-disk install paths (Open Design.app, Program Files\Open Design, AppData paths) Validated with pnpm guard, pnpm typecheck, and targeted web/desktop/host test runs over the renamed strings. * fix(web): keep two-letter author monogram for CamelCase brand names authorInitials split words on whitespace only, so the renamed single-token author name "OpenDesign" produced a one-letter monogram. Treat lower-to-upper CamelCase boundaries as word breaks so the avatar fallback stays "OD". * fix(release): restore spaced Windows source artifact names in win.ps1 tools/pack still derives builder outputs from the unchanged PRODUCT_NAME ("Open Design"), so the asset script must look for the spaced filenames. Matches the mac/mac-intel/linux asset scripts, which were already kept on the original names. --------- Co-authored-by: Joey <236967869+joeylee12629-star@users.noreply.github.com>
3.7 KiB
3.7 KiB
AMR 登录同步规则
目的
本文档用于对齐 OpenDesign 与 Vela 网页钱包 在以下场景中的状态预期:
- 登录
- 登出
- 网页端切换账号
- 状态收敛
目标不是追求“强实时双向同步”,而是保证:
- 用户感知稳定
- 不静默串号
- 不静默恢复错误账号
- 后续状态能正确收敛
两层状态
AMR 当前有两层相互独立、但会互相影响的状态:
OpenDesign 客户端本地登录态
- 以本地
~/.vela/config.json和当前 AMR profile 的有效登录信息为准 - 这是 OpenDesign 判断“当前能不能用 AMR”的主依据
Vela 网页钱包登录态
- 以浏览器中的网页 session / cookie 为准
- 这是钱包页判断“当前能不能看余额、充值、退出登录”的主依据
这两层状态允许短暂不一致,但后续必须正确收敛。
核心规则
1. OpenDesign 内点击 Sign in
- OpenDesign 调用本地登录流程
- Vela CLI 拉起网页登录/授权
- 用户在网页完成授权后,OpenDesign 通过状态轮询收敛成已登录
预期:
- OpenDesign 不直接假设网页已成功登录
- 只有本地状态真正可用后,才显示为已登录
2. OpenDesign 内点击 Sign out
- 优先清理 OpenDesign 本地 AMR 登录态
- OpenDesign 立即显示为未登录
- 不要求浏览器中的 Vela 网页钱包会话同步退出
预期:
- 本地登出应立即生效
- 即使网页还保持登录,OpenDesign 也不能自动恢复成已登录
3. Vela 网页端点击“退出登录”
- 优先清理 网页钱包会话
- 不要求 OpenDesign 必须实时收到退出事件
预期:
- OpenDesign 可以短暂仍显示旧状态
- 但在后续刷新状态、打开 Settings、发起 AMR 请求时,必须收敛成“需要重新登录”或明确权限错误
4. 网页端手动切换账号
- 如果用户在钱包页从账号 A 切到账号 B
- OpenDesign 默认仍保持本地账号 A
预期:
- 网页切账号,不应自动切客户端账号
- 只有用户在 OpenDesign 内再次显式
Sign in并完成网页登录后,客户端才正式切到账号 B
5. 状态收敛优先于强实时同步
推荐采用:
- “本地状态先准”
- “网页状态独立变化”
- “在关键节点重新校验并收敛”
关键节点包括:
- 打开 Settings
- 打开 onboarding
- 打开钱包入口
- 发起一次 AMR chat run
- 用户主动刷新状态
不允许发生的行为
- 网页端切账号后,OpenDesign 静默切到新账号
- OpenDesign 本地已登出,但因为网页还登录着而自动恢复已登录
- 钱包页已退出登录,但 OpenDesign 长期假装仍可正常使用 AMR
- A 账号网页状态污染到 B 账号客户端身份、余额文案或聊天身份
推荐实现策略
基础版
- OpenDesign 的
Sign out只清本地状态 - 网页端退出登录后,OpenDesign 在后续关键动作中重新校验并收敛
增强版
- 钱包页退出登录或切账号时,尝试通过 bridge / callback / postMessage 通知 OpenDesign
- OpenDesign 收到事件后主动刷新 AMR 状态
- 即使事件丢失,仍由“后续关键动作重新校验”兜底
测试重点
最关键的验证点有 6 个:
- OpenDesign 本地
Sign out后立即变未登录 - 网页端退出登录后,OpenDesign 后续能正确收敛
- 网页端切账号后,OpenDesign 默认保持旧账号
- 只有显式重新登录后,OpenDesign 才切到新账号
- 弱网、多 tab、旧网页会话残留时不串号
- 余额、钱包入口、聊天身份不会跨账号污染
对应测试文档
完整功能回归用例见: