Highlights
-
Configure HTTP proxy authentication and forwarded headers under
bindPort'sproxyoption, independently ofaddSsl. Proxy authentication applies to both the original and TLS-wrapper legs. -
Inherit proxy defaults from the protocol: enabled for HTTP-family protocols, disabled otherwise. Every protocol accepts an explicit
proxyobject orproxy: nulloverride. -
Move
addSsl.authtoproxy.authandaddSsl.addXForwardedHeaderstoproxy.addXForwardedHeaderswhen rebuilding packages. Keep TLS settings underaddSsl. -
Require StartOS 0.4.1 or later for packages built with this SDK.
-
Added
sdk.host.getAddressGateways, which resolves the gateways publishing the addresses a service advertises beside the gateway its outbound connections leave through, for health checks that report a mismatch. -
Fixed daemon
readychecks andaddHealthCheck()checks using more memory every time they run while the service is up. Rebuild packages with this SDK version to receive the fix.
Security
- Keep daemon and subcontainer command environment values out of process command lines, splitting large environments into bounded chunks.
- Preserve multiline image environment values in packages built with start-cli 2.6.0 or later.
- Require StartOS 0.4.1 or later for packages built with this SDK.
Important
-
Packages built with SDK 4.0.0 require StartOS 0.4.1 or later.
-
For
http/ws, useaddSsl: nullfor plaintext HTTP proxying without a TLS wrapper. HTTP proxying forhttps/wssrequires TLS termination; disable bothproxyandaddSslfor TLS passthrough. -
Before rebuilding, move
addSsl.authtoproxy.authandaddSsl.addXForwardedHeaderstoproxy.addXForwardedHeaders. For example:await host.bindPort(8080, { protocol: 'http', addSsl: { preferredExternalPort: 443 }, proxy: { auth: { type: 'bearer', tokens: [apiToken], realm: null }, addXForwardedHeaders: true, }, })
-
Raw TCP (
protocol: null), SSH, and DNS default toproxy: null. For services without HTTP handling, remove obsoleteaddXForwardedHeaders: falseandauth: nullSSL fields rather than moving them intoproxy. An explicit HTTP proxy requires HTTP traffic regardless of the chosen protocol's defaults. -
Proxy authentication covers all enabled HTTP addresses, including plaintext and bridge connections. Clients using those addresses must supply credentials too.
-
With forwarded headers enabled, TLS legs generate
X-Forwarded-Proto: https. Plaintext legs strip client-suppliedX-Forwarded-Protoand generate no replacement. -
Already-compiled packages remain supported by StartOS's legacy binding decoder; source migration is required when rebuilding with SDK 4.0.0.
-
Replace health-check returns of
result: 'waiting'withresult: 'starting', waiting: true. Useresult: 'loading', waiting: truefor an operational service waiting on an external condition. Removewaitinginterval entries fromstatusTriggerconfigurations; those checks now use the interval for theirstartingorloadingresult. The default triggers still back off waiting checks. -
Nonempty health-check messages are displayed verbatim for every status. Include the complete message rather than relying on the UI to add a “Waiting on” prefix or ellipsis. Empty or absent messages use the localized status label.
-
Failure probes softened to
startingduring the grace period omit their error message. Packages built with older SDKs still forward that message; the UI displays it as supplied, since it cannot distinguish those results from custom starting messages.
Full changelog
[4.0.0]
Added
-
Added
sdk.host.getAddressGateways, which resolves the gateways publishing the addresses a service advertises beside the gateway its outbound connections leave through, for health checks that report a mismatch. -
make install HOST=<profile-or-URL>selects the device for architecture detection and installation. Local development installs use--trustto override signer trust while retaining signature and integrity checks. -
make signbuilds the configured targets and endorses all local.s9pkfiles with the configured identity key. -
make universalandmake publishrun even when a file has the target's name. -
Browser S9PK readers expose declared embedded and supplemental signing keys and metadata parsing diagnostics. Signature validation belongs to the backend, using the caller's signer pins. Shared Ed25519 public-key codecs accept canonical DER64 and PEM.
Changed
-
Replace the
waitinghealth result withwaiting: trueonstartingorloading. Waiting checks show a clock, and every status can display a nonempty custom message verbatim. Update health checks returningresult: 'waiting'to useresult: 'starting', waiting: true, and removewaitingentries fromstatusTriggerinterval maps. -
Configure HTTP proxy authentication and forwarded headers under
bindPort'sproxyoption, independently ofaddSsl. Proxy authentication applies to both the original and TLS-wrapper legs. -
Inherit proxy defaults from the protocol: enabled for HTTP-family protocols, disabled otherwise. Every protocol accepts an explicit
proxyobject orproxy: nulloverride. -
Move
addSsl.authtoproxy.authandaddSsl.addXForwardedHeaderstoproxy.addXForwardedHeaderswhen rebuilding packages. Keep TLS settings underaddSsl. -
Require StartOS 0.4.1 or later for packages built with this SDK.
Fixed
-
Fixed a daemon that keeps restarting, and repeated
execcalls sharing oneabortcontroller, loggingMaxListenersExceededWarningand growing in memory. Rebuild packages with this SDK version to receive the fix. -
Fixed daemon
readychecks andaddHealthCheck()checks using more memory every time they run while the service is up. Rebuild packages with this SDK version to receive the fix. -
Fixed
merge()keeping a file model's stored date when given a newDate. Rebuild packages with this SDK version to receive the fix. -
Fixed
merge()changing file-model keys it was not given, and.const()reads not re-running, when keys fall back to a fixed.catch()object. Rebuild packages with this SDK version to receive the fix. -
Preserve caller-owned options when reusing subcontainer
spawnorlaunchoptions.
Security
- Keep daemon and subcontainer command environment values out of process command lines, splitting large environments into bounded chunks.
- Preserve multiline image environment values in packages built with start-cli 2.6.0 or later.
- Require StartOS 0.4.1 or later for packages built with this SDK.