Skip to content

fix(deps): update module github.com/charmbracelet/bubbles to v2 (main) - #319

Closed
crossplane-renovate[bot] wants to merge 1 commit into
mainfrom
renovate/main-github.com-charmbracelet-bubbles-2.x
Closed

fix(deps): update module github.com/charmbracelet/bubbles to v2 (main)#319
crossplane-renovate[bot] wants to merge 1 commit into
mainfrom
renovate/main-github.com-charmbracelet-bubbles-2.x

Conversation

@crossplane-renovate

@crossplane-renovate crossplane-renovate Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
github.com/charmbracelet/bubbles v1.0.0v2.2.1 age confidence

Release Notes

charmbracelet/bubbles (github.com/charmbracelet/bubbles)

v2.2.1

Compare Source

Tiny Monday bugfix

Textarea element had a bug, where you used to be able to go 1 word backwards, even if there was nothing, which resulted in the whole TUI freezing. It was now fixed by @​OxQuasar!

Changelog

Fixed
Docs
Other stuff

The Charm logo

Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

v2.2.0

Compare Source

A new Bubble and some new Textarea stuff

There are a couple nice features in today's release. Let's check em out!

If a tree falls in the forest…

At last, the tree Bubble from all star contributor @​dlvhdr’s is here! He built it for DiffNav and graciously contributed to Bubbles. We've been working with Dolev for a long time and were totally stoked when he offerd to contribute.

Select all, ctrl+c, ctrl+v…done!

Our own @​andrinoff added a bunch of awesome stuff to Textarea, including the long awaited text selection. Select, copy, and cut your way into mini text editing.

For more info see the docs.

And special thanks to @​zoriya for adding ctrl+left/right bindings.

xoxo,
Charm! 💌

Changelog

New!
Fixed
Other stuff

The Charm logo

Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

v2.1.1

Compare Source

Lil’ Textarea Fix

This is a tiny patch to fix a bug in textarea where the prompt character could be missing styling on empty lines. That’s all for now!

Thanks for using Bubbles,
Charm 🌞

Changelog

Fixed
Docs

The Charm logo

Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

v2.1.0

Compare Source

Shrink ’n’ grow your textareas

The update adds a new feature to automatically resize your textarea vertically as its content changes.

ta := textarea.New()
ta.DynamicHeight = true   // Enable dynamic resizing
ta.MinHeight = 3          // Minimum visible rows
ta.MaxHeight = 10         // Maximum visible rows
ta.MaxContentHeight = 20  // Maximum rows of content

Piece of cake, right?

Enjoy! 💘

Changelog

New!

The Charm logo

Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

v2.0.0

Compare Source

bubbles-v2-block

Bubbles v2 is here! 🫧

We're thrilled to share Bubbles v2 with you! This release accompanies Bubble Tea v2 and Lip Gloss v2 and brings a ton of consistency, new features, and quality-of-life improvements across every component. Catch 'em all:

go get charm.land/bubbletea/v2
go get charm.land/bubbles/v2
go get charm.land/lipgloss/v2

You can also check the Upgrade Guide for more info.

There are a lot of changes in here, but we've found upgrading pretty easy, especially with a linter. Read on for the full breakdown!

[!NOTE]
When in doubt, check the examples for reference — they've all been updated for v2.

🏠 New Home

Bubbles v2 now lives at charm.land:

import "charm.land/bubbles/v2"

All sub-packages follow the same pattern: charm.land/bubbles/v2/viewport, charm.land/bubbles/v2/list, etc.

🎨 Light and Dark Styles

Some Bubbles, like help, offer default styles for both light and dark backgrounds. Since Lip Gloss v2 removes AdaptiveColor, choosing light or dark is now a manual process. You've got a couple of options.

🎩 The Best Way

Have Bubble Tea query the background color for you. This properly queries the correct inputs and outputs, and happens in lockstep with your application:

func (m model) Init() tea.Cmd {
    return tea.RequestBackgroundColor
}

func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    switch msg := msg.(type) {
    case tea.BackgroundColorMsg:
        m.help.Styles = help.DefaultStyles(msg.IsDark())
        return m, nil
    }
    // ...
}

If you're using Wish you must do it this way to get the background color of the client.

🤠 The Quick Way

Use the compat package in Lip Gloss. It's less recommended because it contains blocking I/O that operates independently of Bubble Tea, and when used with Wish it won't detect the client's background:

import "charm.land/lipgloss/v2/compat"

var hasDarkBG = compat.HasDarkBackground()

h := help.New()
h.Styles = help.DefaultStyles(hasDarkBG)
👀 Or Just Pick One
h.Styles = help.DefaultLightStyles() // light mode!
h.Styles = help.DefaultDarkStyles()  // jk dark mode

This pattern applies to help, list, textarea, and textinput.

🔑 The Init You Know and Love is Back

