Admin System Settings page: - New /admin/settings route with channel key config - QR code export with tiled print sheet (4x5 on US Letter) - Server config display (HTTPS, port, auth, DCT/QR status) - Environment info (version, Python, platform, KDF) Navigation improvements: - Icon-only nav with floating labels on hover - Gold labels slide down below icons - Gradient pill background on hover Air-gap ready: - All vendor libs now local (Bootstrap CSS/JS, Icons, html5-qrcode) - QRious library for QR generation - No external CDN dependencies Other changes: - Moved About link from nav to footer - Channel QR export moved from about.html to admin/settings.html - Print sheet button for QR codes (tiled US Letter output) - Dev runner script (dev_run.sh) with r/q hotkeys - Fixed navbar dropdown z-index 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
53 lines
1.4 KiB
Bash
Executable File
53 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Stegasoo Web Frontend - Development Runner
|
|
# Press 'r' to restart, 'q' to quit (single keypress, no Enter needed)
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
PID=""
|
|
|
|
cleanup() {
|
|
echo -e "\n\033[33mShutting down...\033[0m"
|
|
[[ -n "$PID" ]] && kill "$PID" 2>/dev/null
|
|
stty sane 2>/dev/null
|
|
exit 0
|
|
}
|
|
|
|
trap cleanup SIGINT SIGTERM EXIT
|
|
|
|
start_server() {
|
|
clear
|
|
echo -e "\033[36m┌──────────────────────────────────────┐\033[0m"
|
|
echo -e "\033[36m│ Stegasoo Dev Server │\033[0m"
|
|
echo -e "\033[36m│ \033[0m[r] restart [q] quit\033[36m │\033[0m"
|
|
echo -e "\033[36m└──────────────────────────────────────┘\033[0m"
|
|
|
|
pkill -f "python app.py" 2>/dev/null
|
|
sleep 0.3
|
|
|
|
python app.py 2>&1 &
|
|
PID=$!
|
|
echo -e "\033[32m✓ Running on http://localhost:5000 (PID: $PID)\033[0m\n"
|
|
}
|
|
|
|
start_server
|
|
|
|
# Single keypress mode
|
|
stty -echo -icanon time 0 min 0
|
|
|
|
while true; do
|
|
key=$(dd bs=1 count=1 2>/dev/null)
|
|
case "$key" in
|
|
r|R) start_server ;;
|
|
q|Q) cleanup ;;
|
|
esac
|
|
|
|
# Check if crashed
|
|
if [[ -n "$PID" ]] && ! kill -0 "$PID" 2>/dev/null; then
|
|
echo -e "\033[31m✗ Crashed! Press 'r' to restart\033[0m"
|
|
PID=""
|
|
fi
|
|
|
|
sleep 0.1
|
|
done
|