Migrate to StartOS SDK 2.0.6 - #1
Merged
Merged
Conversation
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). Only one 2.0 breaking change reaches this package: SubContainer.of() is now lazy and synchronous, so the await is dropped at all three call sites. None of them read .rootfs/.guid/.subpath(), and .exec() is unchanged (it materializes internally), so the pg_isready ready-check is unaffected. Verified unaffected by 2.0, having checked rather than assumed: setupBackups / Backups.withPgDump (the 2.0 additions are additive only), multi-daemon requires ordering, checkPortListening, useEntrypoint, Mounts, MultiHost + createInterface, Action.withInput, and the FileHelper read().once() / read().const(effects) split. The packaging revision stays at 2.20260626.0:0 rather than bumping to :1. The package has never been released -- no tags, no GitHub releases -- so there is no installed base to migrate and the "Initial release" notes remain accurate. 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 refresh the vendored s9pk.mk from the 2.0.6 tarball. It is vendored per package, so the npm bump does not update it; the stale 1.5.3-era copy had no check-deps or git/jq dependency checks, no SDK lint gate, and an install target requiring a flat host:/registry: in ~/.startos/config.yaml, which fails against this workspace's nested host config. The lint gate it switches on passes clean here. Verified: tsc and SDK lint clean, ncc builds, both arches pack from a clean tree, and the built manifests report sdkVersion 2.0.6 at 2.20260626.0:0. Not device-tested. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fresh install on StartOS (SDK 2.0.6, x86_64) exercised playback, account creation, the Configure Invidious action, the reactive restart, and backup/restore. All passed. Two findings worth keeping: - The config.yml readability question is answered -- the invidious container reads it from the main volume without help, so no chown oneshot is needed. Dropped from the list. - An authenticated 200 GET /api/v1/auth/subscriptions after the action's restart confirms all three generated secrets survive merge(): hmac_key (the session cookie still validates), the db password (postgres skips re-init and keeps its original, so a regenerated one would fail auth), and invidious_companion_key (the companion logs an identical secret_key). Also document the benign log noise -- the eight check_tables "relation does not exist" errors on first start, the InstanceListRefreshJob parse failures, and the fact that the companion prints its secret_key at startup -- so none of it gets re-diagnosed as a fault later. Adds a note to consider runAsInit on the invidious and companion daemons; both images use tini, which warns it cannot reap zombies when not PID 1. Pre-existing, not a 2.0 regression, and it changes signal delivery, so it needs its own device test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Migrates the package from SDK 1.5.3 to 2.0.6, and refreshes the vendored build file.
SDK port
Only one 2.0 breaking change reaches this package:
SubContainer.of()is now lazy and synchronous, so theawaitis dropped at all three call sites. None of them read.rootfs/.guid/.subpath(), and.exec()is unchanged (it materializes internally), so thepg_isreadyready-check is unaffected.Checked rather than assumed, and confirmed unaffected:
setupBackups/Backups.withPgDump(the 2.0 additions are additive only), multi-daemonrequiresordering,checkPortListening,useEntrypoint,Mounts,MultiHost+createInterface,Action.withInput, and theFileHelperread().once()/read().const(effects)split.Alongside:
typescript→^6.0.3, andtsconfig.jsoncollapses onto the SDK'stsconfig.base.json(ES2022, module preserve, moduleResolution bundler).Version
Stays at
2.20260626.0:0. The package has never been released — no tags, no GitHub releases — so there is no installed base to migrate and the "Initial release" notes remain accurate.CI
Drops the
Pin start-cli v0.4.0-beta.9step 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.ymlreturns to the shared Start9 reusable workflow, which it was inlined away from solely to host that pin.Also refreshes the vendored
s9pk.mkfrom the 2.0.6 tarball. It is vendored per package, so the npm bump does not update it; the stale 1.5.3-era copy had nocheck-deps, no SDK lint gate, and aninstalltarget requiring a flathost:/registry:in~/.startos/config.yaml. The lint gate it switches on passes clean here.Verification
Build:
tscand SDK lint clean,nccbuilds, both arches pack from a cleared tree, and the built manifests reportsdkVersion 2.0.6at2.20260626.0:0.Device-tested on StartOS (x86_64) — the package's first end-to-end run at any version:
check_tablesbuilds the schema.const()fires the reactive restart, the db volume persistsmerge(), evidenced by an authenticated200 GET /api/v1/auth/subscriptionsafter the action's restart:hmac_key(session cookie still validates), the db password (postgres skips re-init and keeps its original, so a regenerated one would fail auth), andinvidious_companion_key(companion logs an identicalsecret_key)🤖 Generated with Claude Code