← Back to archive

Repo of the Day

oliveryasuna/ink-frame: Grids of bordered boxes for Ink, where the borders actually join where they meet.

Published: Oct 6, 2026

Open repository ↗

Grids of bordered boxes for Ink, where the borders actually join where they meet. - oliveryasuna/ink-frame

Summary

ink-addons is a Bun monorepo of small libraries that extend Ink for terminal UIs. It focuses on one specific problem: drawing grids of bordered boxes in the terminal where the borders actually join where they meet. The repo ships three packages, each documented in its own README.

What it is useful for

The core package, @oliveryasuna/ink-frame, addresses a recurring pain point in Ink: when you place bordered boxes next to each other, their borders typically overlap or double up. ink-frame produces grids where adjacent borders share a single character, so layouts look like one connected frame instead of stacked boxes.

The other two packages build on that primitive:

  • @oliveryasuna/ink-frame-scroll adds a scrollable viewport sized to fit a given ink-frame rect, useful when a pane holds content longer than the screen.
  • @oliveryasuna/ink-frame-layout lets you declare grid templates (rows, columns, spans) that compile down to ink-frame rectangles, instead of hand-computing coordinates.

Together they are useful for CLI dashboards, REPLs, admin tools, or any Ink-based app that needs multi-pane layouts, tables with rules, or scrollable regions inside a fixed frame.

How engineers can use it

The repo is a Bun workspace, so setup uses Bun. The README pins the Bun version in .bun-version, and the documented commands are:

bun install     # install every workspace
bunx tt         # run the default 'verify' task
bunx tt --help  # list available tasks

Tasks are defined with ts-task; the root runs repo-wide checks and merges in each package's own build and lint tasks. The layout is conventional: packages/* holds the published packages, and shared/ holds build and task helpers.

For per-package API details (props, sizing rules, example code), the README explicitly directs you to each package's own README under packages/ink-frame, packages/ink-frame-scroll, and packages/ink-frame-layout. The README does not document a unified usage walkthrough beyond the workspace setup, so treat those per-package READMEs as the primary reference.

One documented constraint to be aware of: the maintainer's contribution policy does not accept fully AI-generated pull requests, and the project is licensed MIT.