Skip to content

Changelog

This page documents the current state of Earthling UI and ongoing development.

v1.1.0-alpha.42

A library and documentation refresh focused on consistent design, source ownership, and reliable component discovery.

Library

  • Refined spacing, typography, borders, focus treatment, and semantic color defaults across the component library.
  • Made frequent hover and selection feedback immediate while keeping short, origin-aware spatial motion with reduced-motion fallbacks.
  • Standardized floating surfaces with viewport-aware scrolling, nested radii, logical-direction spacing, and larger accessible controls.
  • Improved contracts for loading buttons, directional drawers, delayed tooltips, range sliders, indeterminate progress, numeric tables, and vertically resizing text areas.

Documentation and tooling

  • Rebuilt component pages around statically imported, typed examples with live controls, complete anatomy, accessibility notes, and source-derived API information.
  • Expanded package, CLI, setup, template, theming, and agent guidance to match current import and eject workflows.
  • Added source-derived catalog metadata for reliable discovery of component exports, dependencies, declarations, and ejectable files.

v1.1.0-alpha.41

A focused release: the cn utility now runs on a single, faster dependency.

Improvements

  • cn is now powered by cnfast, replacing the clsx + tailwind-merge pair — same class-merging behavior, one smaller and faster dependency
  • Ejected components now pull in cnfast instead of clsx and tailwind-merge

v1.1.0-alpha.40

A polish pass across the whole library — a new neutral default scheme, tactile motion, and a token consistency sweep.

Improvements

  • New default scheme (foreground-on-background neutral) available on badge, button, checkbox, chip, input, pagination, progress, radio, slider, switch, tabs, textarea, toggle group, and tooltip; textarea now defaults to it instead of primary
  • Tactile press feedback: buttons and checkboxes scale down slightly on press, and slider thumbs scale up while dragging — buttons can opt out via the new static prop
  • Motion polish: checkbox indicators animate in, accordion content animates height with motion-reduce support, progress bars ease their fill, and components transition only the properties they need instead of transition-all (via the new tw-animate-css dependency)
  • Token consistency: menus, dropdowns, menubar, select, dialogs, and navigation menu now use Earthling tokens (muted, background, bad) instead of leftover shadcn-style tokens (accent, popover, destructive)
  • Visual details: avatar images get a subtle outline ring, dialog and card titles use text-balance, descriptions use text-pretty, and focus rings are standardized on ring-outline
  • Docs sandbox: scheme controls for slider and tooltip, and a static toggle for button

Fixes

  • Docs component info now lists the correct TextArea export name

v1.1.0-alpha.39

The "ready for the world" release — packaging correctness, a Node-compatible CLI, six new components, and a consistency pass across the whole library.

New Components

  • Label — accessible form-control label
  • Kbd — keyboard key and shortcut display
  • Spinner — animated loading indicator with full scheme support
  • Pagination — page navigation with previous/next and ellipsis
  • Menubar — persistent menu bar with nested dropdown menus
  • Navigation Menu — site navigation with expandable content panels

This brings the library to 40 components, all importable à la carte or ejectable into your project.

Improvements

  • Full scheme coverage: alert, checkbox, input, progress, radio, tabs, textarea, toast, and toggle-group now support the complete scheme set (primary, secondary, tertiary, neutral, muted, good, caution, bad)
  • Color Picker is now exported from the package root alongside its subpath import
  • Breadcrumbs supports aria-current="page" via the new current prop

Fixes

  • Toggle group items now correctly receive their scheme colors (previously the scheme classes were silently dropped)
  • TextArea.displayName corrected to "TextArea"
  • Breadcrumbs ships its "use client" directive in source (matters for ejected copies)

Packaging & Compatibility

  • Vite support: stylesheet subpath exports (earthling-ui/index.css, earthling-ui/themes/dark.css) work with plain JS imports in any bundler
  • CommonJS consumers: require("earthling-ui/...") now resolves correctly under Node, with proper CJS-flavored type declarations
  • CLI runs under Node: npx earthling-ui works without Bun — the CLI ships pre-built with a proper shebang
  • sideEffects now correctly preserves CSS imports under aggressive tree-shaking
  • The unfinished copy command was removed

Earlier Releases

v1.1.0-alpha.25 → alpha.38

  • Component ejection (earthling-ui eject) and config wizard (earthling-ui init) shipped
  • Color picker (rough draft), dropdown menu, scroll area, context menu, dialog improvements (DialogForm, DialogExitButton, better SSR)
  • Docs site: radial gradient background, component sandbox improvements

v1.1.0-alpha (initial)

  • Initial component library with the CVA + scheme-variable design system
  • Light and dark themes via CSS custom properties
  • Project templates: Next.js, Vite, Tauri, Electron kiosk, database (Drizzle), library, CLI, and monorepo
  • create command for scaffolding projects from templates

Development Philosophy

Earthling UI is being developed with these principles in mind:

  1. Accessibility: Components should be accessible to all users
  2. Customization: Easy to customize to match your brand
  3. Developer Experience: Simple API and clear documentation
  4. Performance: Minimal bundle size and optimal runtime performance

Project Status

Earthling UI is in public alpha. The API is stabilizing, but minor changes may still occur before the stable release.

If you encounter any issues or have suggestions, please file an issue on the GitHub repository.

Changelog — Earthling UI