feat(dashboard): OpenAI Codex subscription card in onboarding quick start
Placed directly after the Anthropic subscription and before the API-key options; previously reachable only under Advanced. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
7
.changeset/codex-quick-start-placement.md
Normal file
7
.changeset/codex-quick-start-placement.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
"@runfusion/fusion": minor
|
||||
---
|
||||
|
||||
summary: The OpenAI Codex subscription sign-in now appears in onboarding quick start, right after the Anthropic subscription.
|
||||
category: feature
|
||||
dev: "ModelOnboardingModal QUICK_START_PROVIDER_IDS: openai-codex inserted between anthropic-subscription and anthropic-api-key; previously it was only reachable under Advanced."
|
||||
@@ -266,8 +266,11 @@ function getProviderDisplayName(providerId: string): string {
|
||||
FNXC:Onboarding 2026-07-03-00:00:
|
||||
Onboarding quick start must show practical first-run choices beyond Anthropic, including OpenAI/ChatGPT, Google/Gemini, OpenRouter, and Ollama when those visible providers are configured.
|
||||
Keep Anthropic subscription OAuth and raw Anthropic API-key auth as separate first-class cards; use the legacy `anthropic` id only as a fallback for older status payloads.
|
||||
|
||||
FNXC:Onboarding 2026-07-18-03:40:
|
||||
The OpenAI Codex subscription card belongs in quick start (it was buried in Advanced), placed directly AFTER the Anthropic subscription and BEFORE the API-key options — subscription sign-ins are the primary first-run path, keys are the fallback.
|
||||
*/
|
||||
const QUICK_START_PROVIDER_IDS = ["anthropic-subscription", "anthropic-api-key", "anthropic", "openai", "google", "gemini", "openrouter", "ollama"] as const;
|
||||
const QUICK_START_PROVIDER_IDS = ["anthropic-subscription", "openai-codex", "anthropic-api-key", "anthropic", "openai", "google", "gemini", "openrouter", "ollama"] as const;
|
||||
|
||||
const ONBOARDING_CURATED_PROVIDER_FAMILY_ORDER = [
|
||||
"anthropic",
|
||||
|
||||
@@ -651,9 +651,15 @@ describe("ModelOnboardingModal", () => {
|
||||
});
|
||||
|
||||
it("preserves split Anthropic quick-start cards and suppresses legacy Anthropic fallback", async () => {
|
||||
/*
|
||||
FNXC:Onboarding 2026-07-18-03:40:
|
||||
The OpenAI Codex subscription card sits in quick start directly AFTER the
|
||||
Anthropic subscription and BEFORE the API-key options.
|
||||
*/
|
||||
mockFetchAuthStatus.mockResolvedValueOnce({
|
||||
providers: [
|
||||
{ id: "openai", name: "OpenAI", authenticated: false, type: "api_key" },
|
||||
{ id: "openai-codex", name: "OpenAI Codex", authenticated: false, type: "oauth" },
|
||||
{ id: "anthropic", name: "Anthropic", authenticated: false, type: "oauth" },
|
||||
{ id: "anthropic-api-key", name: "Anthropic API Key", authenticated: false, type: "api_key" },
|
||||
{ id: "anthropic-subscription", name: "Anthropic Subscription", authenticated: false, type: "oauth" },
|
||||
@@ -663,7 +669,7 @@ describe("ModelOnboardingModal", () => {
|
||||
render(<ModelOnboardingModal onComplete={vi.fn()} addToast={vi.fn()} projectId="proj_123" />);
|
||||
|
||||
const quickStartSection = await screen.findByTestId("onboarding-quick-start-providers");
|
||||
expect(getProviderOrderInSection(quickStartSection)).toEqual(["anthropic-subscription", "anthropic-api-key", "openai"]);
|
||||
expect(getProviderOrderInSection(quickStartSection)).toEqual(["anthropic-subscription", "openai-codex", "anthropic-api-key", "openai"]);
|
||||
expect(within(quickStartSection).queryByTestId("onboarding-provider-card-anthropic")).toBeNull();
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user