After experimenting with a few different forms of Init during the alphas, we decided the v1 signature was the right call after all. Init was a bit too redundant for our tastes given that initialization already happens in New:

func (m Model) Init() tea.Cmd

✨ The Big Highlights

Getters and Setters Everywhere

All components now use getter/setter methods instead of exported Width and Height fields. This lets us do internal bookkeeping when things change, and it makes the API consistent across every Bubble:

// Before
vp.Width = 40
fmt.Println(vp.Width)

// After
vp.SetWidth(40)
fmt.Println(vp.Width())

Affected: filepicker, help, progress, table, textinput, viewport.

Functional Options

Constructors now use the functional options pattern instead of positional args or separate constructor functions:

vp := viewport.New(viewport.WithWidth(80), viewport.WithHeight(24))
sw := stopwatch.New(stopwatch.WithInterval(500 * time.Millisecond))
t := timer.New(30*time.Second, timer.WithInterval(100*time.Millisecond))
DefaultKeyMap is a Function Now

All DefaultKeyMap package-level variables are now functions, so you get fresh values every time:

km := textinput.DefaultKeyMap()   // was textinput.DefaultKeyMap
km := textarea.DefaultKeyMap()    // was textarea.DefaultKeyMap
km := paginator.DefaultKeyMap()   // was paginator.DefaultKeyMap
Real Cursor Support 🖱️

Both textarea and textinput now support real terminal cursors! The feature is opt-in, so by default your programs will continue to use the easy-breezy virtual cursor. Set VirtualCursor to false and use Model.Cursor() for the real deal. Check out the textarea and textinput examples to see it in action.

Cleaned House 🧹

All previously deprecated symbols have been removed:

  • NewModel variants — just use New
  • spinner.Tick() — use Model.Tick() instead
  • paginator.UsePgUpPgDownKeys and friends — customize KeyMap directly
  • filepicker.DefaultStylesWithRenderer() — Lip Gloss is pure now, use DefaultStyles()
  • viewport.HighPerformanceRendering — no longer needed
  • runeutil and memoization packages moved to internal/ (they were never meant for public use anyway)

What's Changed: the Laundry List

🔮 Cursor
  • Model.Blink renamed to Model.IsBlinked for clarity
  • Model.BlinkCmd() renamed to Model.Blink()
  • Each cursor now gets a unique ID
📂 Filepicker
  • DefaultStylesWithRenderer() removed — Lip Gloss is pure now, so just use DefaultStyles()
  • Model.Height broken into SetHeight(int) / Height() int
❓ Help
  • Model.Width broken into SetWidth(int) / Width() int
  • New DefaultStyles(isDark bool), DefaultDarkStyles(), and DefaultLightStyles()
  • Defaults to dark background styles out of the box
🥕 List
  • DefaultStyles() and NewDefaultItemStyles() now take an isDark bool parameter
  • Styles.FilterPrompt and Styles.FilterCursor have been consolidated into Styles.Filter (a textinput.Styles)
  • GlobalIndex helper added
📄 Paginator
  • DefaultKeyMap variable → DefaultKeyMap() function
  • Deprecated fields (UsePgUpPgDownKeys, UseLeftRightKeys, etc.) removed — customize KeyMap directly
🌈 Progress

This one got the biggest makeover!

  • Complete color API overhaul:
    • WithGradient / WithScaledGradientWithColors(...color.Color) — pass 2+ colors for blending
    • WithSolidFill(string)WithColors(color) — pass a single color for a solid fill
    • WithDefaultGradient()WithDefaultBlend()
    • New WithScaled(bool) to scale the blend to fit only the filled portion
    • New WithColorFunc(func(total, current float64) color.Color) for fully dynamic coloring
    • WithColorProfile removed — Bubble Tea handles this automatically now
  • Model.FullColor and Model.EmptyColor changed from string to image/color.Color
  • Model.Width broken into SetWidth(int) / Width() int
  • Model.Update now returns Model instead of tea.Model
  • Improved blend algorithm with support for multiple color stops — special thanks to the legendary @​lrstanley!
🌀 Spinner
  • Tick() package-level function removed — use Model.Tick() instead
⏱️ Stopwatch
  • NewWithInterval(d) removed — use New(WithInterval(d)) instead
  • Debounced tick messages
🔢 Table
  • Model.Width / Model.Height replaced with getter/setter methods
  • Uses ansi.Truncate instead of runewidth.Truncate
  • Fixed a critical out-of-bounds cursor bug — thanks @​s0ders!
✏️ Textarea

