← ALL TAGS

Tag: bubbletea

16 articles tagged “bubbletea” on Oak Oliver Engineering, newest first. The latest is “Program Status, Colour Profiles and Snapshots That Don't Stop the Program: What Today's Charm Port Releases Add”.

Runtime

Program Status, Colour Profiles and Snapshots That Don't Stop the Program: What Today's Charm Port Releases Add

Eleven TypeScript ports shipped new versions on November 2: Bubble Tea 1.4 reports what a program is doing to the terminal (OSC 7501) and writes frames in the terminal's colour profile, freeze 1.1 rasterizes off the event loop, ntcharts 1.1 gives charts fixed zone IDs, huh 1.1.3 fills bound fields at once, teatest 1.1 waits for the frame. One runnable example, a canary deploy you approve, uses all of them.

November 2, 2026 23 min read
Read Story →
Engineering

Porting Go's Bubblezone to TypeScript: Mouse Hit-Testing for Bubble Tea

lrstanley/bubblezone — clickable regions for Bubble Tea, found by hiding zero-width markers in the view — is now a TypeScript package. 549 lines of source, 122 tests, no runtime dependencies. What changed when the Go goroutine went away, what the original gets wrong about hyperlinks, and what still doesn't work.

November 1, 2026 13 min read
Read Story →
Runtime

Getting Started with teatest in TypeScript: Test Your Terminal Apps, Keys, Waits and Golden Files

A from-zero guide to @oakoliver/teatest, the TypeScript port of Charm's testing library for Bubble Tea. Run a program headless, press keys, wait for output, check the final model, compare the whole output with a golden file, take the clock out of a test, and use it from bun test, node:test or Vitest. Every program runs.

November 1, 2026 13 min read
Read Story →
Runtime

Getting Started with the Charm Ports Together: A Multi-User Terminal Dashboard over SSH in TypeScript

Build one program with five TypeScript ports of Charm's Go libraries: ntcharts draws the charts, bubblezone makes them clickable, wish serves the dashboard to everyone who connects over SSH, freeze turns a screen into an SVG, and teatest tests it all with golden files and real mouse input. Step by step, on Bun and Node.

November 1, 2026 24 min read
Read Story →
Runtime

Getting Started with Bubblezone in TypeScript: Clickable Buttons, Tabs and Sliders for Terminal Apps

A from-zero guide to @oakoliver/bubblezone, the TypeScript port of lrstanley/bubblezone for Bubble Tea. Make a button, a tab bar, a slider and a pair of nested counters respond to the mouse without computing a single screen coordinate, and see exactly what breaks a zone. Every program runs on Bun, Node and Deno.

November 1, 2026 13 min read
Read Story →
Runtime

Porting Go's teatest to TypeScript: Golden-File Tests for Bubble Tea Programs

Charm's teatest runs a Bubble Tea program headless, sends it keys, waits for its output and compares everything it wrote with a golden file. It is now a TypeScript package that works with bun test, node:test and Vitest. 137 tests, escaping and diffs checked against real Go, and a failure message made to be read.

November 1, 2026 13 min read
Read Story →
Runtime

Getting Started with Wish in TypeScript: SSH Apps in Six Small Programs

A from-zero guide to @oakoliver/wish, the TypeScript port of Charm's wish. Build an SSH server that greets people, recognises them by key, runs commands and serves a Bubble Tea app to every session, then share state between sessions and make it safe to expose. Every program runs on Node and Bun.

November 1, 2026 12 min read
Read Story →
Runtime

Getting Started with ntcharts in TypeScript: Terminal Charts for Bubble Tea and Plain CLIs

A from-zero guide to @oakoliver/ntcharts, the TypeScript port of NimbleMarkets' terminal charting library. Print a sparkline, a bar chart, a time series and candlesticks as plain strings, then stream live CPU data into a Bubble Tea program, zoom with the keyboard and the mouse, and put three charts on one screen. Every program runs on Bun, Node and Deno.

November 1, 2026 13 min read
Read Story →
Testing

Porting Go's ntcharts to TypeScript: Terminal Charts That Match Go to the Last Bit

NimbleMarkets' ntcharts, the charting library for Bubble Tea, is now a TypeScript package: canvas, bar, line, streaming, time series, wave, sparkline and heatmap charts, candlesticks and JSON chart specs. Its output is compared byte for byte with the Go library on 342 scenarios, which meant reproducing Go's fused multiply-add and its own math functions.

November 1, 2026 12 min read
Read Story →
Runtime

Porting Go's Wish to TypeScript: SSH Apps and Bubble Tea over SSH

Charm's wish, the Go library for building SSH apps, is now a TypeScript package on top of ssh2: an SSH server with middleware, one Bubble Tea program per session, Git and SCP. 154 tests on Node and Bun, and the key-generation bug that hid behind a flaky test.

November 1, 2026 12 min read
Read Story →
Runtime

How OpenCode Renders Messages in Bubble Tea: A Source Tour

How OpenCode's Go TUI renders chat: Bubble Tea's update loop, Glamour markdown, Lip Gloss, a render cache and a viewport, then the same in TypeScript.

October 28, 2026 15 min read
Read Story →
Runtime

Getting Started with Bubbles in TypeScript: Spinners, Inputs, Lists and Tables for Terminal Apps

A from-zero guide to @oakoliver/bubbles, the TypeScript port of Charm's component library for Bubble Tea. Add a spinner, a text input, a filterable list and a table to a terminal app, then combine two components with focus switching. Every program runs on Node, Bun and Deno.

October 3, 2026 10 min read
Read Story →
Runtime

Getting Started with Bubble Tea in TypeScript: Interactive Terminal Apps in Six Small Programs

A from-zero guide to @oakoliver/bubbletea, the TypeScript port of Charm's Bubble Tea. Learn the Elm Architecture with a counter, then add key handling, timers, full-screen mode and printed output, and finish with a styled todo app. Every program runs on Node, Bun and Deno.

October 3, 2026 11 min read
Read Story →
Engineering

Porting Go's Huh? to TypeScript: Interactive Terminal Forms, Zero Dependencies

Charmbracelet's Huh? — interactive terminal forms with 7 field types, 5 themes, dynamic evaluation, and validation — is now a TypeScript package. 4,944 lines of source, 28 tests, 126 expects. The sixth Charm ecosystem port.

March 20, 2026 6 min read
Read Story →
Engineering

Porting Go's Glow to TypeScript: A Terminal Markdown Reader, Zero Dependencies

Charmbracelet's Glow — the terminal markdown reader with CLI and interactive TUI modes — is now a TypeScript package. 4,254 lines of source, 10 Go dependencies replaced, 60 tests. The fifth and final Charm port.

March 19, 2026 9 min read
Read Story →
Engineering

Porting Go's Bubble Tea to TypeScript: An Elm Architecture TUI Framework for Node.js

Charmbracelet's Bubble Tea — the Elm Architecture TUI framework — is now available as a zero-dependency TypeScript package. Event loop, input parser, renderer, 46 tests. The third of five Charm ports.

March 16, 2026 7 min read
Read Story →