Migrating to 0.7

0.7 makes cac an optional peer and moves json-render out of @devframes/hub into an opt-in package.

0.7 makes cac an optional peer and moves json-render out of @devframes/hub into an opt-in package.

cac is now an optional peer dependency

devframe no longer bundles cac — it's an optional peerDependency. Projects using createCac (formerly createCli) install cac:

npm install devframe cac

Tools not using the CLI adapter — Vite plugins, embedded devframes, the lower-level factories — never need cac.

devframe/adapters/clidevframe/adapters/cac

0.6.x0.7
import { createCli } from 'devframe/adapters/cli'import { createCac } from 'devframe/adapters/cac'
CreateCliOptionsCreateCacOptions
CliHandleCacHandle
// 0.6.x
import { createCli } from 'devframe/adapters/cli'

await createCli(devframe).parse()
// 0.7
import { createCac } from 'devframe/adapters/cac'

await createCac(devframe).parse()

devframe/adapters/cli still exports the old names as deprecated aliases (imports keep compiling), but you still need the cac peer; removed in a future major.

json-render moves out of @devframes/hub

The hub is now json-render-agnostic: defineJsonRenderSpec, ctx.createJsonRenderer, and the JSON-render types move to the opt-in @devframes/json-render.

0.6.x (@devframes/hub)0.7 (@devframes/json-render)
defineJsonRenderSpec(spec)Pass the spec directly to createJsonRenderView(ctx, { id, spec })
JsonRenderSpecDevframeJsonRenderSpec
ctx.createJsonRenderer(spec)createJsonRenderView(ctx, { id, spec }) (from @devframes/json-render/node)
// 0.6.x
import { defineJsonRenderSpec } from '@devframes/hub'

const spec = defineJsonRenderSpec({ root: 'panel', elements: { /* ... */ } })
const renderer = ctx.createJsonRenderer(spec)
// 0.7
import { createJsonRenderView } from '@devframes/json-render/node'

const view = createJsonRenderView(ctx, {
  id: 'panel',
  spec: { root: 'panel', elements: { /* ... */ } },
})

@devframes/hub still exports defineJsonRenderSpec (deprecated) and runs ctx.createJsonRenderer, so 0.7 call sites keep working — but nothing registers with the dock union or gains registerRenderer(); removed in 0.8.