Skip to content

Changelog ​

本页内容由 VitePress 直接 include packages/auth/CHANGELOG.md,changesets 在每次发版时自动维护,无需手工编辑。

@tripo3d/auth ​

2.9.0 ​

Minor Changes ​

  • fbc5723: 新增登录链路过程埋点能力:构造选项 onEvent 让宿主接收 SDK 各阶段事件(只给裸事件名与低基数参数,事件坐标由宿主补全),getJourneyId 把宿主的登录旅程 ID 随 transient_payload 透传给 Kratos,使服务端 flow 可与前端阶段事件关联。两者均为可选,不传时行为与此前一致。

    覆盖的事件:登录墙展示与放弃(login_dialog_shown 带 surface=dialog|page、login_dialog_dismissed)、方法选择(login_method_selected,Google 另以 google_entry 区分 GSI 按钮 / One Tap / 重定向兜底)、分步返回(login_step_back)、身份预检与发码提交(identifier_checked、code_sent、code_submitted、password_submitted)、已有会话(session_already_available)、OIDC(oidc_authorized、oidc_edge_verified)、重置密码三步(reset_code_sent、reset_code_submitted、reset_password_submitted)、独立登录页交接(login_handoff)。前端校验拦下、未抵达 IDP 的失败同样上报 rejected,与服务端失败共用事件名但可按 error_domain 拆分。

    失败归因收敛到低基数取值:error_class 不再透传 ory flow 实例 UUID(body.id 每次请求都变,会让看板维度爆炸),改为取稳定的 error.id 或 ui.messages[].id 并映射为 code_invalid / password_invalid / identifier_missing 等;error_domain 区分 business_validation / client_network / product_technical / risk_control,使用户输错与服务故障不再混进同一个失败率。

    埋点通道永不 throw,上报失败不影响认证流程。

2.8.3 ​

Patch Changes ​

  • 31d2f89: 新增登录弹框 UI 配置能力:支持在应用启动阶段预取运营中台配置,并按传入的样式 variant 渲染左侧视觉、图片、品牌/场景文案及 Form 标题、副标题;配置异常时自动回退到内置 control,不改变认证流程、认证方式或用户政策。

2.8.1 ​

Patch Changes ​

  • Updated dependencies [7bd5d65]
    • @tripo3d/design@0.12.0

2.8.0 ​

Minor Changes ​

  • 5af9ebd: @tripo3d/auth 新增 Nuxt 入口,并整合 Google GSI / 登录信号链路:包含 ./nuxt 导出、publishLogin / consumeSignal / readSignalRecord 等信号能力,以及对 pendingSignals 的有界清理修复。

2.7.3 ​

Patch Changes ​

  • b9a649b: - @tripo3d/auth: 登录左侧品牌区改用 left-background.webp 背景图替换紫色光晕 div

2.7.2 ​

Patch Changes ​

  • 9552f14: - @tripo3d/auth: 新增 useFedcmForButton 构造项与 preloadGoogleGsi 预热接口,GSI 按钮按浏览器探测 FedCM 并在加载/提交失败时降级;修复邮箱验证码跨步冷却、网络异常 i18n 文案与轮播图解码后再切换

2.7.1 ​

Patch Changes ​

  • fabebb1: - @tripo3d/auth: 新增浏览器 FedCM 探测决定 GSI 按钮 UX,加 preloadGoogleGsi 预热与 onInteractionError 交互异常降级;renderGoogleButton 失败改 resolve null(破坏签名)

2.7.0 ​

