Repository navigation
feat(cli): distribute styal executables through releases and npm - #370
Merged
Merged
Conversation
Build and verify native executable archives independently of the existing npm and desktop delivery paths. Keep fork branding, native dependencies, synthetic verification, and release checksums together. Upstream-PR: 11316, 11317, 11605, 11606
Use verified styal archives for managed runtimes and distribute the same payload through platform npm packages. Protocol 4 separates the executable directory from existing protocol 3 npm installs; keep the legacy entry point so old updaters can return local migration guidance. Restore stopped service state and its unit when activation fails, including systemd reload. Preserve data and old runtimes. Add installer, update, uninstall, restart and progress commands. Publish platform packages before the npm launcher, retain bundled native dependencies across reinstall, and forward launcher termination to the server. Keep the CLI's remote bootstrap helpers in the executable. Includes the service prerequisite diagnostics from upstream pingdotgg#9602; its separate Link and relay changes remain deferred. Fork adaptations retain the current Effect version and use styal identities throughout. Validated focused service/launcher tests, real Linux executable startup without Node on PATH, managed launcher IPC, native terminal, pairing and persisted projects after restart. npm install and reinstall run with scripts disabled. macOS and Windows native execution remain unverified locally. Upstream-PR: 5302, 11318, 11451, 11510, 11607, 11659, 11702, 11732, 11738, 11750, 11770, 11940, 12044
Select the exact desktop release from incognitojam/styal for managed SSH hosts, replacing upstream t3 npm package selection. Keep explicit source-checkout runners for development and include remote process ownership and stop-failure corrections. Ship the Linux CLI archive and its digest with Windows packages. Verify and cache it in the distro, retain the previous healthy runtime, discover provider tools separately from the embedded Node runtime, and prune only after backend readiness. Preserve the mounted fallback and styal-specific state and marker migration. Adapt release dependencies without introducing a build cycle, validate the emitted Windows archive/version/native payload, and document installer and npm usage. Intel macOS remains unsupported. Validated generated SSH/WSL scripts through real Linux subprocess fixtures, cache corruption and partial cleanup, readiness-gated pruning, and Windows payload validation fixtures. Native Windows/WSL and macOS execution still require their own runners. No release or registry publication performed. Upstream-PR: 5769, 9843, 10105, 10285, 10289, 10301, 11319, 11511, 11696, 11741
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
Moves styal CLI, managed services, SSH, and WSL onto standalone executables while retaining npm installation. CI passed; the implementation is ready for review. Merging remains blocked on npm publication configuration.
The current CLI requires Node/npm-managed runtimes, and desktop SSH still selects upstream
t3packages. This change distributes styal executables for macOS arm64, Linux x64/arm64, and Windows x64/arm64, with npm as a launcher for those same payloads. Windows desktop bundles the Linux archive for its WSL cache.Launcher protocol 4 distinguishes the new executable layout from styal's existing protocol 3 npm layout. Existing installations retain migration guidance, isolated runtime storage, ownership checks, and rollback. Intel macOS remains unsupported.
Upstream changes are grouped in three source-attributed commits. Two separately attributed fixes make the macOS terminal helper executable and preserve SSH runner/process ownership and literal shell interpolation.
Validation
Native macOS arm64 and Windows x64 archives passed terminal, bundled web, pairing, authenticated synthetic project reads, and restart persistence checks. npm installation and offline reinstall retained native dependencies. Production SSH scripts passed concurrent installation, cached reuse, owned-server reconnect, stop, and restart against a local release fixture. A disposable launchd service booted and stopped successfully. Production WSL cache scripts and the cached Linux executable passed cold/warm reuse, tamper recovery, invalidation, pairing, persistence, and managed-launcher checks.
Focused service/launcher and SSH tests cover fork adaptations. Fork CI passed on
02391a42fd0c81d55d3df27d9386351dce135d89: code checks, workspace tests, server tests, and release smoke. CI run. Full legacy npm-service migration under its real service manager, packaged Electron WSL selection/fallback, and production signing were not exercised by these host checks. Unchanged upstream behavior relies on upstream validation and fork CI.Release prerequisite
STYAL_CLI_PUBLISH_ENABLEDis alreadytrue, but the five new public npm platform packages do not exist. Configure their first publication and trusted publishers before enabling this release path, or explicitly gate platform publication during rollout. This branch does not change registry configuration or live installations.Source PRs:
pingdotgg/t3code#5302,pingdotgg/t3code#5769,pingdotgg/t3code#9843,pingdotgg/t3code#10105,pingdotgg/t3code#10285,pingdotgg/t3code#10289,pingdotgg/t3code#10301,pingdotgg/t3code#11316,pingdotgg/t3code#11317,pingdotgg/t3code#11318,pingdotgg/t3code#11319,pingdotgg/t3code#11451,pingdotgg/t3code#11510,pingdotgg/t3code#11511,pingdotgg/t3code#11605,pingdotgg/t3code#11606,pingdotgg/t3code#11607,pingdotgg/t3code#11659,pingdotgg/t3code#11696,pingdotgg/t3code#11702,pingdotgg/t3code#11732,pingdotgg/t3code#11738,pingdotgg/t3code#11741,pingdotgg/t3code#11750,pingdotgg/t3code#11770,pingdotgg/t3code#11940,pingdotgg/t3code#12044.Only service prerequisite diagnostics from
pingdotgg/t3code#9602are included; its Link/relay changes remain deferred, so it is not claimed as fully imported.Upstream-PR: 5302, 5769, 9843, 10105, 10285, 10289, 10301, 11316, 11317, 11318, 11319, 11451, 11510, 11511, 11605, 11606, 11607, 11659, 11696, 11702, 11732, 11738, 11741, 11750, 11770, 11940, 12044
Written by an agent (Codex, GPT-6).