Repository navigation
Releases
Releases · pironjulien/NexusSystem
NexusSystem 1.8.0
Immutable
release. Only release title and notes can be modified.
Changed
- The pack's installation moved from PowerShell to the native engine:
get-nexus.ps1(about 1,500 lines before) is
now a minimal bootstrap that downloadsNexusMaintenance.exeof its own release, checks its SHA-256 (and its build
provenance whenghis signed in) and runs it in the same console.NexusMaintenance.exe --installdoes
everything else, with the same options, plan, messages, checks and summary as before: AI app detection, the plugins
of Claude Code and Codex, each product's official installer (its release'sget.ps1, checked, now with its build
provenance too whenghis there), the exact removal of Codex's old direct declarations, and the hourly task.
--install-maintenance,--maintainand--statusreplace the script's maintenance part; the hand-over
contract of the 1.6 PowerShell worker (-Maintain -MaintenanceCurrent) is kept. - The "NexusSystem Update" task is registered through the Task Scheduler API (source-generated COM interop, also in the
native engine) instead of PowerShell's cmdlets, with the same settings; a task its owner disabled stays disabled. - Installing the engine never stops one that runs: it is renamed aside (under a unique name while an older one still
runs), put back if the new file cannot take its place, and engines set aside are removed once nothing runs them. - Tests: the PowerShell tests of the pack (
test_pack.ps1,test_codex_pack.ps1,test_maintenance.ps1) became
xUnit tests of the engine (PackInstallerTests,MaintenanceSetupTests: fresh installation, update while an
engine runs, failed replacement restored, a real Task Scheduler round trip), andScriptTestsruns the bootstrap
with this commit's engine on a throwaway profile.
Fixed
- A product release's build provenance was refused when the official
ghtool was installed but not signed in
(exit code 4: it cannot read attestations), so the hourly maintenance failed every product update on such a PC and
the new pack check failed on GitHub's runners. That case now checks nothing, as withoutgh; the SHA-256 is
verified anyway, and a real attestation failure stays fatal. get-nexus.ps1removes the PowerShell worker of releases up to 1.6.54 (~\.nexus\nexussystem\maintenance\get-nexus.ps1)
when a development engine is selected as well: on the author's workstation it stayed, and the workstation sync kept
installing products with that 1.6 script (07/11/2026). The public installation already removed it.app/tools/sandbox.ps1stops with the reason when the Windows Sandbox is gone before the guest's result (closed,
connection lost, never started:app/tools/sandbox-watch.ps1, checked every 5 s throughwsb list, 15 s of grace)
instead of waiting until its 30-minute timeout. On 07/11/2026 the Sandbox's connection was lost before the guest's
user logon (its logon command never ran) and the script kept waiting.app/tools/sandbox.ps1can start an unsigned Store package: the Sandbox guest enforces Smart App Control whatever
the host's setting and refused app 1.0.18.0, test-signed in the guest, with0x800711C7. With-Certificationon
an unsigned package (or-DisableSmartAppControlInGuest) the guest turns it off for itself only before installing
and records it inresult.json; the host's state must be the same after the run (app/tools/sandbox-policy.ps1,
app/tests/test_sandbox_policy.ps1).- 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.
NexusSystem 1.7.3
Immutable
release. Only release title and notes can be modified.
Fixed
- Maintenance engine: an AI app command line (
claude plugin marketplace update,codex plugin ...) could run with
no limit, so one stuck command kept the hourly run going until Task Scheduler stopped it at 30 minutes
(ExecutionTimeLimit, result 0x41306) and the receipt stayedcheckingfor the next hour. Each command now gets
5 minutes, then is stopped with its child processes and reported with its last output; its standard input is closed
instead of inherited. A failed command says why (Claude plugin update failed (exit code N: <its last error line>)) instead of a bare "failed". - A cancelled run writes
failed(retryable) instead of leavingchecking, and a run that finds achecking
receipt (its predecessor was stopped outright) says it resumed it.
Changed
CHANGELOG.mdfollows Keep a Changelog again: each Store app version since 1.0.13.0 has its own dated
[app a.b.c.d]section instead of "(app ...)" subsections of catalog versions, every section has its link at the
end of the file, and the header no longer promisesnexussystem-v*tags (the site reads the app's version from the
Microsoft Store since 2026-11-04).ChangelogTestschecks the format, the links and that the app's<Version>has
its section;RELEASING.mdsays so.
Security
- CodeQL runs from a workflow file (
codeql.yml:actionsandcsharp, build mode none, actions pinned by SHA)
instead of GitHub's default setup, now turned off: OpenSSF Scorecard credits SAST only through a workflow when
commits land without pull requests (it scored 0), as for the products since 2026-11-07.
NexusSystem 1.7.2
Immutable
release. Only release title and notes can be modified.
Added
tests/NexusSystem.Tests/PromoteGateTests.cs: the promotion's checks step, run exactly as the workflow runs it,
against a local stand-in for the GitHub API (red refused at once, running awaited, absent or unfinished refused, the
latest run of each workflow counted, the calling workflow and dynamic workflows left out, paginated check runs).tests/test_engine_replacement.ps1, run on every push after the native build: the realNexusMaintenance.exeis
started, its file is renamed aside and replaced before any of its code runs (as its self-update does), and it must
still complete its cycle. Native AOT maps the whole image at start, so a running engine never reads its path again,
unlike the .NET single-file bundle of NexusFree 1.3.2 (the same test fails on a single-file build of this engine).
Changed
product-promote.ymlpublishes a product's stable release only once every check of the build's commit is green
(NexusBrowser 2.35.28 was promoted with its Tests workflow red: the promotion depended on its own build only). A new
read-only jobchecksreads the commit through the GitHub API (actions,checks,contents,statuses: read):
the latest run of each product workflow except the calling one, other apps' check runs and commit statuses. It
waits for those still running (checks-timeout-minutes, 60 by default) and refuses, naming each, a red or cancelled
one, a workflow declared inrequired-workflows(defaulttests.yml security.yml codeql.yml) that is missing or
never ran, or a wait that runs out. The caller's job now grantsactions: read,checks: read,statuses: read.- The release's pack check runs the maintenance engine with exactly the command line its task registered, against
the release being checked rather than the one already published:get-nexus.ps1 -MaintenanceFrom(tests only) now
registers the task with--test-catalog <local catalog> --test-engines <folder>, and the engine then takes that
catalogue as the release, after checking that it carries the engine's version and that the engine is the one the
folder'sSHA256SUMS.txtlists (SHA-256); it never replaces itself and Codex reads that catalogue in place. - The pack check no longer accepts every pending result: exit code 0, or 2 only when each pending product is
NexusWindows with no AI app running or NexusBrowser with its daemon on the installed engine and no Chrome running. app/tools/package.ps1builds in~\.nexus\build\NexusSystem\store<version>(-Store) or...\msixby default,
no longer under%LOCALAPPDATA%, which an MSIX app such as Claude redirects into its private cache (the cause of
the 0-byte package sent to Partner Center on 2026-11-05). The reports ofapp/tools/sandbox.ps1and
app/tools/wack.ps1go there too by default (sandbox-<id>,wack).
Changed (app 1.0.17.0)
- The app installs and maintains the Nexus products with catalog 1.7.2: the hourly maintenance is the native
NexusMaintenance.exeengine (no PowerShell, no console host), product installers keep working from a
PowerShell 7 window, and a signed-out GitHub CLI no longer stops an installation. - Windows App SDK 2.6.5 and current NuGet packages; the install script is embedded from the catalog at build time
(see the app changes of 1.7.0). - Its embedded maintenance engine also carries two catalog changes of this release: a Codex catalogue from another
source is kept without failing the product (see Fixed below), and the engine's test options (--test-catalog,
--test-engines, used by the pack check only, see Changed above; a registered task without them is unchanged).
Fixed
- Maintenance no longer fails a product when Codex's Nexus catalogue comes from another source (a local folder, a
fork): that route is kept, not refreshed, and the product's status names the source instead of "Codex catalogue
refresh failed".
NexusSystem 1.7.1
Immutable
release. Only release title and notes can be modified.
Changed
- A catalog release is published only after the full installation passes on a clean Windows runner from its tagged
commit, with the very maintenance engines it publishes (pack.yml, now also run by hand instead oftest.yml):
every product installed, every declared server reached, a second run green, and the installed engine started from
PowerShell 7 (--current --force) with no product failed.get-nexus.ps1 -MaintenanceFrom(tests only, with a local-Catalog) takes that engine
from a folder with itsSHA256SUMS.txt, checked the same way, since its release does not exist yet.
Fixed
- Maintenance started from a PowerShell 7 window no longer breaks product installers: Windows PowerShell inherited
the PowerShell 7 module path, lostGet-FileHashand stopped the update (seen with NexusFree 1.3.0). get-nexus.ps1no longer fails when the GitHub CLI is installed but not signed in: the maintenance engine's build
provenance is then reported as not checked (its SHA-256 is still verified), as when gh is absent.
NexusSystem 1.7.0
Immutable
release. Only release title and notes can be modified.
Changed
- The hourly maintenance is now
NexusMaintenance.exe, a native Windows engine (C#, ahead-of-time compiled for x64
and ARM64, no .NET to install) that the NexusSystem Update task starts directly: no PowerShell, no execution
policy override, no console host. Each catalog release publishes it besideget-nexus.ps1, inSHA256SUMS.txt
and in its build provenance. It keeps the same rules: published releases only, installed products and existing
active routes only, running AI sessions preserved, the same~\.nexus\status\nexussystem-update.json. It replaces
itself with the newest published engine (never an older one); product installers run withRemoteSigned. get-nexus.ps1installs the engine of its own release, checked, and registers the task on it;-Maintainruns it
then registers it, which also hands over from the PowerShell worker of releases up to 1.6.54. Its other modes are
unchanged.- One detection for the app and the maintenance: the AI apps found (Claude Desktop's signed Code engine included),
each AI app's declared state of a product and Codex'sconfig.toml(a lexical reader that refuses what it does not
understand) are read by the same C# code. The process list is read natively instead of through WMI. - On the author's workstation,
developmentCoordinatornow names an engine built from the repository
(app/tools/maintenance-dev.ps1).
Changed (app)
- Windows App SDK 2.6.5 (was 2.5.1) and Windows SDK Build Tools 10.0.28000.2957; System.Management is no longer used.
- The app embeds the repository root's
get-nexus.ps1itself: theapp/packcopy and itssync.ps1are gone, and a
missing script now fails the build instead of the running app. - Every project builds with the same rigor from
Directory.Build.props: warnings as errors, the recommended .NET
analyzers and code style at build (the app, its tests and the probe were missing some of them). - NexusWindows checks accept a single-file Native AOT engine (
NexusWindows.exealone, attested by its own hash in
the installation and in the runtime receipt) as well as the framework-dependent one, whoseNexusWindows.dll,
.deps.jsonand.runtimeconfig.jsonmust be recorded together; a partial set is not an installation.
Fixed
get-nexus.ps1ran each product's checkedget.ps1with-ExecutionPolicy Bypasssince 1.6.31, although 1.6.2
had narrowed it toRemoteSigned: it isRemoteSignedagain, as in the maintenance engine (local files saved
without a mark of the web, so the same effect with the narrowest setting).- Dependabot never proposed a NuGet update: on its Linux runner
USERPROFILEis unset, so the build folder became
/.nexusand every restore was denied. The build folder now comes from .NET's own user profile path. app/tools/capture.ps1stopped with "capture fr dark did not finish": its fixed 90 s no longer covered nine
products' pictures. The deadline now follows the number of products inproducts.json.
NexusSystem 1.6.54
Immutable
release. Only release title and notes can be modified.
Fixed
- A product update that failed during the hourly maintenance only said "The product update failed.": the published
installer's output and errors are now kept in~\.nexus\nexussystem\maintenance\logs(UTF-8, the 20 newest),
and the product's entry in~\.nexus\status\nexussystem-update.jsonnames that file (log) and the installer's
exit code in its message. The same applies when the installer exits cleanly without reaching the published version;
a successful run removes its log. - NexusFree showed "Installed · version 1.2.5" instead of "Up to date": the app never read its latest release, as
neitherproducts.jsonnor the app's list of GitHub repositories named NexusFree. Both do now, and a test requires a
release repository for every ready product. The catalog fix reaches the Store app already installed.
Fixed (app 1.0.16.0)
- On the Updates page the state column starts at the same place on every row: the button column has one width, so a
Microsoft Store product's "Open in the Store" no longer pushes its state left, and the busy ring of an update takes
the dot's slot.
Changed (app 1.0.15.0)
- Home laid out like the Microsoft Store's: the banner shows each product's poster across the whole slide, with its
icon, name and button over it, and two product tiles beside it; each group is one panel of compact rows (icon,
name, sentence, state, button). - An update is seen at a glance: a count on "Updates" in the menu, a dot on every product that has one, and a banner
at the top of the home page naming them with "See updates". The published versions are read at start and every
30 minutes. - Every installed product's page has "Check for an update" under its state, the same check as the Updates page.
- NexusKeypad and NexusAGYmail pages show what the AI apps did with them (24 h), like the other AI products.
Fixed
- NexusKeypad 1.8.30 pinned to its
connecteursfolder again in both AI plugin catalogs (it pointed at the
Logitech plugin folder). The catalog tests reuse or rebuild a cached checkout instead of failing on Git's
read-only files.
Fixed (app 1.0.15.0)
- Long ✓ / ✗ lines and the "On this PC" summary wrap instead of being cut (NexusWpp's "Installed from the
Microsoft Store" line).
Changed
- Pin NexusKeypad 1.8.30 in both AI plugin catalogs: each Marketplace edition's release now carries a ready profile
(.lp5) to import in Logi Options+. - Pin NexusBrowser 2.35.14 in both AI plugin catalogs: Chrome's toolbar icon is the site medallion without its
lettering. - App icons at 32 px and less (
Square44x44Logotarget sizes,nexus.ico): the same julienpiron.fr medallion
as the large icon, with only its unreadable lettering erased, instead of the plain silver ring. - Pin NexusBrowser 2.35.13 (task rename steps written to install.log), NexusKeypad 1.8.29 (relay conversations
recognized under both names) and NexusRelay 1.13.3 in both AI plugin catalogs. - Pin NexusRelay 1.13.4 in both AI plugin catalogs: the commit guard defaults to the repositories under C:\Nexus.
- Pin NexusBrowser 2.35.12 and NexusWindows 3.16.17 in both AI plugin catalogs: product names without a space
everywhere; NexusBrowser's scheduled tasks are renamed "NexusBrowser Bridge/MCP/Update" on update.
NexusSystem 1.6.53
Immutable
release. Only release title and notes can be modified.
Changed
- Product names are written without a space everywhere, like their repositories: pin NexusAndroid 0.23.9,
NexusInDesign 4.1.5 and NexusRelay 1.13.2 in both AI plugin catalogs; the installer, the app and INSTALL-AI.md
name the Codex project "NexusRelay" (NexusRelay 1.13.2 still finds a project named "Nexus Relay"). - Pin NexusAndroid 0.23.8, NexusBrowser 2.35.9, NexusFree 1.2.5, NexusInDesign 4.1.4, NexusKeypad 1.8.28,
NexusRelay 1.13.1 and NexusWindows 3.16.15 in both AI plugin catalogs: plugin display names without a space. - Same
.gitattributesas every Nexus repository (2026-11-04): LF in Git and on disk, CRLF only for.cmd/.bat; files stored with CRLF were renormalized once.
Fixed
- Pin NexusBrowser 2.35.7 in both AI plugin catalogs: small toolbar icon at 16 and 32 px.
- Pin NexusAndroid 0.23.7, NexusBrowser 2.35.5, NexusFree 1.2.4, NexusInDesign 4.1.3, NexusKeypad 1.8.27,
NexusRelay 1.12.12 and NexusWindows 3.16.12 in both AI plugin catalogs: product icons on a transparent background,
with the knot badge of the medallion kept whole. - Pin NexusBrowser 2.35.4 in both AI plugin catalogs: the spinning toolbar logo is cut to its circle and flashes at start.
- Pin NexusBrowser 2.35.3 in both AI plugin catalogs: property-based robustness tests and the fixes they found.
products.json: NexusInDesign links to its new site page; NexusFree no longer points to a missing banner.INSTALL-AI.mdlists thefreekey (NexusFree) in the product table.- Pin NexusWindows 3.16.10 in both AI plugin catalogs: plain sends without an expect stay out of its error log.
- Pin NexusAndroid 0.23.6 in both AI plugin catalogs: a readable phone checkup with an accurate store-origin check.
- Pin NexusWindows 3.16.9 in both AI plugin catalogs: its diagnostic logs keep the engine's fixed failure reasons.
- Pin NexusRelay 1.12.4 in both AI plugin catalogs so the installed skills describe equal peers under
host: all.
Changed (app 1.0.14.0, icons)
- The app and its package logos (Start, taskbar, Store, tiles) show the julienpiron.fr medallion on a transparent
background at every size, like the site: no dark square around it, and the knot badge at the bottom of the ring is
kept whole (it was dimmed with the inner circuits). NexusFree, NexusInDesign and NexusWpp cards now come from the
same kit as the other products (tools/icon-from-site.ps1). - At 32 px and less (taskbar, Start, Alt+Tab, Explorer, small
nexus.icoentries) a small icon replaces the
medallion: the silver ring drawn plain, without the "JULIENPIRON.FR" lettering unreadable at that size, and the
pictogram enlarged. Ships with the app version after 1.0.14.0 (already in certification).
Fixed (app 1.0.14.0)
- A Microsoft Store product (NexusWpp) shows its installed version and the version the Store serves, with "New version
X" and an "Update" button like the AI products. It said only "Installed · Microsoft Store" while a PC stayed on
1.0.45.0 with 1.0.51.0 published. The served version comes from the Store's display catalog (its MSIX package), not
from GitHub (its release lags behind the submission) nor winget's msstore source (it reports "Unknown", so
winget upgradesaw nothing). "Update" and "Get updates" take the Store's package with
winget install --source msstore --force.
NexusSystem 1.6.52
Immutable
release. Only release title and notes can be modified.
Fixed
- JSON settings updates use a flushed adjacent file and a same-volume replacement rename. Killing the previous
File.Replacewriter could leavesettings.jsonmissing. Existing permissions are applied to temporary files
and distinct backups before writing any data. Tests interrupt real repeated replacements after writer startup,
and verify protected permissions, complete JSON and refusal without data loss when the target is locked. - Local deployment recycles only verified, unused NexusSystem copies; active copies and unrecognized folders stay
intact. Links are refused and recycling is confirmed. If recycling is unavailable, no permanent-delete fallback
is used. Installer and crash-test fixture cleanup follow the same rule.
Changed
- Pin the audited stable releases of NexusAndroid 0.23.5, NexusWindows 3.16.8, NexusBrowser 2.34.5,
NexusInDesign 4.1.2 and NexusFree 1.2.3 in both AI plugin catalogs. NexusFree routing covers every operation
requiring Administrator / SYSTEM privileges, independently of command names.
NexusSystem 1.6.51
Immutable
release. Only release title and notes can be modified.
Added
- NexusFree in the pack:
get-nexus.ps1 -Only freeruns its published installer (one UAC prompt the first time) for
Claude Code, Codex and Antigravity, and maintenance updates an installed NexusFree like the other engines. It is
opt-in: it gives the account SYSTEM commands without UAC, so a run without-Only freenever installs it. The app
showed NexusFree since 1.6.50's catalog, but its "Install by the AI" reached a pack that did not know it. - A catalog test fails when a ready product of
products.jsonor a catalog plugin is missing from the pack.
Changed
test.ps1no longer suggestsInstall-Module -Scope CurrentUserwhen PSScriptAnalyzer is missing: that scope
installs into Documents, which OneDrive often syncs. It suggestsSave-PSResource -Pathto a module folder outside
Documents.
Fixed
- Pin NexusWindows v3.16.5 in both catalogs, allowing direct semantic actions on stable controls while unrelated
parts of the interface update.
NexusSystem 1.6.50
Immutable
release. Only release title and notes can be modified.
Fixed
- Codex no longer asks again for the hooks of NexusRelay and NexusKeypad after a maintenance update. Refreshing the
catalog updates every installed Nexus plugin, but only the plugin being installed (NexusWindows, NexusBrowser,
which have no hooks) had its new hook versions approved. The catalog refresh now approves the hooks of every
installed plugin of this catalog, through Codex's own app server; other catalogs and disabled hooks are untouched. - Pin NexusInDesign v4.1.1 in the Claude Code and Codex catalogs, correcting the skill description's YAML syntax.
- Parse skill front matter as YAML in catalog tests so folded descriptions retain their text and malformed YAML fails validation.
- Local app install (
app/tools/install-local.ps1): earlier local copies (other versions and payloads, the older flat
layout and oldpublish-*folders) are removed once the new copy is installed, unless a running NexusSystem uses
them. They had grown to 6.6 GB on the author's PC.