핵심 내용

GeekNews 최신 글 페이지에서 9월 17일 오전 기준 새 개발 글 가운데 실무적으로 눈에 띈 프로젝트는 TermDOM이다. GeekNews 요약에만 의존하지 않고 원본 프로젝트 사이트를 확인했다. TermDOM은 JavaScript/TypeScript에서 HTML·CSS·DOM API를 이용해 터미널 UI와 interactive CLI를 만들 수 있게 하는 라이브러리다. 실제 DOM node를 terminal output에 렌더링하고 DOM이 변경되면 화면을 다시 그리며, 별도의 Box·List 같은 TUI 전용 widget 체계를 배우는 대신 웹 개발 방식에 가까운 API를 제공한다.

프로젝트는 CSS cascade와 inline style을 계산해 ANSI escape sequence로 출력하고, flexbox·grid·table·box model을 terminal character cell 기준으로 배치한다고 설명한다. keyboard·click·paste 같은 terminal 입력을 DOM event 형태로 다룰 수 있으며, browser library를 수정 없이 사용할 수 있다는 점도 강조한다. 예시에서는 Prism syntax highlighter를 그대로 가져와 HTML markup과 CSS theme를 터미널 셀로 렌더링한다. 대부분의 frontend framework도 일부 setup을 거치면 사용할 수 있다고 프로젝트가 설명한다.

현재 package 설치는 npm install @b9g/termdom 형태이며 MIT License로 공개돼 있다. 프로젝트는 웹 표준을 가능한 한 따르되 terminal에서 의미가 없는 개념은 다르게 처리한다고 명시하고 있으므로, 실제 브라우저와 100% 동일한 렌더링 환경으로 보기는 어렵다.

배경

기존 TUI framework는 터미널만을 위한 component와 layout API를 별도로 제공하는 경우가 많다. 웹 프론트엔드 개발자가 CLI 도구를 만들 때는 React/DOM/CSS에서 익힌 개념을 다시 다른 toolkit 방식으로 옮겨야 했다. TermDOM은 터미널의 한계를 browser-like DOM/CSS layer로 추상화해 기존 frontend 기술과 library를 재사용하려는 접근이다.

산업·시장 영향

Coding Agent와 개발자용 CLI가 늘면서 터미널 UI의 중요성이 다시 커지고 있다. Agent 상태, diff, tool approval, 로그, 대화형 form을 CLI 안에서 보여줘야 하는 도구가 많아졌기 때문이다. 웹 개발 인력이 별도의 TUI stack 없이 이런 인터페이스를 만들 수 있다면 개발비용을 낮추고 기존 design system 일부를 재사용할 여지가 생긴다. 다만 terminal별 ANSI 지원, 접근성, 입력 처리, 성능은 browser 환경과 다르므로 production 도입 전 검증이 필요하다.

실무에서 바로 활용할 시사점

개발자용 CLI나 로컬 Agent dashboard를 만들 계획이라면 작은 POC로 form·table·키보드 navigation·resize 동작을 먼저 검증할 가치가 있다. 특히 기존 TypeScript 코드와 DOM 기반 library를 많이 보유한 팀은 재사용 효과가 클 수 있다. 반대로 매우 단순한 CLI라면 DOM/CSS compatibility layer가 과도할 수 있으므로 Ink·Blessed·직접 ANSI 출력 같은 기존 접근과 bundle size, startup latency, cross-terminal compatibility를 비교하는 편이 좋다.

출처: GeekNews — 최신 글, TermDOM 공식 사이트