Skip to content

v2.5.2

Choose a tag to compare

@58bits 58bits released this 26 May 03:05
· 176 commits to main since this release

Highlights

  • @byline/coreid is now a reserved document-level key in client-side where clauses (packages/core/src/query/parse-where.ts). Previously only status, path, and query were recognised at the document scope; passing id was silently dropped and the filter became a no-op. This is the companion change to the v2.5.1 richtext fix, which had to bypass parseWhere and call the storage adapter's getDocumentsByDocumentIds primitive directly because where: { id: { $in: ids } } couldn't be expressed. With this release, ID-by-ID lookups round-trip through the public client API the same way status and path do — client.collection(path).find({ where: { id: { $in: ids } } }) returns exactly those documents. id always downshifts to a DocumentColumnFilter (no top-level scalar form — the headline use case carries a $in / $nin array, not a single value), and the value is passed through verbatim rather than coerced via String(...).

Bug Fixes

  • @byline/cli — Three fixes to the guided installer that surfaced during real byline init runs against a fresh TanStack Start scaffold:

    1. Phase ordering. The wire phase ran before the routes phase, so the byline-layout-tsx sub-edit looked for src/routes/_byline/route.lazy.tsx before the routes phase had ever dropped it and bailed with routes phase should have caught this. Removed the sub-edit entirely and baked its side-effect import (import '../../../byline/admin.config') directly into the route.lazy.tsx template, so wire no longer depends on a file the later routes phase creates.

    2. pnpm allowBuilds. The deps phase used to write pnpm.onlyBuiltDependencies to package.json, which pnpm v10+ silently ignores (it emits [WARN] The "pnpm" field in package.json is no longer read by pnpm and proceeds to prompt for pnpm approve-builds, derailing the guided install). The deps phase now writes allowBuilds: entries (@google/genai, esbuild, protobufjs, sharp) to pnpm-workspace.yaml via the yaml library, preserving existing entries and unrelated keys, and strips any stale pnpm.onlyBuiltDependencies from package.json on upgrade.

    3. Version floor. BYLINE_VERSION in the deps manifest was ^2.0.0, which let an older lockfile pin @byline/richtext-lexical at 2.4.3 — below the 2.5.0 floor that introduced lexicalEditorEmbedServer / 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 — a defaultMode: 'auto' phase now always auto-applies, so its internal apply() 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.