← Back to Changelog

v5.0.0

Release

[email protected] — 2026-06-25

Major release: raises the minimum Node.js to 22.18.0 and upgrades the EJS and hookified engines across major versions.

⚠ BREAKING CHANGES

  • Minimum Node.js is now >=22.18.0. Driven by the hookified v3 upgrade; engines.node now declares the floor so older runtimes are warned at install time. (d628ef2, 5f72cd3, #385) Migration: upgrade your runtime to Node.js 22.18.0 or newer. Node 20 reached end-of-life in April 2026.

  • EJS upgraded to v6 — template locals no longer resolve through the prototype chain by default. (5f9bba4, #384) Migration: if your EJS templates rely on inherited (prototype-chain) properties from class-instance or Object.create() locals, opt back in via the ejs option:

    import { Ecto } from "ecto";
    
    // ecto 4.x (ejs 5): inherited locals resolved automatically
    // ecto 5.x (ejs 6): opt back in for prototype-chain locals
    const ecto = new Ecto({ engineOptions: { ejs: { unsafePrototypeLocals: true } } });
    

    Plain-object locals (the common case) need no change.

Bug Fixes

  • remove post-render entity decoding on Handlebars output — {{var}} / {{{var}}} now follow standard Handlebars escaping semantics; the previous blanket decode could corrupt legitimately escaped content such as < inside pre-rendered code blocks. (b32cc50, #379)

Internal

  • upgrade GitHub Actions to latest majors: actions/checkout v7, codecov/codecov-action v7 (6cab886, #382)
  • upgrade build tooling: vite 8.0.14 → 8.0.16 (0147b61, #381)
  • upgrade code-quality tooling: vitest 4.1.9, @biomejs/biome 2.5.0, @faker-js/faker 10.5.0 (30c366f, #380)
  • upgrade wrangler 4.92.0 → 4.102.0 for the docs-site deploy (e623c9e, #383)
  • add CLOUDFLARE_ACCOUNT_ID to the deploy-site workflow (52d9fe3, #378)
  • add wrangler as a devDependency for the deploy workflow (396ad11, #377)

Contributors

  • @jaredwray (9 PRs)

Full List of Changes

  • ecto - fix: add wrangler as devDependency for deploy workflow by @jaredwray in #377
  • ecto - fix: add CLOUDFLARE_ACCOUNT_ID to deploy workflow by @jaredwray in #378
  • fix: remove post-render entity on handlebars by @jaredwray in #379
  • root - chore: upgrade code quality dependencies by @jaredwray in #380
  • root - chore: upgrade build tooling (vite) by @jaredwray in #381
  • root - chore: upgrade GitHub Actions (breaking) by @jaredwray in #382
  • root - chore: upgrade wrangler by @jaredwray in #383
  • root - chore: upgrade ejs to v6 (breaking) by @jaredwray in #384
  • root - chore: upgrade hookified to v3 (breaking) by @jaredwray in #385

Full diff: https://github.com/jaredwray/ecto/compare/v4.8.7...v5.0.0