Skip to content

Releases: sarub0b0/kubetui

v1.13.0

26 Apr 23:30

Choose a tag to compare

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_lines in ~/.config/kubetui/config.yaml
  • Per-query override: limit:<n> (alias lim) keyword in the log query
  • When the buffer exceeds the limit, the oldest lines are dropped first
logging:
  max_lines: 5000
pod: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
  - dev

Per-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: bold

Bug 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

14 Feb 08:57

Choose a tag to compare

What's Changed

Bug Fixes

  • Workaround kube-rs not respecting NO_PROXY (#919) - Fixed an issue where the NO_PROXY environment 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-proxy feature 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

07 Jan 16:02

Choose a tag to compare

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 on

Bug 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

06 Dec 08:02

Choose a tag to compare

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

30 Nov 04:52

Choose a tag to compare

What's Changed

Bug Fixes

  • fix: remove leading space from log content after timestamp parsing by @sarub0b0 in #872

Dependencies

Full Changelog: v1.10.1...v1.10.2

v1.10.1

02 Nov 10:37

Choose a tag to compare

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

23 Oct 16:00

Choose a tag to compare

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

08 Oct 16:52

Choose a tag to compare

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

06 Jul 12:15

Choose a tag to compare

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 like NAME are always visible and cannot be deselected.

    Demo video 1: Toggle column visibility at runtime
    dynamic-column-selection

    Demo video 2: Change column order at runtime
    dynamic-column-selection-order

  • Column presets for pod view (#783)
    Define reusable column presets in config.yaml under pod.column_presets.
    Load a preset at startup with --pod-columns-preset.
    Optionally, set a default preset with pod.default_preset to apply automatically when no CLI option is provided.
    Priority (highest to lowest):

    • --pod-columns
    • --pod-columns-preset
    • config.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-safe enum.
    Added FromStr parsing, 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

08 Jun 17:45

Choose a tag to compare

Fixed

  • Updated README.md to document the --pod-columns feature introduced in v1.8.0.
    • Added usage examples for --pod-columns.
    • Clarified behavior of the full keyword and required Name column.
  • No functional changes to the application.

What's Changed

Full Changelog: v1.8.0...v1.8.1