Align user-facing and seeded anonymous-account labels with anonymous terminology, and show resolved installer version in install and sandbox flows to make release debugging explicit.
Unified · Split
| @@ -11,13 +11,13 @@ CONVEX_SITE_URL=https://your-deployment.convex.site · 10 unmodified lines | |||
| 11 | # Set to 1 to force task execution to Cloudflare dynamic worker runtime only. | 11 | # Set to 1 to force task execution to Cloudflare dynamic worker runtime only. |
| 12 | # EXECUTOR_CLOUDFLARE_DYNAMIC_WORKER_ONLY=1 | 12 | # EXECUTOR_CLOUDFLARE_DYNAMIC_WORKER_ONLY=1 |
| 13 | 13 | ||
| 14 | # ── WorkOS (optional — enables auth, omit for guest-only mode) ── | 14 | # ── WorkOS (optional — enables auth, omit for anonymous mode) ── |
| 15 | # WORKOS_CLIENT_ID=client_... | 15 | # WORKOS_CLIENT_ID=client_... |
| 16 | # WORKOS_API_KEY=sk_test_... | 16 | # WORKOS_API_KEY=sk_test_... |
| 17 | # WORKOS_COOKIE_PASSWORD=<32+ char random string, e.g. openssl rand -base64 32> | 17 | # WORKOS_COOKIE_PASSWORD=<32+ char random string, e.g. openssl rand -base64 32> |
| 18 | # WORKOS_WEBHOOK_SECRET=... | 18 | # WORKOS_WEBHOOK_SECRET=... |
| 19 | 19 | ||
| 20 | # ── Anonymous JWT Auth (optional — enables guest bearer auth via Convex Auth) ── | 20 | # ── Anonymous JWT Auth (optional — enables anonymous bearer auth via Convex Auth) ── |
| 21 | # Generate an ES256 key pair (PKCS8 private + SPKI public), then set both PEM values. | 21 | # Generate an ES256 key pair (PKCS8 private + SPKI public), then set both PEM values. |
| 22 | # ANONYMOUS_AUTH_PRIVATE_KEY_PEM="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" | 22 | # ANONYMOUS_AUTH_PRIVATE_KEY_PEM="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" |
| 23 | # ANONYMOUS_AUTH_PUBLIC_KEY_PEM="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----" | 23 | # ANONYMOUS_AUTH_PUBLIC_KEY_PEM="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----" |
| @@ -227,7 +227,7 @@ export function SessionInfo() { · 226 unmodified lines | |||
| 227 | </Button> | 227 | </Button> |
| 228 | </Link> | 228 | </Link> |
| 229 | ) : ( | 229 | ) : ( |
| 230 | <p className="text-[11px] text-muted-foreground text-center">Guest mode</p> | 230 | <p className="text-[11px] text-muted-foreground text-center">Anonymous mode</p> |
| 231 | )} | 231 | )} |
| 232 | </div> | 232 | </div> |
| 233 | )} | 233 | )} |
| @@ -268,7 +268,7 @@ export function WorkspaceSelector({ inHeader = false }: { inHeader?: boolean }) · 267 unmodified lines | |||
| 268 | ) | 268 | ) |
| 269 | : ( | 269 | : ( |
| 270 | <DropdownMenuItem disabled className="text-xs"> | 270 | <DropdownMenuItem disabled className="text-xs"> |
| 271 | Guest workspace | 271 | Anonymous workspace |
| 272 | </DropdownMenuItem> | 272 | </DropdownMenuItem> |
| 273 | )} | 273 | )} |
| 274 | {supportsOrganizationManagement ? ( | 274 | {supportsOrganizationManagement ? ( |
| @@ -139,7 +139,7 @@ export function SessionProvider({ children }: { children: ReactNode }) { · 138 unmodified lines | |||
| 139 | staleTime: Number.POSITIVE_INFINITY, | 139 | staleTime: Number.POSITIVE_INFINITY, |
| 140 | queryFn: async () => { | 140 | queryFn: async () => { |
| 141 | if (!storedSessionId) { | 141 | if (!storedSessionId) { |
| 142 | throw new Error("No guest session id available"); | 142 | throw new Error("No anonymous session id available"); |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | const context = await bootstrapAnonymousSession({ sessionId: storedSessionId }); | 145 | const context = await bootstrapAnonymousSession({ sessionId: storedSessionId }); |
| @@ -736,6 +736,15 @@ fi · 735 unmodified lines | |||
| 736 | 736 | ||
| 737 | echo "" | 737 | echo "" |
| 738 | echo "Installed to: $INSTALL_DIR/$APP" | 738 | echo "Installed to: $INSTALL_DIR/$APP" |
| 739 | if [[ -n "$RESOLVED_VERSION" ]]; then | ||
| 740 | if [[ "$RESOLVED_VERSION" == "latest" ]]; then | ||
| 741 | echo "Version: latest" | ||
| 742 | else | ||
| 743 | echo "Version: v$RESOLVED_VERSION" | ||
| 744 | fi | ||
| 745 | elif [[ -n "$BINARY_PATH" || -f "$LOCAL_BINARY_CANDIDATE" ]]; then | ||
| 746 | echo "Version: local build" | ||
| 747 | fi | ||
| 739 | if [[ -f "$WEB_INSTALL_DIR/server.js" ]]; then | 748 | if [[ -f "$WEB_INSTALL_DIR/server.js" ]]; then |
| 740 | echo "Web bundle installed to: $WEB_INSTALL_DIR" | 749 | echo "Web bundle installed to: $WEB_INSTALL_DIR" |
| 741 | fi | 750 | fi |
| @@ -45,8 +45,8 @@ export async function ensureAnonymousIdentity( · 44 unmodified lines | |||
| 45 | const accountId = await ctx.db.insert("accounts", { | 45 | const accountId = await ctx.db.insert("accounts", { |
| 46 | provider: "anonymous", | 46 | provider: "anonymous", |
| 47 | providerAccountId, | 47 | providerAccountId, |
| 48 | email: `${providerAccountId}@guest.executor.local`, | 48 | email: `${providerAccountId}@anonymous.executor.local`, |
| 49 | name: "Guest User", | 49 | name: "Anonymous User", |
| 50 | status: "active", | 50 | status: "active", |
| 51 | createdAt: now, | 51 | createdAt: now, |
| 52 | updatedAt: now, | 52 | updatedAt: now, |
| @@ -205,6 +205,13 @@ try { · 204 unmodified lines | |||
| 205 | ); | 205 | ); |
| 206 | assertSuccess(install, "sandbox install"); | 206 | assertSuccess(install, "sandbox install"); |
| 207 | 207 | ||
| 208 | const installedVersion = extractSemver(install) ?? extractInstalledVersion(install); | ||
| 209 | if (installedVersion) { | ||
| 210 | console.log(`[sandbox] installed executor version: v${installedVersion}`); | ||
| 211 | } else { | ||
| 212 | console.warn("[sandbox] could not determine installed executor version from installer output"); | ||
| 213 | } | ||
| 214 | |||
| 208 | const runtimeDoctor = await runSandboxBash( | 215 | const runtimeDoctor = await runSandboxBash( |
| 209 | sandbox, | 216 | sandbox, |
| 210 | "~/.executor/bin/executor doctor --runtime-only --verbose", | 217 | "~/.executor/bin/executor doctor --runtime-only --verbose", |
| @@ -228,7 +235,6 @@ try { · 17 unmodified lines | |||
| 228 | if (isNoProjectDoctorResult(doctor)) { | 235 | if (isNoProjectDoctorResult(doctor)) { |
| 229 | console.warn("[sandbox] doctor reported no local project context; attempting bootstrap recovery from release tag source"); | 236 | console.warn("[sandbox] doctor reported no local project context; attempting bootstrap recovery from release tag source"); |
| 230 | 237 | ||
| 231 | const installedVersion = extractSemver(install) ?? extractInstalledVersion(install); | ||
| 232 | if (!installedVersion) { | 238 | if (!installedVersion) { |
| 233 | throw new Error("Could not determine installed executor version for bootstrap recovery"); | 239 | throw new Error("Could not determine installed executor version for bootstrap recovery"); |
| 234 | } | 240 | } |