Repository navigation
Equinox Local 6.0.0
Release highlights
-
Major milestone for Equinox Local and Equinox Browser 1.0.0 interoperability, including current ChatGPT Web send/continuation flows, Task Capsules, Telegram New Task and exact-bound follow-up chats.
-
Redesigned Control Center updates UX with compact sidebar notices, explicit Main SHA display, periodic background update awareness and independent Stable/Main notices without silent channel switching.
-
Expanded native Windows x64 and ARM64 installation, lifecycle, rollback and guarded desktop automation support, alongside macOS ARM64/x64 package and update paths.
-
Updated verified dependencies: Node 26.11.1, MCP SDK 1.32.1, PDF.js 6.4.299, Tunnel Client 0.0.16 and macOS Peekaboo 4.9.0.
-
Prepared Equinox Browser 1.0.0 Store review candidate: updated ChatGPT Web native composer submit selectors for Telegram new-task, Fresh Chat Resume and bound Chat Bridge; reused modern Auto Continue turn observation for bound chats and exact assistant-response extraction, without relaxing existing send/receipt guards.
-
Fixed the managed Stable release update validator refusing canonical packages whose
release.jsonincludes a validated 40-hexsourceSha; historical source-less Stable archives and strict metadata shape checks remain supported. -
Fixed real macOS
artifact_requiredMain upgrades: the detached launchd worker preserves non-secret managed installation paths for future updates and independently reconstructs an exact trusted managed installation from its own HOME, transaction root and current native release pointer when an older A scheduler drops those fields; credentials remain excluded and foreign paths are rejected. -
Fixed the macOS native LaunchAgent runtime host using the OS account home instead of the exact managed
EQUINOX_LOCAL_INSTALL_ROOTunder its declaredHOME; isolated managed users and native app refreshes now resolve the trusted runtime wrapper consistently, while foreground launches retain the normal account-home fallback. -
Require the restarted native Main Control Center itself to identify as
managed-sourceat the exact target SHA before completing update health verification, preventing the still-running old A runtime from being mistaken for healthy B; preserve pinned Windows shell identity in detached worker recovery. -
Fixed a real native Main update apply failure: the pinned prebuilt dependency and staged-source validator functions were used without being imported by the transaction engine. Exercised the real default pinned Node/npm lifecycle path in regression tests and propagated the owned Windows POSIX shell for staged-source validation.
-
Validate the bundled macOS Git HTTPS helper and template directory during pinned toolchain install/reuse, rejecting incomplete or tampered archives before managed-source enrollment.
-
Fixed the pinned macOS Dugite Git distribution's root-relative helper discovery: managed-source enrollment and Main update transactions now explicitly select product-owned
libexec/git-core/share/git-core/templates, allowing HTTPS clone/fetch without ambient system Git. Proven using the exact SHA-256-pinned Git 2.53.0-4 archive after a real isolated macOS installation smoke foundgit-remote-httpsmissing. -
Added an opt-in GitHub-hosted macOS ARM64 installed-Main upgrade smoke: build a separately admitted source-A package, launch the real private-user native LaunchAgent and Control Center, upgrade through the production Update & restart API to the latest admitted Main snapshot, and verify the detached worker receipt plus healthy source-B runtime without touching developer machines. This is the positive-path first phase; forced-failure/rollback and Windows installed-host acceptance remain pending.
-
Fixed workflow terminal state visibility racing ahead of its durable JSON publication, including completed, failed, paused and cancelled transitions; added repeated immediate-disk-read regression coverage.
-
Added real Git A→B Control Center loopback check/apply acceptance with durable Main source transactions, fresh subprocess SHA/health inspection, reusable native versus artifact-required handoff, and forced rollback-to-A coverage on macOS plus native Windows x64/ARM64 CI. Full native desktop lifecycle remains a separate M8 exit gate.
-
Updated Windows managed release build to invoke fixed relative batch script names under the exact build working directory instead of interpolating an environment-derived absolute
.cmdpath intocmd.exe /c(CodeQL Medium #49 follow-up). -
Guarded legacy 5.2.x Stable-to-Main migration: an existing numbered Stable installation is never enrolled by a routine installer retry, and explicit
--enroll-existing-mainrequires matching source provenance in the already installed and staged Stable release before any lifecycle mutation. Windows native lifecycle acceptance covers the opt-in rejection path. -
Restricted dynamically generated Windows MSVC
.cmdbatch operands to validated absolute drive paths without CMD metacharacters, addressing CodeQL Medium alert #49 without weakening x64/ARM64 packaging. -
Hardened legacy 5.2.x and managed-source uninstall ownership: preserve-data mode removes product-owned runtime/toolchain and admitted Main source/update state while keeping workspace/config, refuses foreign source pointers and symlinked runtime directories, and leaves unstamped unknown state untouched. Full uninstall still removes the exact managed application-data boundary.
-
Control Center runtime restart now flushes dirty Turn Budget settings before scheduling the restart and disables restart while that save is in flight, so custom fallback-idle and Auto Continue hop limits cannot be lost to the previously persisted values during restart.
-
Refreshed the pre-release dependency/runtime baseline: MCP SDK
1.31.0, patched transitivefast-uri/ip-addresslock entries, Microsoft WebView21.0.4258.31, and the Windows shell/CI toolchain to .NET10LTS withactions/setup-dotnet@v6. Peekaboo remains pinned to the last verified universal4.5.0because upstream4.6.0fails on supported Intel macOS; Node26.10.0, tunnel-client0.0.15, node-pty1.2.0-beta.15, pdfjs-dist6.3.289, pngjs7.0.0, Zod4.6.5, and the current Actions major pins were already current. -
Added first-release Windows Desktop automation through pinned Microsoft winapp CLI
0.7.1on native x64 and ARM64, covering practical UI Automation inspection/search/read/write/wait, mouse/keyboard/drag/hover/scroll, screenshots and workflow arbitration while keeping niche touch/pen and recording outside the initial agent surface. -
Windows managed screenshots now return validated native MCP image content directly when no explicit output path is requested, so the model can see a captured app/window/control without a separate file-transfer or attachment step.
-
Added practical Windows clipboard parity: bounded Unicode get/set/clear plus targeted paste through the pinned winapp desktop engine; clipboard operations use a fixed packaged STA helper rather than arbitrary PowerShell commands.
-
Added a real native Windows ARM64 shared-parity gate covering the existing headless runtime/process/ConPTY/Browser/tunnel smoke plus Task Capsules, Turn Budget, continuation, Telegram, Authenticated HTTP, file-transfer and private-state suites.
-
Extended the ownership-safe Windows managed uninstall/reinstall transaction to the exact native ARM64 target, including preserve-data/full cleanup, foreign registry ownership guards, native shell handoff, and clean-environment startup-registry reads that do not depend on PowerShell provider/module autoloading.
-
Accepted the native Windows ARM64 managed fresh-install path on real GitHub-hosted ARM64 Windows: the public PowerShell installer selects
win32-arm64, promotes the verified release, registers Native Messaging, launches the ARM64 stable shell and reaches matching runtime health. ARM64 uninstall/reinstall remains a separate W8 acceptance slice. -
Fixed Windows native-shell crash recovery by avoiding synchronous
Process.WaitForExit()inside the gateExitedcallback while asynchronous stdout/stderr drains are active; the bounded real-Windows supervision harness now proves crash recovery, stop, descendant drain and disposal complete without deadlock. -
Keep the Windows native runtime gate stdin pipe open after ownership release so the MCP runtime does not interpret an immediate inherited stdin EOF as a clean shutdown; stop/restart ownership remains Job Object-driven.
-
Retry verified Windows first-install release promotion only for bounded transient NTFS lock errors (
EACCES,EBUSY,EPERM), reusing the accepted stable-shell replacement policy while leaving macOS promotion single-attempt and all containment/integrity checks unchanged. -
Preserve bounded Windows runtime-gate stderr on unexpected exits so native startup crashes can be diagnosed without changing restart or ownership behavior.
-
Add bounded Windows runtime-start phase diagnostics so ARM64 first-install acceptance can distinguish helper readiness, Job Object assignment, and gate release without logging local paths.
-
Added a bounded path-free Windows shell startup discovery diagnostic (
arch, managed-pointer visibility and supervisor creation) so first-install acceptance can distinguish managed-install discovery from runtime-start failures without exposing local paths. -
Made the Windows Job Object PowerShell 5.1 helper ARM64-safe by removing its runtime
System.ComponentModel.Win32ExceptionAdd-Type dependency while preserving bounded Win32 error codes, Job Object ownership and kill-on-close behavior. -
Hardened Windows Job Object helper startup diagnostics on x64/ARM64: protocol waits remain bounded at 30 seconds with exact lifecycle-phase timeout messages, and a helper that exits before replying now reports only its bounded, control-character-sanitized stderr plus exit code for actionable startup diagnosis.
-
Added bounded Windows native-shell runtime-start diagnostics under the per-user Equinox Local logs root and surfaced their tail through first-install failures, so WPF lifecycle exceptions are no longer silently swallowed during managed-install acceptance; diagnostic messages sanitize control characters, omit stack traces and keep the log size bounded.
-
Added the first native Windows ARM64 acceptance lane: managed packaging now derives exact x64/ARM64 dependency pins and shell paths from the native host target, compiles the Equinox Browser launcher with the matching Visual Studio toolchain and PE-machine verification, and CI uses
windows-11-vs2026-armto exercise native Node 26, node-pty/ConPTY, Native Messaging, ARM64 WPF publish and ARM64 managed ZIP assembly. Managed ARM64 install/update lifecycle remains fail-closed until this lane is accepted. -
Began explicit Windows ARM64 shell/runtime enablement: the managed release runtime contract now recognizes
win32-arm64, the WPF shell has separatewin-arm64/ARM64 publish targeting, and the native shell bindscurrent-version.jsonplusrelease.jsonto its actual process architecture. Managed ARM64 lifecycle/update support remains fail-closed until package assembly and native ARM64 CI acceptance are complete. -
Web file-transfer and Telegram default paths now derive from the shared host platform contract, preserving the existing macOS layout while using per-user LocalAppData state and Windows Downloads paths on Windows x64.
-
Replaced the macOS-only Browser PDFKit/osascript text extractor with bounded
pdfjs-distparsing so readable Chrome PDF snapshots use the same parser on macOS and Windows x64; raw PDF bytes remain bounded and are never returned to the agent. Real Windows CI now runs the PDF parser fixture directly. -
Made the Auto Continue maximum chain length configurable in Control Center with a default of 10 and a bounded 1–20 range; per-hop explicit arming, TTL, exact-chat binding, pre-mutation reservation and ambiguous-delivery no-retry guarantees are unchanged.
-
Suppressed bounded in-flight semantic MCP transport replays even when connector redelivery arrives with a new request/session id, preventing ambiguous
terminal_execdelivery from spawning a second identical managed process while preserving later intentional identical calls after the original settles. -
Added the ownership-safe Windows x64 uninstall handoff: the CurrentUserOnly native shell launches the release-local helper outside the runtime Job Object, validates its exact startup registration without mutating it, drains the runtime after acknowledgement, and the helper refuses cleanup until current-release, stable-shell, startup and Native Messaging ownership are proven. Preserve-data mode keeps managed state/workspace while full uninstall removes the remaining app data.
-
Control Center source-runtime restart now reuses the canonical restart scheduler instead of forwarding Node's resolved
process.execPath, keeping the whitespace-free developer Node alias intact on every restart surface. -
Windows managed updates now drain the native shell before bounded stable-shell replacement, share one hashed shell staging primitive with first install, and preflight/rotate Native Messaging ownership for rollback-safe activation.
-
Added the Windows update ownership handoff foundation: the runtime now asks the current-user-only native shell to launch the verified target release update helper outside the runtime Job Object, with an acknowledged bounded pipe command, exact target-release validation and a credential-minimal system-only helper environment. Actual running-shell file replacement/rollback remains a separate W6 checkpoint.
-
Hardened the Windows x64 Equinox Browser Native Messaging lifecycle for managed install: HKCU registration and manifest replacement now require exact ownership, exact desired state is mutation-free/idempotent, foreign or malformed state fails closed, release-to-release launcher rotation requires the explicitly expected previous owned manifest, and uninstall no longer removes HKCU when the canonical manifest is foreign. Fresh managed bootstrap now registers the release-local native host under the canonical per-user LocalAppData manifest root.
-
Added the Windows x64 first-install bootstrap foundation: a user-level Windows PowerShell 5.1 installer consumes the fixed HTTPS bootstrap manifest, enforces exact ZIP URL/byte/SHA-256 metadata, verifies a release-pinned copy of the existing secure ZIP inspector/extractor, sanitizes the bundled Node activation environment, and keeps Windows ARM64 fail-closed for W8. Signing now emits
.zipURLs for Windows targets and can materialize/publish the PowerShell installer plus its pinned ZIP helper without changing the macOS installer path. -
Prepared the Windows x64 fresh managed-install lifecycle: canonical per-user state/config paths, strict initial
current-version.jsonpromotion, atomic verified stable-shell synchronization, and real Windows CI coverage while keeping update-time running-shell replacement fail-closed for a later W6 checkpoint. -
Made the managed supervisor path contract platform-aware: Darwin keeps its existing per-user layout while Windows x64 now resolves managed releases, the strict
current-version.jsonpointer and stable native-shell program root from the canonical%LOCALAPPDATA%layout without POSIX path interpretation. -
Added bounded Windows x64 managed-release ZIP inspection and extraction for updater preparation. Windows update archives now fail closed on path traversal/root escape, reserved or ambiguous Windows names, case-insensitive collisions, symlink/reparse metadata, unsupported entry types and entry/byte bounds before promotion; real Windows CI exercises both a valid extraction and malicious ZIP fixtures.
-
Added a target-aware managed release runtime contract for Windows x64: release validation now expects native
.exeruntime/Browser host names, Windows Job Object helpers and no Peekaboo payload while preserving the existing macOS runtime/native-app rules; Windows ARM64 remains fail-closed until W8. -
Added Windows x64 managed activation groundwork: the native shell resolves
current-version.jsonfrom per-user LocalAppData on each runtime start/restart, update rollback can atomically restore the version-file pointer, and detached activation signals the existing current-user-only shell pipe instead of creating a second runtime supervisor. -
Added the Windows x64 managed-lifecycle foundation with a strict target-bound
current-version.jsonpointer under per-user LocalAppData; Windows ARM64 remains fail-closed until its dedicated W8 phase. -
Hardened Windows native runtime supervision for cold/busy hosts by keeping Job Object helper protocol waits bounded but allowing up to 15 seconds for PowerShell startup/round-trip readiness.
-
Locked the Windows x64 native shell publish contract to a self-contained, folder-based
win-x64output with explicit x64 PE validation and WebView2/.NET runtime presence checks; Windows ARM64 remains a separate W8 enablement rather than an inferred cross-build. -
Unified Windows native-shell onboarding/status presentation with the shared backend presentation model: first-time managed installs now surface
Setup Requiredin the tray while all setup steps remain in the shared Control Center; Windows consumes only bounded/api/v1/statuspresentation fields with background-refresh accounting. -
Branded the native Windows shell with the canonical Equinox Local artwork: the WPF window reuses
app/EquinoxLocal.png, the executable embeds its Windows ICO derivative, and the tray reads that embedded application icon instead of defaulting to the generic Windows application glyph. -
Added an origin-bound native Windows folder picker bridge for the WPF/WebView2 shell. Shared Control Center folder actions use the native dialog when hosted by the shell, retain the existing API/manual-path fallback elsewhere, and now accept Windows absolute paths without weakening server-side root validation.
-
Raised the guarded Auto Continue chain bound from five to eight explicitly armed hops for long checkpointed tasks; TTL, exact-chat binding, per-hop re-arm, pre-mutation reservation and ambiguous-delivery no-retry guards are unchanged, and hop nine fails before browser target resolution.
-
Fixed source-checkout restart ownership on macOS: restart now escapes the Local runtime LaunchAgent into a separate one-shot, non-KeepAlive LaunchAgent before booting the runtime service out, so Terminal/Control Center restart cannot terminate its own restart worker. The helper carries only the minimal source-runtime identity/environment, stays single-flight, and cleans up its temporary job/plist after completion.
-
Raised the guarded Auto Continue chain bound from three to five explicitly armed hops; checkpoint, TTL, exact-chat binding, pre-mutation delivery reservation and ambiguous-delivery no-retry guarantees are unchanged, and hop six fails before browser target resolution.
-
Updated Equinox Browser development turn observation for the current ChatGPT DOM: Browser 0.7.1 recognizes
data-turn-key/current search-unit/composer markers, uses the moderndata-turn-keyas the stable continuity identity before and after late assistant search-unit hydration, and keeps Turn Budget, Auto Continue and Fresh Chat Resume on the same fail-closed turn boundary. -
Restored successful fresh-install presentation without reintroducing duplicate native shells: the terminal installer now asks LaunchServices to reopen the existing verified
Equinox Local.appbundle, never force-starts a second instance, and opens the localhost Control Center in the default browser only when native reopening is unavailable.