Skip to content

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 19 May 05:48
· 202 commits to release since this release
b3a3371

3.0.0 (2026-05-19)

  • refactor(feel)!: rename eval to evaluate, drop runtime feelin warning (cc2eebf)

Bug Fixes

  • address review comments from PR #347 (5b8f919)
  • bpmn,element-template: read piped stdin asynchronously to avoid EAGAIN race (75e9c30)
  • bpmn: replace bpmn-js-headless/element-templates with element-templates-cli (2a3a65f)
  • bpmn: scope bpmnlint plugin resolution to c8ctl's require (57159a6)
  • ci: re-enable --experimental-test-isolation=none for integration tests (closes #312) (11241de), closes nodejs/node#56802 #189 #282 #326 #182 #189 nodejs/node#56802
  • constrain heading base to 2 or 3 (b599748)
  • default-plugins: fix all lint errors and warnings in default-plugins (a082e4d)
  • element-template: error on empty name + --group filter intersection (154786d)
  • element-template: gate --in-place before reading stdin (43f7925)
  • element-template: make --set win on re-apply (f45ad30), closes bpmn-io/bpmn-js-properties-panel#767
  • element-template: silence DOM-related label-bounds errors via no-op TextRenderer (1c91966)
  • element-template: treat pinned version 0 as a real version (407f058)
  • element-template: validate --group ids against the full template (fcccb62)
  • feel: accept SDK error shape with either status or statusCode (8b61861)
  • feel: classify bare "fetch failed" as a connection error (2bdcda2)
  • feel: guard setNestedValue against prototype-polluting key paths (4a12923)
  • freeze array (91af6b7)
  • plugin-host: leave ctx.profile undefined so env vars can win (827589f)
  • plugin-loader: preserve multiple-flag arrays when forwarding to plugin handler (b37b364)
  • plugins: block short alias conflicts with built-in flags (32d9161)
  • plugins: built-in commands take precedence over plugin commands (ea433a6)
  • plugins: decouple default plugins from c8ctl internals (898167f)
  • plugins: guard against prototype-chain matches in plugin-loader (43c6aad)
  • plugins: harden plugin flag parsing (553ee76)
  • plugins: move plugin dispatch after help/menu handling (b8724f3)
  • plugins: preserve arity of bare-function commands when flags absent (fc256be)
  • plugins: skip blocked flags in extraction and normalize repeated string flags (1c04dbb)
  • plugins: strip blocked-flag tokens before plugin reparse (70f60a3)
  • plugins: use Object.hasOwn for plugin command lookup in index.ts (c7c77cd)
  • reject unsatisfiable plugin required+collision flags at dispatch (#364) (a4e3146)
  • resolve .c8ignore from target directory instead of cwd (d01362f)
  • resolve .c8ignore from target directory instead of cwd (b375315), closes #258
  • revert deploy default extensions to .bpmn/.dmn/.form and add opt-in flags (13df974), closes #275 #350
  • tests: bind mock servers to kernel-assigned ports (closes #316) (15d23f6), closes #313
  • Update default-plugins/element-template/marketplace.js (5ca15a0)
  • watch: emit readiness banner only after fs.watch + SIGINT handler are registered (133715c)

Features

  • add --dry-run support to element-template apply (dbbd5d9)
  • add --json global flag and C8CTL_OUTPUT_MODE env for per-invocation output (c6d296f), closes #356
  • add c8ctl doctor plugin and document collision policy (#363) (d154051), closes 366/#367
  • bpmn: add bpmn default plugin with lint and apply-element-template (7a25054)
  • bpmn: add bpmnlint and element-template dependencies (8a4bda0)
  • bpmn: align lint output columns and color severity/summary (695fa82)
  • bpmn: print success line on clean lint, add --quiet flag (99d49ce)
  • element-template: add --limit to search (a71278c)
  • element-template: add --no-icon flag to get subcommand (3e04644)
  • element-template: add get subcommand for raw template JSON (f2634b3)
  • element-template: apply, search and sync OOTB connector templates (6b5bdbf)
  • element-template: redesign inspect surface as info + get-properties (8778424)
  • element-template: send User-Agent on outbound HTTP calls (f7893fb)
  • element-template: show dropdown choices in condensed get-properties (bfa523e)
  • element-template: split into element-template and bpmn verbs, add --set and list-properties (acb2ecd)
  • element-template: support URLs for template paths (0c38f9f)
  • feel: add feel plugin for evaluating FEEL expressions (7b57e30)
  • feel: richer evaluate warnings (d7d0fdd)
  • framework: add multiple flag support to FlagDef (7b6222d)
  • generate standalone Docusaurus command reference page (e739ab3)
  • generate standalone Docusaurus command reference page (a154419)
  • help: scope top-level Flags section to global flags only (35953f3)
  • honour --help on every (verb, resource) form (35580f3), closes #373 #373 #256 #373
  • introduce passthrough:true plugin contract opt-in (#366) (11fd3f8), closes #251
  • lint: add Biome plugin forbidding process.exit under src/commands/** (#289) (41c1896), closes #288 #306
  • plugin host context, declarative --help, and --version (#377) (695bb6e)
  • plugins: add flag support for plugin commands (382d630)
  • runtime: expose getUserDataDir to plugins (64306a2)
  • scope plugin flag conflicts to GLOBAL_FLAGS only (#373) (6694892), closes #364
  • show resource aliases in resource-specific flags and escape angle brackets for MDX (faac13e)
  • surface plugin collisions in c8ctl list plugin (#363) (cac2585), closes #369

BREAKING CHANGES

  • 'c8ctl feel eval' is now 'c8ctl feel evaluate'. No
    backwards-compat alias — the verb's other subcommands (apply, info,
    get-properties, lint, ...) all use full words; eval was the only
    abbreviation.

The one-time 'feelin doesn't support all Camunda FEEL extensions'
runtime warning is gone — the same caveat lives in the verb's
helpDescription and in the LOCAL_HINT shown when cluster failures
suggest --engine local, so users see it where it's actionable
(during help / on cluster errors) instead of as noise on every
local-engine run.