Skip to content

fix(deps): update all dependencies#9259

Open
renovate[bot] wants to merge 1 commit intomasterfrom
renovate/all
Open

fix(deps): update all dependencies#9259
renovate[bot] wants to merge 1 commit intomasterfrom
renovate/all

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate bot commented Aug 20, 2025

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update
code.cloudfoundry.org/clock v1.61.0v1.64.0 age confidence require minor
code.cloudfoundry.org/credhub-cli 3ed7ad5fd25714 age confidence require digest
code.cloudfoundry.org/lager/v3 v3.61.0v3.64.0 age confidence require minor
code.cloudfoundry.org/localip v0.63.0v0.66.0 age confidence require minor
github.com/aws/aws-sdk-go-v2 v1.41.1v1.41.5 age confidence require patch
github.com/aws/aws-sdk-go-v2/config v1.32.9v1.32.14 age confidence require patch
github.com/aws/aws-sdk-go-v2/credentials v1.19.9v1.19.14 age confidence require patch
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.1v1.41.5 age confidence require patch
github.com/aws/aws-sdk-go-v2/service/ssm v1.67.8v1.68.4 age confidence require minor
github.com/aws/smithy-go v1.24.0v1.24.3 age confidence require patch
github.com/caarlos0/env/v11 v11.3.1v11.4.0 age confidence require minor
github.com/charmbracelet/bubbles v1.0.0v2.1.0 age confidence require major
github.com/charmbracelet/bubbletea v1.3.10v2.0.2 age confidence require major
github.com/charmbracelet/lipgloss v1.1.0v2.0.2 age confidence require major
github.com/concourse/dex v1.12.0v1.13.0 age confidence require minor
github.com/containerd/containerd v1.7.30v2.2.2 age confidence require major
github.com/containerd/containerd/v2 v2.2.1v2.2.2 age confidence require patch
github.com/cyberark/conjur-api-go v0.13.16v0.13.19 age confidence require patch
github.com/fatih/color v1.18.0v1.19.0 age confidence require minor
github.com/goccy/go-yaml v1.19.1v1.19.2 age confidence require patch
github.com/hashicorp/vault/api v1.22.0v1.23.0 age confidence require minor
github.com/jackc/pgx/v5 v5.8.0v5.9.1 age confidence require minor
github.com/klauspost/compress v1.18.4v1.18.5 age confidence require patch
github.com/maxbrunsfeld/counterfeiter/v6 v6.12.1v6.12.2 age confidence require patch
go.opentelemetry.io/otel v1.40.0v1.43.0 age confidence require minor
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0v1.43.0 age confidence require minor
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0v1.43.0 age confidence require minor
go.opentelemetry.io/otel/sdk v1.40.0v1.43.0 age confidence require minor
go.opentelemetry.io/otel/trace v1.40.0v1.43.0 age confidence require minor
go.yaml.in/yaml/v2 v2.4.3v2.4.4 age confidence require patch
golang.org/x/crypto v0.48.0v0.49.0 age confidence require minor
golang.org/x/oauth2 v0.35.0v0.36.0 age confidence require minor
golang.org/x/sync v0.19.0v0.20.0 age confidence require minor
golang.org/x/sys v0.41.0v0.42.0 age confidence require minor
golang.org/x/term v0.40.0v0.41.0 age confidence require minor
golang.org/x/time v0.14.0v0.15.0 age confidence require minor
google.golang.org/grpc v1.79.3v1.80.0 age confidence require minor
k8s.io/api v0.35.1v0.35.3 age confidence require patch
k8s.io/apimachinery v0.35.1v0.35.3 age confidence require patch
k8s.io/client-go v0.35.1v0.35.3 age confidence require patch

Release Notes

cloudfoundry/clock (code.cloudfoundry.org/clock)

v1.64.0: 1.64.0

Compare Source

v1.63.0: 1.63.0

Compare Source

v1.62.0: 1.62.0

Compare Source

cloudfoundry/lager (code.cloudfoundry.org/lager/v3)

