Changelog
All notable changes to SlexKit.
v0.4.0 - Production adapters and ToolHost hardening
Added
@slexkit/assistant-ui: React assistant-ui adapter package with secure-frame defaults forslexcode blocks.- Browser-openable Assistant UI host example and documentation pages for adapter integration.
- Internal ToolHost
stepcomponent for multi-step human-input flows inside one tool call. - Theme package coverage for base, per-component, and ToolHost/step CSS exports.
Changed
- AI docs and standard artifacts now separate public components from ToolHost-only internals:
submitandstepremain renderable runtime components but are no longer counted in the public component catalog. smoke:releasenow logs pack/install/smoke stages, validates packed tarballs through a temporary app, checks CLI conformance, and checks the MCP server before reporting success.- ToolHost demo and replay fixtures now use the same step/submit flow expected from production host integrations.
Fixed
- Radio group list selection styling no longer uses
:has()in shipped runtime or theme CSS. - Tiptap preview controls preserve focus across embedded SlexKit inputs, selects, and transient controls.
stepandsubmitcomponent docs now include synced SPEC examples and API tables.- Release smoke no longer hangs after successful MCP validation on Windows.
v0.3.4 - Production documentation polish
Changed
- Reworked the documentation site shell labels, language menu, mobile navigation, and theme controls so localized pages no longer expose English-only UI chrome.
- Polished guide, reference, component, example, package README, and AI-facing documentation copy to remove report-like wording and visible placeholder phrasing.
- Localized generated Chinese component examples and API descriptions, including Formula props, through the component spec documentation pipeline.
Fixed
- Chinese documentation no longer renders copied English UI phrases such as counter labels, ToolHost examples, Obsidian status text, or design-system tone labels.
- Markdown documentation tests now guard against copied English skeleton headings, visible English-only list rows, double-question-mark replacement corruption, stale generated spec blocks, and previously fixed English UI phrase regressions.
v0.3.3 - Obsidian input control hardening
Fixed
- Slider now renders its visual track outside the native range input while keeping the native input for interaction and accessibility, avoiding square thumb artifacts in Obsidian and other host themes.
- Input fields with trailing units now reset host input chrome with scoped selectors so unit add-ons stay aligned with the text field in Obsidian dark themes.
v0.3.2 - Host CSS isolation and repeated layout hardening
Changed
$forrendering now uses comment anchors and direct child insertion instead of a wrapper element that depended ondisplay: contents.- Site-only mobile navigation CSS moved out of the runtime base stylesheet and into the documentation site shell.
- Component accessors now share one reactive effect across subscribers instead of creating duplicate subscriber fan-out work.
Fixed
- Obsidian and other Markdown hosts no longer need to rewrite
$forwrapper CSS to avoiddisplay: contents, preserving grid and row layouts for repeated items. - Published runtime base CSS no longer leaks
#mobileNavorbody[data-mobile-nav-open]selectors into host pages. - Custom renderers that return no element no longer leave invalid
$forslots behind during diffing or cleanup.
v0.3.1 - Host stability and control rendering hardening
Added
- Runtime style safety tests that block broad
:has()selectors,clip-path, and slider track regressions in shipped CSS. - Regression coverage for disabled Switch, Checkbox, and Radio state attributes.
Changed
- CI now installs dependencies with
bun install --frozen-lockfileand runs lint before tests. - Disabled Switch, Checkbox, and Radio styling now uses explicit
data-disabledattributes instead of broad relational selectors. - Select and sr-only helper styles avoid
clip-pathfor better host and Obsidian CSS compatibility.
Fixed
- Slider thumb rendering artifacts caused by painting the range track on the native input box.
- Input focus visibility after removing custom engineering steppers.
- Home RC example input labels now use native Input component labels instead of separate text labels.
- Stat cards no longer clip updated text during cross-document state examples.
- Markdown calculator examples no longer render duplicate section labels.
v0.3.0 - Examples overhaul with component audit and i18n
Added
- Example gallery: 17 high-quality examples organized by usage scenario (Getting Started, Calculators, Data Browsing, Dashboards, Config Wizards, Decision Support, Platform Features)
- English translations for all 17 example pages
toolhost-demo: realrenderToolCallAPI with chat-style conversation UI- Example rendering infrastructure:
site/routes/examples.js,site/pages/examples.slex.js,site/data/examples.js - Content discovery:
site/data/content-discovery.jswith locale fallback and allowed-slug filtering site/data/content-discovery.js:discoverExampleMarkdown()with per-locale discovery- SEO metadata for example pages
examples/minimal-cdn/index.html: zero-build CDN usage example- Formula component (
src/components/svelte/content/Formula.svelte) with KaTeX rendering src/engine/capabilities.ts: structured capability docs for AI agentssrc/engine/validation.ts: SPEC contract validation for component specssrc/engine/stdlib.ts: standard library withmath.clamp,math.safeDivide, and other utilitiessrc/engine/sandbox-runner.ts: sandbox runner for secure runtime- Component state eval context shadowing test suite (
component-state-shadowing.test.ts) - Collapsible and Callout double-rendering regression tests
- Slider component name shadowing regression test
- Tests for content, playground, select, tabs, slider, disclosure, feedback, policy-api
Changed
- Examples reduced from 64 to 17 high-quality examples, organized by user story
- Example source locale:
zh-CN(withen-UStranslations) renderChildren(helpers.ts) now clears existing content when children are present- Switch component now accepts
checked/valueprops for initialization consistency with Checkbox - Site UI: DocsShell, DocRail, router, shell improvements
- Components: Input, Select, Tabs, Table, PlaygroundMarkdown refinements
- CSS: theme-shadcn, text-input, docs-shell styling updates
- MCP: enhanced with structured capability docs
Fixed
- Eval context shadowing: component names
gandapino longer overwrite reserved context keys renderChildrendouble rendering in Collapsible and Callout- Voltage divider summary typo ("输入输入电压")
- Salary calculator fallback numbers to match actual calculator output
- Tabs-and-branching: title and length conversion mismatch
- 4 pre-existing test failures (ai-docs, page-structure, theme, markdown-content)
- Toolhost test: added setup import to fix
document is not defined - Badge stretching in grid layout
- Project-dashboard syntax error
- Salary-calculator rate configuration
Removed
- 47 low-quality/duplicate examples (reduced from 64 to 17)
- Dead "Fallback" copywriting from all example files
- Post-slex explanatory text from example files
- Unused
DialogShell.sveltecomponent - Orphaned
test-ifexample directory - Agent-generated
docs/composeplanning files - Temporary
screenshot-*.pngfiles
v0.2.0 - First public release
Added
@slexkit/mcp: AI Agent Model Context Protocol server withslexkitDocs,slexkitExamples,slexkitValidatetools- Protocol marker:
"slex": "0.1"required on all Slex expressions and ToolHost templates - SPEC contract validation: component specs are now validated against the runtime contract
- Version sync automation (
scripts/sync-version.ts) and changelog sync (scripts/sync-changelog.ts) - AI documentation generation pipeline with structured LLM-friendly output
- Static site export with SEO metadata engine (
site/data/seo.js,site/scripts/export-static.ts) - Chinese documentation for all reference and guide pages
- Enhanced component state management with lifecycle hooks (
onMount,onUnmount,onUpdate)
Changed
- Switch component migrated from
checkedtoenabledstate mode - Documentation: restructured site content, synced en-US with zh-CN, added reference section
- Theme: refined select styling, dropdown shadows, footer and info tone polish
- AI docs generation enhanced with Chinese/English locale awareness
Fixed
- Component spec alignment with documentation across all 28 components
- Site routing and code block highlighting
- Introduction and quick-start guide wording for clarity
- Broken links and factual errors in component and reference documentation
v0.1.9
Added
- Icon manager with Phosphor icon system (
registerIcon,registerIcons,getIcon,loadIcon) - Expanded icon support across labeled components (badge, button, callout, etc.)
- Icon docs page with registration API reference
Fixed
- Refined component interactions in static site export
- Tabs indicator animation restored
- Callout and toast icon placement in titles
- Numeric value display formatting
Changed
- Site docs shell refactored for static export
- Site navigation and theme controls alignment
- Slex naming standardized across codebase
v0.1.8
Added
- CSP-hardened secure runtime sandbox with heartbeat watchdog
mountSecureArtifact()for isolated iframe renderingcreateSlexKitMarkdownRuntimeHost()for Markdown-hosted SlexKit blocks- Streamdown React renderer (
@slexkit/streamdown) - Obsidian plugin adapter (now released through
slexkit/obsidian-slexkit) - Shadcn-compatible CSS theme (
@slexkit/theme-shadcn) - Package boundary wrappers (
@slexkit/runtime,@slexkit/components-svelte) - ToolHost with built-in templates:
confirm-action,choose-options,fill-form
Changed
- Component registration model: side-effect import registers all components
- Styles reorganized into per-component CSS files
- Build system: Bun.build with Svelte plugin, split ESM entries
v0.1.7
Added
$forlist rendering with keyed reconciliation (delete / add-update-reorder / trim phases)$ifconditional rendering with enter/leave animation support$keystrategy:$value, property-based, or fallback to index- Component instance state modes:
value,checked,enabled,readable,none - Lifecycle hooks:
g.onMount_<name>(),g.onUnmount_<name>(),g.onUpdate_<name>() - Engineering number input with SI prefix parsing
- Rich error diagnostics with line/column/excerpt display
Changed
- Expression evaluation:
new Function()compilation with reactive dependency tracking - Layout tree renderer now supports three rendering paths (normal,
$if,$for) gdeep-merge preserves keys not present in the new state
v0.1.6 and earlier
Added
- Reactive
g/layoutsplit with expression pipes ($read-pipes,on*write-pipes) - Custom fine-grained reactivity system (~280 lines, no external dependency)
- Component registry with extensible renderer interface
- Svelte 5 component adapter (creates stores from props, flushSync DOM)
mount(),ingest(),boot()entry points- 28 built-in Svelte components across 8 categories
parseSlexSource()DSL parser withdiagnoseSlexKitSource()error reporting- Documentation site with interactive playground