# Changelog All notable changes to Nware Soma are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/); versions follow [Semantic Versioning](https://semver.org/). ## [0.1.0] — unreleased Initial release: the complete component substrate for the Nware platform. Soma is the Nware sibling of Nsys Neura — same zero-dependency, server-rendered-friendly component model, its own airy light-blue visual identity, no legacy-compatibility layer. ### Foundations - **Design tokens** (`--soma-*` custom properties) with three themes — light (default), dark, high-contrast — switched at runtime via `data-soma-theme` / `Soma.theme()`; density modes (comfortable / cosy / compact) via `data-soma-density`; component CSS is theme-blind. - Interaction states and motion: every semantic color set carries derived `-hover`/`-active` shades; one motion vocabulary (`--soma-motion-*` durations and easings) drives all transitions, and dropdown menus and dialogs gained designed enter animations (instant exits, disabled under reduced motion). - Density modes now cover every component (tabs, chips, tree, pagination, date picker included), and all pointer targets hold the WCAG 2.2 24px minimum even at compact density. - Toasts show a semantic accent bar (4px inline-start strip per appearance) so the type reads at a glance; bodies stay neutral. - Toasts: the visible stack is capped at 3 (`Soma.toast.maxVisible` tunes it); further calls queue FIFO and appear — and announce — as visible toasts dismiss; queued handles stay live. - Keyboard focus stays visible in Windows High Contrast (forced-colors outline fallback for the box-shadow focus ring). - Placeholder text reads at AA: every placeholder (inputs, search fields, palette, select) uses the muted text tier — the decorative subtle tier stays reserved for hints that need not be read. - Three-theme contrast pass (computed against composited translucent surfaces): dark lifts and desaturates danger and nudges links, selection tints and hover directions; light re-pigments the focus ring to 3:1+ on every host, darkens muted text for the bare page tint, and corrects danger state mixes; high contrast restores its own >=7:1 promise on every tint, deepens links for tinted messages, and gains a two-tone focus ring visible on filled controls. - Dark theme elevation ladder: new `--soma-surface-raised` / `--soma-surface-overlay` tokens — overlays (dropdowns, dialogs, toasts, drawers, popovers, palette, quicksearch results) lighten one tier above cards on dark, and dark shadows gain a subtle edge ring. - Dark theme lifted one perceptual notch lighter (uniform +0.04 OKLCH-L across page, surfaces, tints and borders, hue held ~247-249°), with text, links, danger and the focus ring re-tuned to keep every AA contrast on the lighter surfaces. - Code readability: `pre` blocks and inline `code` render on a dedicated inset surface (`--soma-surface-inset`, also used by the log viewer and diff panes) — deliberately darker than the widget surface so code and console panes stay clearly visible in the light theme; both forms carry a border, so inline chips stay legible even on opaque white surfaces where the fill alone washes out. - **Internationalisation**: 42 built-in locale packs for Soma's interface strings (machine-translated standard vocabulary, flagged for native-speaker review). Locale selection `Soma.i18n({locale})` → `` → English, regional fallback, per-key overrides, `Soma.i18n.register()` / `.locales()`. - **RTL**: full mirroring via logical properties (`dir="rtl"`), with `:dir(rtl)` overrides for directional transforms and glyphs; visual-direction arrow keys in tabs and the date-picker grid. - **Accessibility**: WCAG 2.2 AA enforced by an axe-core CI sweep over every docs page in all three themes; visible focus rings throughout; live-region roles on all dynamic feedback; forced-colors (Windows High Contrast) survival layer; `prefers-reduced-motion` respected. - Dialog markup contract: dialogs are authored as native `` elements (no aria-hidden bookkeeping). - **Icons**: Lucide-sourced 41-glyph set exposed as CSS masks (`.soma-icon-` + root-level `--soma-icon-` variables); the build pipeline also accepts inline SVG sources and per-glyph stroke-width overrides. - Layout shell (navbar / sidebar / content), 12-column grid, widgets, page-header block, page panel (the content as one full-width surface card with optional nav / content / sidebar cells), focused-page card mode, footer, typography and utility classes. ### Components - Buttons (variants, groups, split, toggle state), forms (stacked and horizontal label layouts, fieldset groups, width scale, input groups, range, file, switch), tables (sortable, zebra, interactive, RESTful inline-edit CRUD), list groups, badges/labels/chips (tinted + bold), avatars (7 sizes), messages (+ solid), banners, toasts, progress (determinate + indeterminate) and meters, skeletons, spinners, empty states, stat tiles, chart containers and legends. - Overlays are native top-layer citizens: modal dialogs (incl. the command palette and confirm/alert shorthands) are native `` elements — platform focus containment, Esc, focus restore, `::backdrop` — and menus, inline dialogs, tooltips, the date-picker popover, the select menu, the drawer and toasts ride the Popover API, so every overlay works above every other (incl. inside open dialogs); placement uses CSS anchor positioning where supported with a JS fallback; a legacy z-index fallback ships for engines without the Popover API. The roster: modal dialogs, drawer, dropdown menus (full menu semantics + keyboard cursor), inline dialogs, tooltips (CSS-only and JS), date picker with range pairing, searchable single/multi select over a native `