feat(webui): replace TUI with full web UI + local openbox desktop
- Remove audit/internal/tui/ (~3000 LOC, bubbletea/lipgloss/reanimator deps) - Add /api/* REST+SSE endpoints: audit, SAT (nvidia/memory/storage/cpu), services, network, export, tools, live metrics stream - Add async job manager with SSE streaming for long-running operations - Add platform.SampleLiveMetrics() for live fan/temp/power/GPU polling - Add multi-page web UI (vanilla JS): Dashboard, Metrics charts, Tests, Burn-in, Network, Services, Export, Tools - Add bee-desktop.service: openbox + Xorg + Chromium opening http://localhost/ - Add openbox/tint2/xorg/xinit/xterm/chromium to ISO package list - Update .profile, bee.sh, and bible-local docs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,21 +1,18 @@
|
||||
export PATH="$PATH:/usr/local/bin:/opt/rocm/bin:/opt/rocm/sbin"
|
||||
|
||||
menu() {
|
||||
if [ -x /usr/local/bin/bee-tui ]; then
|
||||
/usr/local/bin/bee-tui "$@"
|
||||
else
|
||||
echo "bee-tui is not installed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# On the local console, keep the shell visible and let the operator
|
||||
# start the TUI explicitly. This avoids black-screen failures if the
|
||||
# terminal implementation does not support the TUI well.
|
||||
# Print web UI URLs on the local console at login.
|
||||
if [ -z "${SSH_CONNECTION:-}" ] \
|
||||
&& [ -z "${SSH_TTY:-}" ] \
|
||||
&& [ "$(tty 2>/dev/null)" = "/dev/tty1" ]; then
|
||||
&& [ -z "${SSH_TTY:-}" ]; then
|
||||
echo "Bee live environment ready."
|
||||
echo "Run 'menu' to open the TUI."
|
||||
echo "Kernel logs: Alt+F2 | Extra shell: Alt+F3"
|
||||
echo ""
|
||||
echo " Web UI (local): http://localhost/"
|
||||
# Print IP addresses for remote access
|
||||
_ips=$(ip -4 addr show scope global 2>/dev/null | awk '/inet /{print $2}' | cut -d/ -f1)
|
||||
for _ip in $_ips; do
|
||||
echo " Web UI (remote): http://$_ip/"
|
||||
done
|
||||
unset _ips _ip
|
||||
echo ""
|
||||
echo " Local desktop starts automatically on display :0"
|
||||
echo " Kernel logs: Alt+F2 | Extra shell: Alt+F3"
|
||||
fi
|
||||
|
||||
16
iso/overlay/etc/systemd/system/bee-desktop.service
Normal file
16
iso/overlay/etc/systemd/system/bee-desktop.service
Normal file
@@ -0,0 +1,16 @@
|
||||
[Unit]
|
||||
Description=Bee: local desktop (openbox + chromium)
|
||||
After=bee-web.service
|
||||
Wants=bee-web.service
|
||||
|
||||
[Service]
|
||||
User=bee
|
||||
Environment=DISPLAY=:0
|
||||
ExecStart=/usr/local/bin/bee-desktop
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,13 +1 @@
|
||||
export PATH="/usr/local/bin:$PATH"
|
||||
|
||||
if [ -z "${SSH_CONNECTION:-}" ] \
|
||||
&& [ -z "${SSH_TTY:-}" ] \
|
||||
&& [ "$(tty 2>/dev/null)" = "/dev/tty1" ]; then
|
||||
if command -v menu >/dev/null 2>&1; then
|
||||
menu
|
||||
elif [ -x /usr/local/bin/bee-tui ]; then
|
||||
/usr/local/bin/bee-tui
|
||||
else
|
||||
echo "Bee menu is unavailable."
|
||||
fi
|
||||
fi
|
||||
|
||||
4
iso/overlay/usr/local/bin/bee-desktop
Executable file
4
iso/overlay/usr/local/bin/bee-desktop
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
# Start X11 + openbox + chromium for the local operator console.
|
||||
# Runs as the bee user on display :0.
|
||||
exec startx /usr/local/bin/bee-openbox-session -- :0 -nolisten tcp
|
||||
25
iso/overlay/usr/local/bin/bee-openbox-session
Executable file
25
iso/overlay/usr/local/bin/bee-openbox-session
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
# openbox session: launch tint2 taskbar + chromium, then openbox as WM.
|
||||
# This file is used as an xinitrc by bee-desktop.
|
||||
|
||||
# Wait for bee-web to be accepting connections (up to 15 seconds)
|
||||
i=0
|
||||
while [ $i -lt 15 ]; do
|
||||
if curl -sf http://localhost/healthz >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
i=$((i+1))
|
||||
done
|
||||
|
||||
tint2 &
|
||||
chromium \
|
||||
--no-sandbox \
|
||||
--disable-infobars \
|
||||
--disable-translate \
|
||||
--no-first-run \
|
||||
--disable-session-crashed-bubble \
|
||||
--disable-features=TranslateUI \
|
||||
http://localhost/ &
|
||||
|
||||
exec openbox
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
clear
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
exec sudo -n /usr/local/bin/bee tui --runtime livecd "$@"
|
||||
fi
|
||||
|
||||
exec /usr/local/bin/bee tui --runtime livecd "$@"
|
||||
Reference in New Issue
Block a user