The big change here is real cursor support — but that's opt-in, so by default your programs will keep using the virtual cursor.

  • DefaultKeyMap variable → DefaultKeyMap() function
  • New PageUp / PageDown key bindings
  • Model.FocusedStyle / Model.BlurredStyleModel.Styles.Focused / Model.Styles.Blurred
  • Style type renamed to StyleState; new Styles struct groups Focused, Blurred, and Cursor
  • Model.SetCursor renamed to Model.SetCursorColumn
  • Model.Cursor is now func() *tea.Cursor for real cursor support
  • Model.VirtualCursor bool added — set to false when using a real cursor
  • New DefaultStyles(isDark bool), DefaultDarkStyles(), DefaultLightStyles()
  • New methods: Column(), ScrollYOffset(), ScrollPosition(), MoveToBeginning(), MoveToEnd()
  • Focus status now passed to SetPromptFunc
📜 Textinput

Most of the changes here bring textinput to parity with textarea, including real cursor support. Styling has been consolidated into a Styles struct with Focused and Blurred states:

  • DefaultKeyMap variable → DefaultKeyMap() function
  • Model.Width broken into SetWidth(int) / Width() int
  • Model.PromptStyleStyleState.Prompt
  • Model.TextStyleStyleState.Text
  • Model.PlaceholderStyleStyleState.Placeholder
  • Model.CompletionStyleStyleState.Suggestion
  • Model.Cursor is now func() *tea.Cursor for real cursor support
  • Model.VirtualCursor() / SetVirtualCursor(bool) added
  • Model.Styles() / SetStyles(Styles) added
  • New DefaultStyles(isDark bool), DefaultDarkStyles(), DefaultLightStyles()
  • Exposed matched suggestions and suggestion index
⏲️ Timer
  • NewWithInterval(timeout, interval) removed — use New(timeout, WithInterval(interval))
  • Debounced tick messages
📦 Viewport

viewport got a ton of love in v2. Let's dive in!

Breaking changes:

  • New(width, height int)New(...Option) with WithWidth / WithHeight
  • Model.Width, Model.Height, Model.YOffset replaced with getter/setter methods
  • HighPerformanceRendering removed

Shiny new features:

You can now scroll horizontally with the left and right arrow keys, and set up a custom gutter column for things like line numbers:

vp := viewport.New()
vp.SetContent("hello world")

// Show line numbers:
vp.LeftGutterFunc = func(info viewport.GutterContext) string {
    if info.Soft {
        return "     │ "
    }
    if info.Index >= info.TotalLines {
        return "   ~ │ "
    }
    return fmt.Sprintf("%4d │ ", info.Index+1)
}

Highlight parts of what's being viewed with regex:

vp.SetHighlights(regexp.MustCompile("hello").FindAllStringIndex(vp.GetContent(), -1))
vp.HighlightNext()      // highlight and navigate to next match
vp.HighlightPrevious()  // highlight and navigate to previous match
vp.ClearHighlights()    // clear all highlights

Let viewport handle soft wrapping for you:

vp.SoftWrap = true
vp.SetContent("hello world from a very long line")

Or, if you need fine control, use SetContentLines with "virtual lines" containing \n — they're treated as soft wraps automatically.

Also new:

  • Horizontal mouse wheel scrolling (thanks @​UnseenBook!)
  • GetContent() to retrieve content
  • FillHeight to pad the viewport with empty lines
  • StyleLineFunc for per-line styling
  • HighlightStyle and SelectedHighlightStyle for highlight appearance

Changelog

