forked from enderofwings/NexusOS
feat: sync with upstream — v1.2.0, in-app updates, Projects, modules
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)
This commit is contained in:
+48
-12
@@ -1,17 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
# The Linux-only half of a restore: system packages, the bundled Ollama binary,
|
||||
# and the XFCE desktop wiring (panel, wallpaper, theme, terminal, branding).
|
||||
# and the desktop wiring (panel, wallpaper, theme, terminal, branding) for
|
||||
# whichever of XFCE / Plasma is installed.
|
||||
# None of it means anything on Windows, which is why it lives here instead of in
|
||||
# bin/sync.py — sync.py owns the portable half and calls this in three stages:
|
||||
#
|
||||
# restore-linux.sh prep Before the rebuild: system packages the build needs.
|
||||
# restore-linux.sh runtime After: Ollama binary + shell wiring. Any Linux box
|
||||
# needs these to actually run NexusOS.
|
||||
# restore-linux.sh desktop After: the XFCE look (panel, wallpaper, theme,
|
||||
# branding). Cosmetic, this box's setup, and the only
|
||||
# stage that rewrites files outside the repo and $HOME.
|
||||
# Skippable with `--no-desktop`; auto-skipped off XFCE.
|
||||
# restore-linux.sh desktop After: the desktop look (Plasma global theme,
|
||||
# XFCE panel/wallpaper/theme, boot + distro
|
||||
# branding). Cosmetic, this box's setup, and the
|
||||
# only stage that rewrites files outside the repo
|
||||
# and $HOME. Skippable with `--no-desktop`; each
|
||||
# desktop's branch auto-skips when absent.
|
||||
#
|
||||
# Not meant to be run by hand — use `ncp restore` (python bin/sync.py restore).
|
||||
|
||||
@@ -123,15 +126,28 @@ EOF
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# --- desktop stage: XFCE only, and it writes outside the repo -----------------
|
||||
# Everything below reconfigures the logged-in user's desktop. On any other DE it
|
||||
# would be actively wrong (copying XFCE channel XMLs onto a GNOME box does
|
||||
# nothing good), so bail rather than make a mess of someone else's machine.
|
||||
if ! command -v xfconf-query >/dev/null; then
|
||||
echo "Not an XFCE session (no xfconf-query) — skipping desktop wiring."
|
||||
exit 0
|
||||
# --- desktop stage: reconfigures the logged-in user's desktop ------------------
|
||||
# Keyed on what is installed, not on one either/or: XFCE and Plasma can both be
|
||||
# present (this box runs both and picks at the SDDM greeter), and each branch
|
||||
# writes only to its own config. Anything neither branch matches falls through
|
||||
# to the boot/distro branding at the bottom, which is DE-independent.
|
||||
|
||||
# Plasma. install-plasma.sh is idempotent and applies live when a session is
|
||||
# running; --no-sddm because bin/boot-branding.sh owns the SDDM theme, and
|
||||
# letting both write it was how the setting ended up in two files.
|
||||
if command -v lookandfeeltool >/dev/null && [ -x "$NEXUS_ROOT/assets/themes/KDE/install-plasma.sh" ]; then
|
||||
echo ""
|
||||
echo "Restoring NexusOS Plasma theme..."
|
||||
"$NEXUS_ROOT/assets/themes/KDE/install-plasma.sh" --no-sddm \
|
||||
|| echo "Warning: Plasma theme restore failed."
|
||||
fi
|
||||
|
||||
# XFCE. Copying XFCE channel XMLs onto a box with no XFCE does nothing good, so
|
||||
# this whole branch is skipped rather than half-applied.
|
||||
if ! command -v xfconf-query >/dev/null; then
|
||||
echo "No XFCE (no xfconf-query) — skipping the XFCE desktop wiring."
|
||||
else
|
||||
|
||||
# Panel layout, wallpaper, compositing, keybindings and terminal profile all live
|
||||
# in the xfconf channel XMLs — restore them by copying the files back. xfconfd
|
||||
# caches channels in memory and rewrites them on exit, so it has to die first or
|
||||
@@ -163,8 +179,26 @@ if [ -f "$NEXUS_ROOT/bin/panel/plank-primary-watch.sh" ]; then
|
||||
fi
|
||||
plank_snap="$NEXUS_ROOT/assets/themes/restore-snapshot/plank"
|
||||
if [ -d "$plank_snap" ]; then
|
||||
# Plank owns its item list in dconf and deletes any .dockitem missing from it
|
||||
# on startup, so copying files alone silently restores nothing. Order here:
|
||||
# kill Plank (a running one prunes what we copy), put the launcher .desktop
|
||||
# targets back, copy the items, set the list, restart.
|
||||
pkill -x plank 2>/dev/null && sleep 1
|
||||
mkdir -p "$HOME/.local/share/applications"
|
||||
cp -f "$NEXUS_ROOT/assets/themes/restore-snapshot/applications"/*.desktop \
|
||||
"$HOME/.local/share/applications/" 2>/dev/null || true
|
||||
mkdir -p "$HOME/.config/plank"
|
||||
cp -rf "$plank_snap/." "$HOME/.config/plank/" # /. = contents, else it nests
|
||||
plank_cfg="$NEXUS_ROOT/assets/themes/restore-snapshot/plank-dconf.ini"
|
||||
if [ -s "$plank_cfg" ]; then
|
||||
dconf load /net/launchpad/plank/ < "$plank_cfg" 2>/dev/null || true
|
||||
fi
|
||||
theme_snap="$NEXUS_ROOT/assets/themes/plank"
|
||||
if [ -d "$theme_snap" ]; then
|
||||
mkdir -p "$HOME/.local/share/plank/themes"
|
||||
cp -rf "$theme_snap/." "$HOME/.local/share/plank/themes/"
|
||||
fi
|
||||
command -v plank >/dev/null && setsid plank >/dev/null 2>&1 </dev/null &
|
||||
fi
|
||||
|
||||
echo ""
|
||||
@@ -196,6 +230,8 @@ else
|
||||
echo "Warning: $panel_installer not found — skipping panel install."
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# Boot branding — the Plymouth splash. Not XFCE-specific, but it's cosmetic and
|
||||
# writes outside the repo, so it belongs to the skippable stage like os-release
|
||||
# below. Self-skips when the theme is already installed (initramfs rebuild is slow).
|
||||
|
||||
Reference in New Issue
Block a user