Skip to content

v0.11.17

Choose a tag to compare

@github-actions github-actions released this 04 Oct 10:57
· 22 commits to main since this release

Changelog

  • 1285b99 ci(release): gate tag releases on vet and tests, and exercise release-notes.sh against the last tag in ci
  • 3e41b52 docs(browse): correct the flux reconcile comment that claimed the will-run line and patch share one timestamp
  • 1854406 docs(claude): note that pod effective requests honour pod-level resources and in-place resize
  • 543d1a0 docs(claude): say confirm keys route through controller.handleconfirmkey instead of per-screen y/n handling
  • 2c90768 docs(claude): say the job rerun and cronjob run-now staging live in the shared jobactions package
  • 8e9801e docs(design): note ready unknown as reconciling progress and the with-source reconcile's partial-failure behaviour
  • bac4383 docs(design): say 4c's r re-probes the switch context list
  • a836acd docs(design): show the argo cd sync patch crediting operation.initiatedBy in the 33a mockup
  • 4c67c40 docs(design): specify the keybar's still running line for a write in flight past one second
  • c227c66 docs(design): spell every key chord in the design spec and claude.md as ctrl+x, matching the keybar
  • 07aa0be docs(helm): correct comments that still call the release cache cluster-wide
  • efc3e03 docs(kube): name a forward's pod-event pods get as a sanctioned one-shot read and note forwards from another context rely on their tunnel failing
  • 8c78c97 docs(kube): note that the exec-plugin stderr swap races unsynchronised os.stderr readers
  • d92b51c docs(lazy-informers): bring the kindsynced signature, helm scope and breadth-first consumer list in line with the code
  • 759a2e8 docs(readme): describe ctrl+k force delete and the always-modal namespace and crd delete
  • c1515ac docs(review): add feature-by-feature whole-app review and summary
  • 0d7aac7 docs(site): list the debug clean-up, job attempt diff and failed-only, secret paste, and label remove and copy keys in the keyboard reference
  • 768bbeb docs(site): match the website's light palette to the app's raised-contrast theme colours
  • a73ba95 docs(site): spell every key chord in the guide as ctrl+x, matching the keybar
  • 44853c8 docs(timeline): correct the claim that pairing a flux commit subject never starts a source informer
  • 30b7946 docs(timeline): say argo sync resolution starts the application informer on first read instead of claiming it reads only started caches
  • 5a31a0a docs(tui): correct the labels/annotations and secret editors' comments that still name ctrl-d as the removal key
  • f873108 docs(verbs): name the registry's D delete and R rollout-restart keys in code comments and pin the docs' key mentions to the registry
  • 84e08bd docs(verbs): say a keybar key may never be a string literal, only its label
  • 5aab87f docs(website): correct the guide's key bindings to match the app
  • b683188 feat(config): let argo cd's u find the dashboard url in a control-plane namespace set by argoCDNamespace in config.yaml
  • 4437536 feat(tui): find and switch to kubeconfig contexts by typing their name in the jump palette
  • 019f388 feat(tui): follow a flux reconcile failure past the failing workload to its worst pod and show the real reason, like exit 137, oomkilled
  • 7f5d7c9 feat(tui): jump to a custom resource's owner from its detail view with 1
  • 2597b5a feat(tui): page the nodes list and node detail's pods with pgdown/pgup, so paging down never opens a drain confirm
  • dcdfa09 feat(tui): show a still running line on the keybar while a slow write is in flight instead of nothing
  • 8364adb fix(app): keep lists refreshing while a kind changes faster than every 250ms
  • c31f684 fix(app): keep r working on the unreachable-cluster screen after a reconnect or context switch fails to build the new cluster
  • e121e7c fix(app): make a kubeconfig path typed on the setup screen work under --kubeconfig, and reconnect to the launch context, namespace and kind instead of the file's current-context
  • 627465d fix(app): print the crash footer below bubble tea's stack trace for a panic in a background command
  • 9103042 fix(app): restore the terminal and write a crash report when a background goroutine panics, instead of leaving the shell in raw mode on the alt screen
  • 41e8a1f fix(app): save session state when the terminal window is closed instead of losing it
  • b32bb12 fix(app): stop a double enter or r on the unreachable-cluster screen leaking a second running cluster, and stop its reconnect racing the screen it replaces
  • f641a13 fix(app): stop restoring the location kute crashed on at the next launch
  • 529c9d5 fix(cli): reject an unknown --theme, stray arguments and invalid namespace names, and warn when --demo ignores --context or --kubeconfig
  • 593f9d5 fix(config): make ctrl+p change only prodContexts in config.yaml, keeping comments, unknown keys and edits made since startup, writing atomically, and never saving --no-update-check
  • a433b5c fix(config): read config.yaml from XDG_CONFIG_HOME when it is set, still honouring an existing ~/.config file
  • 7396c50 fix(config): stop a config.yaml typo silently un-prodding every context, now valid keys are kept, an unreadable prodContexts treats every context as prod with a header warning, and ctrl+p won't overwrite the broken file
  • ed401e6 fix(demo): describe a helm rollback's new revision as rollback to n and supersede every deployed revision, as helm does
  • 3dacd62 fix(demo): stop demo-mode writes racing the screens reading the same objects, and report a drain's blocked evictions as the real cluster does
  • 2bedc25 fix(diag): never write a crash report through a symlink planted at its name in a shared temp dir
  • 3b2b7d2 fix(diag): scrub tokens and the home directory from the log and crash report, and cap exec plugin stderr
  • 028eaac fix(install): stop the installers skipping signature verification when a signed release's signature bundle is missing
  • d8d8a6d fix(kube): clear the offline pill as soon as you switch away from a context that was offline or logged out
  • 1671886 fix(kube): escape an apostrophe in a will-run kubectl patch line so the printed command pastes into a shell intact
  • db96889 fix(kube): keep the credential plugin's own message (like run aws sso login) on the unauthenticated banner instead of replacing it with client-go's generic exit-code error
  • 0f22fd0 fix(kube): make service port-forwards reach the pod's target port instead of the service port
  • a8b98b6 fix(kube): make timeline rollback restore the old revision's pod template exactly instead of merging newer env vars, containers and annotations into it
  • ddd4981 fix(kube): project the demo cluster's events like a live cluster's, reading series counts and last-seen times and breaking same-second ties the same way
  • 17551ee fix(kube): refuse a rollout restart of any kind other than a deployment, statefulset or daemonset instead of restarting a same-named deployment
  • 17126a2 fix(kube): run kubectl exec/debug/edit and helm rollback against kute's active context, not the kubeconfig's current-context
  • 1dcd662 fix(kube): show a port-forward to a deleted pod as reconnecting instead of active
  • b519b45 fix(kube): show printer columns on custom kinds whose name collides with a built-in, and stop flux, argo cd and certificate lists downloading their full crd
  • b22c06d fix(kube): show the crd count in the goto palette instead of a permanent dash
  • 23094a4 fix(kube): show the unreachable-cluster screen on the first timed-out probe of a cluster that has never answered instead of a 90 s connecting spinner
  • ef41be0 fix(kube): stop --demo logs printing every line twice or the same lines for every container, and give a demo pod an ephemeral debug container
  • 30401d0 fix(kube): stop a context switch during the first connect's discovery filling the new cluster's crd kinds and server version from the old one
  • a4ae843 fix(kube): stop a forward stopped or restarted just as it connects leaving its local port bound until kute exits
  • 8f55fec fix(kube): stop a knative service or istio gateway crd hiding the built-in services or gateway api gateways list
  • 074b392 fix(kube): stop a label, annotation, image or resources edit holding a control character or flag emoji being rejected as invalid json
  • da2b741 fix(kube): stop a late event from the previous context marking a newly switched, unreachable context as reached
  • 22e98b3 fix(kube): stop a list in flight during a context switch leaving a forbidden or failing kind's screen spinning forever on the new cluster
  • 0dab65c fix(kube): stop a mistyped or stale context reporting no kubeconfig found against a valid file, or connecting kute running in a pod to its own cluster under that context's name
  • 466d4e3 fix(kube): stop a service or deployment port-forward reconnecting to a terminating or not-yet-running pod after its pod is replaced
  • 255f138 fix(kube): stop another context's credential plugin output, or a warning from a successful login, appearing as the active cluster's unauthenticated reason
  • 65e738a fix(kube): stop deleting a job orphaning its running pods, and make job replace wait for the old job before recreating it
  • 3765e78 fix(kube): stop every credential failure freezing the ui for a tenth of a second while kute reads the plugin's error
  • b4743e8 fix(kube): stop the header flashing reconnecting every time an informer's watch routinely rotates
  • c927cf0 fix(kube): stop the offline banner quoting the expired-token error after you've re-authenticated and pressed r
  • 97e8202 fix(release): stop homebrew warning that the kute cask's postflight is deprecated
  • 1c767a4 fix(setup): show the kubeconfig path editor's connect key as ↵, as every other keybar spells enter
  • 34dee8e fix(state): fsync state.json before renaming it so a power loss can't leave it empty
  • 10e8f96 fix(state): keep every kute window's per-context location, recents and dismissed updates when several exit, instead of the last one discarding the rest
  • 7aa9daf fix(state): stop an older kute wiping a newer version's recents and per-context state when it exits
  • 3a597f2 fix(tui): advertise esc as cancel on the debug panel's confirms, matching every other confirm keybar
  • 35b349a fix(tui): age node detail's pressure conditions from the screen's own clock tick instead of reading the wall clock while rendering
  • 7bbfcfc fix(tui): answer R on a first-revision or still-loading helm release with nothing to roll back to instead of a revision 0 or -1 confirm
  • 018f8ce fix(tui): ask who-can about secrets for helm releases and a discovered kind's real plural, not its display name
  • 48d451f fix(tui): bring back the typed secret value, masked as it was, when a prod confirm is cancelled instead of discarding it
  • aa5d4ab fix(tui): count only ready, non-terminating pods as an ingress or route backend's ready endpoints, and flag a service port the service doesn't declare as no such port
  • a3f5067 fix(tui): count pod-level requests and in-place resizes in node detail's requested bars, matching kubectl describe node
  • 92304d6 fix(tui): count root-reserved blocks in node detail's disk bar so it matches the nodefs eviction signal
  • 3de5f7c fix(tui): count workloads that mount a configmap through a projected volume as its consumers, so ctrl-r restarts them too
  • f29b11e fix(tui): credit a cronjob run-now or job rerun to the identity the api server reports for you, not the kubeconfig user entry
  • 7654a08 fix(tui): credit an argo cd sync started with S to you, or to kute, instead of leaving argo with no initiator
  • ae53bf9 fix(tui): divide the nodes list's and overview's cluster cpu/mem by only the nodes reporting usage, and say how many when some don't
  • ba5429b fix(tui): draw the drain confirm's border in red and the quit confirm's in its palette color instead of uncolored
  • 02dc3c2 fix(tui): exec into a single-container pod with the shell x found, so an image with bash but no sh opens a shell
  • 6ac5b51 fix(tui): filter routes to the gateway, not to a literal *, on enter over a gateway listener with no hostname
  • 009c219 fix(tui): find a tls certificate stored in an opaque secret when the secrets list is already loaded, instead of calling it not found
  • c69d7de fix(tui): fit the help overlay on short terminals, folding overflowing key columns into a +N more row so the footer and esc close stay visible
  • fb5689d fix(tui): flag a ready certificate past its expiry as failing instead of a healthy green row
  • 28e7f0d fix(tui): hide the update chip when update checks are turned off instead of showing a stale version
  • eba39aa fix(tui): judge an http route's attachment across every parent gateway, mark a status older than the route as stale, and stop p jumping to a service parent as a gateway
  • bdc6b52 fix(tui): keep a covered screen's live metrics, clocks and spinners running when esc brings it back
  • 38140d6 fix(tui): keep a filtered resource list in its sort order, so all-namespaces mode stops showing a namespace twice or collapsing a crashlooping row as healthy
  • aa21442 fix(tui): keep another controller's OperationCompleted event in the timeline instead of dropping it as an unmatched argo sync
  • be58d5e fix(tui): keep counting every kind in the jump palette when crd discovery lands while its counts are still loading
  • c60bd68 fix(tui): keep following a container's logs after showing no logs found, so lines it writes later appear
  • e95f57a fix(tui): keep helm history's revision ages ticking off the screen's own clock instead of reading it mid-render
  • c97c13e fix(tui): keep node detail's and overview's cpu/mem usage on a failed metrics poll, and stop calling a forbidden or flaky metrics-server not installed
  • 4368776 fix(tui): keep node detail's cursor on the same pod after a reload when two of its pods share a name across namespaces
  • 3ca00b3 fix(tui): keep o jumping to a flux object's source when kute has no write access wired
  • d0db067 fix(tui): keep pod detail's cpu and memory bars live on the sync interval instead of frozen on a quiet pod, and stop every watch event querying metrics-server
  • bb9532d fix(tui): keep set resources' selected field after an apply, name the applied values in its result line, and stop calling its usage sample the metrics poll
  • d21383c fix(tui): keep the cluster overview's cpu and memory capacity live on the sync interval, and stop an older reload putting stale nodes and pods back on screen
  • 3bd5107 fix(tui): keep the connection badge in the header when a long context like an eks arn fills it, shortening the context instead
  • 2c05285 fix(tui): keep the cronjob and job lists' NEXT countdown and DURATION ticking after a watch event
  • 47eef96 fix(tui): keep the flux detail's failure age and retry countdown ticking after returning from another screen
  • 975f889 fix(tui): keep the flux tree showing what it can read when one flux kind is forbidden, naming the unreadable kind instead of failing the whole screen
  • af38a84 fix(tui): keep the flux tree's reconcile from aborting when its source is missing or can't be annotated
  • 3b34d66 fix(tui): keep the forwards list's reconnect countdown, uptime and idle time ticking every second instead of freezing until the next state change
  • 65d2e3a fix(tui): keep the helm release diagnostics spinner turning when a refresh drops back to loading
  • e32132e fix(tui): keep the helm rollback confirm's will-run line on the keybar instead of dropping it when the --kubeconfig path makes it too long
  • be3c0af fix(tui): keep the selected row on screen when the resource list is offline or showing a loading or follow note
  • 159fcf1 fix(tui): keep the session on the listed kind after jumping to overview, who-can, the flux tree or events so it isn't restored or ranked as current
  • f48e8ce fix(tui): label a rerun of a helm hook job as a manual run instead of the hook it was cloned from
  • 8626595 fix(tui): let the jump palette find every cached object by name instead of only the first 50
  • 9fe4528 fix(tui): let ↑/↓ step between objects in crd detail like j/k and stop an undocumented V opening set resources
  • 3c57a61 fix(tui): list a configmap's binarydata keys read-only in its data view instead of hiding them and calling a binary-only configmap empty
  • 69dd12b fix(tui): list a configmap's job, cronjob and bare pod consumers as not restartable so ctrl+r doesn't look like it covers them
  • a457c9a fix(tui): list same-named service accounts from different namespaces separately in who-can and show each one's namespace
  • 1f4b139 fix(tui): make a helm rollback in a prod context require typing the release name instead of a single y
  • 3d032e8 fix(tui): make a label edit ask y/n while the namespace's services are still loading or unreadable instead of applying without checking it detaches pods from a service
  • 0bfa4ba fix(tui): make adding a secret or configmap key that already exists ask y/n before overwriting it, and report it as updated instead of added
  • a066c2e fix(tui): make an empty all-namespaces list say no resources in any namespace instead of naming a blank namespace, and stop claiming a deleted namespace exists
  • 427f25f fix(tui): make argo cd's u find the dashboard url in argo's own namespace and say the config is still loading instead of not configured, without blocking the screen
  • a0f9436 fix(tui): make configmap ctrl-r ask y/n before restarting every consumer, and type the name in prod, like a single rollout restart
  • 9147edb fix(tui): make deleting a node always require the type-the-name modal, not an inline y/n outside prod
  • 80687ea fix(tui): make enter on a flux helmrelease's event or timeline row open the flux object instead of the helm releases list
  • 249cdad fix(tui): make enter on an ephemeral debug container reattach to its shell, and say when it has exited instead of failing in kubectl
  • 8d83c2b fix(tui): make esc from a helm release's pods return to your namespace instead of leaving the session in all-namespaces mode
  • 7da743e fix(tui): make force delete and namespace or crd deletes always require the type-the-name modal, and make ctrl-k actually force delete
  • fc0f573 fix(tui): make j/k on a custom resource's detail screen in all-namespaces mode open the next object in its own namespace instead of reporting it deleted
  • 82fad09 fix(tui): make o on a flux list jump to a source in another namespace instead of an empty list in the row's own, and name that namespace in source
  • 7e7cde5 fix(tui): make r retry the connection while offline on deployments, flux, argo cd, certificate and forward lists instead of opening their own r action
  • 7e3d4cb fix(tui): make the drain confirm count only the pods drain evicts, not the daemonset and static pods it leaves running
  • 481e1d9 fix(tui): make the what's-new panel show command copied, opened in browser, skipped and check failed instead of dropping every feedback line
  • efad2ca fix(tui): measure pod and object detail event cells and cert chain failure wrapping by display width so non-ascii text isn't cut mid-character
  • 935bf12 fix(tui): move node detail's filtered pod list with ctrl+j/ctrl+k and toggle a job rerun's create/replace choice with j/k
  • 306ca93 fix(tui): name ctrl-x, not m, as the reveal and re-mask key on a secret value being edited
  • 318438d fix(tui): name esc, not n, as the cancel key in the edit, stop-all-forwards and reveal-all confirm prompts
  • a7fd303 fix(tui): name the created job after a run-now from cronjob detail and spell the restage key as R, not ctrl+r
  • 9079410 fix(tui): name the current context in the logs screen after a context switch, and fail instead of streaming from default when a pod's namespace is unknown
  • 450d098 fix(tui): name the kind a confirm prompt asks about by its api kind, not kute's internal registry key
  • c73af62 fix(tui): name the pod's own grace period, like 30s, in pod detail's prod delete confirm
  • f863686 fix(tui): name the screen in crash reports as browse.Model instead of *browse.Model
  • 08ba216 fix(tui): offer clean up for a debug copy pod when kubectl debug exits with an error after creating it
  • b8d9f8b fix(tui): offer clean up for the node debugger pod instead of usually missing it and leaving it running
  • 0083c44 fix(tui): omit the secret data view's will-run band while an edit is still unchanged, as the spec says, instead of a no-changes line
  • b99da3d fix(tui): open a context switched to for the first time on its kubeconfig namespace instead of default
  • c2e7fd9 fix(tui): open a flux source, alert, provider or image policy in the generic detail view with its conditions and events instead of the reconciler screen
  • 50d7987 fix(tui): open logs, detail, exec, debug and delete on the selected pod when same-named pods share an all-namespaces list
  • 8ca4748 fix(tui): open the binding behind who-can's granted (you) row on enter instead of doing nothing
  • f31f708 fix(tui): open the context palette instantly instead of freezing on credential plugins when there are more than 8 contexts
  • 32079c0 fix(tui): open the filter on / over a revisited list's dimmed cached rows instead of running the typed query as shortcuts
  • f493c6f fix(tui): pad screen chrome with the hardened cell-width helpers so malformed text can't shift a line and truncation shows … instead of ...
  • 931a3d0 fix(tui): pin who-can's (you) row to the identity the api server reports for you, not the kubeconfig user entry, on token and exec-plugin clusters
  • d2f6930 fix(tui): put the cursor on the row a filter matches best, so typing api and enter opens api-… rather than a failing row sorted above it
  • d1d2433 fix(tui): raise dim hint text to readable contrast in both themes
  • fafaa51 fix(tui): raise the light theme's status and error colours and the offline ramp to readable contrast on selected rows
  • 49df875 fix(tui): re-probe the unreachable-cluster screen's switch context list on r instead of showing its first probe forever
  • 2a78d15 fix(tui): read a helm hook's evidence from its own namespace and show hook run times as ages instead of a dateless clock time
  • 12be5c9 fix(tui): read a replicaset's or pod's controlling owner, not whichever owner reference is listed first, for rollouts, rollback and the timeline
  • 91b8ebd fix(tui): refresh the certificate chain when its first acme order or challenge is created, not only once one is already shown
  • aa57985 fix(tui): refresh the timeline when a deployment, argo application or flux source changes instead of waiting for an unrelated pod or event
  • 4e4e367 fix(tui): refuse helm rollback to the current revision and name the target's status in the confirm, warning when it never went live
  • f762552 fix(tui): refuse the debug panel's launch and clean-up delete while the cluster is offline, like every other mutating action
  • de02e39 fix(tui): refuse the timeline's R on the current revision instead of confirming a rollback that changes nothing
  • 34babd6 fix(tui): reopen on the flux, gateway or other custom kind you quit on instead of falling back to pods and forgetting it
  • b633425 fix(tui): resolve gateway api backends and listener certificates in the namespace they name, and show refused cross-namespace or non-service backends honestly
  • e16e9ee fix(tui): say on an empty helm list that only helm's default secret storage is read, not that the cluster has no releases
  • 699fb1e fix(tui): say so in the context palette when ctrl+p can't save config.yaml instead of failing silently
  • 9756b3c fix(tui): say who-can counts only cluster-wide grants when asked about all namespaces
  • 4fa5c95 fix(tui): show a certificate that expired within the last day as expired instead of expiring in 0d
  • 1b3403f fix(tui): show a certificate's issuer as its namespaced issuer when kind is omitted, and external issuers as-is instead of a missing clusterissuer
  • 3af60be fix(tui): show a context whose probe got a 403 as reachable and one with an expired login as needs login instead of unreachable
  • 50f273a fix(tui): show a crash-looping container's last run in the logs screen instead of waiting for it to start
  • 5788392 fix(tui): show a crash-looping init container's status and termination banner on the pod detail screen, matching the pods list
  • 9adaf31 fix(tui): show a custom resource list's own printer columns again instead of only name and age
  • 0be2c39 fix(tui): show a custom resource list's short kind name like CERTS in the keybar pill and name kinds like ingress and networkpolicy correctly in delete confirms
  • d6810f8 fix(tui): show a deployment rollback in the timeline when it happened, labelled with the revision it restored, instead of at the old replicaset's creation date
  • 9cc161a fix(tui): show a flux object mid-reconcile with ready unknown as reconciling instead of a warning
  • b194219 fix(tui): show a multi-source argo application's revision as its source count and sync each source to its own target instead of a bogus HEAD
  • d4804aa fix(tui): show a route rule's header-only and grpc method matches and a +n count for extra matches instead of calling it match-all
  • e58a518 fix(tui): show a suspended flux helmrelease or cross-namespace dependency as suspended on the flux detail screen
  • 04cf75f fix(tui): show a suspended flux object as suspended on its detail screen instead of reconcile failed with a retry that never comes
  • 9928b39 fix(tui): show an ingress's default backend and resource backends in its routing table and backends count instead of claiming it has no routes
  • bb9fa36 fix(tui): show every failed delete, drain, cordon, restart or other mutation on the keybar instead of closing the confirm as if it succeeded, and stop a late result wiping a newer confirm
  • 6d76e49 fix(tui): show failed deletes in a marked set on the red result line instead of a dim note
  • 8f052ed fix(tui): show how long a debug copy or node debugger pod has been running on the clean up prompt
  • 7ba8060 fix(tui): show live container usage in the set resources panel instead of always reading metrics unavailable
  • c0716ed fix(tui): show offline and disable mutations on every screen opened or returned to while the cluster is unreachable
  • 820e900 fix(tui): show switching… in the header while a context switch runs and say why on the keybar when one fails, instead of nothing
  • fb000e9 fix(tui): show the debug panel's access denial and who-can on rbac clusters instead of offering a launch the api server will refuse
  • bb8b3d5 fix(tui): show when the list last loaded on the error and 403 cards instead of always saying never
  • e528869 fix(tui): show which consumers restarted when one ctrl-r restart fails, instead of reopening the configmap editor as if the applied value never landed
  • e51f9a7 fix(tui): show which cronjob runs stop in the prod suspend modal from the list, and stop it overrunning the screen from detail
  • 9bdb159 fix(tui): show which pods a drain will lose for good before you confirm it — unmanaged pods and emptyDir data
  • 6dfb254 fix(tui): show – instead of 0 in the crds list's count column until a kind's instances are actually counted, and keep the count live
  • 6fe5045 fix(tui): shrink a long header badge to its glyph before squeezing breadcrumbs to unreadable four-cell stubs
  • c56214e fix(tui): spell every on-screen key chord as ctrl+x, matching the keybar, instead of mixing in ctrl-x
  • bec11c1 fix(tui): spell the flux tree's expand key tab, as flux detail and every other fold toggle do
  • 3034339 fix(tui): stop --keycast showing the keys typed into a secret value buffer
  • e592911 fix(tui): stop a capital R typed into a configmap value applying and restarting every consumer, now ctrl-r
  • 80b367c fix(tui): stop a context switch and an unreachable-cluster reconnect running at once and reviving the cluster just replaced, refusing whichever comes second
  • cf3dfb1 fix(tui): stop a context switch briefly showing the previous cluster's rows as cached
  • df58501 fix(tui): stop a custom resource's detail screen showing no events or jumping to yaml before its events have loaded, and keep its events live
  • 9722978 fix(tui): stop a failed context switch tearing down the healthy cluster for nothing or leaving the list frozen after a rollback, and stop a switch in flight reloading the old list against the new cluster
  • c254d53 fix(tui): stop a goto to the kind or namespace you came from leaving the new list stuck on loading
  • 55b0524 fix(tui): stop a key pressed while the cronjob or job detail screen loads, or a held ] walking siblings, closing the screen
  • e73aec0 fix(tui): stop a marked-set delete running while offline, and keep only the rows that failed to delete marked
  • af64148 fix(tui): stop a pod detail reload landing after [ or ] showing the previous pod under the new pod's name
  • 446fd9c fix(tui): stop a recreated pod's detail showing its same-named predecessor's events and a node timeline pulling in a same-named pod's events from another namespace
  • 48f730e fix(tui): stop a second rerun from the job attempts screen failing with already exists, now it proposes the next free -rerun-N name
  • 23a7fbb fix(tui): stop a second x during the shell check opening a second shell after the first exits, and say the check is running
  • 6579c76 fix(tui): stop a slow earlier timeline load overwriting a newer one after a burst of cluster changes
  • 6c6bcdd fix(tui): stop a slow flux tree reload putting an older tree back on screen
  • 96b680e fix(tui): stop a slow node detail reload putting an older pod list back over a newer one
  • a9753a5 fix(tui): stop an empty helm releases list downloading every release in the cluster to fill its hints
  • f6b053c fix(tui): stop an event on a service or other object turning red because a same-named pod is failing
  • a448248 fix(tui): stop an unrelated cronjob event reverting the schedule editor to the pre-apply schedule, and rediff what changes after an external edit
  • 35e89de fix(tui): stop configmap and secret key edits silently overwriting a change someone else made while the editor was open
  • 5f59895 fix(tui): stop crd detail claiming an object was deleted when it comes back or its cache failed to list
  • 41cb47f fix(tui): stop editing a configmap or secret key again right after saving it failing with changed on the server
  • 7bec8d5 fix(tui): stop editing a configmap value with tabs or crlf line endings rewriting every tab and line ending, now it points you to E instead
  • eb956f5 fix(tui): stop enter-enter on a multi-line or binary secret value or annotation silently rewriting it flattened
  • 8f5d102 fix(tui): stop every reconnect from the unreachable-cluster screen leaving a goroutine parked on the replaced cluster's events
  • 7704d05 fix(tui): stop g and n opening the goto and namespace palettes on the setup screen, where a pick was silently dropped
  • 7bc0f50 fix(tui): stop g, n, c and ? escaping to the shell while a cronjob run-now or resume prompt is open
  • 4b2d0ef fix(tui): stop jumping to a node from its events or timeline moving the session to the default namespace
  • a805c86 fix(tui): stop n and q opening the namespace palette or quit confirm over a pending cert renew, helm rollback or secret and configmap key removal
  • 6b22892 fix(tui): stop opening the context palette running every context's credential plugin, which could pop a browser login per context, and probe those only on ctrl+r
  • a52e8fa fix(tui): stop overview's pods capacity bar counting unscheduled pending pods
  • 2c309a8 fix(tui): stop pod detail claiming no events while its event cache is still loading or forbidden, and show why instead
  • 8c6c277 fix(tui): stop pod detail reporting a pod deleted while its namespace's pod cache is still loading, and clear the banner once the pod is found
  • 307db2c fix(tui): stop pod detail's cpu and memory bars overstating usage when a sidecar has no limit, and name the oomkilled container's own memory limit
  • 68e0863 fix(tui): stop r in the context palette and y/u in the cronjob schedule editor firing actions instead of typing, now ctrl-r, ctrl-t and ctrl-z
  • 2b7da05 fix(tui): stop resume claiming a long-suspended cronjob may start a missed run immediately when its starting deadline has already passed
  • 556feb8 fix(tui): stop run-now jobs after a context switch from the resource list being stamped with the previous context's user
  • c3ab55d fix(tui): stop same-second timeline rows swapping places on every reload
  • d6e6ff8 fix(tui): stop set image offering repo:latest as history for a digest-pinned workload
  • d578912 fix(tui): stop tagging a same-named pod on another cluster as a debug copy
  • d9178e0 fix(tui): stop the cronjobs list showing no retained runs and a no-conflict run-now when job history is forbidden, now marked unavailable
  • 59c98c4 fix(tui): stop the flux detail failure card reading retry in now forever once a failure is older than one interval
  • 08ac27f fix(tui): stop the flux detail screen claiming an object no longer exists while its cache loads or is forbidden, and stop folding unread inventory rows as ready
  • f19b6c6 fix(tui): stop the flux detail screen cutting a curly quote or ellipsis in half when wrapping a condition message
  • 51f7c61 fix(tui): stop the flux inventory dropping rbac objects whose names contain a colon
  • fc37742 fix(tui): stop the flux inventory reading a knative service as a core service or a flux helmrelease as a helm release, and listing every inventory kind cluster-wide
  • a6c8d3e fix(tui): stop the helm list showing a release as rolling out forever when its statefulset or daemonset uses ondelete or a partition
  • a931482 fix(tui): stop the help overlay at 80 columns cutting every list key's label to …, now all columns shorten evenly
  • f008b0b fix(tui): stop the labels/annotations editor showing the old value under its updated result line until reopened, now it catches up when the change lands
  • cd6f4ff fix(tui): stop the logs screen showing the last second of history twice when it starts following
  • 47c22e5 fix(tui): stop the namespace palette on the helm releases list starting a release informer in every namespace
  • 91bc758 fix(tui): stop the port-forward picker offering or starting on a local port another forward already owns, and treat a port held on ::1 as busy
  • 5ba964f fix(tui): stop the secret yaml view showing values under quoted keys like "true" or "1" and in the last-applied-configuration annotation, and mask that annotation in the labels/annotations editor
  • 33b8e0c fix(tui): stop the set resources panel freezing the app while metrics-server is slow, and stop every workload change re-querying it while the panel is open
  • 809aeb6 fix(tui): stop the timeline crediting a manual argo cd sync to auto-sync and stamping every older sync row with the newest sync's commit and initiator
  • 0463b36 fix(tui): stop the timeline's flux revision rows showing an older commit's subject when a source fetched two commits within the hour
  • 7bf0c9c fix(tui): stop the unreachable-cluster screen running every sibling context's credential plugin on open, showing those as not probed
  • e28ac1b fix(tui): stop tls and certificate chain screens calling secrets, issuers and chain steps missing when their cache is still loading or forbidden
  • 35c07be fix(tui): stop typing in the goto palette starting the full crd informer before the crds list was ever opened
  • ba31dd3 fix(tui): stop who-can counting a rule in another api group, like metrics.k8s.io pods, as a grant on the resource asked about
  • 9f118ad fix(tui): stop who-can listing a subject limited to named objects as able to list or create the whole resource, and mark its other grants with the names they cover
  • aecd79d fix(tui): stop who-can pinning you as denied on token and exec-plugin clusters, and count grants every authenticated user holds
  • b811ff9 fix(tui): stop who-can's closest miss quoting a non-resource url rule as granting on nothing, and match */scale-style subresource wildcards
  • 9ad99ee fix(tui): stop x and enter on the pod detail screen in --demo running a real kubectl exec against the kubeconfig's cluster
  • 868a08a fix(tui): stop y copying a broken http:///path url for an ingress rule with no host or a wildcard host, and hide the hint there
  • 7fdde5d fix(tui): time out set resources' pre-flight dry-run and drop it on a context switch instead of letting it hang
  • 90143b8 fix(tui): title the setup screen context not found or kubeconfig couldn't be loaded instead of no kubeconfig found for every kubeconfig error
  • 28effe4 fix(tui): treat an ingress rule host covered by a wildcard tls host as https in the routing table instead of plain http with no tls cell
  • 89a540f fix(update): cap release-feed and changelog responses at 1 MiB
  • 0c04a32 fix(update): reap the browser process 'o' launches and open urls on windows without re-parsing them through cmd
  • 917a59d fix(update): retry a failed update check at most once an hour instead of on every launch
  • a9f527f fix(update): show intel mac homebrew installs brew upgrade --cask instead of the curl installer, which overwrote homebrew's symlink
  • 4577f1c fix(update): stop opening the update panel during the startup check from firing a second release-feed request
  • 9dad70e fix(update): strip control characters from changelog entries so a tampered changelog can't write terminal escapes
  • 8cb68ae fix(update): suggest go install for a kute installed with go install instead of the install script
  • 9f86603 perf(helm): read a repo index's chart versions without building its whole yaml tree, cutting the first helm list load's parse about eightfold
  • d602a44 perf(helm): serve a namespace's helm releases from the already-synced all-namespaces cache instead of listing them again
  • 92321dc perf(kube): stop draining a node listing every pod in the cluster, now only that node's pods
  • 1d1a9b3 perf(tui): make a resource list frame cost only the rows on screen, not every loaded row
  • e31962d perf(tui): make the helm releases list decode only each release's newest revision, once per load
  • b0e50e3 perf(tui): rebuild the kind registry only when a custom kind's columns arrive, not once per crd while the crds list loads
  • 5f7c526 perf(tui): stop a change in another namespace reloading the list you're on under --namespace-scoped or for helm releases
  • a2a91ca perf(tui): stop a change in another namespace reloading the list you're on, which the event batching had been undoing
  • 33e2d8d perf(tui): stop node detail querying metrics-server for every pod in the cluster every 2s and on every pod or node change, now only its pods' namespaces on the sync interval
  • b231f1b perf(tui): stop opening a tls ingress, gateway or cert chain downloading every secret in the cluster to read one certificate
  • 87673df perf(tui): stop the container picker re-running the shell check on every container x already checked
  • 4a9c2fb perf(tui): stop the helm release diagnostics screen downloading every secret in the cluster to check a chart's secret
  • 40c372e perf(tui): stop the helm release diagnostics screen re-decoding every release in the namespace on each event, now one debounced read of its own release
  • 6845dfe perf(tui): stop the ingress list re-reading every service and pod for each backend path on every reload
  • 104bb93 perf(tui): stop the nodes list warming a pod cache for the active namespace under --namespace-scoped that it never reads
  • 07e5fca perf(tui): stop the set image panel starting statefulset, daemonset and cluster-wide deployment informers to list other workloads' tags
  • 3fd0164 perf(tui): stop the yaml view re-fetching managedfields from the api server on every change to its kind, only when the object itself changed
  • 7a7d58e perf(tui): wrap and style only the on-screen rows of the helm release diagnostics table on each frame
  • d07a206 refactor(actions): add one confirm-key router and keybar hint builder keyed from the verbs registry
  • 50d8f15 refactor(actions): gate a marked-set modal confirm on the typed count inside the controller instead of trusting browse to check it
  • a9f776e refactor(app): assert at compile time that tui.Model feeds the crash snapshot
  • 0b182df refactor(browse): route confirm keys and hints through the shared controller router
  • 94dce4f refactor(browse): take inline-editor, error-card and staged-run keybar keys from the verbs registry
  • 64759c0 refactor(debugpanel): take every field key and its handler from the verbs registry
  • baca292 refactor(helmdetail): route e and y through the verb registry's keys
  • c1a1c92 refactor(jobactions): share cronjob run-now and suspend/resume staging between the cronjobs list and cronjob detail
  • 82cf704 refactor(jobactions): share the job rerun choice between the jobs list and the attempt ledger
  • 5d72285 refactor(kube): drop the never-assigned failed and no-cluster connection phases
  • 8b4a5f9 refactor(kube): move test-only watch wrappers to export_test.go and drop the register-every-kind form
  • be64614 refactor(kube): read the cluster's kubeconfig context under its lock through contextsnapshot
  • e0d6520 refactor(kube): resolve a custom kind's cache scope once per read instead of twice
  • 1ed7893 refactor(kube): share one flux sourceref, condition and revision reader across the flux screens
  • 27d58d1 refactor(setup): take the setup screen's keybar keys and handlers from the verbs registry
  • a09ec7d refactor(tui): give the pod debug launch its own verb policy instead of borrowing node debug's
  • f055cec refactor(tui): render crd detail's condition and event ages from a load-time stamp instead of reading the clock
  • 81c8780 refactor(tui): render pod detail's event ages from a load-time stamp instead of reading the clock
  • 9c159a8 refactor(tui): resolve every confirm tier in one verbs policy table that actions.Begin applies itself
  • da53366 refactor(tui): route poddetail, objectdetail, nodedetail and cronjobdetail confirms through the shared router
  • 4f42c20 refactor(tui): route secretdata and configmapdata confirms through the shared router
  • 0e8cd41 refactor(tui): route the namespace palette and browse sync checks through tui.KindsSynced and drop app's interface mirrors
  • 4effede refactor(tui): route timeline, helmhistory, jobattempts and certchain confirms through the shared router
  • 5a39b41 refactor(tui): run the marked-set delete through the shared confirm controller instead of its own state machine
  • 832047c refactor(tui): simplify the keycast mask condition for staticcheck
  • 9290812 refactor(tui): take detail-screen, who-can and rerun keybar keys from the verbs registry
  • 79c84da refactor(tui): take events, timeline, podlogs and nodedetail keybar keys from the verbs registry
  • 2a8efc2 refactor(tui): take the configmap and secret data keybar keys from the verbs registry
  • 80b4cba refactor(tui): take the flux detail and overview keybar keys from the verbs registry
  • cfec6d3 refactor(tui): take the meta panel, forward picker and exec picker keybar keys from the verbs registry
  • 49ef0fa refactor(update): take the what's-new panel's keys and handlers from the verbs registry
  • 89e701c refactor(verbs): list the timeline verb in all so byid and the keyboard reference check see it
  • a50add3 refactor(verbs): register shared navigation keys and every screen-local keybar key
  • 7389b1f refactor(verbs): register the job attempt ledger's diff and failed-only keys and render its keybar from the registry
  • 4649591 refactor(verbs): register the secret, configmap and labels editors' mask, paste, buffer-apply, remove and copy keys and render their hints from the registry
  • 81a6675 refactor(yamlview): take every keybar key and its handler from the verbs registry
  • bf9d0ac refactor(yamlview): take the reveal-all confirm's key and hints from the verbs registry
  • 1e0dcfa style(kube): gofmt the discovered kind struct
  • 7a9138d style(tui): gofmt node detail's golden test open-exec stub
  • 600def7 style(tui): gofmt the namespace palette file
  • c2750a3 test(actions): fail any controller screen that hand-routes confirm keys or hand-builds confirm hints
  • 0b18c65 test(app): use the test's context in the hangup test
  • e3815f2 test(e2e): expect argo detail's truncated event reason to end in an ellipsis
  • aaf594a test(e2e): match the exec and debug will-run lines now that kubectl's context flags precede the verb
  • b97dda9 test(e2e): match the secret editor's ctrl+x re-mask hint as the keybar now spells it
  • 51f0011 test(e2e): open set resources with r and expect its result line to name the applied values
  • 4a01cbc test(e2e): read a deleted row's absence from the table, not the frame the keybar's result line still names it in
  • 94a0a25 test(e2e): wait for the secret editor's changed on the server conflict line instead of the old wording
  • d061bfc test(fake): give the fake cluster a countlive so --demo and tests exercise the production palette-count path
  • 2b79549 test(tui): make the set resources goldens open the panel instead of recording a rollout restart confirm
  • dea3954 test(tui): name the missing-metrics-server test error to satisfy errname
  • 7f89174 test(tui): pin the drain confirm's impact line colours in dark and light truecolor goldens
  • 0f0fe7e test(verbs): fail on a hand-written keybar key or a declared verb missing from all