Skip to content

Migrate to StartOS SDK 2.0.5 - #1

Merged
stupleb merged 1 commit into
masterfrom
migrate-sdk-2.0.5
Jul 18, 2026
Merged

Migrate to StartOS SDK 2.0.5#1
stupleb merged 1 commit into
masterfrom
migrate-sdk-2.0.5

Conversation

@stupleb

@stupleb stupleb commented Jul 18, 2026

Copy link
Copy Markdown
Owner

Bumps @start9labs/start-sdk 1.5.3 → 2.0.5 (and TypeScript → 6.0.3), packaging revision 0.1.0:00.1.0:1.

Breaking changes that reach this package

  • sdk.serviceInterface.getOwn is removed. getNonLocalUrls goes through sdk.host.getOwn, walking host.bindings[port].interfaces to the ui interface; addressInfo arrives pre-filled. Note the host id is the MultiHost id ('ui-multi'), not the interface id — getting this wrong returns an empty list rather than an error.
  • SubContainer.of() is now lazy and synchronous, so the awaits are dropped; caddySub.rootfs is a promise on the lazy handle and is awaited at the Caddyfile write. It materializes with the declared mounts, so the /data volume mount is unchanged.

CI

Drops the Pin start-cli v0.4.0-beta.9 step from both workflows. It existed only because the package was SDK 1.5.3, and that CLI cannot pack a 2.0.5 package — leaving it would have broken the release build. build.yml returns to the shared Start9 reusable workflow, which it was inlined away from solely to host that pin.

Also

Annotates the manifest's alerts.install block as dead in README.md/TODO.md. alerts is absent from SDKManifest and is dropped at pack time, so the install alert never renders — but this predates 2.0 rather than being a migration regression: the released v0.1.0_0 s9pk, packed on SDK 1.5.3, has has("alerts") == false in its built manifest too. The throwaway-account warning it carried is already in instructions.md and the Add Session action, so no user-facing content is or was lost. The block itself is left in place for a separate decision.

Verification

tsc, ncc and s9pk pack (x86_64 + aarch64), plus device-testing of install, upgrade in place over 0.1.0:0, sessions, browsing, RSS, Set Primary URL and Basic Auth — covering both APIs above, neither of which fails at compile time.

🤖 Generated with Claude Code

Bump @start9labs/start-sdk 1.5.3 -> 2.0.6 and typescript -> 6.0.3, and
collapse tsconfig.json onto the SDK's tsconfig.base.json (ES2022, module
preserve, moduleResolution bundler).

Two 2.0 breaking changes reach this package:

- sdk.serviceInterface.getOwn is removed. getNonLocalUrls now goes through
  sdk.host.getOwn, walking host.bindings[port].interfaces to the 'ui'
  interface; addressInfo arrives pre-filled. Note the host id is the
  MultiHost id ('ui-multi'), not the interface id.
- SubContainer.of() is now lazy and synchronous, so the awaits are dropped;
  caddySub.rootfs is a promise on the lazy handle and is awaited at the
  Caddyfile write. It materializes with the declared mounts, so the /data
  volume mount on teapotSub is unchanged.

Bump the packaging revision 0.1.0:0 -> :1. No data migration, so current.ts
is edited in place rather than spun off into a new version file.

Refresh the vendored s9pk.mk from the SDK tarball. It is carried per-package
at the repo root, so bumping the npm pin does not update it, and this copy
was still the 1.5.3-era file: no check-deps ordering on the build targets,
dead docs URLs, no git/jq dep checks, no SDK lint gate at all, and an
install/publish target requiring a flat host:/registry: in
~/.startos/config.yaml (which is why `make install` failed against a
workspace whose hosts live in the nested workspace config). Ran the lint
runner before adopting it -- exit 0, so the newly-enabled gate is clean.

CI: drop the "Pin start-cli v0.4.0-beta.9" step from both workflows. It
existed only because the package was SDK 1.5.3, and that CLI cannot pack a
2.0.x package -- leaving it would have broken the release build. build.yml
returns to the shared Start9 reusable workflow, which it was inlined away
from solely to host that pin.

Also annotate the manifest's alerts.install block as dead in README/TODO.
'alerts' is absent from SDKManifest and is dropped at pack time, so the
install alert never renders -- but this predates 2.0 rather than being a
migration regression: the released v0.1.0_0 s9pk, packed on SDK 1.5.3, has
has("alerts") == false in its built manifest too. The throwaway-account
warning it carried is already in instructions.md and the Add Session action,
so no user-facing content is or was lost.

Verified: tsc, lint, ncc and s9pk pack (x86_64 + aarch64), plus device-testing
of install, upgrade in place over 0.1.0:0, sessions, browsing, RSS, Set
Primary URL and Basic Auth -- covering both APIs above, neither of which fails
at compile time. That testing was done against the 2.0.5 build; the published
2.0.5 and 2.0.6 tarballs carry byte-identical runtime code (they differ only
in CHANGELOG.md, README.md, package.json and s9pk.mk), so it carries over.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@stupleb
stupleb force-pushed the migrate-sdk-2.0.5 branch from 724c3cc to c871b2c Compare July 18, 2026 19:16
@stupleb
stupleb merged commit 96944e2 into master Jul 18, 2026
3 checks passed
@stupleb
stupleb deleted the migrate-sdk-2.0.5 branch July 18, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant