Skip to content

Charmbracelet lipgloss UI matching tapes cliui#26

Merged
bdougie merged 7 commits intomainfrom
feat/lipgloss-ui
Feb 26, 2026
Merged

Charmbracelet lipgloss UI matching tapes cliui#26
bdougie merged 7 commits intomainfrom
feat/lipgloss-ui

Conversation

@bdougie
Copy link
Contributor

@bdougie bdougie commented Feb 25, 2026

Summary

Replaces raw ANSI escape codes with charmbracelet/lipgloss styling to match the tapes CLI (pkg/cliui) patterns — braille dot spinner, ANSI 256 color palette, Step() with elapsed time, styled tables with color-coded state.

Commands updated

Screenshots needed for each:

mb up

Screenshot 2026-02-25 at 12 52 23 PM

mb down

Screenshot 2026-02-25 at 12 52 53 PM

mb pull <name>

Screenshot 2026-02-25 at 12 53 46 PM

mb list / mb ls

Screenshot 2026-02-25 at 12 54 40 PM

mb status --all

Screenshot 2026-02-25 at 12 55 11 PM

mb mixtapes ls

Screenshot 2026-02-25 at 12 55 40 PM

errors

Screenshot 2026-02-25 at 1 00 21 PM

Test plan

  • go run . up — braille spinner, ✓ with elapsed time, dim SSH info with ~ path
  • go run . down — single Step() spinner
  • go run . destroy — confirmation prompt + Step() spinner
  • go run . pull opencode-mixtape — Step() spinner for pull
  • go run . list — styled table, bold headers, green names, colored state
  • go run . status --all — same styled table
  • go run . mixtapes ls — styled table (no state column)

Continue Tasks: 🔄 1 running — View all

Replace raw ANSI escape codes with charmbracelet/lipgloss styling.
Adds Step() spinner, styled tables, and ANSI 256 color palette
matching the tapes CLI (pkg/cliui).
@continue
Copy link

continue bot commented Feb 25, 2026

No docs update needed. This PR is a visual/cosmetic refactor that replaces raw ANSI escape codes with charmbracelet/lipgloss styling. The changes affect terminal output appearance only:

  • Spinner animation uses braille characters instead of ASCII
  • Tables use lipgloss styling with color-coded state columns
  • Step() helper adds elapsed time display

No CLI commands, flags, configuration options, or user-facing behavior is changed. The existing README.md remains accurate.

PR #26 was opened: Charmbracelet lipgloss UI matching tapes cliui
PR URL: #26

- Warn() now colors the full message yellow (not just the ! mark)
- Root error handler uses ui.Error() for red ✗ styled output
- init command messages match tapes mock wording
- Step() skips spinner animation when output is not a TTY (piped/CI)
- Fix shortenHome to use strings.HasPrefix/TrimPrefix
- Style version command with ui.Label() for colored output
- Add 9 unit tests for Mark, FormatDuration, StateStyle, Table, Step, padRight
- Promote charmbracelet/x/term to direct dep for term.IsTerminal
Copy link
Contributor

@jpmcb jpmcb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very very nice: I was thinking we'd want this.

to match the tapes CLI (pkg/cliui) patterns

I wonder if there's enough here that we'll keep re-using that we hoist up into it's own papercomputeco/cliui package (maybe at least the ANSI colors and sane defaults so the "vibe" is all the same across these tools). I can always pick that up and refactor when this gets in.

Let me know when this is ready to review, excited to get some sexy UI in! 💅🏼

@bdougie bdougie marked this pull request as ready for review February 26, 2026 01:38
Resolve conflicts: client moved to pkg/daemon/client, EnsureDaemon
extracted. Keep lipgloss UI changes + new import paths.
@bdougie
Copy link
Contributor Author

bdougie commented Feb 26, 2026

I wonder if there's enough here that we'll keep re-using that we hoist up into it's own papercomputeco/cliui package (maybe at least the ANSI colors and sane defaults so the "vibe" is all the same across these tools).

I think papercomputeco/hifi would be a great place to surface this. Same with papercomputeco/skills is something we should consider.

@jpmcb
Copy link
Contributor

jpmcb commented Feb 26, 2026

Same with papercomputeco/skills is something we should consider.

By the power of Nix, way ahead of you!!! 😂 https://github.com/papercomputeco/skills

CI was failing because golangci-lint v2 requires a version field.
Explicitly discard fmt.Fprint* return values writing to terminal output.
Comment on lines +10 to +13
paths:
- third_party$
- builtin$
- examples$
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's this new golangci lint doing? Fine if we upgrade to version: 2, but unsure what these third_party, builtin, and examples path exclusions are

@bdougie bdougie merged commit 7fc674e into main Feb 26, 2026
9 checks passed
@bdougie bdougie deleted the feat/lipgloss-ui branch February 26, 2026 03:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants