Releases: sarub0b0/kubetui
v1.13.0
What's New
Features
Log Buffer Limit (#932)
Added a configurable upper bound on the number of lines retained in the log view buffer to prevent unbounded memory growth during long log sessions.
- Config:
logging.max_linesin~/.config/kubetui/config.yaml - Per-query override:
limit:<n>(aliaslim) keyword in the log query - When the buffer exceeds the limit, the oldest lines are dropped first
logging:
max_lines: 5000pod:api log:error limit:1000
Namespace Fallback (#952)
Configurable list of namespaces to display when the Kubernetes API does not allow listing namespaces (e.g. RBAC restrictions). The namespace selector now falls back to the configured list with an indicator in the title.
fallback_namespaces:
- production
- staging
- devPer-widget Error Display (#953, #956)
Reworked the way data-fetch errors are displayed in widgets. Previously, errors were shoehorned into each widget's data type — Table widgets had their header replaced with ERROR, and Log/List widgets had ANSI-colored error lines mixed into their content. The Tab/Dialog layer now manages widget error state separately and renders the error in place while preserving the widget's title and border. The view automatically reverts to the normal display when fresh data arrives. The display style is themable via theme.component.error.
theme:
component:
error:
fg_color: red
modifier: boldBug Fixes
- Prevent API resources tab panic with non-zero priority columns (#958) - Fixed an index out-of-bounds panic when rendering tables that include priority columns.
Dependencies
- Update kube to v3.1.0 (#944) and k8s-openapi to v0.27.1 (#940)
- Update tokio to v1.50.0 (#938)
- Update clap to v4.6.1 (#928, #929, #942, #943, #960)
- Update jiff to v0.2.24 (#933, #937, #939, #961)
- Update unicode-segmentation to v1.13.2 (#945, #946, #947)
- Update rayon to v1.12.0 (#957)
- Update bitflags to v2.11.1 (#959)
- Update once_cell to v1.21.4 (#941)
- Update strum to 0.28.0 (#934)
- Update anyhow to v1.0.102 (#930)
- Update futures to v0.3.32 (#926)
- Update GitHub artifact actions (#936)
- Lock file maintenance (#925, #962)
Full Changelog: v1.12.1...v1.13.0
v1.12.1
What's Changed
Bug Fixes
- Workaround kube-rs not respecting NO_PROXY (#919) - Fixed an issue where the
NO_PROXYenvironment variable was not being respected by kube-rs, causing requests to bypass proxy exclusion rules. - Enable kube http-proxy feature for proxy support (#924) - The
http-proxyfeature was not enabled in the kube dependency, which meant that proxy configuration (HTTP_PROXY/HTTPS_PROXY) was not actually being applied to kube-rs HTTP connections.
Dependencies
- Update rust crate jmespath to 0.5.0 (#908)
- Update rust crate bitflags to v2.11.0 (#923)
- Update rust crate clap to v4.5.58 (#909, #911, #917, #922)
- Update rust crate ctrlc to v3.5.2 (#921)
- Update rust crate anyhow to v1.0.101 (#918)
- Update rust crate bytes to v1.11.1 [security] (#916)
- Update rust crate regex to v1.12.3 (#913)
- Update rust crate flate2 to v1.1.9 (#904, #912)
- Update rust crate thiserror to v2.0.18 (#907)
- Update rust crate chrono to v0.4.43 (#905)
- Update actions/checkout digest (#914)
- Lock file maintenance (#906)
Full Changelog: v1.12.0...v1.12.1
v1.12.0
What's New
Features
OSC 52 Clipboard Support for Remote Sessions (#901)
Added OSC 52 escape sequence clipboard support for SSH/WSL/tmux/screen environments:
- New CLI option:
--clipboard=auto|system|osc52(default: auto) - Environment variable:
KUBETUI_CLIPBOARD - Auto detection: Automatically uses OSC 52 when SSH session is detected (
SSH_CONNECTION/SSH_CLIENT/SSH_TTY) - Terminal-specific handling: Proper DCS wrapping for tmux and screen
| Terminal | Sequence |
|---|---|
| tmux | DCS Ptmux wrapped OSC 52 |
| screen | DCS wrapped OSC 52 |
| Other | OSC 52 directly |
tmux Configuration (tmux 3.3a+):
set -g allow-passthrough on
set -g set-clipboard onBug Fixes
- Defer initialization of inactive contexts to prevent startup crashes (#898) - Fixed an issue where kubetui would crash on startup if any non-selected context had authentication errors. Contexts are now initialized only when selected. Thanks @umegbewe!
Dependencies
- Updated ratatui to 0.30.0 (#894)
Contributors
Full Changelog: v1.11.0...v1.12.0
v1.11.0
What's New
Features
Drag-to-Scroll Text Selection (#880, #885)
Added tmux-like drag-to-scroll functionality for text selection in log views:
- Automatic scrolling at boundaries: When dragging text selection to the top or bottom edge (1st line or last line), the view automatically scrolls in that direction
- Continuous auto-scroll: When the mouse stops moving at boundaries, scrolling continues automatically every 200ms
- Expanding selection area: The selection range expands automatically during auto-scroll
- Horizontal scrolling support: Works for horizontal scrolling when text wrapping is disabled
- Performance optimized: Auto-scroll only processes the active widget
This enhancement makes it much easier to select and copy large portions of log data without multiple manual scroll operations.
Technical Details
- Uses existing Tick worker (200ms interval) for periodic updates
- Tracks dragging widget to continue event routing when cursor moves outside widget bounds
- Stores last mouse position and scroll direction for smooth auto-scroll behavior
Contributors
Full Changelog: v1.10.2...v1.11.0
v1.10.2
What's Changed
Bug Fixes
Dependencies
- chore(deps): update rust crate bytes to v1.11.0 by @renovate in #868
- chore(deps): update actions/checkout digest to 93cb6ef by @renovate in #869
- chore(deps): update rust crate clap to v4.5.52 by @renovate in #870
- chore(deps): update rust crate clap to v4.5.53 by @renovate in #874
- chore(deps): update actions/checkout action to v6 by @renovate in #875
- chore(deps): update rust crate mockall to 0.14.0 by @renovate in #877
- chore(deps): update rust crate http to v1.4.0 by @renovate in #878
- chore(deps): lock file maintenance by @renovate in #867, #876, #879
Full Changelog: v1.10.1...v1.10.2
v1.10.1
Fixes
- text widget: Prevent follow flag from becoming permanently false (#863)
- Introduced proper state management for user interactions
- Separated configuration (follow) from runtime state (interaction_state)
- Fixed issue where auto-scroll would stop working after mouse events
Dependencies
- Updated clap to v4.5.51 (#865)
- Updated ctrlc to v3.5.1 (#864)
- Updated flate2 to v1.1.5 (#860)
- Lock file maintenance (#866)
- Updated GitHub artifact actions (#861)
Full Changelog: v1.10.0...v1.10.1
v1.10.0
Features
-
JSON Log Filtering: Added support for jq and jmespath filters for processing JSON-formatted logs (#852, #840)
- jq filter implementation for flexible JSON log querying
- jmespath filter implementation for JSON log processing
-
Context Switching Enhancement: Added option to preserve namespaces when switching contexts (#853)
- Use the same namespace instead of defaulting to 'default' namespace when switching contexts
- Improved user experience with Ctrl+Space keybinding
Fixes
- Fixed uppercase input handling in InputForm widget (#856)
Improvements
- Performance: Migrated from fuzzy-matcher to nucleo-matcher for better performance (#855)
- Code Quality: Reduced code duplication in context dialog
Documentation
- Added jq/jmespath filter documentation to README and help dialog
- Added Ctrl+Space keybinding documentation for context switching
Dependencies
- Updated tokio to v1.48.0
- Updated regex to v1.12.2
- Updated clap to v4.5.49
- Various other dependency updates for improved stability
Full Changelog: v1.9.1...v1.10.0
v1.9.1
Fixes
- Fixed an issue where resource list operations returned 404 when the cluster URL contained a subpath, improving overall stability.
Full Changelog: v1.9.0...v1.9.1
v1.9.0
New Features
-
Runtime customization of pod table columns (#779)
Customize which columns are shown in the pod table while the app is running.
Press t to open the column selection dialog, use Space/Enter to toggle visibility, and J/K to reorder columns.
Required columns likeNAMEare always visible and cannot be deselected. -
Column presets for pod view (#783)
Define reusable column presets inconfig.yamlunderpod.column_presets.
Load a preset at startup with--pod-columns-preset.
Optionally, set a default preset withpod.default_presetto apply automatically when no CLI option is provided.
Priority (highest to lowest):--pod-columns--pod-columns-presetconfig.yaml default_preset- built-in default
-
New UI component: CheckList
Supports multi-selection, required items, reordering, and theming.
Used in the pod column selection dialog. -
Enum-based PodColumn
Switched from string-based to a type-safeenum.
AddedFromStrparsing, sorting, hashing, and improved overall safety and maintainability.
Improvements & Refactor
- Extracted shared column building logic into
convert_columns. - Improved deduplication logic to preserve user-defined column order.
- Clarified CLI help text and updated README instructions.
- Added footer to the pod column dialog showing available key bindings:
[Space/Enter] to toggle, [J/K] to move.
Documentation
- Expanded README with details and usage examples for column presets.
- Added a help dialog section explaining runtime customization of pod columns.
Fixes
- Fixed an issue where duplicate columns could appear in the pod view.
- Updated the sample config: reordered columns and added the IP column for better defaults.
Dependencies
- fix(deps): update rust crate clap to v4.5.40 by @renovate in #778
- fix(deps): update rust crate arboard to v3.6.0 by @renovate in #782
- fix(deps): update rust crate tokio to v1.46.0 by @renovate in #784
- fix(deps): update rust crate tokio to v1.46.1 by @renovate in #785
- fix(deps): update rust crate kube to v1 by @renovate in #772
Full Changelog: v1.8.1...v1.9.0
v1.8.1
Fixed
- Updated
README.mdto document the--pod-columnsfeature introduced in v1.8.0.- Added usage examples for
--pod-columns. - Clarified behavior of the
fullkeyword and requiredNamecolumn.
- Added usage examples for
- No functional changes to the application.
What's Changed
Full Changelog: v1.8.0...v1.8.1

