{tr("超级业务中心 / 模块控制台", "Super Hub / Control Plane")}
{tr("Linux 超级业务中心", "Linux Super Business Center")}
{tr( "系统服务、业务模块、ShellCrash 配置与安卓控制保持解耦,一个模块异常不应拖垮整个平台。", "Services, business modules, ShellCrash configs and Android control stay decoupled.", )}
{tr("节点状态", "Node Status")}
{stack?.mdns_host || "live.local"}
IP: {(stack?.ips || []).join(" / ") || "-"}
{stack?.machine || "-"}
{stack?.kernel || "-"}
{tr("系统快照", "System Snapshot")}
CPU:{" "} {[snapshot?.cpu_load?.["1m"], snapshot?.cpu_load?.["5m"], snapshot?.cpu_load?.["15m"]] .map((item) => (typeof item === "number" ? item.toFixed(2) : "0.00")) .join(" / ")}
RAM: {formatBytes(snapshot?.memory?.available)} / {formatBytes(snapshot?.memory?.total)}
Disk: {formatBytes(snapshot?.disk?.free)} / {formatBytes(snapshot?.disk?.total)}
Netdata: {snapshot?.netdata?.available ? snapshot.netdata.version || "online" : "offline"}
{tr("模块概况", "Module Summary")}
{item.label}
{item.description}
{item.detail || "-"}
{serviceHref(item) ? ( {tr("打开", "Open")} ) : null}{tr("业务运行时", "Business Runtime")}
{tr("这里只放业务脚本本身,Hub 基座可单独运行。", "Only business processes live here.")}
{entries.length > 0 ? ( <>{tr("业务日志", "Process Logs")}
{recentLog || tr("暂无输出", "No stdout yet.")}
{recentError || tr("暂无报错", "No stderr yet.")}
{tr("系统模块", "System Modules")}
{tr("每个模块都独立启停和降级,避免一个服务异常拖垮整套业务。", "Each module starts and degrades independently.")}
{item.label}
{item.description}
{item.detail || "-"}
{tr("硬件与系统", "Hardware and System")}
Arch: {hardware?.arch || "-"}
FFmpeg: {(hardware?.ffmpeg_hwaccels || []).join(", ") || "-"}
GPU: {hardware?.gpu?.present ? hardware.gpu.driver || "present" : "none"}
NPU: {hardware?.npu?.present ? (hardware.npu.devices || []).join(", ") : "none"}
Decoder: {hardware?.recommendation?.video_decoder || "cpu"}
HDMI: {hardware?.recommendation?.hdmi_player || "cpu"}
Mode: {hardware?.recommendation?.stability_mode || "safe"}
ShellCrash
{tr("这里不再依赖命令行菜单,直接做 YAML / JSON / CFG 编辑与服务控制。", "Manage ShellCrash from the web instead of the shell menu.")}
{shellcrashService ? ({shellcrashService.label}
{shellcrashService.description}
{shellcrashService.detail || "-"}
{tr("快捷文件", "Quick Files")}
{tr("ShellCrash 文件编辑器", "ShellCrash Editor")}
{tr("支持查看、修改、新建、删除,路径被限制在 ShellCrash 托管目录内。", "View, edit, create and delete files inside managed ShellCrash roots.")}
{tr("安卓设备中心", "Android Device Center")}
{tr("把设备发现、截图预览、ADB 动作和原始 web-scrcpy 放到一个模块里。", "Combine discovery, preview, ADB actions and raw web-scrcpy in one module.")}
{tr("已连接设备", "Devices")}
{!androidAvailable || androidDevices.length === 0 ? ({tr("当前没有可用的 ADB 设备。", "No active ADB device.")}
) : ({tr("设备状态", "Device Status")}
{androidOverview?.brand || "-"} {androidOverview?.model || "-"}
Android {androidOverview?.android_version || "-"} / SDK {androidOverview?.sdk || "-"}
{androidOverview?.battery || "-"}
{androidOverview?.resolution || "-"}
{androidOverview?.focus || "-"}
{tr("屏幕预览与动作", "Screen Preview and Actions")}
{tr("预览图支持直接点按/双击/长按,配合 UI 节点和包管理形成更完整的安卓控制台。", "The preview supports tap, double tap and long press, backed by UI nodes and package tools.")}
{tr("快捷控制", "Quick Controls")}
{tr("输入与跳转", "Input and Launch")}
{tr("应用工作台", "App Workspace")}
ADB Shell
{androidOutput || tr("动作结果会显示在这里。", "Action output will appear here.")}
{tr("UI 节点", "UI Nodes")}
{tr("用 uiautomator 抓当前页面结构,快速定位可点击元素。", "Inspect the current UI hierarchy and act on clickable nodes.")}
web-scrcpy
{tr("打开原始面板", "Open raw panel")}{tr("配置中心", "Config Center")}
{tr("系统级与业务级配置文件分目录托管,避免大杂烩。", "System and business configs are isolated by managed roots.")}
{currentRoot.label}
{currentRoot.description}
{currentRoot.path}
{tr("文件编辑器", "Config Editor")}
{tr("仅允许编辑受管目录中的配置文件。", "Only approved config roots are editable.")}