Minor Changes ​

  • 710b822: feat(auth): 将 auth.reset 密码重置拆分为三步,修复验证码错误与密码错误串屏

    原来 auth.reset.submitNewPassword({ code, password }) 把「提交验证码」与「改密」合并为一次原子调用,两类错误(验证码错、密码错如「新密码不能与旧密码相同」)都从同一次调用抛出且同为 FLOW 类型,UI 无法区分,导致密码错误被错误地显示在验证码输入步。现拆分为三步(对齐 auth.settings 的两屏 UX):

    • 新增 auth.reset.verifyCode({ code }):提交验证码完成提权(recovery flow → privileged session)。验证码错误在此抛 FLOW;未先 sendCode 抛 VALIDATION。
    • Breaking:auth.reset.submitNewPassword 签名由 { code, password } 改为 { password },只在已提权的 session 内改密。密码类错误(新旧相同 / 强度不足)在此抛 FLOW 且保留提权状态(可原地改密重试,无需重新验码);提权过期抛 PRIVILEGED_SESSION_EXPIRED。调用前必须先 verifyCode,否则抛 VALIDATION。

    迁移:await auth.reset.submitNewPassword({ code, password }) → await auth.reset.verifyCode({ code }); await auth.reset.submitNewPassword({ password })。

    另外:auth.reset.submitNewPassword 成功后现在会写登录信号 cookie(writeSignal({ provider: 'password' }))。recovery 验证码校验通过时 ory 已把当前会话认证为登录态,重置密码即完成一次登录,故与 submitPassword / submitCode / oidc 一致写信号;容器(dialog useConsumeSignal 关窗+emitLogin / 独立页 useReadSignal 跳 returnTo)自动收尾直接进入登录态,不再引导重新登录(旧行为回登录页会因已认证 session 撞 "you are already logged in")。

2.6.2 ​

Patch Changes ​

  • Updated dependencies [5e2daaa]
    • @tripo3d/design@0.11.0

2.6.1 ​

Patch Changes ​

  • Updated dependencies [72f26c5]
    • @tripo3d/design@0.10.0

2.6.0 ​

Minor Changes ​

  • 003934d: - @tripo3d/auth: 新增 oidc.promptGoogleOneTap 编排器与 oidc.submitIdToken(id_token 直传登录),导出 GoogleOneTapConfig / GoogleOneTapOptions 类型

2.5.0 ​

Minor Changes ​

  • 1fc70be: feat(auth): 支持注入 transient_payload(device_id 构造期 + 调用期附加)到全部 update*Flow

    • TripoAuthOptions 新增 deviceId?: string:设备级静态值,构造时注入后自动作为 transient_payload.device_id 注入登录/注册/重置/改密链路的全部 update*Flow
    • 各动作方法 options 新增 transientPayload?: Record<string, unknown>:本次调用附加的临时数据,与构造期 deviceId 合并后注入(deviceId 优先)。覆盖 login.sendCode/submitCode/submitPassword/startOidc、reset.sendCode/submitNewPassword、settings.sendVerifyCode/verifyCode/updatePassword
    • transient_payload 仅本次提交对后端 / webhook 可见、不落库到 identity traits;OIDC 由 ory 暂存在 flow 上,回跳完成认证时仍可取到
    • 全部新增字段可选,不传时请求体不含 transient_payload,向后兼容

2.4.0 ​

Minor Changes ​

  • 41af6a2: feat(auth): 恢复手机号验证码登录并支持 OIDC provider 显隐配置

    • core login.sendCode / login.submitCode 新增重载,支持 { phone }(手机号为完整号码串,区号在 UI 层拼),邮箱调用零改动
    • UI 新增 loginMethod('email' | 'phone',互斥)与 oidcProviders(per-provider 显隐开关)两个 prop,作用于 showLogin / LoginPage / LoginDialog
    • phone 模式仅验证码(无密码、无忘记密码),区号固定 +86

2.3.0 ​

Minor Changes ​

  • 093500d: - @tripo3d/auth: 重构 signal 为单 payload 事件模型,OnLoginHandler 改收 { signal, context };新增 logout 事件与 onLogout 订阅,移除内部 _emitEvent/_onEvent;emitLogin 派发前 refresh 兜底、emitLogout 派发前 clear token

2.2.3 ​

Patch Changes ​

  • 461a4f4: - @tripo3d/auth: 修复登录面板移动端宽度抖动,OidcEdgeForm 改用 fragment 结构与 LoginForm 布局对齐

2.2.2 ​

Patch Changes ​

  • 44a1b80: - @tripo3d/auth: 重构登录信号为独立 signal 命名空间,onLogin 从 auth.login 迁至 auth.signal,新增 readSignal/writeSignal/emitLogin

2.2.1 ​

