Skip to content

chore: migrate to start-sdk 2.0 (0.3.0:1) - #8

Merged
helix-nine merged 1 commit into
masterfrom
sdk-2.0-port
Jul 21, 2026
Merged

chore: migrate to start-sdk 2.0 (0.3.0:1)#8
helix-nine merged 1 commit into
masterfrom
sdk-2.0-port

Conversation

@helix-nine

Copy link
Copy Markdown
Contributor

start-sdk 2.0 migration of 0.3.0

Ports the 0.3.0 feature release (merged in #6) from start-sdk 1.5.3 → 2.0.6. Version 0.3.0:0 → 0.3.0:1; no upstream change (still simplex-chat 6.5.5, image lundog/simplex-websocket-bridge:6.5.5-2).

Supersedes #7, which migrated the older 0.2.0 base and is now stale against 0.3.0.

Changes

Config (mechanical)

  • package.json: @start9labs/start-sdk 1.5.3 → 2.0.6, TypeScript ^5.9.3 → ^6.0.3
  • Makefile: include the SDK's s9pk.mk instead of the vendored copy; s9pk.mk (138 lines) deleted
  • tsconfig.json: extends @start9labs/start-sdk/tsconfig.base.json

Code — exactly two API changes (the entire 0.3.0 codebase otherwise type-checks unchanged against 2.0):

  • startos/serverConfig.tssdk.serviceInterface is removed in 2.0. Local-relay resolution now walks the owning host's bindings via sdk.host.get({ packageId, hostId }). SMP binds on the SimpleX Server's main host, XFTP on its xftp host. The binding scan is port-agnostic (looks the interface up by id rather than pinning a port) so an upstream port change doesn't break resolution. The interface's addressInfo comes pre-filled, so the existing filter(...)/format('urlstring') tier preference — and the full credentialed smp://<fingerprint>:<password>@host URI — are preserved exactly.
  • startos/main.ts — lazy SubContainer: await sdk.SubContainer.of(...)sdk.SubContainer.of(...).

Docs

Verification

Built and installed on StartOS 0.4.0-beta.10 (x86_64) hardware, fresh install:

  • make x86 green — tsc + ncc + s9pk pack, SDK 2.0.6.
  • Service reaches main and all daemons launch:
    Starting SimpleX Websocket Bridge!
    Launching simplex... / sync-settings... / websocket...
    simplex-chat is listening; starting websocat bridge (max message 16777216 bytes)
    
  • Managed-mode start-up sync completes over the WebSocket: waitForBotReady (/user), configureServers (/_servers 1), address reconcile (/_show_address, /_address) → SimpleX client settings synced.
  • Action end-to-end: view-address returned the live reusable SimpleX address with QR — action → bot-client → WS confirmed working on 2.0.

Not exercised: the local relay path (the sdk.host.get change) — the simplex SimpleX Server package isn't installed on the test box, so only public mode ran. That path compiles and preserves the prior logic, but wants a run against an installed SimpleX Server before relying on it.

Note on #6's caveat: #6 reported that a 2.0.x build "never reached main" on 0.4.0-beta.9. start-sdk 2.0 requires 0.4.0-beta.10+, which is the likely explanation — on a beta.10 box it reaches main and runs, as above.

Test plan

  • npm run check (tsc) green; make x86 packs a valid s9pk on SDK 2.0.6.
  • Fresh install on StartOS 0.4.0-beta.10; service starts and reaches main.
  • Websocket health check passes; start-up settings sync completes.
  • view-address action returns the reusable address + QR.
  • create-invitation, reset-address, reset-client actions.
  • Configure Client: live display-name / avatar change applies without restart.
  • local relay mode against an installed SimpleX Server (exercises sdk.host.get).
  • Upgrade-in-place from a published 0.3.0:0.
  • aarch64 build (CI).

@helix-nine
helix-nine merged commit 2d537af into master Jul 21, 2026
3 checks passed
@helix-nine
helix-nine deleted the sdk-2.0-port branch July 21, 2026 05:32
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.

2 participants