Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package k9s for openSUSE:Factory checked in at 2025-09-20 22:04:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/k9s (Old) and /work/SRC/openSUSE:Factory/.k9s.new.27445 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "k9s" Sat Sep 20 22:04:27 2025 rev:64 rq:1306100 version:0.50.12 Changes: -------- --- /work/SRC/openSUSE:Factory/k9s/k9s.changes 2025-09-19 15:34:43.482672874 +0200 +++ /work/SRC/openSUSE:Factory/.k9s.new.27445/k9s.changes 2025-09-20 22:04:48.856517860 +0200 @@ -1,0 +2,9 @@ +Sat Sep 20 08:36:36 UTC 2025 - Johannes Kastl <[email protected]> + +- update to 0.50.12: + * Resolved Issues + - #3570 0.50.11 could not display any resources + - #3562 Can't delete namespace + - #3547 Error message from admission controller + +------------------------------------------------------------------- Old: ---- k9s-0.50.11.obscpio New: ---- k9s-0.50.12.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ k9s.spec ++++++ --- /var/tmp/diff_new_pack.8kUHNk/_old 2025-09-20 22:04:50.840601084 +0200 +++ /var/tmp/diff_new_pack.8kUHNk/_new 2025-09-20 22:04:50.840601084 +0200 @@ -17,7 +17,7 @@ Name: k9s -Version: 0.50.11 +Version: 0.50.12 Release: 0 Summary: Curses based terminal UI for Kubernetes clusters License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.8kUHNk/_old 2025-09-20 22:04:50.872602426 +0200 +++ /var/tmp/diff_new_pack.8kUHNk/_new 2025-09-20 22:04:50.876602593 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/derailed/k9s.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.50.11</param> + <param name="revision">v0.50.12</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">disable</param> ++++++ k9s-0.50.11.obscpio -> k9s-0.50.12.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/Makefile new/k9s-0.50.12/Makefile --- old/k9s-0.50.11/Makefile 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/Makefile 2025-09-19 16:36:53.000000000 +0200 @@ -1,5 +1,5 @@ NAME := k9s -VERSION ?= v0.50.11 +VERSION ?= v0.50.12 PACKAGE := github.com/derailed/$(NAME) OUTPUT_BIN ?= execs/${NAME} GO_FLAGS ?= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/change_logs/release_v0.50.12.md new/k9s-0.50.12/change_logs/release_v0.50.12.md --- old/k9s-0.50.11/change_logs/release_v0.50.12.md 1970-01-01 01:00:00.000000000 +0100 +++ new/k9s-0.50.12/change_logs/release_v0.50.12.md 2025-09-19 16:36:53.000000000 +0200 @@ -0,0 +1,29 @@ +<img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/k9s.png" align="center" width="800" height="auto"/> + +# Release v0.50.12 + +## Notes + +Thank you to all that contributed with flushing out issues and enhancements for K9s! +I'll try to mark some of these issues as fixed. But if you don't mind grab the latest rev +and see if we're happier with some of the fixes! +If you've filed an issue please help me verify and close. + +Your support, kindness and awesome suggestions to make K9s better are, as ever, very much noted and appreciated! +Also big thanks to all that have allocated their own time to help others on both slack and on this repo!! + +As you may know, K9s is not pimped out by corps with deep pockets, thus if you feel K9s is helping your Kubernetes journey, +please consider joining our [sponsorship program](https://github.com/sponsors/derailed) and/or make some noise on social! [@kitesurfer](https://twitter.com/kitesurfer) + +On Slack? Please join us [K9slackers](https://join.slack.com/t/k9sers/shared_invite/zt-3360a389v-ElLHrb0Dp1kAXqYUItSAFA) + +## Maintenance Release! + +## Resolved Issues + +* [#3570](https://github.com/derailed/k9s/issues/3570) 0.50.11 could not display any resources +* [#3562](https://github.com/derailed/k9s/issues/3562) Can't delete namespace +* [#3547](https://github.com/derailed/k9s/issues/3547) Error message from admission controller + +--- +<img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/imhotep_logo.png" width="32" height="auto"/> © 2025 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0)# \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/internal/client/client.go new/k9s-0.50.12/internal/client/client.go --- old/k9s-0.50.11/internal/client/client.go 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/internal/client/client.go 2025-09-19 16:36:53.000000000 +0200 @@ -184,7 +184,7 @@ slogs.Verb, verbs, ) if resp != nil { - clog.Debug("[CAN] reps", + clog.Debug("[CAN] response", slogs.AuthStatus, resp.Status.Allowed, slogs.AuthReason, resp.Status.Reason, ) @@ -196,7 +196,7 @@ } if !resp.Status.Allowed { a.cache.Add(key, false, cacheExpiry) - return auth, fmt.Errorf("`%s access denied for user on %q:%s", v, ns, gvr) + return auth, fmt.Errorf("(%s) access denied for user on resource %q:%s in namespace %q", v, name, gvr, ns) } } auth = true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/internal/model/flash.go new/k9s-0.50.12/internal/model/flash.go --- old/k9s-0.50.11/internal/model/flash.go 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/internal/model/flash.go 2025-09-19 16:36:53.000000000 +0200 @@ -14,7 +14,7 @@ const ( // DefaultFlashDelay sets the flash clear delay. - DefaultFlashDelay = 3 * time.Second + DefaultFlashDelay = 6 * time.Second // FlashInfo represents an info message. FlashInfo FlashLevel = iota diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/internal/view/browser.go new/k9s-0.50.12/internal/view/browser.go --- old/k9s-0.50.11/internal/view/browser.go 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/internal/view/browser.go 2025-09-19 16:36:53.000000000 +0200 @@ -302,8 +302,8 @@ if !b.app.ConOK() || cancel == nil || !b.app.IsRunning() { return } - // Skip warning on first view or if table data is empty (likely during initialization) - if b.firstView.Load() == 0 || mdata.Empty() { + // Skip warning on first view (likely during initialization) + if b.firstView.Load() == 0 || mdata.HeaderCount() == 0 { b.firstView.Add(1) return } @@ -316,7 +316,7 @@ b.setUpdating(true) defer b.setUpdating(false) if b.GetColumnCount() == 0 { - b.app.Flash().Warnf("No resources found for %s in namespace %s", b.GVR(), client.PrintNamespace(b.GetNamespace())) + b.app.Flash().Warnf("No resources found for %s in %q namespace", b.GVR(), client.PrintNamespace(b.GetNamespace())) } b.refreshActions() b.UpdateUI(cdata, mdata) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/internal/view/container.go new/k9s-0.50.12/internal/view/container.go --- old/k9s-0.50.11/internal/view/container.go 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/internal/view/container.go 2025-09-19 16:36:53.000000000 +0200 @@ -164,9 +164,21 @@ return evt } + var err error c.Stop() - defer c.Start() - shellIn(c.App(), c.GetTable().Path, path) + defer func() { + c.Start() + if err != nil { + c.App().QueueUpdate(func() { + if err != nil { + c.App().Flash().Errf("Shell exec failed: %s", err) + } + }) + + c.App().Flash().Err(err) + } + }() + err = shellIn(c.App(), c.GetTable().Path, path) return nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/internal/view/exec.go new/k9s-0.50.12/internal/view/exec.go --- old/k9s-0.50.11/internal/view/exec.go 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/internal/view/exec.go 2025-09-19 16:36:53.000000000 +0200 @@ -587,7 +587,7 @@ close(statusChan) if err != nil { - err = fmt.Errorf("command failed. Check logs: %w", err) + err = fmt.Errorf("command failed. Check k9s logs: %w", err) } return err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/internal/view/pod.go new/k9s-0.50.12/internal/view/pod.go --- old/k9s-0.50.11/internal/view/pod.go 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/internal/view/pod.go 2025-09-19 16:36:53.000000000 +0200 @@ -393,28 +393,33 @@ } func resumeShellIn(a *App, c model.Component, path, co string) { + var err error c.Stop() - defer c.Start() + defer func() { + c.Start() + a.QueueUpdate(func() { + if err != nil { + a.Flash().Errf("Shell exec failed: %s", err) + } + }) + }() - shellIn(a, path, co) + err = shellIn(a, path, co) } -func shellIn(a *App, fqn, co string) { +func shellIn(a *App, fqn, co string) error { platform, err := getPodOS(a.factory, fqn) if err != nil { - slog.Warn("OS detect failed", slogs.Error, err) + return err } - args := computeShellArgs(fqn, co, a.Conn().Config().Flags(), platform) + args := computeShellArgs(fqn, co, a.Conn().Config().Flags(), platform) c := color.New(color.BgGreen).Add(color.FgBlack).Add(color.Bold) - err = runK(a, &shellOpts{ + return runK(a, &shellOpts{ clear: true, banner: c.Sprintf(bannerFmt, fqn, co), args: args}, ) - if err != nil { - a.Flash().Errf("Shell exec failed: %s", err) - } } func containerAttachIn(a *App, comp model.Component, path, co string) error { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/internal/watch/factory.go new/k9s-0.50.12/internal/watch/factory.go --- old/k9s-0.50.11/internal/watch/factory.go 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/internal/watch/factory.go 2025-09-19 16:36:53.000000000 +0200 @@ -201,7 +201,11 @@ // CanForResource return an informer is user has access. func (f *Factory) CanForResource(ns string, gvr *client.GVR, verbs []string) (informers.GenericInformer, error) { - auth, err := f.Client().CanI(ns, gvr, "", verbs) + var resName string + if gvr == client.NsGVR { + resName = ns + } + auth, err := f.Client().CanI(ns, gvr, resName, verbs) if err != nil { return nil, err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/plugins/README.md new/k9s-0.50.12/plugins/README.md --- old/k9s-0.50.11/plugins/README.md 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/plugins/README.md 2025-09-19 16:36:53.000000000 +0200 @@ -5,31 +5,31 @@ Following is an example of some plugin files in this directory. Other files are not listed in this table. -| Plugin-Name | Description | Available on Views | Shortcut | Kubectl plugin, external dependencies | -| ------------------------------ | ----------------------------------------------------------------------------------------- | ----------------------------------- | --------- | ------------------------------------------------------------------------------------- | -| ai-incident-investigation.yaml | Run AI investigation on application issues to find the root cause in seconds | all | Shift-h/o | [HolmesGPT](https://github.com/robusta-dev/holmesgpt) | -| argocd.yaml | Perform argocd operation quickly | applications | Shift-r | [ArgoCD](https://argo-cd.readthedocs.io/en/stable/getting_started/) | -| crd-wizard.yaml | Clear and intuitive interface for visualizing and exploring CR(D)s | applications | Shift-w | [crd-wizard](https://github.com/pehlicd/crd-wizard) | -| debug-container.yaml | Add [ephemeral debug container](1)<br>([nicolaka/netshoot](2)) | containers | Shift-d | | -| dive.yaml | Dive image layers | containers | d | [Dive](https://github.com/wagoodman/dive) | -| dup.yaml | Duplicate, edit and Debug resources | all | Shift-d/e/v | [dup](https://github.com/vash/dup) | -| external-secrets.yaml | Refresh external/push-secrets | externalsecrets/pushsecrets | Shift-R | | -| get-all.yaml | get all resources in a namespace | all | g | [Krew](https://krew.sigs.k8s.io/), [ketall](https://github.com/corneliusweig/ketall/) | -| helm-diff.yaml | Diff with previous revision / current revision | helm/history | Shift-D/Q | [helm-diff](https://github.com/databus23/helm-diff) | -| job-suspend.yaml | Suspends a running cronjob | cronjobs | Ctrl-s | | -| k3d-root-shell.yaml | Root shell to k3d container | containers | Shift-s | [jq](https://stedolan.github.io/jq/) | -| keda-toggle.yaml | Enable/disable [keda](3) ScaledObject autoscaler | scaledobjects | Ctrl-N | | -| kube-metrics.yaml | Visualize live pod/node metric graphs (Memory/CPU) | pods/nodes | m | [kube-metics](https://github.com/bakito/kube-metrics) | -| log-stern.yaml | View resource logs using stern | pods | Ctrl-l | | -| log-jq.yaml | View resource logs using jq | pods | Ctrl-j | kubectl-plugins/kubectl-jq | -| log-bunyan.yaml | View pods, service, deployment logs using bunyan | pods, service, deployment | Ctrl-l | [Bunyan](https://www.npmjs.com/package/bunyan) | -| log-full.yaml | get full logs from pod/container | pods/containers | Ctrl-l | | -| pvc-debug-container.yaml | Add ephemeral debug container with pvc mounted | pods | s | kubectl | -| resource-recommendations.yaml | View recommendations for CPU/Memory requests based on historical data | deployments/daemonsets/statefulsets | Shift-k | [Robusta KRR](https://github.com/robusta-dev/krr) | -| szero.yaml | Temporarily scale down/up all deployments, statefulsets, and daemonsets | namespaces | Shift-d/u | [szero](https://github.com/jadolg/szero) | -| trace-dns.yaml | Trace DNS resolution using Inspektor Gadget (4) | containers/pods/nodes | Shift-d | | -| vector-dev-top.yaml | Run `vector top` in vector.dev container | pods/container | h | [vector top](https://vector.dev/highlights/2020-12-23-vector-top/) | -| start-alpine.yaml | Starts a deployment for the `alpine:latest` docker image in the current namespace/context | deployments/pods | Ctrl-T | | +| Plugin-Name | Description | Available on Views | Shortcut | Kubectl plugin, external dependencies | +|--------------------------------|-------------------------------------------------------------------------------------------|-------------------------------------|-------------|---------------------------------------------------------------------------------------| +| ai-incident-investigation.yaml | Run AI investigation on application issues to find the root cause in seconds | all | Shift-h/o | [HolmesGPT](https://github.com/robusta-dev/holmesgpt) | +| argocd.yaml | Perform argocd operation quickly | applications | Shift-r | [ArgoCD](https://argo-cd.readthedocs.io/en/stable/getting_started/) | +| crd-wizard.yaml | Clear and intuitive interface for visualizing and exploring CR(D)s | applications | Shift-w | [crd-wizard](https://github.com/pehlicd/crd-wizard) | +| debug-container.yaml | Add [ephemeral debug container](1)<br>([nicolaka/netshoot](2)) | containers | Shift-d | | +| dive.yaml | Dive image layers | containers | d | [Dive](https://github.com/wagoodman/dive) | +| dup.yaml | Duplicate, edit and Debug resources | all | Shift-d/e/v | [dup](https://github.com/vash/dup) | +| external-secrets.yaml | Refresh external/push-secrets | externalsecrets/pushsecrets | Shift-R | [External Secrets](https://external-secrets.io) | +| get-all.yaml | get all resources in a namespace | all | g | [Krew](https://krew.sigs.k8s.io/), [ketall](https://github.com/corneliusweig/ketall/) | +| helm-diff.yaml | Diff with previous revision / current revision | helm/history | Shift-D/Q | [helm-diff](https://github.com/databus23/helm-diff) | +| job-suspend.yaml | Suspends a running cronjob | cronjobs | Ctrl-s | | +| k3d-root-shell.yaml | Root shell to k3d container | containers | Shift-s | [jq](https://stedolan.github.io/jq/) | +| keda-toggle.yaml | Enable/disable [keda](3) ScaledObject autoscaler | scaledobjects | Ctrl-N | | +| kube-metrics.yaml | Visualize live pod/node metric graphs (Memory/CPU) | pods/nodes | m | [kube-metics](https://github.com/bakito/kube-metrics) | +| log-stern.yaml | View resource logs using stern | pods | Ctrl-l | | +| log-jq.yaml | View resource logs using jq | pods | Ctrl-j | kubectl-plugins/kubectl-jq | +| log-bunyan.yaml | View pods, service, deployment logs using bunyan | pods, service, deployment | Ctrl-l | [Bunyan](https://www.npmjs.com/package/bunyan) | +| log-full.yaml | get full logs from pod/container | pods/containers | Ctrl-l | | +| pvc-debug-container.yaml | Add ephemeral debug container with pvc mounted | pods | s | kubectl | +| resource-recommendations.yaml | View recommendations for CPU/Memory requests based on historical data | deployments/daemonsets/statefulsets | Shift-k | [Robusta KRR](https://github.com/robusta-dev/krr) | +| szero.yaml | Temporarily scale down/up all deployments, statefulsets, and daemonsets | namespaces | Shift-d/u | [szero](https://github.com/jadolg/szero) | +| trace-dns.yaml | Trace DNS resolution using Inspektor Gadget (4) | containers/pods/nodes | Shift-d | | +| vector-dev-top.yaml | Run `vector top` in vector.dev container | pods/container | h | [vector top](https://vector.dev/highlights/2020-12-23-vector-top/) | +| start-alpine.yaml | Starts a deployment for the `alpine:latest` docker image in the current namespace/context | deployments/pods | Ctrl-T | | [1]: https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/#ephemeral-container diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/plugins/external-secrets.yaml new/k9s-0.50.12/plugins/external-secrets.yaml --- old/k9s-0.50.11/plugins/external-secrets.yaml 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/plugins/external-secrets.yaml 2025-09-19 16:36:53.000000000 +0200 @@ -6,10 +6,10 @@ - externalsecrets description: Refresh the externalsecret command: bash - background: false + background: true args: - -c - - "kubectl annotate externalsecrets.external-secrets.io -n $NAMESPACE $NAME force-sync=$(date +%s) --overwrite" + - "kubectl annotate externalsecrets.external-secrets.io --context $CONTEXT -n $NAMESPACE $NAME force-sync=$(date +%s) --overwrite" refresh-push-secrets: shortCut: Shift-R confirm: false @@ -17,7 +17,7 @@ - pushsecrets description: Refresh the pushsecret command: bash - background: false + background: true args: - -c - - "kubectl annotate pushsecrets.external-secrets.io -n $NAMESPACE $NAME force-sync=$(date +%s) --overwrite" + - "kubectl annotate pushsecrets.external-secrets.io --context $CONTEXT -n $NAMESPACE $NAME force-sync=$(date +%s) --overwrite" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k9s-0.50.11/snap/snapcraft.yaml new/k9s-0.50.12/snap/snapcraft.yaml --- old/k9s-0.50.11/snap/snapcraft.yaml 2025-09-18 17:33:35.000000000 +0200 +++ new/k9s-0.50.12/snap/snapcraft.yaml 2025-09-19 16:36:53.000000000 +0200 @@ -1,6 +1,6 @@ name: k9s base: core22 -version: 'v0.50.11' +version: 'v0.50.12' summary: K9s is a CLI to view and manage your Kubernetes clusters. description: | K9s is a CLI to view and manage your Kubernetes clusters. By leveraging a terminal UI, you can easily traverse Kubernetes resources and view the state of your clusters in a single powerful session. ++++++ k9s.obsinfo ++++++ --- /var/tmp/diff_new_pack.8kUHNk/_old 2025-09-20 22:04:51.372623399 +0200 +++ /var/tmp/diff_new_pack.8kUHNk/_new 2025-09-20 22:04:51.376623567 +0200 @@ -1,5 +1,5 @@ name: k9s -version: 0.50.11 -mtime: 1758209615 -commit: 5c5fcba6d8252d876ac278df07fc34d87d9d4ad9 +version: 0.50.12 +mtime: 1758292613 +commit: 09c1c0795051f443da6b75a11705e25c0c1c7c6b ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/k9s/vendor.tar.gz /work/SRC/openSUSE:Factory/.k9s.new.27445/vendor.tar.gz differ: char 13, line 1