v3.64.0: 3.64.0

Compare Source

v3.63.0: 3.63.0

Compare Source

v3.62.0: 3.62.0

Compare Source

cloudfoundry/localip (code.cloudfoundry.org/localip)

v0.66.0: 0.66.0

Compare Source

v0.65.0: 0.65.0

Compare Source

v0.64.0: 0.64.0

Compare Source

aws/aws-sdk-go-v2 (github.com/aws/aws-sdk-go-v2)

v1.41.5

Compare Source

Module Highlights

  • github.com/aws/aws-sdk-go-v2/service/bedrockagentruntime: v1.5.0
    • Feature: This release adds support to customize prompts sent through the RetrieveAndGenerate API in Agents for Amazon Bedrock.
  • github.com/aws/aws-sdk-go-v2/service/costexplorer: v1.37.0
    • Feature: Adds support for backfill of cost allocation tags, with new StartCostAllocationTagBackfill and ListCostAllocationTagBackfillHistory API.
  • github.com/aws/aws-sdk-go-v2/service/ec2: v1.154.0
    • Feature: Documentation updates for Elastic Compute Cloud (EC2).
  • github.com/aws/aws-sdk-go-v2/service/ecs: v1.41.5
    • Documentation: This is a documentation update for Amazon ECS.
  • github.com/aws/aws-sdk-go-v2/service/finspace: v1.24.0
    • Feature: Add new operation delete-kx-cluster-node and add status parameter to list-kx-cluster-node operation.

v1.41.4

Compare Source

General Highlights

  • Dependency Update: Updated to the latest SDK module versions

Module Highlights

  • github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue: v1.13.12
    • Bug Fix: Removes some duplicated reflection-based calls in the marshaler.
  • github.com/aws/aws-sdk-go-v2/service/codebuild: v1.32.0
    • Feature: Supporting GitLab and GitLab Self Managed as source types in AWS CodeBuild.
  • github.com/aws/aws-sdk-go-v2/service/ec2: v1.153.0
    • Feature: Added support for ModifyInstanceMetadataDefaults and GetInstanceMetadataDefaults to set Instance Metadata Service account defaults
  • github.com/aws/aws-sdk-go-v2/service/ecs: v1.41.4
    • Documentation: Documentation only update for Amazon ECS.
  • github.com/aws/aws-sdk-go-v2/service/emrcontainers: v1.26.0
    • Feature: This release increases the number of supported job template parameters from 20 to 100.
  • github.com/aws/aws-sdk-go-v2/service/globalaccelerator: v1.23.0
    • Feature: AWS Global Accelerator now supports cross-account sharing for bring your own IP addresses.
  • github.com/aws/aws-sdk-go-v2/service/medialive: v1.49.0
    • Feature: Exposing TileMedia H265 options
  • github.com/aws/aws-sdk-go-v2/service/sagemaker: v1.134.0
    • Feature: Introduced support for the following new instance types on SageMaker Studio for JupyterLab and CodeEditor applications: m6i, m6id, m7i, c6i, c6id, c7i, r6i, r6id, r7i, and p5

v1.41.3

Compare Source

v1.41.2

Compare Source

Module Highlights

  • github.com/aws/aws-sdk-go-v2/service/deadline: v1.14.0
    • Feature: Added fields to track cumulative task retry attempts for steps and jobs
  • github.com/aws/aws-sdk-go-v2/service/ec2: v1.227.0
    • Feature: This release adds support for OdbNetworkArn as a target in VPC Route Tables
  • github.com/aws/aws-sdk-go-v2/service/iotmanagedintegrations: v1.1.0
    • Feature: Adding managed integrations APIs for IoT Device Management to onboard and control devices across different manufacturers, connectivity protocols and third party vendor clouds. APIs include managed thing operations, provisioning profile management, and cloud connector operations.
  • github.com/aws/aws-sdk-go-v2/service/keyspaces: v1.19.0
    • Feature: This release provides change data capture (CDC) streams support through updates to the Amazon Keyspaces API.
  • github.com/aws/aws-sdk-go-v2/service/keyspacesstreams: v1.0.0
    • Release: New AWS service client module
    • Feature: This release adds change data capture (CDC) streams support through the new Amazon Keyspaces Streams API.
  • github.com/aws/aws-sdk-go-v2/service/kms: v1.41.2
    • Documentation: This release updates AWS CLI examples for KMS APIs.
  • github.com/aws/aws-sdk-go-v2/service/qbusiness: v1.27.0
    • Feature: Added support for App level authentication for QBusiness DataAccessor using AWS IAM Identity center Trusted Token issuer
  • github.com/aws/aws-sdk-go-v2/service/workspaces: v1.58.0
    • Feature: Updated modifyStreamingProperties to support PrivateLink VPC endpoints for directories
