Skip to content

Releases

NexusFree 1.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 12:32
Immutable release. Only release title and notes can be modified.

Changed

  • The engine is compiled ahead of time (Native AOT): one native NexusFree.exe per architecture, no .NET to install,
    no JIT at start-up. Measured on the same PC (x64), 1.3.4 single file → 1.4.0: file 70.2 MB → 4.1 MB; start-up
    (--version) 44 ms → 13 ms; an idle MCP server 44.3 MB → 15.5 MB of working set and 13.2 MB → 4.8 MB of private
    bytes; a simple elevated command end to end (--exec "exit 0", request, SYSTEM dispatcher, answer) 413 ms → 292 ms
    (medians). The trimming and AOT analyzers run in every build with warnings as errors.
  • The Task Scheduler API goes through source-generated COM interop instead of the runtime COM binder (dynamic), and
    every COM object is released when its call ends.
  • The installation lives in the engine. NexusFree.exe --install [--apply] copies the engine for this account, sets up
    the SYSTEM side and writes Antigravity's plugin (embedded in the engine); NexusFree.exe --setup-system --user-sid <SID>, run elevated, installs the dispatcher, sets the spool ACLs and registers the SYSTEM task through the Task
    Scheduler API, with the same rights, task definition and checks as before. install.ps1 only compiles the engine
    from source when needed and starts it. The UAC prompt of a first install now names NexusFree.exe.
  • Renaming a running engine aside during an update is safe without preloading anything: a native image never reads
    its file again (tested on the release build).

Removed

  • daemon/setup-system.ps1, replaced by NexusFree.exe --setup-system, and the assembly preloading of 1.3.3
    (SelfImage). Updating from 1.3.x: that preloading missed System.Private.Uri, so the 1.3.x dispatcher can still
    fail once after the setup replaced it; the installer then sends the setup once more, to the new dispatcher, as it
    already did for 1.3.2 and earlier.

Fixed

  • 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 update-while-running test no longer fails when a scanner briefly opens the engine it has just written
    and started. Only that transient sharing hold is waited out (at most 10 s, as get.ps1 does); a longer hold fails
    and names the processes holding the file (Restart Manager).

NexusFree 1.4.0 (development build)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Nov 14:32
Immutable release. Only release title and notes can be modified.

Development build of 4721816 (tests passed). Promoted as is to the stable v1.4.0 when that version is new.

NexusFree 1.4.0 (development build)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Nov 14:21
Immutable release. Only release title and notes can be modified.

Development build of 6653f46 (tests passed). Promoted as is to the stable v1.4.0 when that version is new.

NexusFree 1.4.0 (development build)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Nov 12:58
Immutable release. Only release title and notes can be modified.

Development build of 18c6f4d (tests passed). Promoted as is to the stable v1.4.0 when that version is new.

NexusFree 1.4.0 (development build)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Nov 12:32
Immutable release. Only release title and notes can be modified.

Development build of 43f4588 (tests passed). Promoted as is to the stable v1.4.0 when that version is new.

NexusFree 1.3.4 (development build)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Nov 11:38
Immutable release. Only release title and notes can be modified.

Development build of 5223641 (tests passed). Promoted as is to the stable v1.3.4 when that version is new.

NexusFree 1.3.4

Choose a tag to compare

@github-actions github-actions released this 07 Nov 15:20
Immutable release. Only release title and notes can be modified.

Fixed

  • Updating from 1.3.2 or earlier no longer fails with "NexusFree did not answer within 5 minutes". The SYSTEM setup
    runs inside the installed dispatcher and replaces its file; a dispatcher without the 1.3.3 fix then failed on its
    own replaced file and never answered, so the update stopped before Antigravity's plugin. install.ps1 now reads the
    dispatcher's log: when the request ended without an answer and the dispatcher installed is already this version, it
    sends the setup (idempotent) once more, to the new dispatcher, and carries on.

NexusFree 1.3.3

Choose a tag to compare

@github-actions github-actions released this 07 Nov 14:59
Immutable release. Only release title and notes can be modified.

Fixed

  • An AI session opened before an update keeps working after it. The update renames the running engine aside and
    copies the new one to the same path; a self-contained single-file engine loads each assembly from its own path the
    first time it needs it, so it then read the new version's bytes and every later free or free_status call of that
    session failed with an empty error ("Tool free failed: "), whoami included, while sessions started after the update
    worked. The MCP server and the SYSTEM dispatcher now load every assembly they reference as soon as they start, while
    the file is still theirs (about 8 ms). Should a call still fail after its file was replaced, the error says that
    NexusFree was updated while the session was open and to reconnect the nexus-free MCP server.
  • get.ps1 no longer fails now and then with "The package does not start on this PC" under Windows PowerShell 5.1:
    it read only the first line of NexusFree.exe --version through Select-Object -First 1, which stops the program
    early there, so its exit code read -1. The whole output is read, then its first line.
  • Sessions opened before this update still run an engine without that fix: reconnect their nexus-free server (or open
    a new session) once after updating to 1.3.3.

Added

  • A test that starts the self-contained single-file build, replaces its file the way install.ps1 does, and checks that
    its tools still answer.

NexusFree 1.3.2

Choose a tag to compare

@github-actions github-actions released this 07 Nov 13:20
Immutable release. Only release title and notes can be modified.

Fixed

  • get.ps1 no longer fails with "being used by another process" when a scanner briefly opens the freshly
    extracted executable. The package is staged next to the releases folder and never run there: its version comes
    from the executable's version resource, the staged folder is renamed to releases\<version>, and only then is
    --version run in place (a package that does not answer its own version is removed again). A rename held by such
    an external, transient scan (sharing, lock or access violation) is waited out for at most 10 s; any other error
    still fails the installation. Older versions are removed only after that check.

Added

  • get.ps1 test variables NEXUS_FREE_SOURCE and NEXUS_FREE_HOME (a local package in another folder,
    install.ps1 never run), and its tests under PowerShell 7 and Windows PowerShell 5.1, a 2 s scanner hold included.

NexusFree 1.3.1

Choose a tag to compare

@github-actions github-actions released this 07 Nov 11:19
Immutable release. Only release title and notes can be modified.

Fixed

  • get.ps1 works under Windows PowerShell started from PowerShell 7 or from a .NET process that inherited its
    module folders (NexusSystem's maintenance run by hand): it keeps only Windows PowerShell's own module folders, so
    Get-FileHash loads again, as in the other Nexus products.
  • Reading an answer no longer locks it: the engine opens it shared for writing and deleting, so a dispatcher still
    writing it in place never fails with a sharing violation (it is read again until it parses).