Repository navigation
Releases
kubeNimbus 1.0.0
The first 1.0 release. It covers everything since 0.8.0: right-click menus on more lists, opening a
YAML file, rollout restart of several workloads at once, a keyboard walk of every list and overlay,
and the fixes the last desktop pass found.
Added
- A right-click menu on the Applications list. Each row offers Open, Restart…, Show in
Resources and Copy name, and an app Argo CD tracks also offers Sync, Sync with prune…,
Refresh from Git and Terminate sync…, without opening the app's page first. The result shows
on the list itself, and the palette's Argo CD items report there too while the list is showing. - Right-click menus on three more lists. A card in the port-forwards list offers Show
pane, Copy URL, Open in browser and Stop. A Helm release offers Open and Refresh. A resource
on an Argo CD Application's Resources tab offers Open, and Logs where the row has logs. Each
menu is about the row it opened over, and a right-click on empty space opens none. - Open a YAML file. "Open a YAML file…" in the ☰ menu and the palette opens a local file in
the YAML editor, and Review and server-side apply work as for New resource from YAML…. A file
with several documents opens on its first one, and the editor says how many were left out. - Rollout restart of several workloads at once. Select several Deployments, StatefulSets or
DaemonSets and press R. One confirm names the count and the cluster, and each object's result
is listed, a refusal included. - A line for a saved tab that was not reopened. When a saved cluster tab's context is in no
kubeconfig file the launch read, the status bar says so, and its tooltip names the file. The tab
stays saved and comes back once a kubeconfig has its context again. - A log line from the keyboard. With a log pane's lines focused, the arrow keys, Page Up and
Page Down, Home and End move to a line, Ctrl+C (⌘C) copies it, and Enter opens or closes a JSON
line's fields.
Changed
-
Windows: install from the Microsoft Store or with winget.
winget install --id 9MZ3C28M65PB --source msstoreinstalls the same Store package, which Microsoft signs and the Store keeps up
to date. The portable zip published up to 0.8 is no longer built. The macOS and Linux downloads
are unchanged. -
A sync or refresh says so in one line. "Sync of checkout in argocd on prod-eu requested."
replaces the two-sentence paragraph that followed every Sync, and it no longer sits in a box
of its own; what the request means is the line's tooltip. Cordon, uncordon and suspend
results look the same, and scale, run now and terminate sync results are one line too. -
The scale question reads on one line of type. "to" and the replica box stand on the
sentence's baseline instead of floating above it, and every number box's up and down
buttons are two quiet chevrons inside the box rather than two bordered squares beside it. -
Buttons are the height of the fields beside them. Every button with words on it is 32px,
the height of a text box, so the YAML toolbar's Delete no longer sits 6px shorter than
Review…, and Restart… and the port-forward Stop no longer stand 2px taller than Sync and the
port fields.
Fixed
- The palette in the Applications mode acts on what is on screen. It no longer offers the
Fleet view toggle, which changed the hidden Resources list. Picking a kind ("Pods",
"Deployments", …) from the palette there now switches to Resources and shows that kind. - A cluster's retry line in the All clusters list goes when that cluster is back. Its
"connection lost" line clears when its watch resumes, and another cluster still retrying keeps
its own line. - A selected log range of a pod that has not started waits instead of saying "No lines". A pod the
scheduler has not placed answers a range read with nothing, and the pane used to keep saying so
after the pod ran. It now says the container has not started and loads the range once it does, in
the pod's pane and in the multi-pod pane. - A following log pane stays on its last line after Shift+L and Esc. Going back from the
maximized pane to the split used to leave it about a minute behind, and the follow stopped. - A saved cluster tab survives a launch that cannot find its context. One launch without the
kubeconfig that names it, such as a launch from the Dock that does not see$KUBECONFIG, used
to drop the tab from the workspace for good. It now comes back on the next launch that finds it. - macOS: the row menu's Delete shows ⌘⌫, not a Delete key the Mac keyboard does not have.
- A selection of several rows survives a re-sort. A metrics poll or a watch update that moved
a selected row on a sorted list used to cut the selection to one row. - The palette, the cluster switcher and the preferences keep Tab inside them. Tab used to
leave each for the command bar under the scrim. Esc now closes the palette and the switcher from
any of their rows, and closing either gives focus back to where it was. Shift+Tab out of the
preferences' first section no longer sticks on "Add file…", and the shortcut-modifier drop-down
shows its focus ring. - An application's page is quicker to cross with Tab. Its lines of evidence are no longer each
a stop, the pods list is entered on the selected pod from either direction, and screen readers
tell the linked resources apart by name. - Screen readers read the rows of the node detail, Helm and Argo CD lists by name, as they
already read the resource list's. - macOS: ⌫ closes the focused cluster tab or dock tab, and the shortcut sheet shows it, rather
than a ⌦ key the Mac keyboard does not have.
Windows: install from the Microsoft Store or with winget install --id 9MZ3C28M65PB --source msstore; the Store signs and updates it, and no Windows download is attached here.
The macOS and Linux downloads are not signed by a certificate. The macOS app is ad-hoc signed, so macOS quarantines it (xattr -dr com.apple.quarantine <path>). See the README for per-platform instructions and for verifying the download (SHA256SUMS.txt, gh release verify-asset, gh attestation verify).
kubeNimbus 0.8.0
Added
- Cluster tabs are real tabs. The cluster tabs in the command bar are one Tab stop: the
arrow keys, Home and End switch cluster, screen readers read them as tabs, and Delete closes
the focused cluster tab or dock tab. Screen readers also hear whether a sidebar section is open,
can tick the namespace pickers' boxes, read which grid rows are selected and by name, and hear
menu items by their labels (#236). - "Exec in my terminal" and "Node shell in my terminal" in the resource list's right-click
menu, beside the ones in the exec pane and node detail, so a pod or a node can be handed to
your own terminal without opening it first (#198). - ResourceQuota rows say whether a namespace is out of room. "Full: pods" or "Almost full:
limits.memory 98%" shows in the Status column, and kubectl's used/hard figures in Details. It
works with only theviewrole in the namespace (#308). - "Choose the list's columns…" in the command palette opens the column chooser from the
keyboard. Focus starts on the first column you can hide and returns to the list when the menu
closes (#301). - kubeNimbus now behaves like a Mac app on macOS (#396, #398). The app menu is ours from the
first frame (About kubeNimbus, Settings… on ⌘,, Hide Others on ⌥⌘H, Quit kubeNimbus), with Edit
and Window menus whose Undo, Redo, Cut, Copy, Paste, Select All and Find go to the focused
control, including the exec terminal. ⌘T opens a cluster tab and ⌘W closes one (Ctrl+T and
Ctrl+W on Windows and Linux stay with the exec terminal's shell); ⌘W on the last tab leaves the
empty shell instead of closing the window. The Cocoa text keys work in the YAML editor and in
text boxes (⌘←/→ and ⌘↑/↓ to the line and document ends, ⌥⌫, ⌘⌫, ⌃A/⌃E/⌃K and the rest), each
edit one undo step. ⌘⌫ deletes the selected row and ⌘[ goes back from an application's page.
Every shortcut label, in the palette, the F1 sheet, tooltips and hints, is spelled the Mac way
(⇧⌘N, ⌥R) on macOS and as Ctrl+Shift+N on the other platforms.
Changed
- The sidebar toggle is gone from the Applications mode, which has no sidebar for it to
show or hide. It used to sit there disabled; now it is not drawn at all, and its place is
kept so the Applications/Resources switch beside it never moves under the pointer. - The Linux AppImage has a new name and updates itself. It is now
kubeNimbus-<version>-x86_64.AppImageorkubeNimbus-<version>-aarch64.AppImage(it was
-linux-x64.AppImageand-linux-arm64.AppImage), the naming the AppImage catalog asks for;
the.deband.tar.gzkeep their names. The AppImage now carries update information, and its
.zsyncfile is published beside it, so AppImageUpdate and AppImage managers can bring it to
the latest release. A script or bookmark that downloads the AppImage by name needs the new one. - One namespace choice per cluster tab, kept across restarts. The Applications and
Resources pickers now share the tab's choice: namespaces chosen in one mode are the ones
the other shows, and the next launch opens on them again. A tab with nothing saved opens on
all namespaces (or on the kubeconfig context's namespace where listing namespaces is refused). - Lists open faster. Each collection is listed and watched once per connection and shared
by both modes, so the Resources list of Pods, Deployments and the other kinds the
Applications mode reads appears at once, and the last five kinds you left stay live: going
back to one shows current rows with no new list. Refresh still reads the cluster again. - With several rows selected, actions that act on one object are disabled, and their tooltip
says why. Delete acts on all of the selected rows and always asks first, whatever "Confirm
before deleting" says, and a refused bulk delete's reason wraps instead of being cut (#305). - The Argo CD dashboard is live. A sync started from
kubectlor Argo's own UI, a health
change or a new Application shows without a reload, on one cluster and in the "All clusters"
list alike (#303, #336). - Inspector panes have one grouping device per group. Pod, node, Service, NetworkPolicy and
AppProject detail draw headed sections instead of a bordered card per group, the log, terminal,
YAML, Helm and Env panes no longer sit in a box inside the dock, and the apply preview is set off
from the pane's toolbar by a single rule (#215). - The exec terminal keeps more keys for the shell. With focus in it, F1 to F12 go to the shell
(htop's F5, mc's F1, vim mappings) instead of opening the cheat sheet, and F11 and F12 now reach
the shell at all; F1 opens the cheat sheet everywhere else. Ctrl+Shift+L is the shell's (^L)
and no longer opens the logs palette, and Ctrl+K, Ctrl+P and Ctrl+Shift+N reach the shell too:
press Ctrl+Tab to leave the terminal first (#337, #222). - A row action's question no longer starts with a button-like icon. The verb's glyph is drawn
bare, level with the sentence, because on an Argo sync's result line it looked like a refresh
button although it has no command (#329). - Avalonia 12.1.4, SvcSystems.UI.Terminal 2.3.0 and KubernetesClient.Aot 21.0.8 (#344, #400, #401).
- The command palette ranks a title match above a subtitle match. Typing "Nodes" or "Services"
puts that kind first; before, "Advanced view: show only everyday kinds", whose subtitle lists
them, came first and Enter turned the Advanced view off (#398). - One-line text boxes centre their text on Fluent's padding, the shell box and the
port-forward fields having sat 2px high (#396).
Fixed
-
The demo cluster's pod logs no longer pick up a line from the stream they replaced. Switching
container, toggling Follow or picking a range just as a line was due could carry that line into
the new stream. -
The Linux packages are built for Ubuntu 22.04, Debian 12 and RHEL 9. They were built on
Ubuntu 24.04, and a NativeAOT binary asks for the glibc version of the machine it was built on,
so an older distribution could refuse to start it with a "GLIBC_2.38 not found" error. They are
now built on Ubuntu 22.04, and the release fails if a binary needs a glibc newer than 2.35. -
A log pane opened on a pod that was not running yet starts streaming once the container
runs. A pod held by a scheduling gate, or still creating its container, used to keep
"container … is not available (400 Bad Request)" or "waiting to start" beside a running pod.
This applies to pod detail and the multi-pod pane (#184, #309), and with Follow off a container
that comes up after being refused is no longer followed on its own: a range load comes back as
a range, and a pod a rollout adds is loaded, not followed (#331). -
A log pane says what it is showing while it holds lines. A snapshot, the previous run, a
stopped or ended stream and cleared lines are named in a bar above the lines; these messages
used to show only while the pane was empty (#319). -
A pod deleted mid-rollout ends as "deleted" with its lines kept in the multi-pod pane and in
pod detail's log pane, instead of "failed" with "the server could not find the requested
resource" (#332, #341). -
An account that may not read metrics (403) gets no empty CPU and Memory columns. The
list hides them, gives the reason in the status bar and stops asking; they used to show dashes
indefinitely (#310). -
A list this account may not read no longer spins behind "Watch connection lost … retrying".
The Resources list and the Argo CD dashboard say the account may not list it, in the API
server's words, and the Resources list suggests a namespace when it asked the whole cluster
(#339). A list of several namespaces, or a fleet list, that every namespace or cluster refuses
says so with the server's reasons instead of "No … found", and a refusal from only some of them
stays on the warning line. The watches behind a workload's, a Service's and a node's pods, a
logs pane's pods and the debug container stop at a 403 and say why (#354). -
A relist of the Argo CD dashboard no longer shows a growing subset of the Applications. The
list swaps once the relist is complete (#339). -
The YAML editor refuses a second pasted document instead of applying only the first, and
after New YAML creates an object, E on it focuses that editor instead of opening a second one
(#300). -
The apply preview is readable at the dock's default height. The diff takes the editor's
place and shows a readable run of lines, and a Review that ends in a field-manager conflict
shows what a force apply would change beside the conflict (#316). -
workspace.jsonstores a column layout once. Hidden columns and widths are no longer
written twice, and a staleIsAdvancedViewis no longer written (#318). Hiding the column a
list is sorted by clears the sort instead of leaving the list in an order no header shows
(#301). -
A ConfigMap value containing a carriage return survives the YAML editor, and the Helm and
Argo views start no reads behind a failed reconnect (#311). A successful Argo fleet reload no
longer clears an unrelated warning (#306). Closing a New YAML editor while its first apply reads
the cluster's kinds stops that read (#342). -
In the exec terminal, Alt+B and Alt+F reach the shell as Meta-b and Meta-f (ESC and the
lower-case letter), so readline word motion works and no stray letter is typed (#315). -
Condition rows in pod and node Overview line up with their section header, the status dot
sitting in the margin (#237). The arrow keys along a pane's tab strip (pod detail's
Overview/Logs/…, the diff's views, the mode switch, the preferences tabs) keep the focus ring on
the tab they reach (#297). -
A vertical mouse wheel over the dock's tab strip and the cluster tabs scrolls it sideways
(#313). A kind listed in Recent and in its own sect...
kubeNimbus 0.7.0
Added
- Several namespaces at once, in both lists. In either namespace picker a click still
chooses one namespace; a row's box, Ctrl/Cmd+click or Space adds another and keeps the picker
open. The Resources list then reads each chosen namespace with a watch of its own, so it works
where you may read those namespaces and not the whole cluster, and a restart reopens the tab
on the same namespaces. The Helm browser and the palette's log rows follow the choice. - A namespace picker on the Applications list. It sits beside the title, as the Resources
list's does, and opens with Ctrl/Cmd+Shift+N. It lists the namespaces applications run in,
with how many each has. The list, the chips' counts and
the empty states follow the choice. It opens on All namespaces whatever the Resources mode
shows, and choosing a kube-* namespace shows its applications. - The Applications list sorts by any column. A header click sorts ascending, a second one
descending, a third returns to the list's own order with its Needs attention group. Pods
sort by the Ready fraction, Restarts as a count and Last deploy by time, and the sort holds
as the cluster changes. - Workload and node detail's pod lists sort by any column. Sort a workload's pods by
restarts or status, or a node's by CPU or memory request to see what has claimed the node.
The sort holds as pods come, go and change. - The Helm release browser and the Argo CD dashboard sort by any column. Helm releases by
revision, status or update time; Argo applications by sync or health, worst first. The Helm
browser now opens in namespace and name order. - Port-forwards outlive their dock tab. A running forward keeps listening when its dock
tab is closed; the status bar counts running forwards, and a Port-forwards list (from the
status bar or the palette) reopens or stops each one. Closing a cluster tab stops that cluster's forwards
and says so. - Port-forward a Service. From the Service pane or the palette, to a ready pod behind it that
the pane names; when that pod goes, the next connection moves to another ready pod and the pane
says so. - Open an exec session in your own terminal. The exec pane's new icon and an "Exec in my
terminal" palette row runkubectl exec -itthere, with the cluster pinned. If kubectl cannot
be found, nothing opens and the app says why. - Node shell in your terminal. Node detail's console icon and a "Node shell in my terminal"
palette row runkubectl debug node/<name>in your own terminal. kubeNimbus never creates the
privileged pod itself. - A "Terminal" preference (Preferences → General) for an emulator kubeNimbus does not know.
On macOS, kubeNimbus now tries iTerm2 and Ghostty before Terminal. - Who am I on this cluster. The access review's "Signed in as" line shows your username and
groups as the cluster sees them (whatkubectl auth whoamiasks); a server that cannot say,
such as one before Kubernetes 1.27, gets a sentence saying so. - Keyboard: Ctrl+Tab and Ctrl+Shift+Tab move focus out of the YAML editor and the exec
terminal, which keep Tab for indenting and shell completion. - Delete several resources at once. Select rows in the resource list (Shift+click,
Ctrl+click or Cmd+click on macOS, Shift+arrows) and delete them with one confirm that names
the count and the cluster. Each object is deleted by its own request, a Stop button ends the
run, and an object the server refuses is listed with the server's reason while the rest are
deleted. - Choose the resource list's columns. Right-click a column header to hide or show columns
for that kind, or to reset them. The choice is remembered per kind. - New resource from YAML. "New resource from YAML…" in the ☰ menu and the palette opens an
empty editor: paste or type a manifest and apply it through the same preview as any edit. The
namespace defaults to the list's. - A capacity strip above the Nodes list: how many nodes there are and how many are ready,
and CPU and memory used (from metrics-server) and requested, each against what the nodes can
allocate. It needs no Prometheus, and a part the cluster does not let you read says so in
place instead of showing zero. - Terminate a running Argo CD sync from the places a sync starts: the arrow beside Sync on
the Applications page, the Argo CD row menus and the palette. It asks first. - ApplicationSet and AppProject panes. An ApplicationSet shows its generators, its template
and the Applications it generated, with their live sync and health. An AppProject shows its
allowed repositories, destinations and kinds, its sync windows and roles, and says what an
empty list means. An Argo CD Application on the ordinary resource list now opens its Argo CD
pane on double-click. - The Argo CD dashboard across the fleet. "All clusters" merges every connected cluster's
Applications into one list with a Cluster column, and sums the counts. - F and the row menu's Port-forward work on a Service row, as the Service pane's button
does. - Conditions say how long they have held. Pod, node and workload conditions show an age
(6d), with the exact time on hover. - The list search finds an Ingress by any host its rules serve.
Changed
- The inspector dock's tabs can be reached with the keyboard (Tab lands on the front tab,
Left/Right switch) and are read as tabs by screen readers. - The sidebar is one Tab stop: the arrow keys move through its kinds and section headers, Enter
or Space opens a kind or folds a section, and the focused row shows a focus ring. A log pane is
one Tab stop too, instead of one per line. - The Helm release list's Updated column shows an age ("3d") with the exact time on its tooltip;
it used to print a timestamp that was cut off. - The Namespace column (resource list and Helm releases) shows only when it tells rows apart:
with several namespaces or all of them chosen. - The YAML editor's toolbar button reads "Review…" while "Preview before applying" is on, so it
no longer shares the word Apply with the preview's own "Apply changes". - In a narrow window the log panes' toolbars move Range, Levels, the filter's context chip and
Copy into the ⋯ menu, then narrow the search box, instead of running off the pane. - Actions that can be taken back no longer ask first. Argo CD's Sync and Refresh, Cordon,
Uncordon and Suspend now act on the click, and the strip above the list shows what was sent,
the result or the server's refusal. Sync used to open a strip with a second Sync button in it.
Actions that delete, disrupt or cannot be undone still ask: Delete, Drain, Restart, a
CronJob's Run now and Resume, and Argo CD's new Sync with prune…, which replaces the
prune checkbox. On the Applications page it is on the arrow beside Sync. - The confirm strip reads as one sentence with its answer beside it: the action's glyph,
"Scale Deployment checkout-worker in payments on prod-eu from 4 replicas (1 running) to 6",
the consequence under it, and the buttons right after the text instead of at the window's
edge. Delete, drain and sync with prune get a red glyph and a red confirm button. - The cluster switcher draws a row's pin only on hover, on the selected row and on a pinned
row. Its environment dot is gone (the PROD and STAGING pills stay), and so is the exec pane's
status dot beside "Connected to …". - The sidebar's sections no longer draw a kind icon before each name. Only the Recent section,
which mixes sections, keeps them. - The YAML editor hides
metadata.managedFields, askubectl get -o yamldoes; a "Managed
fields" chip shows them. Applying is unaffected. - A kubeconfig
tokenFileis re-read about once a minute while connected, as client-go does,
so a rotated token is picked up before the server refuses the old one.
Fixed
- A double-click on a column header of workload detail's pod list, the Helm browser or the
Argo CD dashboard no longer opens the selected row. - Connecting to a slow cluster (an EKS cluster signed in through AWS SSO, for one) no longer
draws "Connecting to …", "No applications found" and "Reading …" over each other on the
Applications page. While the cluster's resource types are read, the page says only that. - In the light theme, a selected row's text is readable again once you have clicked it. The
Applications list, an application's pods, the cluster switcher and every tab strip (the
Applications | Resources switch among them) drew it white on their pale selection colour. - The last line of a log is no longer half hidden under the horizontal scroll bar. Both log
panes now always leave a gap below the end of the log, which is where Follow keeps you. - A kubeconfig user that names a
tokenFilenow signs in with it. The file is re-read on every
connect and reconnect, a relative path is read from the kubeconfig's folder, and a missing file
is reported by name. Before, such a context connected with no credential. - A
certificate-authoritybundle with several roots trusts all of them, as kubectl does. Before,
only the first was trusted, so a cluster mid-way through a CA rotation could be refused. - Workload logs and workload detail no longer widen a pod selector they cannot fully read (an
unknownmatchExpressionsoperator, anInwith no values); such a selector is refused, and
the pane says the workload has no usable pod selector. - The Service pane no longer keeps judging a Service that was deleted while it was open; it says
the Service was deleted and withdraws its verdict. - Event messages in the detail panes' Events tabs no longer end with a blank line after a
probe's output. - The demo cluster's merged log panes read in the same order every time.
- The port-forward pane's Start and Stop buttons have accessible names.
- A kubeconfig user signed in through a credential plugin (`a...
kubeNimbus 0.6.0
Added
- A debug container for an image with no shell. Exec into a distroless or .NET chiseled
image used to end on "No usable shell". The exec pane now says the image has no shell and
offers Start debug container, which does whatkubectl debug -it <pod> --image=busybox:1.37 --target=<container>does: it adds an ephemeral container that shares the container's
processes and network, waits for it to start, and opens a shell in it. The container's
files are under/proc/1/root. The image can be changed (an air-gapped cluster needs its
own mirror), a debug container already running for that container is reused rather than
adding another, and the pane says that it stays in the pod until the pod is recreated.
Neither Lens nor FreeLens can add one. - Exec on Windows nodes. A pod on a Windows node is offered
powershell, thencmd,
instead of/bin/bash,/bin/shand/bin/ash, which it never has. The node is read from
the pod'sspec.os, itskubernetes.io/osnode selector or the node's label.
Changed
- The Windows download is the portable zip only. The MSI is gone: across 0.3.2 to 0.5.0
it was downloaded once, and the Microsoft Store already installs and updates kubeNimbus.
Unzip anywhere and runkubeNimbus.exe; settings stay in%AppData%\kubeNimbus. If you
installed an earlier MSI, uninstall it from Settings → Apps. - Preferences is four tabs. General (kubeconfig files and folders, opening applications with one click, shortcut modifier),
Appearance, Logs and metrics, and Changes (confirm before deleting, preview before applying),
the same strip pgNimbus's settings page uses. The page keeps one height on every tab and opens
on the tab it was last left on. - One click opens an application. A click on a row of the Applications list opens its page;
it used to take a double-click. "Open applications with one click" on the General tab of the preferences page
turns the double-click back on. The resource list still opens on double-click. - Applications in the command bar goes back to the list. On an application page, clicking
the already selected Applications mode (or Ctrl+Shift+A, Cmd+Shift+A on macOS) returns to
the list, as the page's "‹ Applications" link does. It used to do nothing. - The interface is drawn in your system's font, and code in JetBrains Mono. kubeNimbus used
Inter on every platform; it now uses San Francisco on macOS, Segoe UI on Windows and your
desktop's font on Linux, the same as pgNimbus. Logs, YAML, the terminal and every other place
that shows code use the bundled JetBrains Mono, so a Mac no longer falls back to Menlo.
Preferences has two new choices under Appearance: Interface font (System or Inter) and
Code font (the built-in one or any monospace font installed on the computer). - A denser, quieter look, shared with pgNimbus. Body text is 13px and list rows about
24px, as in native apps. The list or tree the keyboard is in shows its selected row in the
accent colour, and other lists in grey. Keyboard focus is a soft rounded accent ring
instead of a black box. Switches are the small macOS kind, and the icon buttons in the
title bar now light up on hover.
Fixed
-
An exec that fails says why. When every shell was refused, the pane printed the reason
the last one gave, so a missing permission read as a missing/bin/ash. It now says "has no
shell" only when the image really has none, and otherwise gives the first other reason. -
Apply works on an object opened in the YAML editor. Opening a ConfigMap, Deployment or
custom resource, changing a value and pressing Apply was refused with "metadata.managedFields
must be nil", both in the preview and in the apply itself. The server's own bookkeeping field
is no longer sent back, and the preview, Apply and Force apply all take the edited object. -
Ctrl+S applies in the YAML editor. The shortcut sheet listed it, and pressing it did nothing. It now
starts the same apply as the Apply button (Cmd+S on macOS). -
The preferences page follows the theme toggle. With Preferences open, switching the theme
from the command bar, the palette or the View menu left the Theme drop-down naming the old
choice. -
Screen readers and UI Automation can read the application page. The first application page
opened in a session made Windows UI Automation fail for as long as it stayed open. -
Controls have accessible names. The command bar's icon buttons, the sidebar's kinds, the
Applications rows, the preferences switches and the port and replica boxes were announced as
type names or nothing; they now read what they do. -
The shortcut sheet says where Ctrl+Z works. "Show only what is unhealthy" is Ctrl+Z with
the rows focused; in the list's search box Ctrl+Z is that text box's Undo. -
Tooltips open. Hovering a resource name, an age, a CPU or memory sparkline, a status
pill or most other text that carries a tooltip showed nothing: the pointer passed through
the text to the row behind it. Every tooltip now opens wherever its text is. -
The status bar keeps a long message readable. A message wider than the window was cut
off at the edge; it now ends in an ellipsis, and hovering it shows the whole text. -
Logs no longer freeze the window on "Everything". A pod with a long history used to
hang the app while its log loaded, and switching the theme with a full log open took a
second. The log panes now draw only the lines in sight and drop what the scrollback would
trim before reading it. -
Large clusters stay responsive in the Argo CD Resources tab (thousands of managed
resources), the YAML apply preview (large ConfigMaps), the Service pane (hundreds of
backing pods), the list search, and a list sorted by CPU or memory, which used to stall
for about two seconds on every metrics poll with 5,000 pods. -
Big lists load faster and keep the window responsive while they do. A namespace with
thousands of pods used to fill in visibly row by row; the list, the fleet view, workload
details, the Service pane, multi-pod logs and the Applications list now take a watch's
updates in batches. Searching a long Applications list and a fleet member reconnecting
are single updates too. -
Web and e-mail addresses in the YAML editor and in a Helm release's values and manifest are
now plain text in the YAML colours. They used to be drawn in bright blue over the
highlighting, like links, and a Ctrl+click opened them in the browser or the mail client.
The values and the manifest also stop scrolling at their last line, so text that fits no
longer gets a scroll bar.
Binaries are unsigned. Windows shows a SmartScreen prompt; macOS quarantines the app (xattr -dr com.apple.quarantine <path>). See the README for per-platform instructions and verifying SHA256SUMS.txt.
kubeNimbus 0.5.0
Added
- Applications mode. A cluster now opens on Applications: every Argo CD Application, and
every workload no Application tracks, with its health and a one-line reason such as
"Crash-looping (exit 1) · 2 pods not created: namespace quota", sorted so what needs
attention comes first. Chips narrow it to what needs attention, what was deployed in the
last hour, or what is not in Argo CD, and the search box finds an app by name or
namespace. The explorer is still there as Resources, one click (or Ctrl/Cmd+Shift+R)
away, and the choice is remembered. - The application page. Enter on an application shows what the cluster reports is
wrong, each fact with the field it was read from; its pods; the Services, Ingresses,
ConfigMaps, Secrets, HPA and PDB it is wired to; a timeline of deploys, container exits
and warning events over the last hour; what the last deploy changed in the pod template,
with a link to compare the two commits on GitHub, GitLab, Azure DevOps or Bitbucket; and
the logs, opened on a crash-looping pod's last run and ending with its exit code. Restart,
Sync and Edit YAML are on the page, and Edit YAML warns first when Argo CD would revert a
manual edit. - Works with narrow permissions: when listing across the cluster is refused, Applications
reads the namespaces it knows and says which it covers and which were refused. The
namespace picker opens a namespace by name (type it, press Enter) where listing
namespaces is not allowed. - Service detail. Double-click a Service to see the pods its selector matches next to
the endpoints actually serving, with one sentence saying whether traffic can reach them.
A selector that matches no pod, a selector-less Service and an ExternalName are each
stated plainly. - Ingress detail. Every route as host/path to backend, TLS per host, and a URL you can
open or copy. The backend opens its Service. - NetworkPolicy detail. The rules in words (who may reach the selected pods, on which
ports) and the pods the policy selects. An empty selector means all pods, and the pane
says so. - Ingress, Endpoints, EndpointSlice and NetworkPolicy lists show kubectl's own columns.
- CronJobs: run one now, suspend it or resume it from the list's menu or the palette,
with a confirm naming what happens. After a run, "Open Job" shows the Job's pods. - Jobs open in the workload pane, with their pods, completions and failures against the
backoff limit. - A Secret carrying a certificate shows whose it is and when it expires, coloured as expiry
nears, plus the whole chain (subject, SANs, issuer, validity). This works without
revealing values, and the key is never read. - PersistentVolumeClaims and PersistentVolumes name the other end of their binding and open
it. An environment variable taken from a ConfigMap or Secret key opens that object. - Log search, rebuilt. Matches are highlighted in place with "n of m", and Enter /
Shift+Enter step between them; the funnel switches to filtering. Regular expressions
(Alt+R) and match case (Alt+C) are supported,!wordhides the lines that contain it,
and while filtering the Context chip keeps 2 to 25 lines around each match, like
grep -C. Double-click a filtered line to see it in the full log. - A search can be pinned as a coloured highlight (Alt+P, up to five), which stays marked
while you search for something else. - A Levels filter (Error / Warn / Info) in the log panes. Lines with no level are always
shown. - Log panes count their error and warning lines. A click on the count, or Alt+↑ / Alt+↓,
jumps between errors without hiding anything, and a strip beside the scrollbar marks
every error, warning and match. - A JSON log line opens into its fields with the chevron beside it.
- Clear in the log panes, without restarting the stream. Timestamps show in local time,
with UTC one click away, and the panes remember timestamps, UTC and wrap across restarts. - When a followed log stream ends, the pane says why: the connection closed while the
container is still running, the container restarted, it exited (with its exit code), or
it has not started yet. - Connection failures are explained. A connect that fails says, in place of the list,
which step failed, why, and with what (kubeconfig, context, server, user, sign-in method),
with Retry and a terminal on the cluster. - Reconnect re-reads the kubeconfig and re-runs its credential plugin without closing the
tab, and an expired credential (HTTP 401) is re-resolved automatically. - The cluster's
proxy-urlis honoured (HTTP, HTTPS, SOCKS5), including for exec and
port-forward. - Kubeconfig folders: pick a folder and every kubeconfig in it is read, including files
added later. The kubeconfig is rescanned when the window regains focus. - The sidebar's Recent kinds are remembered per cluster across restarts.
- A privacy policy, linked from About.
Changed
- The Resources mode now looks like the Applications mode: the list sits in a card on the
window's own tone instead of a black panel, and every table uses the same type, with
small semibold headers, 12px rows with the name in semibold, and fainter row rules. - Log panes colour the level word instead of the whole line, so a log where every line is
info:no longer turns blue. Error rows carry a red bar and a faint wash, warning rows an
amber bar, and timestamps are dimmed. The level is read from the first level word, from a
JSON orlevel=field, or from klog'sE0928header, and an indented stack trace takes
the level of the line that threw it. - Log panes no longer print terminal colour codes. Applications that colour their console
output (ASP.NET, zap, Rails and most CLI tools) used to show[40m[32minfo[39mat the
start of every line. .NET'sfail:andcrit:lines are coloured as errors. - The log toolbar is shorter: Timestamps, UTC, Wrap, Clear and Save are in a
⋯menu. A
merged log with a single pod no longer repeats the pod's name on every line. - Logs and shells open on the container named by
kubectl.kubernetes.io/default-container, as kubectl does. Logs have one icon
everywhere. - Primary buttons, checked boxes and switched-on toggles are the app's own blue on every
machine instead of the Windows accent colour, and red buttons stay red under the pointer. - The command palette, the cluster switcher and the Preferences, About and shortcut panels
sit on a grey card in the dark theme instead of black. - The cluster switcher is a
+after the last cluster tab, so the cluster in front is no
longer named twice in the top bar. - The status bar appears only when there is something to report; the server version moved
to the tab's tooltip. - Cluster-scoped kinds (Nodes, PersistentVolumes, ClusterRoles) say "Cluster-wide" in place
of a greyed-out namespace picker, and no longer show an empty Namespace column. - Gateway API kinds (Gateway, HTTPRoute, GRPCRoute and the rest) are listed under Network
instead of CRDs. - Pods in workload and node detail show their status as the same pill as the main list.
Node detail's pod list is live, opens pods on double-click and Enter, and a drain watches
for evictions instead of re-listing every two seconds. - On Applications, the search box sits at the right of the title row, and the Sync column,
the "Not in Argo CD" chip and group headings appear only when they have something to say. - The YAML editor has a light-theme palette, and its Delete button is drawn as a
destructive button, away from Apply. - A credential plugin named bare in the kubeconfig (
command: aws) is found where a login
shell would find it, so it works when the app is launched from Finder, the Dock or a
desktop launcher. - kubeNimbus reads kubeconfig files itself. An empty kubeconfig is read as one with no
contexts instead of an error, a key written twice keeps its last value as kubectl does,
and a file that does not parse is reported with its line and column. One such file no
longer hides the contexts in the other files. - Updated Avalonia to 12.1.3, the exec terminal to SvcSystems.UI.Terminal 2.0.0, and
YamlDotNet to 18.1.0.
Fixed
- A crash-looping application no longer flickers between Degraded and Healthy between two
back-offs. - Esc returns from an application page to the list when the page was opened by
double-click. - A switched-on chip toggle (Wrap and the like) keeps its text readable.
- A misspelled field in a YAML apply shows as a refused field on real clusters, which
answer it with HTTP 500 rather than 400. - CRD list columns show an array or object value as kubectl does (for example Gateway API
HTTPRoute hostnames), and resolve backslash-escaped dotted keys such as Crossplane's
crossplane\.io/external-name. - The multi-pod log pane no longer leaves a freshly started pod without lines, picks up
pods that had not started yet, and marks them "not started" until they do. - Workload and node detail no longer lose the selected pod when you switch inspector tabs.
- Refreshing a workload's detail updates the "Unhealthy only" list immediately.
- A Job is no longer offered a rollout restart, and a PersistentVolumeClaim or
ServiceMonitor no longer offers "Logs (all pods)". - Only one sidebar row is highlighted at a time.
- The list header, the fleet list, the Events list and the command palette fit narrow
windows. - The access review's "Loading…" no longer shows on the "Who can…" tab.
- On Linux with a fresh home directory, the discovery cache and settings are no longer
written into the current directory. - The no-kubeconfig screen no longer prints the same sentence twice.
- The demo cluster shows usage for every running pod.
- Discovery no longer lists a resource whose server reports
"verbs": [].
Binaries are unsigned. Windows shows a SmartScreen prompt; macOS quarantines the app (xattr -dr com.apple.quarantine <path>)...
kubeNimbus 0.4.0
- A cluster that cannot be reached now says why. When the kubeconfig's credential plugin
(aws eks get-token,kubelogin,gke-gcloud-auth-plugin, …) fails, the tab shows what
the plugin printed instead of a JSON deserialization error, and a VPN or proxy page
answering in the API server's place is named as such. - With the advanced view off, the sidebar now lists about 20 everyday kinds instead of about
35: Pods, Deployments, Services, ConfigMaps, Secrets, PVCs, Nodes, Namespaces and the like.
API machinery hides wherever it is filed, including ControllerRevisions, Endpoints and
EndpointSlices, IngressClasses, the secondevents.k8s.ioEvents row, LimitRanges and the
CSI kinds. Nodes and Namespaces are now reachable in this view. The sidebar filter and
Ctrl/Cmd+K still find everything. - The advanced-view toggle has an eye-plus icon ("show more"). It used to show the sliders
icon, which also marks the Config section. - The Cluster section no longer lists Nodes twice. The second row was the metrics API's
NodeMetrics, which now carries its own name (and PodMetrics likewise). - Releases are no longer published as pre-releases just because the version starts with
0., so the newest one carries GitHub's Latest label and the README's download link
lands on it. Only a suffixed tag (-rc.1) is still a pre-release. - Choose a log range in pod and workload panes: last 200 or 1000 lines, the last 5 minutes,
hour or day, or everything still retained. The pane shows when its scrollback limit trims
older lines. - Show only what is unhealthy on any list — one click or Ctrl+Z narrows pods, workloads or
events to the ones in trouble, and they appear the moment they break and leave when they
recover. - Open any pod's or workload's logs from anywhere: press Ctrl/Cmd+Shift+L (or Ctrl/Cmd+K),
type part of the name, press Enter. - Hover any pod or workload in the list and click its logs icon to open its logs; Shift+click,
or Shift+L, opens them full-size (Esc goes back to the split). A new "Open logs maximized"
preference makes full-size the default. - Node detail says more about the machine and what it is doing. The System card adds
platform, every address, pod ranges, zone and region, instance type, provider ID and when
the node joined. A new Events tab shows what the kubelet and the node controller recorded
(disk pressure, evictions, restarts), and a new Usage tab charts measured CPU and memory
with each figure as a share of allocatable. - The Events list reads like
kubectl get events: when each event last happened, its type,
reason, the object it was about, how many times it happened and its message, newest first —
and the search box finds events by reason, object or message. - Open a pod's logs straight from where it is named — workload details, node details, an event
about the pod, or an Argo CD application's resources — with L or the row's logs icon, instead
of going back to the Pods list to find it. If the pod has gone since, it says so.
Binaries are unsigned. Windows shows a SmartScreen prompt; macOS quarantines the app (xattr -dr com.apple.quarantine <path>). See the README for per-platform instructions and verifying SHA256SUMS.txt.
kubeNimbus 0.3.3
Added
- Deployments, StatefulSets and DaemonSets open on their pods, conditions and events.
Pod rows support logs and shell shortcuts. The Actions menu offers scale and rollout restart. - The namespace picker supports search, five recent namespaces and Ctrl/Cmd+Shift+N.
- Resource rows support L, P, S, F, E, R, Delete and
/shortcuts.
The workspace restores the selected kind, namespace and cluster tab.
Changed
- Pods start loading before discovery finishes. Aggregated discovery uses two requests on supported servers.
A disk cache skips discovery on warm connections and expires after six hours or a server-version change.
The sidebar context menu can refresh the catalog immediately. - A new app icon, shared with pgNimbus. The mark was redrawn so that its
plate, field and broom match pgNimbus's exactly, and every icon size — window,
taskbar, installer, Microsoft Store tiles — is now generated from one vector
master instead of a set of per-size drawings that had drifted apart. - Dependency updates. Avalonia 12.1.2 and SvcSystems.UI.Terminal 1.1.4 (the
exec pane's terminal). No behaviour change is intended.
Binaries are unsigned. Windows shows a SmartScreen prompt; macOS quarantines the app (xattr -dr com.apple.quarantine <path>). See the README for per-platform instructions and verifying SHA256SUMS.txt.
kubeNimbus 0.3.2
Added
- kubeNimbus is on the Microsoft Store. Windows can install it from the
Store listing, which is the same build re-signed by Microsoft during
certification — no SmartScreen prompt, and it updates itself. The downloads on
the Releases page are unchanged and stay unsigned. - Installers for every platform. Releases now carry an MSI for Windows, a
.dmgfor macOS and a.deband.AppImagefor Linux, beside the portable
archives that were the only option before. The Windows install is per-user and
needs no administrator rights; the macOS app is a real.appbundle you drag
to Applications, ad-hoc signed so Gatekeeper says what is actually wrong
instead of calling the download damaged; the.debregisters a desktop
launcher and pulls in the libraries it needs. CI installs and launches each
package on its own platform before a release is created.
Fixed
- A resource list no longer says a namespace is empty while it is still
loading it. Selecting a kind against a distant cluster showed the "No pods
found" panel for as long as the list request took — a second or more — and
only then filled in with the pods. The list now says what it is loading, and
in which namespace, until either the first row arrives or the server confirms
there is nothing there. A watch that reconnects, or one that fails outright,
reaches the same states instead of flashing an empty list or spinning forever. - List columns no longer shift sideways on their own. A column sized to its
content grew to fit the widest value that had ever scrolled into view and
never shrank back, and every such growth narrowed all the other columns at
once — so scrolling, a watch update, or just the Age and Restarts cells
ticking over would move text the reader was in the middle of reading. Columns
now keep the width they open with, and can still be dragged to any other. - Releases no longer attach the Microsoft Store package. The
.msixis
signed with a throwaway certificate for Partner Center and cannot be installed
by anyone who downloads it, but it was being published as a release asset
anyway.
Binaries are unsigned. Windows shows a SmartScreen prompt; macOS quarantines the app (xattr -dr com.apple.quarantine <path>). See the README for per-platform instructions and verifying SHA256SUMS.txt.
kubeNimbus 0.3.1
The first release with downloads. Everything listed under 0.3.0 below is in it —
that tag's build failed while archiving the Windows binary, so it never produced
a release.
Fixed
- The release pipeline could not package the Windows build. The step that zips
it wrote into a directory it never created, so the Windows archive failed after
the binary had already been built and tested, and the release was abandoned
rather than published half-finished. The other three platforms were unaffected.
Binaries are unsigned. Windows shows a SmartScreen prompt; macOS quarantines the app (xattr -dr com.apple.quarantine <path>). See the README for per-platform instructions and verifying SHA256SUMS.txt.