kubefwd v1.25.16
This release modernizes the interactive Terminal UI by moving it onto the Charm v2 library line, hardens API-key startup logging, and rolls up routine dependency and CI maintenance.
Highlights
TUI migrated to Charm v2 (#527, closes #517)
The entire interactive TUI (--tui) has been migrated from the v1 Charm libraries to their v2 equivalents under the charm.land/... module path:
| Before | After |
|---|---|
github.com/charmbracelet/bubbletea v1.3.10 |
charm.land/bubbletea/v2 v2.0.7 |
github.com/charmbracelet/lipgloss v1.1.0 |
charm.land/lipgloss/v2 v2.0.4 |
github.com/charmbracelet/bubbles v1.0.0 |
charm.land/bubbles/v2 v2.1.0 |
github.com/evertras/bubble-table v0.19.2 |
github.com/evertras/bubble-table v0.22.3 |
These are distinct, incompatible type systems, so this was a full API migration rather than a version bump. Notable changes handled under the hood:
View()returnstea.View- alt-screen and mouse capture moved from the removedtea.WithAltScreen()/tea.WithMouseCellMotion()program options to theAltScreen/MouseModefields on the returned view, applied on every render path.- Keys -
tea.KeyMsgis now an interface; all handlers (services, logs, detail, browse, and help) dispatch on the concretetea.KeyPressMsg. - Mouse -
tea.MouseMsgsplit intotea.MouseWheelMsg/tea.MouseClickMsg, with renamed button constants; all wheel-scroll and click-to-focus behavior preserved. - Styling -
lipgloss.Coloris now a function returningimage/color.Color; viewport sizing moved toSetWidth()/SetHeight()and option-based construction.
No user-facing behavior changes. All keyboard shortcuts (j/k, Enter, Tab, /, r, b, ?, q), traffic metrics, log streaming, theme switching, and auto-reconnect work exactly as before. The dark/light theme workaround was re-validated under lipgloss v2. Verified on ubuntu + macOS with go build, go vet, golangci-lint (0 issues), and the full test suite.
API-key authentication: docs and safer startup logging (#526)
Follow-up to the API-key auth feature (#508):
- Security: the API key is now only printed at startup when kubefwd generated it. A user-supplied
KUBEFWD_API_KEYis referenced by name and never echoed to logs. - Docs: the Authentication sections of
openapi.yaml,api-reference.md, andmcp-integration.mdwere rewritten to cover the Bearer header,KUBEFWD_API_KEY/kubefwd mcp --api-key, the/api/healthexemption, and the401response.
Dependency updates
k8s.io/streaming0.36.1 -> 0.36.2 (#523)k8s.io/kubectl0.36.1 -> 0.36.2 (#525)k8s.io/cli-runtime0.36.1 -> 0.36.2 (#522)golang.org/x/sys0.45.0 -> 0.46.0 (#518)github.com/txn2/txeh1.8.0 -> 1.8.1 (#516)github.com/quic-go/quic-gobump (#511)
CI / build
codecov/codecov-action6.0.1 -> 7.0.0 (#521)github/codeql-action4.36.0 -> 4.36.1 -> 4.36.2 (#512, #520)actions/checkout6.0.2 -> 6.0.3 (#514)docker/setup-qemu-action4.0.0 -> 4.1.0 (#513)
Install / upgrade
# Homebrew (macOS / Linux)
brew install txn2/tap/kubefwd
brew upgrade kubefwd
# Or download a binary for your platform from the assets below.Run it (requires root for /etc/hosts and loopback aliases):
sudo -E kubefwd svc -n <namespace> --tuiFull changelog: v1.25.15...v1.25.16