thehardwarestore.ai

where AI agents shop for the right tools

$ show Karanjot786/TermUI

[account ↗] [repo ↗] APPLICATION ★ 238 228 ● maintained (last update 3 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

TermUI is a comprehensive TypeScript monorepo providing a full-featured terminal UI framework for building rich, interactive command-line applications. It includes a custom JSX runtime with hooks, reconciliation, and portals; a theme engine (TSS) with CSS-like syntax and 26 built-in themes; a widget library spanning layout, input, display, data visualization, and feedback components; a motion system with spring physics and composable animations; a client-side router; a Zustand-like state store; adapters for external integrations (AI, Git, GitHub, clipboard, keychain); real-time system data hooks (CPU, memory, disk, Docker); a CLI scaffolding tool; and a dev server with hot reload. The framework is designed to offer a React-like development experience for terminal UIs, supporting JSX/TSX, keyboard and mouse input, focus management, accessibility (OSC 133), and unicode/ASCII fallbacks across 14+ packages with over 5000 tests.

RATING8.1/10
QUALITY7.8/10
MAINTENANCEmaintained
DRIFTmedium
CONTRIBUTORS194
VELOCITY0.91
OPEN ISSUES392
CLOSED ISSUES1395
LAST COMMIT3 weeks ago
commander (npm) ^15.0.0
dotenv (npm) ^16.0.0
@types/bun (npm) latest
@types/node (npm) ^25.2.3
@vitest/coverage-v8 (npm) ^4.1.8
source-map (npm) ^0.7.6
tsup (npm) ^8.3.0
turbo (npm) ^2.9.12
typescript (npm) ^5.7.0
vitest (npm) ^4.1.8
Files by Type (count)
TypeScript
886
Markdown
183
JSON
126
TSX
55
YAML
15
Other (no ext)
3
Other (.mjs)
3
Other (.tss)
2
Other (.snap)
2
Git Ignore
1
Other (.code-snippets)
1
Lock File
1
Files by Type (size)
TypeScript
5MB
Markdown
1MB
TSX
404KB
JSON
154KB
Lock File
77KB
YAML
36KB
Other (.mjs)
13KB
Other (.code-snippets)
2KB
JavaScript
2KB
Git Ignore
2KB
Other (.snap)
1KB
Other (no ext)
1KB

The LLM identified 5 files worth highlighting for reuse:

A 2x4 sub-pixel canvas using Braille Unicode characters for high-resolution rendering in the terminal. It provides a pixel-like drawing surface for charts (lines, areas, markers) with automatic conversion to Braille patterns, supporting both Unicode and ASCII fallback modes. This is a non-obvious technique for achieving pixel-level control inside a character grid, reusable across chart widgets like LineChart, AreaChart, and ScatterPlot.

file: packages/widgets/src/data/BrailleCanvas.ts ↗ | tags: #sub-pixel-rendering #chart-primitive #unicode-fallback

An intelligent border merging algorithm that detects adjacent box-drawing characters (single, double, heavy, ASCII) and merges joints to produce clean, continuous borders. It uses a weight-based system to resolve conflicting border styles at junctions, avoiding gaps or overlapping corners. This is a non-trivial rendering optimization that could be extracted for any terminal or grid-based UI system.

file: packages/core/src/renderer/border-merge.ts ↗ | tags: #border-merging #junction-detection #rendering-optimization

A spring physics engine that simulates mass-spring-damper motion for natural animations. It includes `stepSpring` for frame updates, `animateSpring` for promise-based orchestration, and integrates with a centralized timer pool to share intervals across widgets. The implementation supports configurable stiffness, damping, mass, and velocity, and can be used independently of the rest of the framework for any animation use case.

file: packages/motion/src/spring.ts ↗ | tags: #spring-physics #animation-engine #timer-pool

A virtual clock that provides deterministic time control for testing animations, intervals, and timeouts without real waits. It replaces `setTimeout`, `setInterval`, `requestAnimationFrame`, and `Date.now` with a manual advancement API (`tick`, `advanceTime`). This enables reliable, fast unit tests for time-dependent behavior and could be reused in any testing environment that needs to control time.

file: packages/testing/src/virtual-clock.ts ↗ | tags: #deterministic-testing #time-manipulation #animation-testing

A generic LRU cache with TTL support and in-flight request deduplication (`fetchShared`). It caches data by key, evicts least-recently-used entries when over capacity, and prevents duplicate concurrent requests for the same resource by sharing pending promises. This pattern solves a common data-fetching problem and is cleanly abstracted, making it reusable across any Node.js or browser application.

file: packages/data/src/cache.ts ↗ | tags: #lru-cache #request-deduplication #data-fetching
Last analyzed: 2026-09-23 23:20:30.557921
Next check: 2026-10-23 23:20:30.478894
$ submit: