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:
+4
-9
@@ -1,7 +1,7 @@
|
||||
# NexusOS launcher for Windows (native, no Vite).
|
||||
#
|
||||
# Single-process app: the backend on :8000 serves the built web UI itself, so
|
||||
# this starts only the memory service + backend, opening a native app window
|
||||
# this starts only the backend, opening a native app window
|
||||
# (bin\nexus_window.py, pywebview/WebView2) immediately alongside them with its
|
||||
# own live-updating loading screen. The AI (Ollama) does NOT auto-start - turn
|
||||
# it on from the UI's Start AI button. Closing the app window stops the
|
||||
@@ -40,19 +40,15 @@ Write-Host "Starting NexusOS..." -ForegroundColor Cyan
|
||||
# can be squatting the port without ever responding, and treating that as
|
||||
# "already running" skips starting a real service - the window then sits on
|
||||
# its loading screen for the full 40s with no way to tell why.
|
||||
$memory = $null
|
||||
if (-not (Test-ServiceUp "http://127.0.0.1:8001/")) {
|
||||
$memory = Start-Svc (Join-Path $Runtime "memory.log") @("-m","uvicorn","synapse.memory.service:app","--host","127.0.0.1","--port","8001")
|
||||
}
|
||||
$backend = $null
|
||||
if (-not (Test-ServiceUp "http://127.0.0.1:8000/status")) {
|
||||
$backend = Start-Svc (Join-Path $Runtime "backend.log") @("-m","uvicorn","synapse.main:sio_app","--host","127.0.0.1","--port","8000")
|
||||
}
|
||||
|
||||
# Open the UI in a native window (pywebview / WebView2) - no browser, no Edge
|
||||
# profile cold-start - IMMEDIATELY, in parallel with memory/backend still
|
||||
# profile cold-start - IMMEDIATELY, in parallel with the backend still
|
||||
# coming up. bin\nexus_window.py opens on its own loading page and polls
|
||||
# :8001 then :8000 itself, updating that page's status line live as each
|
||||
# :8000 itself, updating that page's status line live as it
|
||||
# comes up, so the window is on screen from the first instant instead of
|
||||
# this script blocking silently (in a hidden window) for up to 30s first and
|
||||
# only then showing anything. It blocks until the window is closed and falls
|
||||
@@ -67,10 +63,9 @@ Write-Host "NexusOS window opened; services are starting at http://localhost:800
|
||||
# shortcut runs hidden, where a prompt no one can answer would hang forever.
|
||||
if ($app) { $app.WaitForExit() }
|
||||
elseif ($backend) { $backend.WaitForExit() }
|
||||
elseif ($memory) { $memory.WaitForExit() }
|
||||
|
||||
# Shut the services down.
|
||||
Write-Host "Stopping NexusOS..." -ForegroundColor Cyan
|
||||
foreach ($p in @($backend, $memory)) {
|
||||
foreach ($p in @($backend)) {
|
||||
if ($p -and -not $p.HasExited) { Stop-Process -Id $p.Id -Force -ErrorAction SilentlyContinue }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user