All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Opt-in dynamic CRD discovery (#197): with
discoverFluxResources: true, flux9s watches CRDs labeledapp.kubernetes.io/part-of=flux— the same label the Flux Operator's FluxReport reads — and shows their resources live: unified list with readiness from standard conditions,:commands from the CRD's own names and short names,y/d, filtering, and pulse counts. Kinds register and deregister dynamically as CRDs are labeled or deleted. Discovered kinds are strictly view-only (mutating operations are gated to built-in Flux kinds), built-in CRDs are excluded from discovery, and with the flag off (default) no CRD watch runs at all. - Cluster pulse dashboard (#195):
:pulseanswers "is my GitOps pipeline healthy?" at a glance — ready/failed/suspended totals and per-kind counts for the current namespace scope, the most recent failures with their messages for fast triage, and the FluxReport's distribution, entitlement, operator, and sync info alongside live controller pod health. Renders instantly from the watch state (no fetch) and updates in real time.
- Workload drill-down (#194):
Enteron a graph workload group opens the workload list;Enteron a workload opens its detail — rollout status and replica health, containers with images, a pods table (phase, ready, restarts, age), and the workload's events.lstreams a pod's logs (directly for a single pod, via a pod submenu otherwise), and Back walks the whole chain in reverse: logs → detail → list → graph. Read-only. - Submenu filtering and paging (#128):
/filters:ctx/:skin/:logsmenus with the same keys as the resource list (type to narrow, Enter to apply, Esc to cancel), PageUp/PageDown (or Ctrl+f/b) page through long menus, and:drops straight into command mode.
- Submenu selections no longer scroll below the visible popup: the scroll is now reconciled at render time with the popup's actual height instead of a hardcoded estimate in the key handler.
- Submenus (and the quit dialog) no longer hardcode black backgrounds or low-contrast title colors — they follow the active skin like every other overlay, fixing illegible popups across themes.
lnow also works from the workload list: it fetches the workload and continues straight into its pod logs once loaded — and Back from those logs returns to whereverlwas pressed (list or detail).
- Graph view no longer flashes when the focused node is taller than the viewport (e.g. a FluxInstance's workload group): the focus auto-scroll now pins oversized nodes to their top edge instead of oscillating between showing their top and bottom on alternating frames.
- Graph view downstream discovery for ResourceSet and FluxInstance (#204):
their
status.inventorynow renders like a Kustomization's — Flux resources produced by a ResourceSet become individual navigable nodes, Deployments and other workloads get the workload group with live status, and arbitrary kinds (Namespaces, CRDs, custom resources) aggregate into the resource group. - Controller pod log viewer (#192):
:logsopens a submenu of the discovered Flux controller pods (:logs <pod|prefix>streams one directly). Logs are tailed and followed live in a bounded buffer; scrolling up pauses following andGjumps back to the newest line;/searches the buffer. The stream runs only while the view is open. - ResourceSet step visualization (#193): the detail view of a step-based ResourceSet lists its ordered steps with per-step phase (done / applying / failed / pending) derived from the status conditions, plus each step's resource count, template marker, and timeout.
- Restored SOCKS5 proxy support (#202): the
kube/socks5cargo feature was accidentally dropped in a dependency cleanup (#182), so kubeconfigs withproxy-url: socks5://…failed at startup withrequires the disabled feature "kube/socks5". Regression tests now build a client through both socks5 and http proxy configs so a missing proxy feature fails CI.
- Kubernetes Events support:
- The describe view (
d) now ends with a kubectl-style Events section showing the resource's recent events (Warnings highlighted; degrades to a notice when events are unavailable, e.g. RBAC). - New
:events(alias:ev) live events feed for the current namespace scope — cluster-wide with:ns all. Streams in real time, newest first, filterable with/;Enterjumps to the involved Flux resource. The events watcher runs only while the view is open.
- The describe view (
- Resource action keys now resolve their target from any view via a single
view_target()resolver:y/d(andt/g/h/operations for watched resources) act on the selected event's involved object in the events feed and on the focused node in the graph view — previously these keys only worked from the resource list, favorites, and detail views.y/dwork for non-Flux objects too (Pods, Deployments, …) via the API fetch path, and Back returns to the view you came from (events feed or graph). - Graph view keyboard navigation:
j/kmove a highlighted focus between nodes (the view auto-scrolls to keep it visible),Enteropens the focused resource's detail view, andEscreturns to the graph.
- Graph connectors are redrawn as consistent fan-outs (trunk → branch above the children → drop into each child) using proper box-drawing junctions, and nodes sit closer together for a tighter, clearer layout.
:allnow returns to the main resource list from the events feed (and stops the events watch), instead of only clearing filters while stuck in the view.- The events feed's "not a watched Flux resource" message now names the
involved object's namespace and points at
y/d, so namespace-scope mismatches are visible instead of just confusing.
- New live-cluster regression suite (
tests/live_tests.rs, all#[ignore]d): exact assertions against the dev kind clusters' planted fixtures — graph inventory, describe events, the operator's step-failure message format, pod log streaming, and legacy v1beta2 version-fallback discovery. Run locally withjust test-liveafter./scripts/dev-clusters.sh ci, or via the new weekly/dispatchlive-tests.ymlworkflow. - New generic
AsyncTask<K, T>owns the request/dispatch/poll lifecycle for view fetches, replacing the five copy-pasted*_pending/*_fetched/*_rxfield triplets and their hand-rolled trigger/poll methods. - YAML/describe fetch requests are now typed
ResourceKeys instead of"type:namespace:name"strings, removing the re-parse (and its can't-happen error branches) from the main loop. - The Kubernetes events watcher has an independent lifecycle from the resource watchers (started lazily, stopped without a full watcher teardown), and survives namespace switches.
- Single source of truth for graph node sizing (
GraphNode::render_width/render_height); connector geometry extracted into the testable,Frame-freefanout_routes(). - Per-view behavior consolidated onto
impl Viewhelpers (scroll_offset_mut,is_list_view,is_text_search_view,is_nested_view). :command handling is now data-driven viaCOMMAND_TABLEwith focusedcmd_*handlers, replacing the long string-matching chain inexecute_command.
- Added the
Describecommand
- Changed the
dcommand todescribe - Changed the
deletecommand
- Updated Flux CRDs to the latest versions (#146, #135)
- Added quit warning when using
qoresccommands (#143)
- Tweaked CRD workflow permissions (#137)
- Switched from
maketojustin CI (#136)
- Addressed a vulnerability found by cargo audit (#138)
- Updated documentation and README (#140)
- Adjusted release workflow permissions (#144)
- Added more fields to the Flux CRD to improve the functionality of the Flux resource.
- Improved the development kind cluster to better support the Flux resource.
- Added a new external service
rscinptprvdr
- Shortened the CI configuration in pull request #131
- Support for page up and page down scrolling keys (#125)
- Updated Flux CRDs to the latest versions (#126)
- Page up and page down scrolling functionality for line display
- Compatibility with flux9s lib
- Support for marking stateless resources as ready (#113)
- New configuration options for controller/operator namespace (#107)
- Reduced Cargo package size and refactored column code (#116)
- Updated documentation with new links and minor formatting changes (#111, #109, #108)
- Reverted an accidental version bump to 0.7.2 (#115)
- Improved code readability and maintainability through code cleanup
- Updated Flux version display to show the current version
- Ability to open skin submenu from skin UI
- Controller pod status information
- Enhanced controller functionality
- Addressed version warning issues (#96)
- Added a sub-menu to the commands, accessible through the
ctxcommand.
- Added backup fonts for documentation
- Refactored application structure, breaking up app struct (#91)
- Flux Webui features
- Version bumped to 0.6.0
- Added Flux WebUI features
- Added "unhealthy" and "health" filters to display percentage status on top
- Updated 2024 edition with status tweak
Here is a concise changelog summary for version 0.5.10:
Added:
- Support for specifying a Kubernetes configuration file via the
--kubeconfigoption
Here's a concise changelog summary for version 0.5.9:
- Resolved a bug that caused issues during application startup.
- New
:ctxfor context switching - Agent files for improved functionality
- Website tweaks and improvements
- Resolved issues with website and CI deployment
- Support for SOCKS proxy connections (#68)
- Compiled binary is statically linked
- Updated dependencies to address known security vulnerabilities
- Improved skin customization options
- Enhanced command-line interface (CLI)
- Resolved scrolling bug reported in issue #61
- Ability to filter namespaces by number
- Improvements to the help menu
- Various bug fixes and tweaks
- Bumped version to 0.5.2
- Resolved a CI issue
- Refactored codebase and improved overall code hygiene (#51)
- Better filtering
- Label and Annotation filtering
- Support for macOS 15 runners
- Support for building on Windows platforms
- Resolved an issue with the wrap bug
- Refined the CI workflow configuration
- Changed the CI agent model configuration (#40)
- Updated the CI workflow configuration (#38)
- Support for Flux operator CRDs (#33)
- Screenshot image to documentation (#31, #32)
- Fixed trace functionality (#28)
- Replaced hardcoded strings with configuration (#27)
- Default mode set to readOnly (#23)
- Workflow tweaks and improvements (#19)
- Code hygiene improvements (#16)
- Workflow release changes (#16)
- Version bump to 0.2.1
- ReadOnly mode support
- Configuration and config-cli functionality
- OpenSSL build issues (#10, #8)
- Windows temporary file handling (#9)
- OpenSSL support
- Debug logging (#7)
- Proxy support (#6)
- Homebrew support (#5)
- Homebrew macOS architecture support (#4)
- Homebrew macOS architecture support (#3)
- macOS M-chip (Apple Silicon) support (#2)
- Binstall support
0.1.0 - YYYY-MM-DD
- Initial release
- Real-time monitoring of Flux resources
- K9s-inspired terminal UI
- Support for all major Flux CRDs (Kustomization, GitRepository, HelmRelease, etc.)
- Resource operations (suspend, resume, reconcile, delete)
- YAML viewing
- Namespace switching
- Status indicators
- Comprehensive test suite