Skip to content

Changelog - 2026-09-08 ​

A namespace holding a dot is refused ​

Behavior Change

In one line. BindingNamespaces.createNamespace throws when the name holds a ., holds whitespace, or is empty.

ts
BindingNamespaces.createNamespace({ name: 'services' }); // 'services'
BindingNamespaces.createNamespace({ name: 'acme.services' }); // throws

The problem it solves ​

A Binding tags itself with the first dot-separated segment of its key. Give it the namespace acme.services and the key UserService, and the binding lands under acme.services.UserService with the tag acme.

Nothing drains that tag. The binding is registered, never configured, and no error says so. You find out when the dependency comes back undefined at request time.

The guard turns that silent miss into a throw at class-initialization time, which is the first moment the mistake exists.

What changed ​

SymbolChangePackage
BindingNamespaces.createNamespace()Throws on a name holding ., holding whitespace, or emptykernel
BindingNamespaces.CONFIGURATIONNew. Resolves to 'configurations'kernel
TInferSchema<T>Constrains T to z.ZodType, previously z.ZodTypeAnykernel
TCustomizableRouteConfigresponse.schema is z.ZodType, previously z.ZodTypeAnykernel
defineSearchRouteConfigs()selectSchema is z.ZodType, previously z.ZodTypeAnyconnectors
deriveSearchDocumentSchema()Returns z.ZodType, previously z.ZodTypeAnyconnectors

z.ZodTypeAny is gone from the public types ​

zod 4 deprecates z.ZodTypeAny, and declares it as an alias of z.ZodType with identical defaults:

ts
// zod 4.5.4, v4/classic/compat.d.ts
type ZodTypeAny<Output = unknown, Input = unknown, ...> = ZodType<Output, Input, ...>;

The two names denote one type, so the 20 changed signatures are a rename. Your code compiles either way, whichever name it writes.

Who is affected ​

You call createNamespace with a literal name. Check the name is a single segment. Every namespace IGNIS ships already is.

You pass a namespace string to BindingKeys.build. Nothing changed. build still accepts '' to produce an un-namespaced key, as the reference describes.

Everyone else. Nothing to do. No symbol was renamed or removed.

See also ​