diff --git a/ui/src/pages/AppsTab/AppsTab.tsx b/ui/src/pages/AppsTab/AppsTab.tsx
index 6a884b93..0fbca0a7 100644
--- a/ui/src/pages/AppsTab/AppsTab.tsx
+++ b/ui/src/pages/AppsTab/AppsTab.tsx
@@ -175,7 +175,7 @@ function CreateAppView({ environments, selectedEnv }: { environments: Environmen
const [newPort, setNewPort] = useState('');
const [envVars, setEnvVars] = useState<{ key: string; value: string }[]>([]);
- const [configTab, setConfigTab] = useState<'monitoring' | 'resources'>('monitoring');
+ const [configTab, setConfigTab] = useState<'variables' | 'monitoring' | 'resources'>('variables');
const [busy, setBusy] = useState(false);
const [step, setStep] = useState('');
@@ -309,10 +309,29 @@ function CreateAppView({ environments, selectedEnv }: { environments: Environmen
{/* Config Tabs */}
+
+ {configTab === 'variables' && (
+ <>
+ {envVars.map((v, i) => (
+
+ {
+ const next = [...envVars]; next[i] = { ...v, key: e.target.value }; setEnvVars(next);
+ }} className={styles.envVarKey} placeholder="KEY" />
+ {
+ const next = [...envVars]; next[i] = { ...v, value: e.target.value }; setEnvVars(next);
+ }} className={styles.envVarValue} placeholder="value" />
+
+
+ ))}
+
+ >
+ )}
+
{configTab === 'monitoring' && (
Engine Level
@@ -412,21 +431,6 @@ function CreateAppView({ environments, selectedEnv }: { environments: Environmen
onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault(); addPort(); } }} />
-
- Environment Variables
- {envVars.map((v, i) => (
-
- {
- const next = [...envVars]; next[i] = { ...v, key: e.target.value }; setEnvVars(next);
- }} className={styles.envVarKey} placeholder="KEY" />
- {
- const next = [...envVars]; next[i] = { ...v, value: e.target.value }; setEnvVars(next);
- }} className={styles.envVarValue} placeholder="value" />
-
-
- ))}
-
>
)}
@@ -647,7 +651,7 @@ function ConfigSubTab({ app, environment }: { app: App; environment?: Environmen
const { data: processorToRoute = {} } = useProcessorRouteMapping(app.slug);
const isProd = environment?.production ?? false;
const [editing, setEditing] = useState(false);
- const [configTab, setConfigTab] = useState<'monitoring' | 'traces' | 'recording' | 'resources'>('monitoring');
+ const [configTab, setConfigTab] = useState<'variables' | 'monitoring' | 'traces' | 'recording' | 'resources'>('variables');
const appRoutes: RouteSummary[] = useMemo(() => {
if (!catalog) return [];
@@ -840,12 +844,34 @@ function ConfigSubTab({ app, environment }: { app: App; environment?: Environmen
)}
+
+ {configTab === 'variables' && (
+ <>
+ {envVars.map((v, i) => (
+
+ {
+ const next = [...envVars]; next[i] = { ...v, key: e.target.value }; setEnvVars(next);
+ }} className={styles.envVarKey} placeholder="KEY" />
+ {
+ const next = [...envVars]; next[i] = { ...v, value: e.target.value }; setEnvVars(next);
+ }} className={styles.envVarValue} placeholder="value" />
+
+
+ ))}
+ {editing && (
+
+ )}
+ {envVars.length === 0 && !editing && No environment variables configured.
}
+ >
+ )}
+
{configTab === 'monitoring' && (
Engine Level
@@ -964,24 +990,6 @@ function ConfigSubTab({ app, environment }: { app: App; environment?: Environmen
onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault(); addPort(); } }} />
-
- {/* Environment Variables */}
- Environment Variables
- {envVars.map((v, i) => (
-
- {
- const next = [...envVars]; next[i] = { ...v, key: e.target.value }; setEnvVars(next);
- }} className={styles.envVarKey} />
- {
- const next = [...envVars]; next[i] = { ...v, value: e.target.value }; setEnvVars(next);
- }} className={styles.envVarValue} />
-
-
- ))}
- {editing && (
-
- )}
>
)}
>