aws/smithy-go (github.com/aws/smithy-go)

v1.24.3

Compare Source

General Highlights

  • Dependency Update: Updated to the latest SDK module versions

Module Highlights

  • github.com/aws/smithy-go: v1.24.3
    • Bug Fix: Add additional sigv4 configuration.
  • github.com/aws/smithy-go/aws-http-auth: v1.1.3
    • Bug Fix: Add additional sigv4 configuration.

v1.24.2: Release (2026-02-27)

Compare Source

Release (2026-02-27)

General Highlights

  • Dependency Update: Bump minimum go version to 1.24.

v1.24.1

Compare Source

General Highlights

  • Dependency Update: Updated to the latest SDK module versions

Module Highlights

  • github.com/aws/smithy-go: v1.24.1
    • Feature: Add new middleware functions to get event stream output from middleware
caarlos0/env (github.com/caarlos0/env/v11)

v11.4.0

Compare Source

Changelog

New Features
Bug fixes
Documentation updates
Other work

Released with GoReleaser Pro!

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

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 • نحنُ نحب المصادر المفتوحة

charmbracelet/bubbletea (github.com/charmbracelet/bubbletea)

v2.0.2

Compare Source

This release contains a small patch fixing a rendering that might affect Wish users running on Unix platforms.

Changelog

Fixed

The Charm logo

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

v2.0.1

Compare Source

A small patch release to fix opening the proper default stdin file for input.

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.0.0

Compare Source

bubbletea-v2-block

What's New in Bubble Tea v2

We're very excited to announce the second major release of Bubble Tea!

If you (or your LLM) are just looking for technical details on on migrating from v1, please check out the Upgrade Guide.

[!NOTE]
We don't take API changes lightly and strive to make the upgrade process as simple as possible. We believe the changes bring necessary improvements as well as pave the way for the future. If something feels way off, let us know.

❤️ Charm Land Import Path

We've updated our import paths to use vanity domains and use our domain to import Go packages.

// Before
import tea "github.com/charmbracelet/bubbletea"

// After
import tea "charm.land/bubbletea/v2"

Everything else stays the same 🙂

👾 The Cursed Renderer

Bubble Tea v2 ships with the all-new Cursed Renderer which was built from the ground up. It's based on the ncurses rendering algorithm and is highly optimized for speed, efficiency, and accuracy and is built on an enormous amount of research and development.

Optimized renders also means that Wish users get big performance benefits and lower bandwidth usage by orders of magnitude.

To take advantage of the new Cursed Renderer you don't need to do anything at all except keep on using the Bubble Tea you know and love.

✌️ Key handling is way better now

