// Settings scene — identity, backend URL, polling cadence, theme. import { useState } from "react"; import { useApp } from "../state/store"; import { api } from "../lib/api"; import { User, Refresh, Cog, Pulse, Layers, Check } from "../components/icons"; const COMMON_EMAILS = [ "dev@flow-master.ai", "procurement.operator@flowmaster.local", "finance.lead@flowmaster.local", "ops.admin@flowmaster.local", ]; export default function Settings() { const userEmail = useApp((s) => s.userEmail); const actor = useApp((s) => s.actor); const userDisplayName = useApp((s) => s.userDisplayName); const loginAs = useApp((s) => s.loginAs); const pollEverySec = useApp((s) => s.pollEverySec); const setPollEverySec = useApp((s) => s.setPollEverySec); const theme = useApp((s) => s.theme); const setTheme = useApp((s) => s.setTheme); const consoleOpen = useApp((s) => s.consoleOpen); const setConsoleOpen = useApp((s) => s.setConsoleOpen); const mode = useApp((s) => s.mode); const setMode = useApp((s) => s.setMode); const refreshLive = useApp((s) => s.refreshLive); const pushToast = useApp((s) => s.pushToast); const [emailInput, setEmailInput] = useState(userEmail); const [signingIn, setSigningIn] = useState(false); const signIn = async (email: string) => { setSigningIn(true); try { await loginAs(email); } finally { setSigningIn(false); } }; const clearToken = () => { api.clearToken(); pushToast("info", "Cleared bearer token. Next request will re-login."); }; return (
Settings

Identity, backend & UI

Everything here is persisted to localStorage and survives reloads.

Identity

Current {actor?.user_id?.slice(0, 12) ?? "—"}
Email {userEmail}
Display name {userDisplayName ?? "—"}
Backend {api.config.baseUrl || "(same-origin via /api)"}

Sign in as

setEmailInput(e.target.value)} />
{COMMON_EMAILS.map((e) => ( ))}

Data mode & polling

Current mode {mode === "live" ? "LIVE" : "SNAPSHOT"}
{mode === "live" && ( )}
Polling only runs in LIVE mode. Currently {mode === "live" ? "polling" : "paused"}.

Appearance

About

FlowMaster Mission Control. Live at{" "} canvas.flow-master.ai . Every action hits the real EA2 backend — the live console shows every fetch.

); }