-
Onebox v33.15.0
StableRelease / build-and-release (push) Failing after 27m34sreleased this
2026-10-08 16:47:19 +00:00 | 25 commits to main since this release2026-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/appstore33.0.0 publishes in its npm package, through the package's timer-free loader, from the registries of the database settingappStoreCatalogRegistries(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 isunknownwith the reason as its blocker. Install and upgrade targets are judged byjudgeAppStoreCatalogInstallTargetfor consumeronebox. New API requestsgetAppStoreCatalogStatus,refreshAppStoreCatalogandimportAppStoreCatalog, and CLIonebox 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 withonebox 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-enginerefuse 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 runningcorestore-engine. A service whose installed version is no longer listed in the catalog gets no snapshot. - Dependencies:
@serve.zone/appstore32.27.0 → 33.0.0 and@serve.zone/interfaces32.42.0 → 32.53.0 inpackage.json,pnpm-lock.yamlanddeno.lock;deno.lockgainsmodern-tar@0.8.5(MIT, through@serve.zone/appstore), listed in the binary's third-party notices.
Maintenance
- Release tooling:
@git.zone/tsbuild6.0.0 → 6.0.2 (the type packages default totypes: ["*"]when no tsconfig names them; Onebox's tsconfig namesnode, so nothing changes) and@git.zone/tsrun3.0.2 → 3.0.3 (dependency source maps stay unread; needs Node.js 22.14 or newer).@types/nodestays 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/tsdenostays on 1.x (2.0.0 is its own migration). The tooling bump leavesdeno.lockunchanged (it holds no dev tooling).
Downloads
- The App Store catalog is loaded at runtime instead of being compiled into the binary: Onebox reads the Ed25519-signed catalog envelope