diff --git a/.agents/skills/kitcn/references/features/auth.md b/.agents/skills/kitcn/references/features/auth.md index f54442691..e75576fc7 100644 --- a/.agents/skills/kitcn/references/features/auth.md +++ b/.agents/skills/kitcn/references/features/auth.md @@ -358,6 +358,7 @@ All from `kitcn/react`: | `useMaybeAuth()` | `boolean` | Has token (optimistic, may not be verified) | | `useIsAuth()` | `boolean` | Server-verified authentication | | `useAuthGuard()` | `() => boolean` | Guard mutations, returns true if blocked | +| `useConvexAuthRecovery()` | `{ recover, status, error }` | Rebind Convex auth after a transient token failure | ### useAuthGuard @@ -409,6 +410,28 @@ import { ConvexProviderWithAuth } from 'kitcn/react'; ``` +### Convex Auth Recovery + +Use recovery only when the outer auth provider remains authenticated but +Convex entered an unauthenticated state after a transient token refresh +failure: + +```tsx +import { useConvexAuthRecovery } from 'kitcn/react'; + +const { error, recover, status } = useConvexAuthRecovery(); +await recover(); +``` + +`recover()` replaces the provider-owned auth binding and resolves after Convex +confirms authentication. Concurrent calls share one promise. The default +timeout is 10 seconds; override it with `recover({ timeoutMs })`. + +Failures are `ConvexAuthRecoveryError` values with code +`AUTH_PROVIDER_LOADING`, `AUTH_PROVIDER_UNAUTHENTICATED`, +`AUTH_RECOVERY_CANCELLED`, `AUTH_RECOVERY_FAILED`, or +`AUTH_RECOVERY_TIMEOUT`. Never recover an intentional sign-out. + --- ## Auth Triggers diff --git a/.changeset/brave-cats-recover.md b/.changeset/brave-cats-recover.md deleted file mode 100644 index 2ea3d2a79..000000000 --- a/.changeset/brave-cats-recover.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"kitcn": patch ---- - -## Features - -- Add provider-owned Convex authentication recovery after transient token failures. diff --git a/bun.lock b/bun.lock index 06059c5ab..6f529f8e4 100644 --- a/bun.lock +++ b/bun.lock @@ -119,7 +119,7 @@ }, "packages/kitcn": { "name": "kitcn", - "version": "0.15.15", + "version": "0.15.16", "bin": { "kitcn": "./dist/cli.mjs", "intent": "./bin/intent.js", @@ -180,7 +180,7 @@ }, "packages/resend": { "name": "@kitcn/resend", - "version": "0.15.15", + "version": "0.15.16", "dependencies": { "svix": "^1.84.1", }, diff --git a/packages/kitcn/CHANGELOG.md b/packages/kitcn/CHANGELOG.md index 0c81ca681..40d0d4846 100644 --- a/packages/kitcn/CHANGELOG.md +++ b/packages/kitcn/CHANGELOG.md @@ -1,5 +1,13 @@ # kitcn +## 0.15.16 + +### Patch Changes + +- [#301](https://github.com/udecode/kitcn/pull/301) [`3248105`](https://github.com/udecode/kitcn/commit/32481058f1043a4f9a0a897ee966d9048dc79739) Thanks [@zbeyens](https://github.com/zbeyens)! - ## Features + + - Add provider-owned Convex authentication recovery after transient token failures. + ## 0.15.15 ### Patch Changes diff --git a/packages/kitcn/package.json b/packages/kitcn/package.json index 8c4269f8f..b21cf2083 100644 --- a/packages/kitcn/package.json +++ b/packages/kitcn/package.json @@ -1,6 +1,6 @@ { "name": "kitcn", - "version": "0.15.15", + "version": "0.15.16", "description": "kitcn - React Query integration and CLI tools for Convex", "keywords": [ "convex", diff --git a/packages/resend/CHANGELOG.md b/packages/resend/CHANGELOG.md index 64d074882..c1726b2b4 100644 --- a/packages/resend/CHANGELOG.md +++ b/packages/resend/CHANGELOG.md @@ -1,5 +1,7 @@ # @kitcn/resend +## 0.15.16 + ## 0.15.15 ## 0.15.14 diff --git a/packages/resend/package.json b/packages/resend/package.json index 5a75df69b..007162dc2 100644 --- a/packages/resend/package.json +++ b/packages/resend/package.json @@ -1,6 +1,6 @@ { "name": "@kitcn/resend", - "version": "0.15.15", + "version": "0.15.16", "description": "kitcn Resend plugin", "type": "module", "sideEffects": false,