Skip to content

Node 14+ distribution requirement is already broken on main (pre-existing blocker) #4

Description

@axisrow

Statement

README / AGENTS.md / docs claim the built dist/ccstatusline.js is compatible with Node.js 14+. In reality the shipped build fails on real Node 14.21.3 even on unmodified main — this is a pre-existing blocker, independent of the recent perf PRs (#2, #3), which deliberately kept their own changes Node14-syntax-safe and excluded this repair.

Evidence

From docs/performance-397-verification.md (on main):

  • Bun's bundler does not lower modern syntax; the build pipeline has no transpile step, so ??= and class fields survive into dist/.
  • Minimal repro (fails identically on baseline before any perf work):
bun run build
NODE14=/path/to/node-v14.21.3-darwin-x64/bin/node
printf '{"model":{"id":"claude-sonnet-4-5"}}' | "$NODE14" dist/ccstatusline.js
# dist chunk: var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : ...
# SyntaxError: Unexpected token '??='
  • Installed manifests also set the floor higher than 14 regardless of bundling: chalk 6.0.0 requires Node ≥22, ink 6.2.0 requires ≥20.

Current state

  • bun test: 2374 pass / 0 fail on main; only Node 14 execution of the built dist is blocked.
  • The on-demand proxy modules were separately verified safe on real Node 14.21.3.

Repair options (deliberately out of scope so far)

  1. Honest engines bump — declare Node ≥20 (simplest; matches ink's floor; chalk is bundled so its ≥22 manifest does not directly apply to the standalone dist).
  2. Keep 14 for real — add a transpile step (esbuild/babel with a real target) and pin transitive deps to 14-compatible versions; needs a dependency policy the manifest currently lacks.
  3. Split bundled vs external builds and document different floors per artifact.

This issue tracks the decision and the repair; perf PRs intentionally did not touch it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions