v4.10.1
A patch release fixing two defects in the 4.10.0 MySQL CLI work, both found by
running a real end-to-end MySQL installation.
Bug Fixes
-
@byline/cli—byline initcould not wire a host application's own
vite.config.ts, leaving a freshly installed app unable to boot. The installer
wrote its canonical Vite config only when the file was absent, byte-identical
to canonical, or hashed to a previous Byline config. A stock TanStack Start
application matches none of those, so every first-time install fell through to
a warning — andinittreats anything short of a blocking error as a soft
warning, then went on to report "installation complete" over an application
that failed at request time with
ERR_UNKNOWN_FILE_EXTENSION ".css". The upgrade path had always worked, which
is why this went unnoticed; the first-install path never had.Byline's required settings are now merged into the host's existing config
rather than the file being left alone. The merge is deliberately conservative:
each insertion must land in a key the host has not already claimed, a key
holding a host-authored value is reported for you to merge by hand rather than
overwritten, and a config with no inlinedefineConfig({ ... })object still
blocks — with the required settings printed, which the blocking path previously
omitted. The original file is preserved under a timestamped
vite.config.ts.bak-<stamp>name, which also retires a trap in the previous
fixedvite.config.bakname: a second run found that file already present and
silently degraded to a manual instruction.The settings themselves are extracted from Byline's canonical template at
runtime rather than duplicated into the merge logic, so the template remains
the single source of truth, and a contract test fails loudly if a piece is
renamed or removed there. -
@byline/cli— scaffoldedseed-admin,seed-docs, andimport-docs
scripts hung after completing their work instead of exiting. The configured
adapter's connection pool holds a live timer, so the process stayed alive long
after the seed had committed.pgAdapter's two-second idle timeout masked this
on PostgreSQL — the scripts appeared to exit on their own — whilemysqlAdapter
leaves mysql2's defaults in place, whose sixty-second idle sweep is not
unref'd, so a MySQL installation looked frozen. The reference application was
corrected for this previously; the templates the CLI ships were not. All three
entry points now exit explicitly, and a failed run exits non-zero rather than
surfacing an unhandled rejection.
Chores
@byline/cli— the super-admin seed now logs only that it is running and
what the outcome was, matching the shape the example documents seed already
used, instead of enumerating which of role, user, and role-assignment it
created.
All other @byline/* packages bumped to 4.10.1 in lockstep with no
behavioural changes this cycle.