# Changelog All notable changes to Armature are documented here. ## v0.6.12 — Extension CSS Isolation Prefix enforcement prevents extension CSS from leaking into the kernel or sibling extensions. All 12 in-tree packages migrated to `.ext-{slug}-*` naming convention. ### Added - **`data-ext` attribute** on extension mount container — enables scoped selectors like `[data-ext="chat"] .ext-chat-app`. - **CSS linter** (`scripts/lint-package-css.sh`) — validates that the first class selector in every extension CSS rule starts with `.ext-{slug}`. Exempts `:root`, `@keyframes`, `@font-face`, `@media`, kernel `.sw-*` classes, and CodeMirror `.cm-*` classes. - **Kernel CSS contract** (`docs/EXTENSION-CSS.md`) — documents stable public classes and CSS variables that extensions may reference. Everything else is internal kernel CSS. ### Changed - **12 packages migrated** — all class selectors renamed to `.ext-{slug}-*`: chat, dashboard, editor, git-board, hello-dashboard, icd-test-runner, notes, schedules, sdk-test-runner, tasks, team-activity-log, workflow-demo. CSS and JS files updated in lockstep. - **`icd-test-runner`** — ID selectors (`#extension-mount`) converted to class-based selectors with proper prefix. - **`editor` cross-references** — compound selectors referencing notes classes updated to new `.ext-notes-*` names. - **`chat` kernel overrides** — `.sw-dialog:has(...)` override scoped under `[data-ext="chat"]` instead of global. ## v0.6.11 — CSS Deduplication One class per concept. The old `primitives.css` button, toast, popup-menu, dropdown, and tabs systems are retired. `sw-primitives.css` is the single source of truth for all Preact component styles. ### Changed - **Buttons**: All 29 files migrated from `.btn-primary` / `.btn-small` / `.btn-danger` / `.btn-ghost` / `.btn-md` / `.btn-sm` to the BEM-style `.sw-btn .sw-btn--{variant} .sw-btn--{size}` system. - **Toasts**: Old `.toast-container` / `.toast` CSS deleted. SDK's `sw.toast()` API already used `.sw-toast-*` classes — no JS changes. - **Popup menus**: Old `.popup-menu` / `.popup-menu-item` CSS deleted (unused — `.sw-menu` is the active system). - **Dropdown collision resolved**: Old `.sw-dropdown` (styled `