Skip to content

Releases

NexusRelay 1.14.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 01:44
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 in versions, stable copy bin
    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_TOKEN and the clients declared. Its messages are in English, and in French when Windows is displayed in
    French.
  • get.ps1 is a minimal starter: it downloads the release package, checks it against SHA256SUMS.txt and, when the
    GitHub CLI is signed in, its build provenance, then starts the package's own engine. install.ps1 only builds the
    engine of a clone (and runs test.ps1 before anything is installed), or starts the engine of an unpacked release
    (what the get.ps1 of 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 Bypass on 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 (was scripts\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. The lang setting 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.ps1 and Configure-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 of get.ps1 that 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 python key of its spec: every native install writes exe.

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 shared obj), 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)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Nov 01:43
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

Choose a tag to compare

@github-actions github-actions released this 07 Nov 16:52
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.lock into
    the stable folder ~\.nexus\nexus-relay\bin; the Stop hook (--await-replies, up to 55 minutes) ran from that
    folder and held it, so the next update could not rename bin aside 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 into bin, and an engine started from bin never holds one. The waiting hook now runs the versioned
    copy named in engine.txt, as the Antigravity bridge does, so no long-running process uses bin. A process still
    running from bin (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 bin and 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 from bin holds nothing there; the
    Stop hook command runs the versioned copy through Git's bash.

NexusRelay 1.13.11 (development build)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Nov 23:41
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)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Nov 23:22
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)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Nov 22:50
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)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Nov 21:29
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

Choose a tag to compare

@github-actions github-actions released this 07 Nov 16:07
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 the engine.lock the installer writes in its version folder for its whole life (path
    independent: junction, MSIX redirection, elevated view); a running NexusRelay.exe is 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 the bin.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

Choose a tag to compare

@github-actions github-actions released this 07 Nov 15:41
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.exe inside 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.ps1 in Antigravity's nexus-relay plugin
    folder: the installer only adds files, so the 1.13.8 update kept the old PowerShell bridge next to start.cmd.

NexusRelay 1.13.8

Choose a tag to compare

@github-actions github-actions released this 07 Nov 11:06
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 of scripts/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_TOKEN or ~\.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 stable bin folder, 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 --bridge and started an unrelated server). It no longer assumes a global install path.
  • Build outputs under ~\.nexus\build\nexusrelay take the user profile from .NET: Dependabot restores on Linux, where
    USERPROFILE is 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 (.editorconfig added). 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.