Repository navigation
chore: version packages (rc) - #443
Open
github-actions[bot] wants to merge 1 commit into
Open
github-actions[bot] wants to merge 1 commit into
github-actions[bot] wants to merge 1 commit into
Conversation
|
🚅 Deployed to the everything-dev-pr-443 environment in heartfelt-ambition
8 services not affected by this PR
|
railway-app
Bot
temporarily deployed
to
heartfelt-ambition / everything-dev-pr-443
October 16, 2026 19:46
Destroyed
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 16, 2026 20:44
b55d461 to
71c7dc5
Compare
This branch was successfully deployed
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
mainis currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, runchangeset pre exitonmain.Releases
everything-dev@2.0.0-rc.11
Minor Changes
88dbfd9: Deploy legs report structured outcomes and are runtime-tier aware:
bos deployexits 0 for consumer/child runtimes that publish successfully, instead of failing when the Railway leg cannot run. Each leg (image / smoke / railway) now carries{ status: ok | skipped | failed, detail }on the deploy result and the CLI renders a per-leg summary (✓ / – / ✗). A runtime that owns its image (ci.imageconfigured or a Dockerfile at the config root) is "root" and keeps the hard gates — Railway requires a pinned digest. A runtime inheriting the universal image (ADR 0020/0021) is "child": the image and smoke legs soft-skip with a notice, and the Railway redeploy runs without a digest (railway redeploy --from-sourceis a reload trigger for the freshly published config; the token is project-scoped). "Config published, but the … leg(s) failed" names the failed legs. Child scaffolds declare@opentelemetry/apiat the root so the@better-auth/coreoptional peer resolves — removing the recurring "Module not found" build warning in consumer CI (existing children are unaffected — the warning is cosmetic).522397c: Deploy output polish (ticket Deploy output polish: sectioned renderer, attributed warnings #431) — a sectioned train renderer with attributed warnings:
DeployTrainRenderService(implemented bycli/render/deploy-train.ts), in deterministic target order — parallel upload units can no longer interleave their output. Image+Railway leg rows keeprenderDeployLegs.WorkspaceDeployResultgains the structuredwarningsfield the CLI was already rendering — build stderr is buffered per workspace, warning segments (rsbuild boxes, WARNING lines) are extracted and attributed to the workspace; raw stderr streams only under--verbose.$command echoes never count as warnings.--verbose, indented under the workspace's named ✓ line — the version-manifest row is no longer a context-free empty-pad row that parallel uploads scatter across other workspaces' output. The upload leg itself is silent — it returns structured detail and the renderer decides.renderDeployLegs) — the one section that was already sectioned.1555405: Deploy speed (ticket Deploy speed: parallel uploads, content-hash rebuild oracle, network dedupe #430), in the new service structure:
contentHashStalenessOracle(workspace tree + transitive local-dependency hashes + build-mode env, persisted at.bos/build-cache.json, unknown → build) replaces the deploy blanket force-rebuild of the prerequisite closure. On this repo (13 members) recording costs 765ms and a full freshness judgement 604ms — a warm deploy skips every fresh prerequisite instead of rebuilding them all.--force-build(andBOS_FORCE_BUILD=1) retains the forced-rebuild escape hatch.os.cpus()(overridable per call viaconcurrency); unbounded parallel workspace builds oversubscribed 2–4 core CI runners.BOS_UPLOAD_CONCURRENCY, default 4) and each workspace's upload starts as its build completes instead of after the whole train; outcomes assemble in target order, so the published config is byte-identical to the serial train's, and the first failure in target order is the one thrown.Timing on a fully representative deploy (real uploads + NEAR transaction) requires a funded run; the structural measurements above are from this repo's own workspace closure.
92a39ec: Deploy train extracted to
services/deploy/behind aDeployTrainService(ADR 0031 shape): the publish core, preflight, upload leg, rollback flow, and post-publish legs are now service modules with a typed error channel (PublishTrainError— preflight/build/reload/upload/missing-manifest/memory-backend/config-write/pin-verification/sign/submit/confirm kinds) replacing string-error overloads between the train and the handlers. Storage, registry reads, and signing are injectableContext.Servicetags (BundleStorage,RegistryStore,RegistrySigner). Duplicated flows collapsed to one implementation each: the folder-form-uisub-leg now runs the same workspace upload as the main bundle, the smoke-failure rollback andbos rollbackshare the snapshot republish path, and manifest SRI verification (rollback gate + slot resolution) is a single module. Auth guards validate the session/custody handles once per run instead of twice. Behavior-preserving;bos deployandbos plugin publishcall the same train.a499320: The remaining command groups follow the plugin pattern end to end (ADR 0031):
ops(OpsService— status/logs/kill/infra-export, including the deployed-version probe),db(DbOpsService— studio/doctor/repair, built overDatabaseBindings/DrizzleKit),plugins(PluginAdminService— add/remove/list/publish, closed over the deploy train at the composition root),dev(DevFlowService— the dev/start bootstrap and error-tag mapping), andinit(InitFlowService— the full scaffold orchestration, timings included). Handlers are now thin adapters: yield the session, yield the service, return the contract result. Domain logic still reachable fromcli/moved intoservices/behind thin facades —services/status.ts(wascli/status.ts),services/infra.ts(wascli/infra.ts),services/db/{doctor,repair}.ts(werecli/db-*.ts),services/scaffold/prune.ts(wascli/prune.ts) — thecli/*paths re-export unchanged surfaces.infra/materializerandinfra/plannerno longer import fromcli/either. Behavior-preserving: same result shapes, error wording, timing phases, and exit semantics.a499320: Package restructure (ADR 0031):
everything-devnow follows the samecontract / handlers / servicesshape as every other plugin. The public subpaths are unchanged in name and surface, but several now resolve to new sources — if you deep-import source paths, update your imports:src/fastkv.tssrc/services/registry/fastkv.tssrc/fingerprint.tssrc/services/registry/fingerprint.tssrc/dag.tssrc/services/registry/dag.tssrc/resolver.tssrc/services/resolution/resolver.tssrc/merge.ts(internal)src/services/resolution/merge.tssrc/resolution/session.tssrc/services/resolution/session.tssrc/federation.tssrc/services/federation.tssrc/build.tssrc/services/workspace/build-train.tssrc/auth-login.tssrc/services/auth/device-login.tssrc/near-signer.tssrc/services/auth/signer.tssrc/publish.tssrc/services/deploy/train.tssrc/cli/{init,import,sync,upgrade,snapshot}.tssrc/services/scaffold/*.ts(thin facades kept —./cli/initsubpath stable)src/commands/*src/handlers/*.tsas.effect()generators (directory deleted)Domain highlights: the deploy train is
DeployTrainService(services/deploy/), the workspace build trainBuildTrainService(staleness oracle injectable), auth flows areDeviceLoginService/SessionStore/SignerServicebehind oneSiteClient(oRPC error envelopes now surface the server's detail verbatim), registry services behindFastKVRegistryService, and theBosDepsTaggrab-bag dissolved into realContext.Servicetags handlersyield*(ResolutionSessionService,DatabaseBindings,DrizzleKit). The contract is the single flag source —bos <command> --helprenders flags straight from the Zod option schemas (contract.meta.tsis a facade). All subpath exports (./fastkv,./fingerprint,./dag,./resolver,./federation,./resolution,./config,./cli/init, …) keep their names and type surfaces;./configconsumers are unaffected (barrel re-exports the identical surface). Behavior-preserving throughout: same merge semantics, same exit codes, same login matrix, same build/deploy leg sequencing — pinned by the existing suites.Patch Changes
1555405: A bogus
BOS_BUNDLE_DIRnormalizes to unset instead of warningAn empty, whitespace-only, or quoted-empty value (e.g. the literal two characters
""from a quoting mistake in a deployment env) is treated as unset — the runtime boots in the registry tier silently, with nostaged namespace … not found under ""warning. A genuinely-set-but-missing bundle dir still warns, now with the valueJSON.stringify'd so quoting mistakes are self-evident.Updated dependencies [a499320]
better-near-auth@2.0.0-rc.2
Patch Changes
a499320: ---
"everything-dev": minor
"api": minor
Auth server sweep (ticket #429b): the account-link policy for deploy keys moved from the oRPC handler into
ApiKeysService.createDeployKey— the service checks the user's linked NEAR accounts with a direct db read (the deploy-key mint now resolves the session exactly once — requireAuth — instead of a second better-auth round-trip per mint; the general per-request session memo across the remaining services is a follow-up), failingDeployKeyAccountNotLinked(mapped to the same FORBIDDEN, same message andactiondata). The three API-key verification flows — the session service's cross-config loop, the api-keys service's permission-fallback two-pass, and the delete fallback — share oneverifyKeyOnceprimitive inservices/api-key-verify.ts. The device-link hook's vendored-route matcher is named (DEVICE_TOKEN_ROUTE) and its body is zod-parsed instead of cast; the device-link client id is single-sourced asBOS_CLI_CLIENT_IDinbetter-near-auth(the one module both the auth plugin and the CLI already depend on) —better-near-authgains the export, and the server and CLI constants re-export it. The device approval page's rawauth.$fetch("/custody/register")is replaced by a typedauth.custody.register()client action. Host:/api/auth/*is handled for every method (a method better-auth doesn't serve gets better-auth's own 404, not the SSR fallback), and the/api/*timeout middleware exempts/api/auth/*by path guard rather than registration order — the scoping is now structural.@everything-dev/auth-plugin@2.0.0-rc.5
Patch Changes
1555405: Better Auth resolves the client IP from
x-forwarded-forBehind a reverse proxy (Railway, and most PaaS ingress) the socket address is the proxy's, so Better Auth could not resolve the client IP and rate limiting collapsed into one shared per-path bucket — a single abusive client could throttle everyone. The
advanced.ipAddress.ipAddressHeadersconfig now trusts the standard forwarded header; deployments without a proxy are unaffected (the header is absent and the existing fallback applies). Trust precondition: the proxy must overwritex-forwarded-for, not append — a host reachable directly by clients lets them forge the header and rotate IPs past per-IP rate limits.Updated dependencies [a499320]
Updated dependencies [1555405]
Updated dependencies [88dbfd9]
Updated dependencies [522397c]
Updated dependencies [1555405]
Updated dependencies [92a39ec]
Updated dependencies [a499320]
Updated dependencies [a499320]
host@2.0.0-rc.4
Patch Changes
1555405: SnapshotWatch adopt failures surface their real cause and back off; failed oRPC responses log their route
UnknownErrorwrapper message ("An error occurred in Effect.tryPromise") — a deterministically failing adopt is self-diagnosing in production logs./api,/api/rpc, or a plugin's RPC route) log one line with the method and pathname, so an error box in the logs can be tied to the route that produced it.