go/docs/plans/completed/cli-sdk-expansion.md
Claude 674e3c3c9a
docs: archive cli-sdk-expansion plan, remove duplicate job-runner
Move completed cli-sdk-expansion plan to docs/plans/completed/ with
summary. Remove duplicate core-ide-job-runner plans (canonical copy
lives in core/cli).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 13:51:21 +00:00

1.8 KiB

CLI SDK Expansion — Completion Summary

Completed: 21 February 2026 Module: forge.lthn.ai/core/go/pkg/cli (later migrated to forge.lthn.ai/core/cli) Status: Complete — all TUI primitives shipped, then extracted to core/cli

What Was Built

Extended pkg/cli with charmbracelet TUI primitives so domain repos only import core/cli for all CLI concerns. Charmbracelet dependencies (bubbletea, bubbles, lipgloss) are encapsulated behind our own types.

Components added

Component File Purpose
RunTUI runtui.go Escape hatch with Model/Msg/Cmd/KeyMsg types
Spinner spinner.go Async handle with Update(), Done(), Fail()
ProgressBar progressbar.go Increment(), Set(), SetMessage(), Done()
InteractiveList list.go Keyboard navigation with terminal fallback
TextInput textinput.go Placeholder, masking, validation
Viewport viewport.go Scrollable content for logs, diffs, docs
Form (stub) form.go Interface defined, bufio fallback
FilePicker (stub) filepicker.go Interface defined, bufio fallback
Tabs (stub) tabs.go Interface defined, simple fallback

Subsequent migration

On 22 February 2026, pkg/cli was extracted from core/go into its own module at forge.lthn.ai/core/cli and all imports were updated. The TUI primitives now live in the standalone CLI module.

Frame upgrade (follow-on)

The Frame layout system was upgraded to implement tea.Model directly on 22 February 2026 (in core/cli), adding bubbletea lifecycle, KeyMap for configurable bindings, Navigate()/Back() for panel switching, and lipgloss-based HLCRF rendering. This was a separate plan (frame-bubbletea) that built on the SDK expansion.