# What changed in @a2ui/web_core

> 100 changes in @a2ui/web_core 0.10 to 0.14 from its official release notes, upgrade guides and advisories: 33 breaking, 5 deprecations, 2 security, 30 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/@a2ui/web_core/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @a2ui/web_core 0.14

### Breaking changes

- Basic catalog elements now use a2ui-prefixed classes, preventing application rules such as .error, .active, and .container from matching element internals. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- No longer strips a leading @ before checking UAX 31 syntax. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Rejects @-prefixed catalog function names and validates function parameter names. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- External implementations must now provide toJson() and validationSchema. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- The catalog property and constructor argument are required; models are not created without a resolved catalog. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Throws A2uiCatalogError on a surface without a default catalog instead of returning undefined. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Removed; use DataContext.atLeastV10, which is true for v1.0 and later versions. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- No longer strips a leading @ before checking UAX 31 syntax. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- On v1.0, validates each function call against its resolved catalog and throws A2uiCatalogError when resolution fails, even without validationConfig. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Checks nested function calls under id and component property keys, including catalog selection according to protocol version. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Takes a Catalog again, not undefined, and resolves components against their own catalog without falling back to the surface default. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- May be undefined; v1.0 components and function calls without catalogId resolve to it and fail if no default catalog exists. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Function schemas now describe wire function calls rather than bare argument schemas; loaded and basic-catalog schemas are built from definitions. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)

### Deprecations

- Deprecated in favor of Catalog.validationSchema. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Deprecated in favor of Catalog.fromJson. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Deprecated in favor of generateValidationSchema. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- The deprecated getter may return undefined, like defaultCatalog. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)

### New APIs and options

- Loads a catalog document into a model, with optional protocol version and catalog ID overrides. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Assembles the unbundled catalog document from its model, computing the anyComponent and anyFunction unions. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Provides a bundled, self-contained schema computed from the catalog model. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Derives a catalog with different entries and drops $defs referenced only by removed entries. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Returns a new catalog linked to the specified peers without changing the receiver. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Sets how references to common types are written. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Adds model definitions to $defs when generating catalog entries from annotated schemas. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Controls whether the theme is written under $defs.theme or under styles. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Inlines local and peer references in a schema. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Returns catalog copies linked to each other and to any extra peers. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Annotates a Zod schema with catalog-document details that Zod does not express; annotations do not change validation. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Annotates a Zod schema with catalog-document details, including the $defs name of a model. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Adds a surface protocol version, including a constructor argument for surfaces without a default catalog; stores it as vMAJOR.MINOR. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Resolves a catalogId for MessageProcessor and DataContext so validation and execution report the same catalog errors. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)

### Behavior and default changes

- Below v1.0, ignores catalogId on function calls and runs them in the surface catalog. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Allows the reserved @index system function on v1.0+ surfaces while validating user-defined function names against UAX 31. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)
- Reserved @-prefixed system functions validate and run without a default catalog, bypass catalog resolution, and reject calls that name a catalogId. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)

### Fixes and other changes

- Reports unresolved function-call catalogs on the surface error channel as CATALOG_ERROR instead of EXPRESSION_ERROR. (0.14.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0140)

## @a2ui/web_core 0.13

### Breaking changes

- Component trees now name a component under component rather than type, and write id, component, and metadata after component properties; read the component type from tree.component. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- The v1.0 basic catalog evaluates ValidationResult operands through their valid member; the truthy option is accepted to configure this behavior. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Rejects number literals outside the double range with Number literal is out of range instead of returning Infinity. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Returns an empty string for nonexistent dates instead of rolling them into the next month. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Functions requiring user activation are enforced: openUrl throws A2uiExpressionError(USER_ACTIVATION_REQUIRED) when evaluated passively or without a user activation gesture. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Adds a pattern complexity checker to mitigate ReDoS, instantly rejecting unsafe nested repetitions and enforcing pattern and input length limits. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- v1.0 validation now checks path syntax in @path and function-call nesting depth in @call expressions. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)

### Security

- Avoids a direct window.open property check to prevent errors in security-restricted environments. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)

### New APIs and options

- Adds v1.0 basic catalog custom elements at this package export path. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Universal elements accept an optional node; A2uiLitElement derives context from it and passes each child its own node, while context remains supported for incremental migration. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Adds a name for a schema-only Catalog<ComponentApi, FunctionApi>; Catalog.fromSchema now returns it. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Exposes the context the resolver bound the node with; it is undefined on placeholders. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Adds a document-unique string stable for the node's lifetime, suitable as a rendering key or base for DOM ids and accessibility references. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- The v1.0 basic catalog evaluates ValidationResult operands through their valid member; the truthy option is accepted to configure this behavior. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- The v1.0 basic catalog evaluates ValidationResult operands through their valid member; the truthy option is accepted to configure this behavior. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Now accepts a ComponentNode. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Adds universal runtime exports for v1.0 at this package export path. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)

### Performance

- Avoids recreating A2uiController when an incoming ComponentContext binds the same component and data path. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)

### Behavior and default changes

