Skip to content

v4.10.1

Choose a tag to compare

@58bits 58bits released this 28 Jul 19:32

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/clibyline init could 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 — and init treats 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 inline defineConfig({ ... }) 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
    fixed vite.config.bak name: 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 — scaffolded seed-admin, seed-docs, and import-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 — while mysqlAdapter
    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.