Brings the public tree back in line with the development repo after several weeks of drift caused by a stale publish include list. New: - In-app update path: GET /update/check compares the checkout against origin/main and POST /update/apply runs `ncp upgrade` detached (pull, rebuild, restart). The sidebar shows the version, checks on click, and offers an "update available" pill. - Projects: a project workspace groups chats and RAG documents, with per-project instructions and document retrieval scoped to the active project. Replaces the standalone Documents page. - modules/: auto-discovered feature plugins (mail, network) with their frontend counterparts and tests. - Memory curation runs in-process (synapse/memory/curator.py) on the chat model when a conversation goes idle. The separate memory service on :8001 is gone, along with the launcher lines that started it. Also: the KDE theme, panel and Promethean terminal assets, the full test suite, and VERSION 1.2.0. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
36 lines
1.1 KiB
Bash
36 lines
1.1 KiB
Bash
#!/usr/bin/env bash
|
|
# Genmon Nexus applet — logo icon whose state tracks the running services,
|
|
# left-click opens the control popup. Mirrors network-applet.sh.
|
|
|
|
NEXUS_ROOT="$(cd "$(dirname "$(realpath "$0")")/../.." && pwd)"
|
|
ICON_DIR="$NEXUS_ROOT/assets/panel-icons"
|
|
|
|
# Fast, dependency-free liveness check via bash's built-in /dev/tcp — no curl
|
|
# round-trip on every 5s genmon tick.
|
|
port_up() {
|
|
(exec 3<>"/dev/tcp/127.0.0.1/$1") 2>/dev/null && { exec 3>&- 3<&-; return 0; }
|
|
return 1
|
|
}
|
|
|
|
state() { port_up "$1" && echo "up" || echo "down"; }
|
|
|
|
BACKEND=$(state 8000) # Synapse
|
|
FRONTEND=$(state 5173) # Vite frontend
|
|
|
|
up=0
|
|
[ "$BACKEND" = up ] && up=$((up + 1))
|
|
[ "$FRONTEND" = up ] && up=$((up + 1))
|
|
|
|
if [ "$up" -eq 2 ]; then ICON="$ICON_DIR/nexus-on.png"
|
|
elif [ "$up" -eq 0 ]; then ICON="$ICON_DIR/nexus-off.png"
|
|
else ICON="$ICON_DIR/nexus-partial.png"
|
|
fi
|
|
|
|
dot() { [ "$1" = up ] && echo "●" || echo "○"; }
|
|
|
|
echo "<img>$ICON</img>"
|
|
echo "<tool>NexusOS — ${up}/2 services up
|
|
$(dot "$BACKEND") Synapse backend :8000
|
|
$(dot "$FRONTEND") Frontend (Vite) :5173</tool>"
|
|
echo "<click>$HOME/.local/bin/nexus-popup.py</click>"
|