// screens.jsx — content for each screen of the dashboard // Depends on: window.Icon, window.Sparkline, window.Bars, sample data globals const { useState, useEffect, useRef, useMemo } = React; // ─────────────────────────── shared bits ─────────────────────────── const Pill = ({ tone = "muted", pulse = false, children }) => ( {children} ); const SectionHd = ({ title, sub, actions }) => (
{sub}
}Split Anthropic/OpenAI API surfaces · forwarding to codex chatgpt backend
| Check | Result | Duration |
|---|---|---|
| {s.name} | {s.ms < 1000 ? `${s.ms} ms` : `${(s.ms/1000).toFixed(2)} s`} |
| Provider | Schema | Label | Base URL | Key | Status | |
|---|---|---|---|---|---|---|
| {p.provider} | {p.schema || "openai-compatible"} | {p.label} | {p.base_url} | {p.key_preview} | {p.enabled ? |
| Label | Key | Schema | Route | Status | |
|---|---|---|---|---|---|
| {k.label} | {k.key_preview} | {k.schema || "both"} | {k.provider ? `${k.provider}${k.provider_label ? " · " + k.provider_label : ""}` : "default"} | {k.enabled ? |
| Public alias | Codex model | Context | Status | Notes | ||
|---|---|---|---|---|---|---|
|
{editing === m.id ? (
updateModel(m.id, "alias", e.target.value)} placeholder="claude-sonnet-4-6"/>
) : (
{m.alias}
{m.default &&
)}
|
{editing === m.id ? ( updateModel(m.id, "real", e.target.value)} placeholder="gpt-5.5"/> ) : (m.real || "—")} |
{editing === m.id ? (
) : (m.context === "1m" ? |
{m.status === "ok" && |
{invalidIds.has(m.id) ? "Alias and Codex model are required; aliases must be unique." : `${m.alias || "New alias"} maps to ${m.real || "no upstream model"}`} |
|