Releases: Arindam200/termui
v1.5.0 — Accessibility Hooks, AI Components & MCP Server
What's New
Accessibility Hooks
useFocusTrap— trap Tab/Shift+Tab focus within overlays. Wire into any Modal, Drawer, or Dialog viafocusableIdspropuseKeyboardNavigation— standardized ↑↓/Home/End/PgUp/PgDn navigation for all list-style components
New AI Components
StreamOutput— standalone streaming display; accepts a pre-bufferedtextprop (animated char-by-char) or a livestream: AsyncIterable<string>from any LLM SDKConversationHistory— scrollable wrapper forChatMessagehistory with ↑↓ keyboard navigation and bottom-anchored defaultErrorRetry— error state with keyboard retry/dismiss, retry counter, andmaxRetriesguard
Overlay Accessibility
ModalandDrawernow acceptfocusableIds?: string[]— focus is automatically trapped within the overlay when open
MCP Server
npx termui mcp— stdio MCP server exposing 5 tools to Claude Code, Claude Desktop, Cursor, and Copilot:list_components,add_component,get_component_docs,search_components,get_theme_tokens
npx termui add mcp— interactive installer (local.mcp.json, global Claude Code, or global Claude Desktop)
Docs
- New
docs/accessibility.md— full reference for focus management, ARIA annotations, reduced motion, and keyboard conventions
Stats
- 1,332 tests passing across 5 packages
- 11 AI components total
- 14 core hooks total
v1.4.3
Windows Compatibility Fixes
This release resolves several CLI compatibility issues on Windows.
Fixes
- Build script: Replaced
chmod +xwith a cross-platformfs.chmodSynccall sopnpm buildno longer fails on Windows - Process termination: Replaced
c.kill('SIGTERM')withc.kill()which usesTerminateProcesson Windows instead of an unsupported POSIX signal - SIGTERM listener: Guarded
process.on('SIGTERM')behind aprocess.platform !== 'win32'check indevandpreviewcommands - Raw mode: Wrapped all
setRawMode(true)calls in try/catch acrossclack.ts,ui.ts,dev.ts, andpreview.tsso prompts gracefully fall back to defaults on Windows terminals that reportisTTY=truebut do not support raw mode (e.g. MinTTY, Git Bash) - Shell completion: Added PowerShell completion script support via
termui completion powershell
v1.4.2
Bug Fixes
Fixed 404 npm install errors caused by internal package references being exposed in user-facing files.
The packages @termui/core, @termui/components, and @termui/adapters are internal monorepo workspace packages and are not published to npm. Only the root termui package is published. Previous versions incorrectly referenced these internal packages in templates, registry components, examples, and documentation, causing npm install to fail with a 404 error.
What changed
- CLI scaffolder (
termui create): generatedpackage.jsonno longer lists@termui/coreas a dependency - Templates (all 5): removed
@termui/*deps, all imports now usetermuiandtermui/*subpaths - Registry components (95+ files):
from '@termui/core'replaced withfrom 'termui' - Examples (10 packages): fixed
package.jsondeps and source imports - Docs and README: all code examples and install commands updated to use the correct public package name
- JSDoc comments: fixed misleading import examples in core, adapters, and testing packages
Upgrade
npm install termui@latestNo API changes. This is a pure fix release.
v1.4.0
What's Changed
CLI Improvements
termui/argsintegration (createCLI) -- the CLI now usescreateCLIfromtermui/argsfor command routing,--help, and unknown-command handling; dogfooding the product instead of hand-rolled switch logic- Raw-mode TTY prompt utilities -- new
packages/cli/src/utils/clack.tswithtext,confirm,select,multiselect,spinner,tasks,group,logbacked by raw-mode keyboard input - Prettier formatting on
add-- installed components are automatically formatted with the project's Prettier config when Prettier is present; dry-run mode now shows an 8-line source preview
termui/clack Adapter
- Raw-mode TTY support --
text,confirm,select, andmultiselectnow use raw-mode keyboard input (arrow keys, single-key confirm) with graceful readline fallback for non-TTY environments NO_COLOR/FORCE_COLOR/CLICOLORrespect -- all ANSI output checks environment flags before emitting color codesselectandmultiselectadded to the adapter public API
Components
ChatMessage-- newstream,streamText,streamSpeed,onStreamComplete,inline,prefix,showSeparator, andmaxLinesprops; usesStreamingTextfor live streaming and animationPagination--currentprop is now optional (uncontrolled mode)
Themes
highContrastTheme-- WCAG 2.1 AA contrast ratios annotated and enforced; adjustederror,info,muted, andmutedForegroundcolorshighContrastLightTheme-- new light variant for terminals with a white background
Infrastructure
.github/workflows/validate-registry.yml-- CI workflow that validates registry manifests on every push and pull request
Full Changelog: https://github.com/Arindam200/termui/blob/main/CHANGELOG.md
v1.3.0 — Adapter Ecosystem, Registry Expansion & New CLI Commands
What's New in v1.3.0
8 New Library Adapters
Drop-in wrappers that route popular CLI libraries through the TermUI theme engine:
| Adapter | Wraps |
|---|---|
termui/chalk |
chalk |
termui/commander |
commander |
termui/inquirer |
@inquirer/prompts |
termui/meow |
meow |
termui/ora |
ora |
termui/imperative |
imperative prompt API |
termui/svelte |
Svelte actions & stores |
termui/vue |
Vue composables & plugin |
3 New Components
MultiProgress— stacked progress bars with per-item labels and dynamic add/removeNotificationBadge— inline unread-count badge with dot variantNotificationCenter— scrollable notification overlay with mark-as-read and dismiss
2 New CLI Commands
npx termui docs <component>— fetch and render component docs inlinenpx termui publish— validate and submit a component to the community registry
13 New Registry Components
chat-message · chat-thread · diff-view · file-change · model-selector · multi-progress · notification-center · streaming-text · thinking-block · token-usage · tool-approval · tool-call
New @termui/types Package
Centralised TypeScript types for themes, components, hooks, registry manifests, and adapter contracts.
7 New Examples
with-chalk · with-commander · with-inquirer · with-meow · with-ora · with-github · with-keychain · ai-demo
Infrastructure
- Changeset tooling for automated version management
- GitHub Actions release workflow on version tag push
CONTRIBUTING_COMPONENTS.mdandGOVERNANCE.md- Comprehensive test suite added across all packages
Full changelog: CHANGELOG.md
v1.2.0 - Phase 6: AI CLI Builder
Phase 6: AI CLI Builder
TermUI v1.2.0 adds first-class primitives for building AI-powered terminal applications. Three new package exports, 13 new components and hooks, and a conversation persistence utility.
New exports
| Export | Contents |
|---|---|
termui/components/ai |
All AI UI components |
termui/ai |
useChat, useCompletion hooks |
termui/conversation-store |
createConversationStore |
Tier 1 - Core Primitives
StreamingText
Renders LLM token streams token-by-token. Accepts a controlled text prop, an AsyncIterable<string> via stream, a blinking cursor, and a animate/speed typing mode for pre-buffered responses.
<StreamingText stream={tokenStream} cursor="▌" onComplete={(full) => save(full)} />Markdown streaming mode
New streaming and cursor props on the existing component. Partial code fences are closed gracefully so the component never crashes mid-stream.
<Markdown streaming cursor="▌">{partialMarkdownFromLLM}</Markdown>DiffView
Unified, split, and inline diff views with an internal LCS algorithm (no added dependency). Supports context lines, showLineNumbers, coloured +/- lines, and @@ hunk headers.
<DiffView oldText={original} newText={modified} filename="src/index.ts" mode="unified" showLineNumbers />Tier 2 - Chat UI Components
ChatThread + ChatMessage — Role-based message styling, animated ... typing indicator, collapsible system messages, autoScroll.
ToolCall — Status icons for pending/running/success/error, live elapsed timer, collapsible args and result.
ThinkingBlock — Collapsible chain-of-thought with token count and streaming indicator.
ToolApproval — Risk-level border colour (green/yellow/red), y/n/a keybindings, countdown auto-deny.
Tier 3 - AI Integration Layer
useChat + useCompletion — Provider-agnostic streaming hooks. Supports Anthropic, OpenAI, Ollama, and a custom fetchFn. tokenUsage is populated from each provider's native usage events.
import { useChat } from 'termui/ai';
const { messages, sendMessage, isStreaming, tokenUsage } = useChat({
provider: 'anthropic',
model: 'claude-sonnet-4-6',
apiKey: process.env.ANTHROPIC_API_KEY,
});TokenUsage + ContextMeter — Compact cost display with warn/critical colour thresholds.
ModelSelector — Provider grouping, context window size display, built on Select.
FileChange — File list with M/A/D icons, keyboard navigation, and inline DiffView per file.
Tier 4 - Ecosystem
createConversationStore — JSONL/JSON persistence with save/load/list/delete/search. Auto-titles from the first user message.
import { createConversationStore } from 'termui/conversation-store';
const store = createConversationStore({ dir: '~/.myapp/conversations', format: 'jsonl' });
await store.save(id, messages);Bug Fixes
useChathistory: replaced thesetMessagesfunctional-updater capture pattern with amessagesRefupdated synchronously; correct message list is sent on every turn including the firsttokenUsagenever populated: wiredsetTokenUsageinto all three provider streams via native usage eventsDiffViewinline mode was identical to unified; implemented a properInlineView- DTS build
TS2307for optional peer SDKs: dynamic imports now use a variable specifier so tsc skips static module resolution tsconfig.jsonmissing path entries for new subpaths fixed
v1.1.8 - termui create command
What's new
termui create command
Scaffold a new TermUI project in seconds with an interactive setup wizard:
```bash
npx termui create my-app
```
Choose from 4 starter templates:
- Minimal - Hello World with Text + Spinner
- CLI - Multi-command CLI with add/remove/list
- Dashboard - Tabs + Table + ProgressBar layout
- Wizard - Multi-step prompt flow with clack
Other changes
- Refactored adapter modules (args, clack, completion, conf)
- Updated init, add, update, diff, and list commands
- Added MIT License
- Improved registry client
- Added .tmp/ and _tmp*/ to .gitignore
Full changelog
- feat(cli): add termui create command with 4 starter templates
- Add MIT License to the project
- perf: bundle size optimisations and refactoring (v1.1.7)
v1.1.7 — Bundle size optimisations & refactoring
What's Changed
Performance
- Tree-shaking — added
"sideEffects": falseto all four packages; bundlers can now safely drop unused modules - Component category sub-exports — 12 new granular entry points (
termui/components/layout,/typography,/input, etc.) for importing only what you need - BigText font encoding — replaced verbose nested arrays with packed 3-bit row integers; font data is ~60% smaller before gzip
Build
tsconfig.build.json— new production tsconfig eliminating ~232 unnecessary.d.ts.mapfiles from published dist- Adapter sourcemaps removed — corrected
packages/adapters/tsup.config.tsto match the rest of the build "files"field added topackages/core,packages/components, andpackages/cli— npm now only publishesdist/andREADME.md
Refactoring
- QRCode encoder extracted to
utility/qrEncoder.ts— ~420 lines of pure GF(256)/Reed-Solomon/matrix logic separated from the React component; GF lookup tables are now lazy-initialised - Shared chart utilities —
normalize,clamp,padEnd,padStartextracted tocharts/utils.ts; used byLineChart,Sparkline,Gauge, andBarChart - Shared time formatters —
formatElapsedandformatTimeextracted toutility/formatters.ts; used byStopwatchandTimer
Installation
npm install termui
# or
npx termui initFull changelog: https://github.com/Arindam200/termui/blob/main/CHANGELOG.md
v1.1.6 — Enhanced package.json & CLI creator
What's Changed
Added
- CLI project creation skill and component reference
Changed
- Enhanced
package.jsonwith improved metadata and exports
v1.1.5 — Package improvements
What's Changed
Changed
- Package.json improvements and dependency updates