Skip to content

v0.20.0 — April 2026 design handoff

Choose a tag to compare

@CinimoDY CinimoDY released this 23 Apr 18:01
· 77 commits to main since this release
fa8a36c

Bundles two unpublished versions (0.19.4 + 0.20.0) from the April 2026 design handoff adoption. 0.19.4 was never published to npm; 0.20.0 supersedes it.

0.20.0 — Three new components (PR #294)

Built natively to the V.37 pattern (React Aria + Tailwind + CSS for phosphor). Purely additive — no existing component source was touched.

  • <InlineLink> — in-flow navigational anchor. Dotted amber underline, phosphor-invert hover, (internal) or (external) glyph. href is sanitized against javascript:/data:/unknown-scheme URLs. External variant adds safe rel="noopener noreferrer" + target="_blank"; consumer-supplied target="_blank" without external also auto-applies safe rel (tabnabbing guard). Caller rel tokens are union-merged with safety tokens so rel=\"author\" + target=\"_blank\" still gets noopener noreferrer. Closes rizomorf parity gap #3.
  • <DosFigure> — demoscene-style painted-screen placeholder for media (Sierra/LucasArts title-card aesthetic). 4:3 amber chrome, 6s scanline sweep (container-query based), phosphor flicker, annotation pins at {x, y} percentages with NaN-safe clamping, resolution tag. Compositor-only animations that honor prefers-reduced-motion / prefers-contrast. Closes rizomorf parity gap #2.
  • <CmdPalette> — ⌘K / Ctrl+K command-palette overlay built on React Aria ModalOverlay + Modal + Dialog. Generic items with keywords, scored search, arrow-key navigation, optional renderItem, configurable hotkey (\"mod+k\" default, false to disable). Hotkey listener uses ref-based indirection so inline onOpenChange handlers don't rebind on every render. Per-instance DOM ids via useId().

Component count: 33 → 36.

0.19.4 — Token adoption (PR #291, merged into 0.20.0)

  • --color-semantic-text-muted (+ text-dos-text-muted Tailwind class) with per-theme hexes:
    • amber-mono{color.cga.lightGray} (#B87C1A)
    • cga-amber{color.cga.brown} (#AA5500)
    • cga-mode4-p0rgba(255, 255, 0, 0.65)
    • cga-mode4-p1 + cga-mode5rgba(255, 252, 247, 0.65)
    • default → {color.cga.amberDim} (#9A5700)
      Dedicated hex per theme, not an opacity trick.
  • eidotter/utilities subpath export — opt-in CSS file with 12 .dos-* classes for raw HTML / MDX / prose: .dos-page, .dos-hero, .dos-h1.dos-h5, .dos-body, .dos-body-lg, .dos-caption, .dos-micro, .dos-label, .dos-code, .dos-scanlines. Not bundled into the default eidotter/styles — component-only consumers pay zero bytes.
  • Muted-text refs migrated from --color-cga-brown to --color-semantic-text-muted across Progress, Chat/ChatMessage, InlineExpand, Footer, Chat/ChatHistory, Input (PR #295).

Install

```bash
npm install eidotter@0.20.0
```

Consumer imports

```tsx
import 'eidotter/styles'; // required — all styles, fonts, tokens, Tailwind utilities
import 'eidotter/themes/amber-mono.css'; // optional theme
import 'eidotter/utilities'; // optional — .dos-* classes for raw HTML/MDX/prose (new in 0.19.4)
```

Links