github Start9Labs/start-technologies start-sdk/v4.0.0
Start SDK v4.0.0

one hour ago

Highlights

  • Configure HTTP proxy authentication and forwarded headers under bindPort's proxy option, independently of addSsl. 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 proxy object or proxy: null override.

  • Move addSsl.auth to proxy.auth and addSsl.addXForwardedHeaders to proxy.addXForwardedHeaders when rebuilding packages. Keep TLS settings under addSsl.

  • 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 ready checks and addHealthCheck() 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, use addSsl: null for plaintext HTTP proxying without a TLS wrapper. HTTP proxying for https/wss requires TLS termination; disable both proxy and addSsl for TLS passthrough.

  • Before rebuilding, move addSsl.auth to proxy.auth and addSsl.addXForwardedHeaders to proxy.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 to proxy: null. For services without HTTP handling, remove obsolete addXForwardedHeaders: false and auth: null SSL fields rather than moving them into proxy. 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-supplied X-Forwarded-Proto and 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' with result: 'starting', waiting: true. Use result: 'loading', waiting: true for an operational service waiting on an external condition. Remove waiting interval entries from statusTrigger configurations; those checks now use the interval for their starting or loading result. 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 starting during 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 --trust to override signer trust while retaining signature and integrity checks.

  • make sign builds the configured targets and endorses all local .s9pk files with the configured identity key.

  • make universal and make publish run 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 waiting health result with waiting: true on starting or loading. Waiting checks show a clock, and every status can display a nonempty custom message verbatim. Update health checks returning result: 'waiting' to use result: 'starting', waiting: true, and remove waiting entries from statusTrigger interval maps.

  • Configure HTTP proxy authentication and forwarded headers under bindPort's proxy option, independently of addSsl. 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 proxy object or proxy: null override.

  • Move addSsl.auth to proxy.auth and addSsl.addXForwardedHeaders to proxy.addXForwardedHeaders when rebuilding packages. Keep TLS settings under addSsl.

  • Require StartOS 0.4.1 or later for packages built with this SDK.

Fixed

  • Fixed a daemon that keeps restarting, and repeated exec calls sharing one abort controller, logging MaxListenersExceededWarning and growing in memory. Rebuild packages with this SDK version to receive the fix.

  • Fixed daemon ready checks and addHealthCheck() 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 new Date. 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 spawn or launch options.

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.

Don't miss a new start-technologies release

NewReleases is sending notifications on new releases.