Newer terminals can now take advantage of all sorts keyboard input via progressive keyboard enhancements. You can now map all sorts of keys and modifiers like shift+enter and super+space. You can also detect key releases (we're looking at you, game developers).

It's easy to detect support for supporting terminals and add fallbacks for those that don't. For details, see keyboard enhancements below.

🥊 No more fighting

In the past, Bubble Tea and Lip Gloss would often fight over i/o. Bubble Tea wanted to read keyboard input and Lip Gloss wanted to query for the background color. This means that things could get messy. Not anymore! In v2, Lip Gloss is now pure, which means, Bubble Tea manages i/o and gives orders to Lip Gloss. In short, we only need one lib to call the shots, and in the context of this relationship, that lib is Bubble Tea.

But what about color downsampling? That's a great question.

👨🏻‍🎨 Built-in Color Downsampling

We sneakily released a little library called colorprofile that will detect the terminal's color profile and auto-downsample any ANSI styling that flows through it to the best available color profile. This means that color will "just work" (and not misbehave) no matter where the ANSI styling comes from.

Downsampling is built-into Bubble Tea and is automatically enabled.

🧘 Declarative, Not Imperative

This is a big one. In v1, you'd toggle terminal features on and off with commands like tea.EnterAltScreen, tea.EnableMouseCellMotion, tea.EnableReportFocus, and so on. In v2, all of that is gone and replaced by fields on the View struct. You just declare what you want your view to look like and Bubble Tea takes care of the rest.

This means no more fighting over startup options and commands. Just set the fields and forget about it. For example, to enter full screen mode:

func (m Model) View() tea.View {
    v := tea.NewView("Hello, full screen!")
    v.AltScreen = true
    return v
}

The same goes for mouse mode, bracketed paste, focus reporting, window title, keyboard enhancements, and more. See A Declarative View below for the full picture.

Keyboard Enhancements

Progressive keyboard enhancements allow you to receive key events not normally possible in traditional terminals. For example, you can now listen for the ctrl+m key, as well as previously unavailable key combinations like shift+enter.

Bubble Tea v2 will always try to enable basic keyboard enhancements that disambiguate keys. If your terminal supports it, your program will receive a tea.KeyboardEnhancementsMsg message that indicates support for requested features.

func (m Model) View() tea.View {
    var v tea.View
    // ...
    v.KeyboardEnhancements.ReportEventTypes = true           // Enable key release events
    return v
}

Historically, certain key combinations in terminals map to control codes. For example, ctrl+h outputs a backspace by default, which means you can't normally bind a key event to ctrl+h. With key disambiguation, you can now actually bind events to those key combinations.

You can detect if a terminal supports keyboard enhancements by listening for tea.KeyboardEnhancementsMsg.

func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
    switch msg := msg.(type) {
    case tea.KeyboardEnhancementsMsg:
        if msg.SupportsKeyDisambiguation() {
            // More keys, please!
        }
    }
}
Which terminals support progressive enhancement?

Key Messages

Key messages are now split into tea.KeyPressMsg and tea.KeyReleaseMsg. Use tea.KeyMsg to match against both. We've also replaced key.Type and key.Runes with key.Code and key.Text. Modifiers live in key.Mod now instead of being separate booleans. Oh, and space bar returns "space" instead of " ".

The easiest way to match against key press events is to use msg.String():

func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    switch msg := msg.(type) {
    case tea.KeyPressMsg:
        switch msg.String() {
        case "space":
            // Space bar returns "space" now :D
            return m, tea.Println("You pressed the space bar!")
        case "ctrl+c":
            return m, tea.SetClipboard("Howdy")
        case "shift+enter":
            // Awesome, right?
        case "ctrl+alt+super+enter":
            // Yes, you can do that now!
        }
    }
}

The Key struct also has some nice new fields:

  • key.BaseCode — the key according to a standard US PC-101 layout. Handy for international keyboards where the physical key might differ.
  • key.IsRepeat — tells you if the key is being held down and auto-repeating. Only available with the Kitty Keyboard Protocol or Windows Console API.
  • key.Keystroke() — a new method that returns the keystroke representation (e.g., "ctrl+shift+alt+a"). Unlike String(), it always includes modifier info.

For the full list of changes and before/after code samples, see the Upgrade Guide.

Paste Messages

Paste events used to arrive as tea.KeyMsg with a confusing msg.Paste flag. Now they're their own thing:

func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    switch msg := msg.(type) {
    case tea.PasteMsg:
        // Here comes a paste!
        m.text += msg.Content
    case tea.PasteStartMsg:
        // The user started pasting.
    case tea.PasteEndMsg:
        // The user stopped pasting.
    }
}

