• Onebox v33.15.0
    Release / build-and-release (push) Failing after 27m34s
    Stable

    philkunz released this 2026-10-08 16:47:19 +00:00 | 25 commits to main since this release

    2026-10-08 - 33.15.0

    Features

    • The App Store catalog is loaded at runtime instead of being compiled into the binary: Onebox reads the Ed25519-signed catalog envelope @serve.zone/appstore 33.0.0 publishes in its npm package, through the package's timer-free loader, from the registries of the database setting appStoreCatalogRegistries (validated with @serve.zone/interfaces' validateAppStoreCatalogRegistries; an invalid stored list fails the load by name; empty = the npm registry), and verifies it against the catalog key it ships (ts/appstore-catalog-trust.ts). An App Store template update therefore needs an appstore release only, never an Onebox release. One owner (AppStoreCatalogRuntime) holds it: start() returns at once, restores the stored catalog (verified again) and loads in the background after the platform services; it refreshes 15 minutes after a load and backs off from 1 to 30 minutes after failures, with one timer, and stops (aborting a load in flight) before the database closes.
    • The catalog is stored in chunks: a pointer plus chunks named by the envelope text's SHA-256, written chunks first, then the pointer (read at write time and fenced on its digests and revision), then the chunks it no longer names; a read checks the joined text against its digest. A stored catalog is never replaced by an older revision or by another catalog of the same revision; the same catalog re-signed replaces it. A failed cleanup after the pointer moved is logged and finished by the next write.
    • While no catalog is active, App Store install and upgrade are refused with APPSTORE_CATALOG_UNAVAILABLE (retryable, with the cause), and a hosted app's upgrade status is unknown with the reason as its blocker. Install and upgrade targets are judged by judgeAppStoreCatalogInstallTarget for consumer onebox. New API requests getAppStoreCatalogStatus, refreshAppStoreCatalog and importAppStoreCatalog, and CLI onebox appstore status | refresh | import --stdin | registries [set <url>… | reset]; an operator import is verified like a loaded catalog and bounded at 16 MiB (maximumAppStoreCatalogEnvelopeBytes, shared by the CLI and the API). The App Store page shows the unavailable reason and retries with a catalog refresh.
    • A service installed from the App Store keeps the template it runs as a snapshot (appStoreTemplate), written in the same update as install and upgrade; when a catalog activates, every service of a listed version without one gets it (fenced on the template id and version, under the service lock, one service failing does not stop the others). Admin role checks, hosted-app OIDC and the offline Corestore credential capture read the snapshot, never the live catalog.

    Upgrade Notes

    • Removed: the bundled catalog, the App Store resolver with its source/baseUrl, the download-and-run of template migration scripts, and the silent empty listing when the catalog source failed. Point a host at another catalog registry with onebox appstore registries set <url>.
    • App Store services installed before 33.15.0 carry no template snapshot until a catalog that lists their installed version activates once after the upgrade. Until then hosted-app OIDC, the admin role checks, the hosted-app upgrade state and the offline onebox corestore-engine refuse those services by name. With registry access this is the first load after the start; on a host without registry access set a reachable registry (onebox appstore registries set <url>) or import a catalog (onebox appstore import --stdin). Start 33.15.0 once with a catalog before running corestore-engine. A service whose installed version is no longer listed in the catalog gets no snapshot.
    • Dependencies: @serve.zone/appstore 32.27.0 → 33.0.0 and @serve.zone/interfaces 32.42.0 → 32.53.0 in package.json, pnpm-lock.yaml and deno.lock; deno.lock gains modern-tar@0.8.5 (MIT, through @serve.zone/appstore), listed in the binary's third-party notices.

    Maintenance

    • Release tooling: @git.zone/tsbuild 6.0.0 → 6.0.2 (the type packages default to types: ["*"] when no tsconfig names them; Onebox's tsconfig names node, so nothing changes) and @git.zone/tsrun 3.0.2 → 3.0.3 (dependency source maps stay unread; needs Node.js 22.14 or newer). @types/node stays at 26.6.3 until 26.6.4 is seven days old (2026-10-08 22:39 UTC), pnpm stays at 12.8.2, and @git.zone/tsdeno stays on 1.x (2.0.0 is its own migration). The tooling bump leaves deno.lock unchanged (it holds no dev tooling).
    Downloads