(function() { const SDK = window.__HERMES_PLUGIN_SDK__; const { useState, useEffect, useCallback } = React; function SSHXPage() { const [link, setLink] = useState(null); const [status, setStatus] = useState("idle"); // idle | loading | running | error const [error, setError] = useState(null); const startSSHX = useCallback(async () => { setStatus("loading"); setError(null); try { const res = await SDK.fetchJSON("/api/plugins/sshx-link/start"); if (res.link) { setLink(res.link); setStatus("running"); } else { setError(res.message || "No link returned"); setStatus("error"); } } catch (err) { setError(err.message || "Failed to start sshx"); setStatus("error"); } }, []); const stopSSHX = useCallback(async () => { try { await fetch("/api/plugins/sshx-link/stop", { method: "POST" }); setLink(null); setStatus("idle"); } catch (err) { setError(err.message); } }, []); const checkStatus = useCallback(async () => { try { const res = await SDK.fetchJSON("/api/plugins/sshx-link/status"); if (res.status === "running" && res.link) { setLink(res.link); setStatus("running"); } } catch (_) {} }, []); useEffect(() => { checkStatus(); }, [checkStatus]); return (

SSHX Shared Terminal

Start a shared terminal session. Others can join via the link.

{status === "running" && link ? (

Running

{link}
) : ( )} {error && (

Error: {error}

)}
); } // Register the tab component if (window.__HERMES_PLUGINS__) { window.__HERMES_PLUGINS__.register("sshx-link", SSHXPage); } })();