Mouse Messages

We've improved the mouse API. Mouse messages are now split into tea.MouseClickMsg, tea.MouseReleaseMsg, tea.MouseWheelMsg, and tea.MouseMotionMsg. And mouse mode is set declaratively in your View():

func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    switch msg := msg.(type) {
    case tea.MouseClickMsg:
        if msg.Button == tea.MouseLeft {
            // Clickety click
        }
    case tea.MouseWheelMsg:
        // Scroll, scroll, scrollllll
    }
    return m, nil
}

func (m model) View() tea.View {
    v := tea.NewView("Move that mouse around!")
    v.MouseMode = tea.MouseModeAllMotion // or tea.MouseModeCellMotion
    return v
}

A Declarative View

In v1, View() returned a string. In v2, it returns a tea.View struct that lets you declare everything about your view — content, cursor, alt screen, mouse mode, colors, window title, progress bar, and more:

type View struct {
	Content                   string
	OnMouse                   func(msg MouseMsg) Cmd
	Cursor                    *Cursor
	BackgroundColor

</details>

---

### Configuration

📅 **Schedule**: 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.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/concourse/concourse).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS44MS4yIiwidXBkYXRlZEluVmVyIjoiNDMuMTAyLjExIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyIsIm1pc2MiLCJyZWxlYXNlL3VuZG9jdW1lbnRlZCJdfQ==-->

@renovate renovate bot requested a review from a team as a code owner August 20, 2025 18:08
@renovate renovate bot added misc release/undocumented This didn't warrant being documented or put in release notes. labels Aug 20, 2025
@renovate
Copy link
Copy Markdown
Contributor Author

renovate bot commented Aug 20, 2025

ℹ Artifact update notice

File name: go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 44 additional dependencies were updated

Details:

Package Change
github.com/Microsoft/hcsshim v0.13.0 -> v0.14.0-rc.1
github.com/beevik/etree v1.5.1 -> v1.6.0
github.com/cloudfoundry/socks5-proxy v0.2.156 -> v0.2.162
github.com/go-sql-driver/mysql v1.9.2 -> v1.9.3
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 -> v2.27.3
github.com/hashicorp/go-version v1.7.0 -> v1.8.0
github.com/mattn/go-sqlite3 v1.14.28 -> v1.14.32
github.com/modern-go/reflect2 v1.0.2 -> v1.0.3-0.20250322232337-35a7c28c31ee
github.com/prometheus/common v0.65.0 -> v0.66.1
go.opentelemetry.io/proto/otlp v1.7.0 -> v1.9.0
golang.org/x/mod v0.30.0 -> v0.31.0
golang.org/x/net v0.47.0 -> v0.48.0
golang.org/x/text v0.31.0 -> v0.32.0
golang.org/x/tools v0.39.0 -> v0.40.0
google.golang.org/api v0.243.0 -> v0.249.0
google.golang.org/genproto v0.0.0-20250728155136-f173205681a0 -> v0.0.0-20250922171735-9219d122eba9
google.golang.org/protobuf v1.36.7 -> v1.36.10
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff -> v0.0.0-20250710124328-f3f2b991d03b
k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e -> v0.0.0-20250604170112-4c0f3b243397
cloud.google.com/go/auth v0.16.3 -> v0.16.5
cloud.google.com/go/compute/metadata v0.7.0 -> v0.9.0
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 -> v0.54.0
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3 -> v1.18.16
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3 -> v1.4.16
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3 -> v2.7.16
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 -> v1.8.4
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 -> v1.13.4
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3 -> v1.13.16
github.com/aws/aws-sdk-go-v2/service/sso v1.28.0 -> v1.30.7
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0 -> v1.35.12
github.com/containerd/cgroups/v3 v3.0.5 -> v3.1.0
github.com/containerd/platforms v1.0.0-rc.1 -> v1.0.0-rc.2
github.com/coreos/go-systemd/v22 v22.5.0 -> v22.6.0
github.com/emicklei/go-restful/v3 v3.12.2 -> v3.13.0
github.com/fxamacker/cbor/v2 v2.7.0 -> v2.9.0
github.com/google/gnostic-models v0.6.9 -> v0.7.0
github.com/google/pprof v0.0.0-20251114195745-4902fdda35c8 -> v0.0.0-20251208000136-3d256cb9ff16
github.com/mattn/go-runewidth v0.0.16 -> v0.0.19
go.opentelemetry.io/auto/sdk v1.1.0 -> v1.2.1
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 -> v0.63.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 -> v0.63.0
go.opentelemetry.io/otel/metric v1.37.0 -> v1.39.0
google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 -> v0.0.0-20251202230838-ff82c1b0f217
google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 -> v0.0.0-20251202230838-ff82c1b0f217