- Universal host elements apply aria-label, aria-description, aria-live, and aria-hidden; basic catalog input components render validation errors. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- The v1.0 basic catalog evaluates ValidationResult operands through their valid member; executeAnd accepts a truthy argument. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- The v1.0 basic catalog evaluates ValidationResult operands through their valid member; executeNot accepts a truthy argument. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- The v1.0 basic catalog evaluates ValidationResult operands through their valid member; executeOr accepts a truthy argument. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Accepts number literals with a leading decimal point, including as function-call arguments, while .foo and ./x remain paths. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Falls back to the catalog's protocolVersion when no protocolVersion option is given; versions at or above 1.0 without their own definitions use v1.0 definitions. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Action closures now return Promise<void> and await async functionCall actions so callers can detect when action handling settles. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- v1.0 dynamic resolution supports reserved @path and @call keys, doubled-prefix unescaping, and validation of unknown single-@ keys while retaining v0.8 and v0.9 support. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Supports non-ASCII Unicode characters in template expressions and data model keys. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)

### Fixes and other changes

- Disposal now detaches componentsModel.onCreated and binder subscriptions to fix a memory leak in universal elements. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Styles now survive Closure-optimized builds. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Fills $defs with standard definitions for the catalog's protocol version rather than using v0.9 definitions for every catalog. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- No longer drops properties mixed in through an external allOf reference, allowing Checkable components in basic catalogs to accept checks. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- In v1.0, resolves common_types.json#/$defs/Child so single-child properties such as Card.child are recognized as child references. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Includes FunctionCall and @call expressions in dynamic setter typing following the @ prefix protocol migration. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Setter parameters for properties declared as bindings with no literal branch now fall back to unknown instead of never, making the setter callable. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Includes FunctionCall and @call expressions in dynamic setter typing following the @ prefix protocol migration. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Returns null when the written date and time fields do not survive parsing. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Re-rendering a parent preserves existing child elements, preventing stateful children from reloading when a sibling is added; the function now returns a Lit directive result. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Props declared as Record<string, unknown> resolve to their data type rather than action thunks. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)
- Reads the updated component tree, so properties named component or id no longer replace the model's own values when child references are found. (0.13.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0130)

## @a2ui/web_core 0.12

### Breaking changes

- The v0.9 basic catalog no longer includes non-spec math and comparison functions; applications needing them must register them in a custom catalog. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Universal Web Component symbols moved from the v0.9 root export to this subpath; update import paths. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Deleting an array index past the end is now a no-op instead of extending the array's length. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- v1.0 catalog loading validates component property names, function names, and function argument names against UAX #31. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- The constructor now requires protocolVersion as its second parameter. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Assigns dataModel at the root so keys containing / or ~ are treated as literal property names rather than nested paths or escape sequences. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- In v1.0, a currency code rejected by Intl is placed according to the locale's currency pattern rather than always prefixed. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- In v1.0, formatNumber, formatCurrency, and pluralize default to en-US instead of the host locale. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Function arguments are typed unknown instead of any, requiring explicit validation or schema parsing. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- In v1.0, evaluating @index outside a collection template raises A2uiValidationError instead of returning 0. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- v0.9 basic catalog components no longer define custom elements when imported; registerUniversalElement is needed when code relies on import-time registration. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- The constructor takes availableCatalogs as its third positional argument and theme as its fourth; an invalid third argument throws a TypeError. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Now requires an element field holding the custom element constructor. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)

### Deprecations

- SurfaceModel.catalog is deprecated in favor of SurfaceModel.defaultCatalog; the old property remains as a compatibility getter. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)

### New APIs and options

- The root export now provides shared core APIs across protocol versions; v0.8 protocol API consumers should import from @a2ui/web_core/v0_8. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Re-exports DataBindingType, FunctionCallType, and MAX_FUNCTION_CALL_ARGS. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Exports isWebComponentImplementation and registerUniversalElement for universal web component integrations. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Adds A2uiRpcError and RpcErrorCode for structured RPC error responses at @a2ui/web_core/rpc. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Adds the DOM contract for an A2UI custom element: an HTMLElement that accepts a context property. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Adds single-catalog component and function schema validation at @a2ui/web_core/validation. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Adds setMarkdownRenderer and getMarkdownRenderer for setting and getting the default MarkdownRenderer for basic catalog text components. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)

### Behavior and default changes

- In v1.0, an unusable locale tag falls back to en-US instead of throwing or using the host's ambient locale. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)

### Fixes and other changes

- The v1.0 basic catalog now exports function bodies through BASIC_FUNCTIONS and createBasicCatalogFunctions, matching the v0.9 shape. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- In v1.0, TR35 tokens are expanded in the timestamp's written offset, so output does not vary by machine. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)
- Resolves event.userMessage before dispatch, so DynamicString paths and calls are not forwarded to the agent unresolved. (0.12.0) — [release notes](https://github.com/a2ui-project/a2ui/blob/45633b97636daf89bafb43fa7db23e3cd916461d/typescript/core/web_core/CHANGELOG.md#0120)

## @a2ui/web_core 0.10

### Security

- @a2ui/web_core: `openUrl` permits `javascript:` URI execution via agent-supplied button actions (0.10.2) — [security advisory](https://github.com/advisories/GHSA-72QQ-P3R5-F7WQ)
