← ALL TAGS

Tag: go

12 articles tagged “go” on Oak Oliver Engineering, newest first. The latest is “Porting Go's Bubblezone to TypeScript: Mouse Hit-Testing for Bubble Tea”.

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

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 →
Engineering

Porting Go's Freeze to TypeScript: Code and Terminal Screenshots, Byte for Byte

Charm's freeze turns code and terminal output into SVG, PNG and WebP images. The TypeScript port reproduces upstream's SVG byte for byte for terminal output and in everything but token colours for code, renders PNGs about 20 times faster than freeze's own WebAssembly fallback, and writes real WebP with a 455-line encoder. 100 tests, 37 golden SVGs.

November 1, 2026 12 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 →
Real-time

Porting Go-Rod to TypeScript: Browser Automation from Scratch

Go-rod — the DevTools Protocol automation library used by Charmbracelet for VHS — is being ported to TypeScript as a multi-package monorepo. Three packages complete: cdp-input (keyboard/mouse encoding), cdp (WebSocket client), and browser-launcher (process management). 107 tests, 179 expects. Zero dependencies.

March 21, 2026 7 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 Terminal UI Ecosystem to TypeScript: Glamour and Lipgloss Are Now on npm

charmbracelet/glamour and charmbracelet/lipgloss are now available as TypeScript packages. Custom GFM parser, 7 built-in themes, 645+ tests. The first two of five Charm ports.

March 16, 2026 7 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 →
Engineering

Porting Go's Bubbles to TypeScript: 15 TUI Components, Zero Dependencies

Charmbracelet's Bubbles — 15 pre-built TUI components including text inputs, viewports, tables, lists, and spinners — is now available as a zero-dependency TypeScript package. 256 tests, 11,738 lines. The fourth of five Charm ports.

March 16, 2026 7 min read
Read Story →