v2.5.2
Highlights
@byline/core—idis now a reserved document-level key in client-sidewhereclauses (packages/core/src/query/parse-where.ts). Previously onlystatus,path, andquerywere recognised at the document scope; passingidwas silently dropped and the filter became a no-op. This is the companion change to the v2.5.1 richtext fix, which had to bypassparseWhereand call the storage adapter'sgetDocumentsByDocumentIdsprimitive directly becausewhere: { id: { $in: ids } }couldn't be expressed. With this release, ID-by-ID lookups round-trip through the public client API the same waystatusandpathdo —client.collection(path).find({ where: { id: { $in: ids } } })returns exactly those documents.idalways downshifts to aDocumentColumnFilter(no top-level scalar form — the headline use case carries a$in/$ninarray, not a single value), and the value is passed through verbatim rather than coerced viaString(...).
Bug Fixes
-
@byline/cli— Three fixes to the guided installer that surfaced during realbyline initruns against a fresh TanStack Start scaffold:-
Phase ordering. The wire phase ran before the routes phase, so the
byline-layout-tsxsub-edit looked forsrc/routes/_byline/route.lazy.tsxbefore the routes phase had ever dropped it and bailed withroutes phase should have caught this. Removed the sub-edit entirely and baked its side-effect import (import '../../../byline/admin.config') directly into theroute.lazy.tsxtemplate, so wire no longer depends on a file the later routes phase creates. -
pnpm
allowBuilds. The deps phase used to writepnpm.onlyBuiltDependenciestopackage.json, which pnpm v10+ silently ignores (it emits[WARN] The "pnpm" field in package.json is no longer read by pnpmand proceeds to prompt forpnpm approve-builds, derailing the guided install). The deps phase now writesallowBuilds:entries (@google/genai,esbuild,protobufjs,sharp) topnpm-workspace.yamlvia theyamllibrary, preserving existing entries and unrelated keys, and strips any stalepnpm.onlyBuiltDependenciesfrompackage.jsonon upgrade. -
Version floor.
BYLINE_VERSIONin the deps manifest was^2.0.0, which let an older lockfile pin@byline/richtext-lexicalat 2.4.3 — below the 2.5.0 floor that introducedlexicalEditorEmbedServer/lexicalEditorPopulateServer. The manifest now floors at^2.5.0, so fresh installs always resolve to a version compatible with the templates the CLI drops into the host project.
The auto-mode phases (
prompts,deps) also no longer ask "Apply<phase>changes?" before their own questions — adefaultMode: 'auto'phase now always auto-applies, so its internalapply()is free to surface its own prompts without a redundant gate in front. -
All other @byline/* packages bumped to 2.5.2 in lockstep with no behavioural changes this cycle.