@renovate renovate bot force-pushed the renovate/all branch 8 times, most recently from f13b19b to 682e5de Compare August 26, 2025 02:50
@renovate renovate bot force-pushed the renovate/all branch 6 times, most recently from 06de775 to b58a73b Compare August 31, 2025 10:12
@renovate renovate bot force-pushed the renovate/all branch 9 times, most recently from 4a8cb39 to e4c4462 Compare September 9, 2025 01:31
@renovate renovate bot force-pushed the renovate/all branch 11 times, most recently from 108960e to 075ffac Compare October 2, 2025 15:47
@renovate renovate bot force-pushed the renovate/all branch 12 times, most recently from 0aa09c4 to 96a08b0 Compare October 8, 2025 15:09
@Kump3r
Copy link
Copy Markdown
Contributor

Kump3r commented Nov 17, 2025

There is an OSV finding, that would be fixed by this PR - https://osv.dev/vulnerability/GO-2025-4116 the crypto/ssh/agent has a high vulnerability. It doesn't seem like we are using the methods that are part of this fix, but you can check it as well to be sure.

@taylorsilva
Copy link
Copy Markdown
Member

Pipeline for this PR was paused a while ago so I could fix some CI issues. I've unpaused it now and will try to merge.

@taylorsilva
Copy link
Copy Markdown
Member

Looks like you're right Kalin, don't think the CVE applies to us because all changes are in the crypto/ssh/agent package. As far as I can tell, we don't use that package directly and I don't think we would based on the package description. The only place we use SSH is in the tsa package, but we roll our own ssh protocol and therefore wouldn't use the ssh-agent protocol used by the crypto/ssh/agent package.

@taylorsilva
Copy link
Copy Markdown
Member

Containerd update appears to break something:


# github.com/containerd/containerd/v2/pkg/oci

../gopath/pkg/mod/github.com/containerd/containerd/v2@v2.2.0/pkg/oci/spec_opts.go:1604:34: cannot use limit (variable of type int64) as *int64 value in assignment

# github.com/concourse/concourse/worker/runtime/spec

worker/runtime/spec/spec.go:197:11: cannot use maxPids (variable of type int64) as *int64 value in struct literal

@renovate
Copy link
Copy Markdown
Contributor Author

renovate bot commented Feb 23, 2026

ℹ️ Artifact update notice

File name: go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 9 additional dependencies were updated

Details:

Package Change
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 -> v1.18.18
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 -> v1.4.18
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 -> v2.7.18
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 -> v1.13.5
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 -> v1.13.18
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 -> v1.0.6
github.com/aws/aws-sdk-go-v2/service/sso v1.30.10 -> v1.30.11
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.14 -> v1.35.15
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 -> v1.41.7

@renovate
Copy link
Copy Markdown
Contributor Author

renovate bot commented Feb 24, 2026

⚠️ Artifact update problem

Renovate failed to update an artifact 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.1.0: parsing go.mod:
	module declares its path as: charm.land/bubbles/v2
	        but was required as: github.com/charmbracelet/bubbles/v2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies misc release/undocumented This didn't warrant being documented or put in release notes.

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

2 participants