April 28, 2026
Major Refactors: XML Markup & Tool Registry Ripping
The system has completed the major cutover from the block protocol to a strict XML markup format for handling rich content in messages
The system has completed the major cutover from the block protocol to a strict XML markup format for handling rich content in messages. This involved deleting the BlocksRenderService and updating numerous frontend and backend components to use an XML string in message frames instead of a blocks array.
A significant architectural simplification involved ripping out the entire legacy tool dispatch hierarchy. The system now centralizes tool management through the AbilityRegistry, eliminating former service layers like ToolRegistryService and ToolSchemaService.
The LLM prompt was updated to strictly enforce the XML format, explicitly forbidding markdown and listing the 8 allowed XML tags for generation.
Fixes were implemented across the markup pipeline to handle various encoding and parsing issues. This included replacing literal NUL bytes with standard escape sequences and implementing robust entity decoding via DOMParser in JavaScript.
Frontend and backend logic were updated to reflect the XML shift. This included changing how chat responses and app overlays render content, and ensuring background processes use the new markup extractor.
In migration efforts, new transcript insert points were patched to set the xml_migrated=1 sentinel column, preventing corrupted re-processing during boot.
The test coverage for the XML cutover was augmented with new unit and integration tests to guard against regressions related to attribute escaping, entity injection, and mixed input types.
Frontend improvements included making chat action clicks functional by dispatching payloads and propagating necessary attributes to the overlay daemon for correct behavior.
highlights ionization:
xml markup format replaces block protocol + markdown + rich_render
LLM prompt is taught strict XML format, forbidding markdown
Legacy tool dispatch hierarchy ripped out in favor of AbilityRegistry
XML→plaintext extractor added for TTS functionality
Robust fixes for control characters and entity decoding in markup