diff --git a/diagnostic/index.html b/diagnostic/index.html
index d4cce11..f8ea7b9 100644
--- a/diagnostic/index.html
+++ b/diagnostic/index.html
@@ -320,8 +320,7 @@
-
-
+
@@ -338,8 +337,7 @@
-
@@ -386,7 +383,6 @@
-
@@ -1118,13 +1114,12 @@
const btnScroll = document.getElementById('btn-scroll');
let ws;
let activeTab = 'all';
- const DOCKER_TABS = ['gateway', 'proxy', 'bridge'];
- const autoScroll = { all: true, gateway: true, rvs: true, proxy: true, bridge: true, server: true, trace: true };
- const logCounts = { all: 0, gateway: 0, rvs: 0, proxy: 0, bridge: 0, server: 0, trace: 0 };
+ const DOCKER_TABS = ['proxy', 'bridge'];
+ const autoScroll = { all: true, rvs: true, proxy: true, bridge: true, server: true, trace: true };
+ const logCounts = { all: 0, rvs: 0, proxy: 0, bridge: 0, server: 0, trace: 0 };
const logBoxes = {
all: document.getElementById('log-all'),
- gateway: document.getElementById('log-gateway'),
rvs: document.getElementById('log-rvs'),
proxy: document.getElementById('log-proxy'),
bridge: document.getElementById('log-bridge'),
@@ -1178,7 +1173,9 @@
}
function mapSourceToTab(source) {
- if (source === 'gateway') return 'gateway';
+ // Gateway-Source: deprecated — falls noch was reinkommt zeigen wir's
+ // einfach unter 'server'. Spart einen toten Tab.
+ if (source === 'gateway') return 'server';
if (source === 'rvs') return 'rvs';
if (source === 'proxy') return 'proxy';
if (source === 'bridge') return 'bridge';
@@ -1620,18 +1617,6 @@
renderDiagPending();
}
- function testGateway() {
- const input = document.getElementById('chat-input');
- const text = input.value.trim();
- if (!text && diagPendingFiles.length === 0) return;
- if (diagPendingFiles.length > 0) sendDiagAttachments();
- if (text) {
- addChat('sent', text, 'Gateway direkt');
- send({ action: 'test_gateway', text });
- }
- input.value = '';
- }
-
function testRVS() {
const input = document.getElementById('chat-input');
const text = input.value.trim();
@@ -1771,7 +1756,6 @@
if (proxy.models && proxy.models.length) showProxyModels(proxy.models);
// Buttons
- document.getElementById('btn-gw').disabled = gw.status !== 'connected';
document.getElementById('btn-rvs').disabled = rvs.status !== 'connected';
}
@@ -2094,14 +2078,6 @@
modal.style.display = 'none';
}
}
- function testGatewayFS() {
- const input = document.getElementById('chat-input-fs');
- const text = input.value.trim();
- if (!text) return;
- addChat('sent', text, 'Gateway direkt');
- send({ action: 'test_gateway', text });
- input.value = '';
- }
function testRVSFS() {
const input = document.getElementById('chat-input-fs');
const text = input.value.trim();
diff --git a/diagnostic/server.js b/diagnostic/server.js
index db7471d..d38d28a 100644
--- a/diagnostic/server.js
+++ b/diagnostic/server.js
@@ -492,9 +492,10 @@ function handleGatewayMessage(msg) {
}
function sendToGateway(text, isTrace) {
+ // OpenClaw-Gateway ist raus — Brain via Bridge via RVS ist die einzige
+ // Route. Wir loggen nichts mehr; alte Trace-Aufrufe schliessen wir clean.
if (!gatewayWs || gatewayWs.readyState !== WebSocket.OPEN) {
- log("error", "gateway", "Nicht verbunden — kann nicht senden");
- if (isTrace) traceEnd(false, "Gateway nicht verbunden");
+ if (isTrace) traceEnd(false, "Gateway deprecated — nutze RVS");
return false;
}
@@ -757,22 +758,20 @@ function sendToRVS_raw(msgObj) {
}
function sendToRVS(text, isTrace) {
- // Ueber Gateway senden (zuverlaessig) UND an RVS fuer App-Sichtbarkeit
- // Die Bridge empfaengt RVS-Nachrichten von der App zuverlaessig,
- // aber die Diagnostic→RVS→Bridge Route hat Zombie-Probleme.
- // Deshalb: Gateway fuer ARIA, RVS nur fuer App-Anzeige.
-
- // 1. An Gateway senden (damit ARIA antwortet)
- const gatewayOk = sendToGateway(text, isTrace);
-
- // 2. An RVS senden (damit die App die Nachricht sieht)
+ // Brain-Pipeline: Diagnostic → RVS → Bridge → Brain (HTTP). OpenClaw-
+ // Gateway-Pfad ist abgeschaltet. Sender 'diagnostic' damit die Bridge
+ // den Text als User-Nachricht ans Brain weiterleitet und die App +
+ // Diagnostic die Bubble live spiegeln koennen.
+ if (!rvsWs || rvsWs.readyState !== WebSocket.OPEN) {
+ if (isTrace) traceEnd(false, "RVS nicht verbunden");
+ return false;
+ }
sendToRVS_raw({
type: "chat",
payload: { text, sender: "diagnostic" },
timestamp: Date.now(),
});
-
- return gatewayOk;
+ return true;
}
// ── Claude Proxy Test ────────────────────────────────────
@@ -1836,8 +1835,11 @@ wss.on("connection", (ws) => {
const msg = JSON.parse(raw.toString());
if (msg.action === "test_gateway") {
- traceStart("Gateway", msg.text || "aria lebst du noch?");
- sendToGateway(msg.text || "aria lebst du noch?", true);
+ // Deprecated — Gateway-Pfad ist raus. Wir leiten an RVS um damit
+ // alte Browser-Sessions die noch den Button anzeigen nicht stumm
+ // ins Leere klicken. Neue Versionen kennen den Button nicht mehr.
+ traceStart("RVS", msg.text || "aria lebst du noch?");
+ sendToRVS(msg.text || "aria lebst du noch?", true);
} else if (msg.action === "test_rvs") {
traceStart("RVS", msg.text || "aria lebst du noch?");
sendToRVS(msg.text || "aria lebst du noch?", true);