Fixed
  • f744b929dddecc7863cf78605c5bfc396d90abc3: fix(ci): use local golangci-lint config (@​aymanbagabas)
  • 251e612949595b006e0e4739029d45e32c6b34b6: fix(filepicker): fix a panic due to an unchecked assertion (#​891) (@​meowgorithm)
  • f3f0ca0fe2f05b56e5a0c69b226b4d752c5e8f4a: fix(lint): exclude var-naming rule for revive (@​aymanbagabas)
  • d004225e8c3b8c8ddb14a76a5101728d666396f3: fix(table): use ansi.Truncate instead of runewidth.Truncate (#​884) (@​jedevc)
  • 93a004ab70c8ea979940b2720b3993c8f68bf8dc: fix(viewport): optimize subline splitting by skipping lines without line endings (@​aymanbagabas)
  • d0166363eb8176b331de98dba1d6e997560f216f: fix: changed 'recieve' to 'receive' for 100% quality of Go Report Card (#​881) (@​Atennop1)
  • af98365cc63af118d838e05522f8dddf16ad827e: fix: lint issues (@​aymanbagabas)
Docs
  • c81d525337e1a059c4343cf65a02eea020470a48: docs(readme): update for v2 (#​888) (@​aymanbagabas)
  • 6a799f4d58cc0eaeab0874f4ce9c98b5a922bd01: docs(readme): update header image, minor corrections (@​meowgorithm)
  • 24081b3590e746db4efa2ec09e31a85e2c078427: docs: add v2 upgrade and changes guide (#​885) (@​aymanbagabas)
  • 3a5ea3e2eb42aa064bb4a0ffe3262cb2b8a1f19b: docs: update mascot image (@​aymanbagabas)
Other stuff
  • ae99f46cec66f45862c2d953bb1af31efdc4f073: feat(v2/textarea): expose Column(), clarify 0-indexing (#​875) (@​caarlos0)

💝 That's a wrap!

Feel free to reach out, ask questions, give feedback, and let us know how it's going. We'd love to know what you think.


Part of Charm.

The Charm logo

Charm热爱开源 • Charm loves open source • نحنُ نحب المصادر المفتوحة


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

@crossplane-renovate
crossplane-renovate Bot requested review from negz and removed request for a team September 1, 2026 08:09
@crossplane-renovate

crossplane-renovate Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: go.sum
Command failed: go get -t ./...
go: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2

File name: go.mod
Command failed: crossplane-nix run .#tidy
warning: Git tree '/tmp/renovate/repos/github/crossplane/cli' is dirty
go: github.com/crossplane/cli/v2/internal/terminal imports
	github.com/charmbracelet/bubbles/spinner: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/apis/dev/v1alpha1 imports
	k8s.io/apimachinery/pkg/runtime tested by
	k8s.io/apimachinery/pkg/runtime.test imports
	github.com/stretchr/testify/assert: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/apis/dev/v1alpha1 imports
	k8s.io/apimachinery/pkg/runtime tested by
	k8s.io/apimachinery/pkg/runtime.test imports
	github.com/stretchr/testify/require: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane imports
	github.com/alecthomas/kong tested by
	github.com/alecthomas/kong.test imports
	github.com/alecthomas/assert/v2: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane imports
	github.com/alecthomas/kong tested by
	github.com/alecthomas/kong.test imports
	github.com/alecthomas/repr: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane imports
	sigs.k8s.io/controller-runtime/pkg/log/zap tested by
	sigs.k8s.io/controller-runtime/pkg/log/zap.test imports
	github.com/onsi/ginkgo/v2: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane imports
	sigs.k8s.io/controller-runtime/pkg/log/zap tested by
	sigs.k8s.io/controller-runtime/pkg/log/zap.test imports
	github.com/onsi/gomega: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/common/crd imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xcrd tested by
	github.com/crossplane/crossplane-runtime/v2/pkg/xcrd.test imports
	github.com/AdaLogics/go-fuzz-headers: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/completion imports
	k8s.io/client-go/rest tested by
	k8s.io/client-go/rest.test imports
	github.com/stretchr/testify/mock: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/dependency imports
	github.com/go-git/go-git/v5/plumbing/transport tested by
	github.com/go-git/go-git/v5/plumbing/transport.test imports
	gopkg.in/check.v1: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/dependency imports
	github.com/go-git/go-git/v5/plumbing/transport/http tested by
	github.com/go-git/go-git/v5/plumbing/transport/http.test imports
	github.com/elazarl/goproxy: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/dependency imports
	github.com/go-git/go-git/v5/plumbing/transport/http tested by
	github.com/go-git/go-git/v5/plumbing/transport/http.test imports
	github.com/go-git/go-git-fixtures/v4: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/project imports
	sigs.k8s.io/controller-runtime/pkg/scheme tested by
	sigs.k8s.io/controller-runtime/pkg/scheme.test imports
	github.com/onsi/gomega/gstruct: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	github.com/moby/moby/api/types/container tested by
	github.com/moby/moby/api/types/container.test imports
	gotest.tools/v3/assert: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	github.com/moby/moby/api/types/container tested by
	github.com/moby/moby/api/types/container.test imports
	gotest.tools/v3/assert/cmp: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	github.com/moby/moby/client tested by
	github.com/moby/moby/client.test imports
	gotest.tools/v3/skip: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/git imports
	github.com/go-git/go-git/v5/plumbing/transport/ssh tested by
	github.com/go-git/go-git/v5/plumbing/transport/ssh.test imports
	github.com/armon/go-socks5: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/git imports
	github.com/go-git/go-git/v5/plumbing/transport/ssh tested by
	github.com/go-git/go-git/v5/plumbing/transport/ssh.test imports
	github.com/gliderlabs/ssh: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/storage/driver tested by
	helm.sh/helm/v3/pkg/storage/driver.test imports
	github.com/DATA-DOG/go-sqlmock: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/style imports
	github.com/charmbracelet/glamour tested by
	github.com/charmbracelet/glamour.test imports
	github.com/charmbracelet/x/exp/golden: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane imports
	sigs.k8s.io/controller-runtime/pkg/log/zap imports
	go.uber.org/zap tested by
	go.uber.org/zap.test imports
	go.uber.org/goleak: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/common/resource imports
	sigs.k8s.io/controller-runtime/pkg/client imports
	sigs.k8s.io/controller-runtime/pkg/client/apiutil tested by
	sigs.k8s.io/controller-runtime/pkg/client/apiutil.test imports
	github.com/onsi/gomega/format: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/common/resource imports
	sigs.k8s.io/controller-runtime/pkg/client imports
	sigs.k8s.io/controller-runtime/pkg/client/apiutil tested by
	sigs.k8s.io/controller-runtime/pkg/client/apiutil.test imports
	github.com/onsi/gomega/types: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/project imports
	github.com/google/go-containerregistry/pkg/authn imports
	github.com/docker/cli/cli/config/configfile tested by
	github.com/docker/cli/cli/config/configfile.test imports
	gotest.tools/v3/fs: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/project imports
	github.com/google/go-containerregistry/pkg/authn imports
	github.com/docker/cli/cli/config/configfile tested by
	github.com/docker/cli/cli/config/configfile.test imports
	gotest.tools/v3/golden: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	github.com/moby/moby/client imports
	github.com/moby/moby/api/types/plugin tested by
	github.com/moby/moby/api/types/plugin.test imports
	pgregory.net/rapid: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	github.com/moby/moby/client imports
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp tested by
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp.test imports
	go.opentelemetry.io/otel/sdk/metric: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	github.com/moby/moby/client imports
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp tested by
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp.test imports
	go.opentelemetry.io/otel/sdk/metric/metricdata: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	github.com/moby/moby/client imports
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp tested by
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp.test imports
	go.opentelemetry.io/otel/sdk/metric/metricdata/metricdatatest: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	k8s.io/kube-openapi/pkg/spec3 imports
	github.com/go-openapi/swag tested by
	github.com/go-openapi/swag.test imports
	github.com/go-openapi/testify/v2/assert: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	k8s.io/kube-openapi/pkg/spec3 imports
	github.com/go-openapi/swag tested by
	github.com/go-openapi/swag.test imports
	github.com/go-openapi/testify/v2/require: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render/contextfn imports
	google.golang.org/grpc/status tested by
	google.golang.org/grpc/status.test imports
	google.golang.org/grpc/testdata/grpc_testing_not_regenerated imports
	github.com/golang/protobuf/proto: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/top imports
	k8s.io/cli-runtime/pkg/printers imports
	github.com/moby/term tested by
	github.com/moby/term.test imports
	github.com/creack/pty: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/top imports
	sigs.k8s.io/controller-runtime imports
	sigs.k8s.io/controller-runtime/pkg/builder tested by
	sigs.k8s.io/controller-runtime/pkg/builder.test imports
	github.com/onsi/gomega/gbytes: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/action imports
	helm.sh/helm/v3/pkg/registry tested by
	helm.sh/helm/v3/pkg/registry.test imports
	github.com/distribution/distribution/v3/configuration: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/action imports
	helm.sh/helm/v3/pkg/registry tested by
	helm.sh/helm/v3/pkg/registry.test imports
	github.com/distribution/distribution/v3/registry: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/action imports
	helm.sh/helm/v3/pkg/registry tested by
	helm.sh/helm/v3/pkg/registry.test imports
	github.com/distribution/distribution/v3/registry/auth/htpasswd: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/action imports
	helm.sh/helm/v3/pkg/registry tested by
	helm.sh/helm/v3/pkg/registry.test imports
	github.com/distribution/distribution/v3/registry/storage/driver/inmemory: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/action imports
	helm.sh/helm/v3/pkg/registry tested by
	helm.sh/helm/v3/pkg/registry.test imports
	github.com/foxcpp/go-mockdns: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/action imports
	helm.sh/helm/v3/pkg/registry tested by
	helm.sh/helm/v3/pkg/registry.test imports
	github.com/phayes/freeport: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/action imports
	helm.sh/helm/v3/pkg/registry tested by
	helm.sh/helm/v3/pkg/registry.test imports
	github.com/stretchr/testify/suite: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/storage/driver imports
	github.com/jmoiron/sqlx tested by
	github.com/jmoiron/sqlx.test imports
	github.com/go-sql-driver/mysql: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/storage/driver imports
	github.com/jmoiron/sqlx tested by
	github.com/jmoiron/sqlx.test imports
	github.com/mattn/go-sqlite3: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/common/resource imports
	sigs.k8s.io/controller-runtime/pkg/client tested by
	sigs.k8s.io/controller-runtime/pkg/client.test imports
	sigs.k8s.io/controller-runtime/pkg/cache tested by
	sigs.k8s.io/controller-runtime/pkg/cache.test imports
	github.com/google/gofuzz: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/common/resource/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/resource/unstructured imports
	sigs.k8s.io/controller-tools/cmd/controller-gen imports
	sigs.k8s.io/controller-tools/pkg/applyconfiguration tested by
	sigs.k8s.io/controller-tools/pkg/applyconfiguration.test imports
	github.com/onsi/ginkgo: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/common/resource/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/resource/unstructured imports
	sigs.k8s.io/controller-tools/cmd/controller-gen imports
	sigs.k8s.io/controller-tools/pkg/applyconfiguration tested by
	sigs.k8s.io/controller-tools/pkg/applyconfiguration.test imports
	github.com/onsi/ginkgo/extensions/table: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/common/resource/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/resource/unstructured imports
	sigs.k8s.io/controller-tools/cmd/controller-gen imports
	sigs.k8s.io/controller-tools/pkg/crd tested by
	sigs.k8s.io/controller-tools/pkg/crd.test imports
	golang.org/x/tools/go/packages/packagestest: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	k8s.io/kube-openapi/pkg/spec3 imports
	github.com/go-openapi/swag imports
	github.com/go-openapi/swag/jsonutils tested by
	github.com/go-openapi/swag/jsonutils.test imports
	github.com/go-openapi/swag/jsonutils/fixtures_test: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render imports
	k8s.io/kube-openapi/pkg/spec3 imports
	github.com/go-openapi/swag imports
	github.com/go-openapi/swag/loading tested by
	github.com/go-openapi/swag/loading.test imports
	github.com/go-openapi/testify/enable/yaml/v2: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/crd imports
	k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder imports
	k8s.io/kube-openapi/pkg/aggregator tested by
	k8s.io/kube-openapi/pkg/aggregator.test imports
	k8s.io/kube-openapi/pkg/handler imports
	github.com/NYTimes/gziphandler: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/controlplane imports
	sigs.k8s.io/kind/pkg/cluster imports
	sigs.k8s.io/kind/pkg/cluster/internal/create imports
	al.essio.dev/pkg/shellescape tested by
	al.essio.dev/pkg/shellescape.test imports
	github.com/google/shlex: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/action imports
	github.com/Masterminds/sprig/v3 imports
	github.com/spf13/cast tested by
	github.com/spf13/cast.test imports
	github.com/frankban/quicktest: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/storage/driver imports
	github.com/rubenv/sql-migrate imports
	github.com/go-gorp/gorp/v3 tested by
	github.com/go-gorp/gorp/v3.test imports
	github.com/poy/onpar: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/storage/driver imports
	github.com/rubenv/sql-migrate imports
	github.com/go-gorp/gorp/v3 tested by
	github.com/go-gorp/gorp/v3.test imports
	github.com/poy/onpar/expect: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/helm imports
	helm.sh/helm/v3/pkg/storage/driver imports
	github.com/rubenv/sql-migrate imports
	github.com/go-gorp/gorp/v3 tested by
	github.com/go-gorp/gorp/v3.test imports
	github.com/poy/onpar/matchers: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/in-toto/in-toto-golang/in_toto imports
	github.com/secure-systems-lab/go-securesystemslib/dsse tested by
	github.com/secure-systems-lab/go-securesystemslib/dsse.test imports
	github.com/codahale/rfc6979: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/rekor/pkg/types/dsse/v0.0.1 tested by
	github.com/sigstore/rekor/pkg/types/dsse/v0.0.1.test imports
	github.com/AdamKorcz/go-fuzz-headers-1: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/pkg/validate imports
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation imports
	k8s.io/component-base/metrics tested by
	k8s.io/component-base/metrics.test imports
	github.com/prometheus/client_golang/prometheus/testutil imports
	github.com/kylelemons/godebug/diff: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/render/contextfn imports
	google.golang.org/grpc imports
	google.golang.org/grpc/balancer/roundrobin imports
	google.golang.org/grpc/balancer/endpointsharding tested by
	google.golang.org/grpc/balancer/endpointsharding.test imports
	google.golang.org/grpc/internal/testutils/roundrobin imports
	gonum.org/v1/gonum/stat/distuv: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/rekor/pkg/types/dsse/v0.0.1 tested by
	github.com/sigstore/rekor/pkg/types/dsse/v0.0.1.test imports
	github.com/sigstore/rekor/pkg/fuzz imports
	github.com/sassoftware/relic/v7/lib/certloader: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/rekor/pkg/types/dsse/v0.0.1 tested by
	github.com/sigstore/rekor/pkg/types/dsse/v0.0.1.test imports
	github.com/sigstore/rekor/pkg/fuzz imports
	github.com/sassoftware/relic/v7/lib/signjar: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/rekor/pkg/types/intoto tested by
	github.com/sigstore/rekor/pkg/types/intoto.test imports
	github.com/sigstore/rekor/pkg/sharding imports
	github.com/google/trillian/types: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/sigstore-go/pkg/verify imports
	github.com/sigstore/rekor-tiles/v2/pkg/types/hashedrekord tested by
	github.com/sigstore/rekor-tiles/v2/pkg/types/hashedrekord.test imports
	github.com/go-test/deep: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/sigstore/sigstore/pkg/signature/kms/aws: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/sigstore/sigstore/pkg/signature/kms/azure: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/sigstore/sigstore/pkg/signature/kms/gcp: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/sigstore/sigstore/pkg/signature/kms/hashivault: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/tink-crypto/tink-go-awskms/v3/integration/awskms: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/tink-crypto/tink-go-gcpkms/v2/integration/gcpkms: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/tink-crypto/tink-go-hcvault/v2/integration/hcvault: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/tink-crypto/tink-go/v2/core/registry: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/tink-crypto/tink-go/v2/keyset: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/tink-crypto/tink-go/v2/tink: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/pkg/validate imports
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation tested by
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation.test imports
	k8s.io/apiextensions-apiserver/pkg/registry/customresource imports
	k8s.io/apiserver/pkg/registry/generic imports
	k8s.io/apiserver/pkg/storage/storagebackend/factory imports
	github.com/grpc-ecosystem/go-grpc-prometheus: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/pkg/validate imports
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation tested by
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation.test imports
	k8s.io/apiextensions-apiserver/pkg/registry/customresource imports
	k8s.io/apiserver/pkg/registry/generic imports
	k8s.io/apiserver/pkg/storage/storagebackend/factory imports
	go.etcd.io/etcd/client/pkg/v3/logutil: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/pkg/validate imports
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation tested by
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation.test imports
	k8s.io/apiextensions-apiserver/pkg/registry/customresource imports
	k8s.io/apiserver/pkg/registry/generic imports
	k8s.io/apiserver/pkg/storage/storagebackend/factory imports
	go.etcd.io/etcd/client/pkg/v3/transport: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/pkg/validate imports
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation tested by
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation.test imports
	k8s.io/apiextensions-apiserver/pkg/registry/customresource imports
	k8s.io/apiserver/pkg/registry/generic imports
	k8s.io/apiserver/pkg/storage/storagebackend/factory imports
	go.etcd.io/etcd/client/v3: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/pkg/validate imports
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation tested by
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation.test imports
	k8s.io/apiextensions-apiserver/pkg/registry/customresource imports
	k8s.io/apiserver/pkg/registry/generic imports
	k8s.io/apiserver/pkg/storage/storagebackend/factory imports
	go.etcd.io/etcd/client/v3/kubernetes: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/pkg/validate imports
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation tested by
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation.test imports
	k8s.io/apiextensions-apiserver/pkg/registry/customresource imports
	k8s.io/apiserver/pkg/registry/generic imports
	k8s.io/apiserver/pkg/storage/storagebackend/factory imports
	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/cmd/crossplane/common/resource/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg imports
	github.com/google/go-containerregistry/pkg/authn/k8schain imports
	github.com/chrismellard/docker-credential-acr-env/pkg/credhelper imports
	github.com/Azure/go-autorest/autorest/azure/auth imports
	github.com/Azure/go-autorest/autorest tested by
	github.com/Azure/go-autorest/autorest.test imports
	github.com/Azure/go-autorest/autorest/mocks: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/functions imports
	github.com/google/ko/pkg/build imports
	github.com/sigstore/cosign/v2/pkg/oci imports
	github.com/sigstore/cosign/v2/pkg/cosign/bundle imports
	github.com/sigstore/sigstore-go/pkg/sign imports
	github.com/sigstore/sigstore/pkg/oauthflow tested by
	github.com/sigstore/sigstore/pkg/oauthflow.test imports
	github.com/go-rod/rod: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/functions imports
	github.com/google/ko/pkg/build imports
	github.com/sigstore/cosign/v2/pkg/oci imports
	github.com/sigstore/cosign/v2/pkg/cosign/bundle imports
	github.com/sigstore/sigstore-go/pkg/sign imports
	github.com/sigstore/sigstore/pkg/oauthflow tested by
	github.com/sigstore/sigstore/pkg/oauthflow.test imports
	github.com/go-rod/rod/lib/launcher: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/rekor/pkg/types/intoto tested by
	github.com/sigstore/rekor/pkg/types/intoto.test imports
	github.com/sigstore/rekor/pkg/sharding imports
	github.com/sigstore/rekor/pkg/signer imports
	github.com/grpc-ecosystem/go-grpc-middleware/retry: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/rekor/pkg/types/intoto tested by
	github.com/sigstore/rekor/pkg/types/intoto.test imports
	github.com/sigstore/rekor/pkg/sharding imports
	github.com/sigstore/rekor/pkg/signer imports
	go.step.sm/crypto/pemutil: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/rekor/pkg/types/intoto tested by
	github.com/sigstore/rekor/pkg/types/intoto.test imports
	github.com/sigstore/rekor/pkg/sharding imports
	github.com/sigstore/rekor/pkg/signer imports
	google.golang.org/api/option: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/rekor/pkg/types/intoto tested by
	github.com/sigstore/rekor/pkg/types/intoto.test imports
	github.com/sigstore/rekor/pkg/sharding imports
	github.com/sigstore/rekor/pkg/trillianclient imports
	github.com/google/trillian: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/rekor/pkg/types/intoto tested by
	github.com/sigstore/rekor/pkg/types/intoto.test imports
	github.com/sigstore/rekor/pkg/sharding imports
	github.com/sigstore/rekor/pkg/trillianclient imports
	github.com/google/trillian/client: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/sigstore-go/pkg/tlog imports
	github.com/sigstore/rekor-tiles/v2/pkg/verify tested by
	github.com/sigstore/rekor-tiles/v2/pkg/verify.test imports
	github.com/transparency-dev/formats/note imports
	filippo.io/mldsa: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/sigstore-go/pkg/verify imports
	github.com/google/certificate-transparency-go/ctutil imports
	github.com/google/certificate-transparency-go/loglist3 tested by
	github.com/google/certificate-transparency-go/loglist3.test imports
	github.com/kylelemons/godebug/pretty: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/sigstore/pkg/cryptoutils/goodkey imports
	github.com/letsencrypt/boulder/goodkey tested by
	github.com/letsencrypt/boulder/goodkey.test imports
	github.com/letsencrypt/boulder/test imports
	github.com/jmhodges/clock: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/sigstore/sigstore/pkg/signature/tink imports
	github.com/tink-crypto/tink-go/v2/insecuresecretdataaccess: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/sigstore/sigstore/pkg/signature/tink imports
	github.com/tink-crypto/tink-go/v2/signature/ecdsa: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/timestamp-authority/v2/pkg/verification tested by
	github.com/sigstore/timestamp-authority/v2/pkg/verification.test imports
	github.com/sigstore/timestamp-authority/v2/pkg/signer imports
	github.com/sigstore/sigstore/pkg/signature/tink imports
	github.com/tink-crypto/tink-go/v2/signature/ed25519: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/pkg/validate imports
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation tested by
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation.test imports
	k8s.io/apiextensions-apiserver/pkg/registry/customresource imports
	k8s.io/apiserver/pkg/registry/generic imports
	k8s.io/apiserver/pkg/storage/storagebackend imports
	k8s.io/apiserver/pkg/storage/etcd3 imports
	go.etcd.io/etcd/api/v3/mvccpb: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/pkg/validate imports
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation tested by
	k8s.io/apiextensions-apiserver/pkg/apiserver/validation.test imports
	k8s.io/apiextensions-apiserver/pkg/registry/customresource imports
	k8s.io/apiserver/pkg/registry/generic imports
	k8s.io/apiserver/pkg/storage/storagebackend imports
	k8s.io/apiserver/pkg/storage/etcd3 imports
	go.etcd.io/etcd/api/v3/v3rpc/rpctypes: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/project/functions imports
	github.com/google/ko/pkg/build imports
	github.com/sigstore/cosign/v2/pkg/oci imports
	github.com/sigstore/cosign/v2/pkg/cosign/bundle imports
	github.com/sigstore/sigstore-go/pkg/sign imports
	github.com/sigstore/rekor/pkg/client imports
	github.com/hashicorp/go-retryablehttp tested by
	github.com/hashicorp/go-retryablehttp.test imports
	github.com/hashicorp/go-hclog: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2
go: github.com/crossplane/cli/v2/internal/xpkg imports
	github.com/crossplane/crossplane-runtime/v2/pkg/xpkg/signature imports
	github.com/sigstore/cosign/v3/pkg/cosign imports
	github.com/sigstore/sigstore/pkg/tuf imports
	github.com/theupdateframework/go-tuf/client/leveldbstore imports
	github.com/syndtr/goleveldb/leveldb tested by
	github.com/syndtr/goleveldb/leveldb.test imports
	github.com/syndtr/goleveldb/leveldb/testutil imports
	github.com/onsi/ginkgo/config: github.com/charmbracelet/bubbles/v2@v2.2.1: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2

@crossplane-renovate
crossplane-renovate Bot force-pushed the renovate/main-github.com-charmbracelet-bubbles-2.x branch from a8c40d2 to 1b74703 Compare September 2, 2026 08:08
@crossplane-renovate
crossplane-renovate Bot force-pushed the renovate/main-github.com-charmbracelet-bubbles-2.x branch from 1b74703 to 3663a50 Compare September 8, 2026 21:58
adamwg added a commit to adamwg/crossplane-cli that referenced this pull request Sep 10, 2026
The charmbracelet libraries we use for pretty terminal rendering have all been
updated to v2 and changed their import paths to a vanity domain. There are
couple of small code changes necessary to adopt the new versions, but nothing
concerning.

Closes crossplane#319
Closes crossplane#320
Closes crossplane#326
Closes crossplane#327

Signed-off-by: Adam Wolfe Gordon <awg@upbound.io>
@adamwg adamwg closed this in #356 Sep 10, 2026
@crossplane-renovate
crossplane-renovate Bot deleted the renovate/main-github.com-charmbracelet-bubbles-2.x branch September 11, 2026 08:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants