Repository navigation
Releases
Releases · pironjulien/NexusRelay
NexusRelay 1.14.0
Immutable
release. Only release title and notes can be modified.
Changed
- Installation and updates are in the engine:
NexusRelay.exe --install(C#) does every step the PowerShell
installer did, with the same result on the PC: app folder, immutable engine copy inversions, stable copybin
checked before and after its switch, settings, shared token, host, daemon spec, cooperative restart requests of the
daemon and the sidecar (ownership checked through the Windows TCP table and the process image), scheduled task
"NexusRelay" through the Task Scheduler API, Antigravity plugin, sidecar and project, edit hooks, user variable
NEXUS_MCP_TOKENand the clients declared. Its messages are in English, and in French when Windows is displayed in
French. get.ps1is a minimal starter: it downloads the release package, checks it againstSHA256SUMS.txtand, when the
GitHub CLI is signed in, its build provenance, then starts the package's own engine.install.ps1only builds the
engine of a clone (and runstest.ps1before anything is installed), or starts the engine of an unpacked release
(what theget.ps1of an earlier version runs).- The daemon's update (
POST /api/update) starts the engine itself (NexusRelay.exe --update: download, checks, the
new package's--install), no longer Windows PowerShell with-ExecutionPolicy Bypasson a script. - A failed installation or update puts the previous one back: app folder, stable copy, spec, settings, engine
pointer, Antigravity plugin, sidecar and configuration, scheduled task; the daemon and the sidecar are asked to
restart on the restored engine. Old engine folders are removed only once the run has succeeded, and never while an
engine runs from them. - Uninstalling the task:
NexusRelay.exe --remove-task(wasscripts\RelayTask.ps1 -Remove). - Restarting the Codex app finds its package natively (the user's package folder, confirmed by the Windows package
API) instead of starting a hidden PowerShell child. - The commit guard installer (
scripts/install_commit_guard.ps1) speaks English, and French when Windows is
displayed in French; it was French only. Thelangsetting still chooses the language of the instructions deployed
for the agents, which now includes the description of the Antigravity sidecar.
Removed
scripts\update-native.ps1,RelayTask.ps1,Restart-Relay.ps1,Remove-RelayVersions.ps1,
Resolve-NexusToken.ps1,Resolve-RelayPath.ps1andConfigure-AntigravityRelay.ps1, and their test fixtures:
their logic is in the engine, covered by xUnit tests (fresh install, update while an engine runs, failure then
restore at each step, scheduled task migration, restart ownership, token, cleanup of old versions).NEXUS_RELAY_DOWNLOAD_ONLY, a test variable ofget.ps1that nothing used.native/QUALIFICATION.md, the October qualification report of the switch from Python, which no longer described
the product (the Git history keeps it).- The daemon supervisor no longer reads the retired
pythonkey of its spec: every native install writesexe.
Fixed
- The installer no longer runs a stable engine that is not a Windows program image (a corrupted or truncated file):
it is treated as unhealthy and replaced without being started, so Windows never shows its "16-bit application not
supported" box, which blocked the update until clicked. - Tests: no test can show a Windows error box. The test process sets the error mode (no critical-error, crash or
missing-file box) when it loads, and every process it starts inherits it; a test checks it in a child process. - Tests: the user-application lifetime test is deterministic under load and when two test runs overlap (another
session's test gate). Its fixture was published to, and kept its state files in, one shared folder
(~\.nexus\build\nexusrelay\lifetime, with a sharedobj), so concurrent runs deleted and overwrote each other's
files; it is now built and run in the test's own folder. It read the child's heartbeat without sharing the file with
its writer, and judged survival after a fixed 1.6 s sleep: the beat is now read shared, and survival is a beat
written after the caller's job was closed, each wait bounded by a 60 s deadline instead of a fixed time.
NexusRelay 1.14.0 (development build)
Immutable
release. Only release title and notes can be modified.
Development build of 0055cac (tests passed). Promoted as is to the stable v1.14.0 when that version is new.
NexusRelay 1.13.11
Immutable
release. Only release title and notes can be modified.
Fixed
- An update no longer fails while a Claude conversation waits for relay answers. 1.13.10 copied
engine.lockinto
the stable folder~\.nexus\nexus-relay\bin; theStophook (--await-replies, up to 55 minutes) ran from that
folder and held it, so the next update could not renamebinaside and stopped before the engine pointer, the task
and the clients. The lock now protects only the versioned copies (%LOCALAPPDATA%\NexusRelay\versions): it is no
longer copied intobin, and an engine started frombinnever holds one. The waiting hook now runs the versioned
copy named inengine.txt, as the Antigravity bridge does, so no long-running process usesbin. A process still
running frombin(a hook of an earlier version) no longer blocks an update: Windows refuses to rename a folder
with mapped files, so its content is moved aside file by file and the new files take their place; the old lock is
removed once released. - Tests: an update succeeds while a 1.13.10-like waiter runs from
binand holds its lock; the lock check of the
cleanup is tested where Windows would accept the rename (lock held through a hard link); the unreadable-engine case
uses a real running engine its owner cannot query (empty DACL); an engine run frombinholds nothing there; the
Stophook command runs the versioned copy through Git's bash.
NexusRelay 1.13.11 (development build)
Immutable
release. Only release title and notes can be modified.
Development build of c32f666 (tests passed). Promoted as is to the stable v1.13.11 when that version is new.
NexusRelay 1.13.11 (development build)
Immutable
release. Only release title and notes can be modified.
Development build of 9b3b24c (tests passed). Promoted as is to the stable v1.13.11 when that version is new.
NexusRelay 1.13.11 (development build)
Immutable
release. Only release title and notes can be modified.
Development build of 90c4e89 (tests passed). Promoted as is to the stable v1.13.11 when that version is new.
NexusRelay 1.13.11 (development build)
Immutable
release. Only release title and notes can be modified.
Development build of 71c8f55 (tests passed). Promoted as is to the stable v1.13.11 when that version is new.
NexusRelay 1.13.10
Immutable
release. Only release title and notes can be modified.
Fixed
- The cleanup of old engine folders no longer relies on Windows refusing to rename the folder of a running program:
Windows does rename it when the program keeps no file open in it (a single-file engine is only mapped).
Each engine now holds theengine.lockthe installer writes in its version folder for its whole life (path
independent: junction, MSIX redirection, elevated view); a runningNexusRelay.exeis located by
QueryFullProcessImageNameW, which also reads an elevated process; when one cannot be read at all, no folder is
removed. The rename aside stays as an extra check. The same rules now protect thebin.old-*copies of the stable
folder, which were deleted outright. Tests: a held lock keeps a folder Windows would rename, an unreadable engine
keeps everything, a running engine holds its lock and is found by its image path.
NexusRelay 1.13.9
Immutable
release. Only release title and notes can be modified.
Fixed
- An update no longer deletes the files of an engine version a running process still uses. The installer removed old
versions (%LOCALAPPDATA%\NexusRelay\versions\<fingerprint>) unless the process list named a running
NexusRelay.exeinside them; an engine whose path it could not match (elevated, MSIX-redirected or reached through
another spelling of the path) lost every DLL it had not loaded yet and answered each call with an empty error, as
NexusFree did before 1.3.3. Now the file system decides: an old version is first renamed aside, which Windows refuses while
an engine holds files in it, and only a folder renamed aside is deleted; one in use stays whole until a later
install (scripts/Remove-RelayVersions.ps1, with a test that runs an engine from an old version during the cleanup). - Installing or updating no longer leaves the retired
scripts/bridge.ps1in Antigravity'snexus-relayplugin
folder: the installer only adds files, so the 1.13.8 update kept the old PowerShell bridge next tostart.cmd.
NexusRelay 1.13.8
Immutable
release. Only release title and notes can be modified.
Changed
- Antigravity Marketplace plugin: its stdio bridge is now the engine itself (
NexusRelay.exe --bridge <url>)
instead ofscripts/bridge.ps1, which compiled C# with Windows PowerShell at every start. Same relay: one line per
JSON-RPC message, event streams split per event,NEXUS_MCP_TOKENor~\.nexus\mcp-token.txt, the MCP session
kept and closed at the end, a JSON-RPC error saying how to get NexusRelay when the daemon does not answer. - The plugin starts it like NexusWindows, NexusBrowser and NexusAndroid:
cmd.exe /d /c ${PLUGIN_ROOT}\scripts\start.cmd <url>. The launcher reads the engine every install records in
~\.nexus\nexus-relay\engine.txt(NexusRelay.exe --engine-pointer: version and immutable versioned copy, never
the stablebinfolder, so a running Antigravity session no longer makes the next install fail with "bin in use"),
and fails at once, with how to install or update, when no engine is recorded or it is older than 1.13.8 (an older
engine ignored--bridgeand started an unrelated server). It no longer assumes a global install path. - Build outputs under
~\.nexus\build\nexusrelaytake the user profile from .NET: Dependabot restores on Linux, where
USERPROFILEis unset and its NuGet updates silently failed. - CodeQL runs from
.github/workflows/codeql.yml(actions and C#, default queries, actions pinned by SHA) instead of
the default setup, so OpenSSF Scorecard credits SAST on commits pushed without pull requests. - Strict build: recommended .NET analyzers, code style enforced, warnings as errors (
.editorconfigadded). Number
and date formats written for files and arguments use the invariant culture; SQLite clean-up results are discarded
explicitly; fixed name lists are allocated once. - Tests run on Microsoft.Testing.Platform only (xUnit v3), without the old VSTest packages.
- Tomlyn 2.10.2 and JsonSchema.Net 9.6.0 (tests).
- Release workflow on NexusSystem's shared workflows v1.6.54, pinned by commit SHA.
- CHANGELOG compare links for every released version.