Canvas: Do not render input on config tab

Change-Id: I5ebe939457610546ae59894958dbac153fcefcdf
diff --git a/apps/canvas/front/eslint.config.js b/apps/canvas/front/eslint.config.js
index b4af048..53e1e9b 100644
--- a/apps/canvas/front/eslint.config.js
+++ b/apps/canvas/front/eslint.config.js
@@ -23,6 +23,7 @@
 		},
 		rules: {
 			...reactHooks.configs.recommended.rules,
+			"react-hooks/exhaustive-deps": "error",
 			"react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
 			"@typescript-eslint/no-unused-vars": [
 				"error",
diff --git a/apps/canvas/front/src/Config.tsx b/apps/canvas/front/src/Config.tsx
index 9b410e1..137a467 100644
--- a/apps/canvas/front/src/Config.tsx
+++ b/apps/canvas/front/src/Config.tsx
@@ -1,13 +1,25 @@
 import { useStateStore } from "./lib/state";
 import { generateDodoConfig } from "./lib/config";
 import JSONView from "@microlink/react-json-view";
+import { useMemo } from "react";
 
 export function Config() {
 	const store = useStateStore();
+	const config = useMemo(
+		() => generateDodoConfig(store.projectId, store.nodes, store.env),
+		[store.projectId, store.nodes, store.env],
+	);
+	const cleaned = useMemo(() => {
+		if (config == null) {
+			return null;
+		}
+		const { input: _, ...rest } = config;
+		return rest;
+	}, [config]);
 	return (
 		<div className="h-full p-4 bg-muted overflow-auto text-xs">
 			<JSONView
-				src={generateDodoConfig(store.projectId, store.nodes, store.env) as object}
+				src={cleaned as object}
 				theme="rjv-default"
 				name={false}
 				displayDataTypes={false}
diff --git a/apps/canvas/front/src/Gateways.tsx b/apps/canvas/front/src/Gateways.tsx
index a1fce28..92a30a2 100644
--- a/apps/canvas/front/src/Gateways.tsx
+++ b/apps/canvas/front/src/Gateways.tsx
@@ -17,11 +17,13 @@
 	return (
 		<ul>
 			{Array.from(groupedAccess.entries()).map(([name, access]) => (
-				<li key={name}>
+				<>
 					{access.map((a) => (
-						<Gateway g={a} />
+						<li key={name}>
+							<Gateway g={a} />
+						</li>
 					))}
-				</li>
+				</>
 			))}
 		</ul>
 	);
diff --git a/apps/canvas/front/src/components/node-gateway-tcp.tsx b/apps/canvas/front/src/components/node-gateway-tcp.tsx
index c37f31b..4210d47 100644
--- a/apps/canvas/front/src/components/node-gateway-tcp.tsx
+++ b/apps/canvas/front/src/components/node-gateway-tcp.tsx
@@ -235,7 +235,7 @@
 				),
 			);
 		},
-		[id, data, store],
+		[id, data, store, nodes],
 	);
 	return (
 		<>