Patch Changes ​

  • 8c53b83: fix(auth): cookie not carried/persisted on ory requests

    RequestClient.fetcher 将默认 credentials: 'include' 放在了 ...init 之前,被 ory runtime 显式注入的 init.credentials === undefined 反向覆盖,导致跨子域请求既不携带 cookie 也不接受 Set-Cookie(表现为 security_csrf_violation)。

    修复:

    • request.ts 改为先 ...init、再用 if (merged.credentials === undefined) 兜底注入,并按原始 HeadersInit 形态补 Accept / Content-Type。
    • client.ts 在 Configuration 中显式传 credentials: 'include',从 ory 官方入口把 initParams.credentials 设为 'include'。
  • 8c53b83: fix(auth): token.get() 不再主动从 0 探测 ory

    之前 token.get() 在「无 cache」时会自动触发 refresh() → 调 ory toSession,未登录用户每次业务请求都会连锁产生一次 401,把请求拦截器变成请求风暴源。

    修复后 get() 的语义按「读」收敛:

    • 有新鲜 cache → 直接返回
    • 有 cache 但临近过期 → await refresh
    • 无 cache 但已有在飞 refresh → 复用 inflight
    • 无 cache 也无在飞 → 直接返回 undefined(不打 ory)

    业务约定「有 token = 已登录」「无 token ≈ 未登录」。首次探测请业务在 SPA bootstrap 阶段显式调 auth.token.refresh(),由它去打 ory;refresh 失败/返回 undefined 即为未登录。

2.2.0 ​

Minor Changes ​

  • aa1bca7: - @tripo3d/auth: 新增 auth.settings 命名空间(sendVerifyCode/verifyCode/updatePassword),支持已登录用户经邮箱验证码提权后改密码,并加 PRIVILEGED_SESSION_EXPIRED 错误类型

2.1.0 ​

Minor Changes ​

  • f637c48: - @tripo3d/auth: 新增 ./vite 子路径导出 tripoAuth 插件,并为 showLogin/LoginDialog 增加 locale 入参及 LocaleInput 类型

2.0.0 ​

Major Changes ​

  • 1e14b06: - @tripo3d/auth: 重构 SDK 入口,拆分 . 与 ./ui 双导出,TripoAuthParams 改名 TripoAuthOptions,新增 showLogin 登录页 UI 层与 fetchSessionToken

1.0.1 ​

Patch Changes ​

  • 2a54385: - @tripo3d/auth: 修正 token 刷新流程,刷新前先清缓存并移除过期回退老 token 的兜底

1.0.0 ​

Major Changes ​

  • ab5fb7b: - @tripo3d/auth: 重构为 namespace 门面(login/oidc/password/token/bus),重命名 tokenized 为 token,新增跨窗事件总线 BusApi

0.5.5 ​

Patch Changes ​

  • Updated dependencies [cc7084b]
    • @tripo3d/utils@0.4.0

0.5.4 ​

Patch Changes ​

  • Updated dependencies [41562bd]
    • @tripo3d/utils@0.3.0

0.5.1 ​

Patch Changes ​

    • @tripo3d/auth: 折叠 fetcher 默认注入 credentials/Accept/Content-Type,并在 flow handler 兜底非 JSON 响应避免裸 SyntaxError
    • @tripo3d/design: 给 preview opener 的 close/setIndex/setPosition 加 SSR 守卫,防止跨请求 state 污染

0.5.0 ​

Minor Changes ​

  • 新增 fetchTokenized?: (fetcher: FetchAPI) => Promise<string | undefined> 构造参数。业务方可注入自定义续签策略(团队版定制 endpoint),优先于默认 _api.toSession({ tokenizeAs: 'default_jwt' }) 调用。fetcher 已折叠 middleware,自定义请求需带 credentials: 'include'。

Patch Changes ​

  • 内部重构:src/core.ts 1011 行单文件 → 17 文件结构(error.ts / request.ts / flow-handler.ts / oidc.ts / custom-endpoints.ts / flows/{login,signup,settings,verification,recovery,logout,merge,index}.ts + 瘦身后的 core.ts)。公开 API 0 变化。
  • setTokenized 签名从 Promise<void> 改为 void(实际为同步方法,业务方 await 仍合法)。
  • OIDC popup 关闭检测改为 focus + visibilitychange 事件驱动,移除原先的 setInterval(500ms) 轮询。修复 Chrome 的 Cross-Origin-Opener-Policy policy would block the window.closed call. 警告。
  • 7 个原 arrow function property 方法(setTokenized / tokenized / oidcCallback / continueFlowCallback / oidcCancelledCallback / oidcErrorCallback / requestLocaleFromOpener)转为 prototype method,this 绑定语义更清晰。
  • 移除误装的 from / import npm 包(dependencies 清理)。

基于 MIT 协议发布(内部使用)