Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package stern for openSUSE:Factory checked 
in at 2025-09-18 21:11:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/stern (Old)
 and      /work/SRC/openSUSE:Factory/.stern.new.27445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "stern"

Thu Sep 18 21:11:32 2025 rev:13 rq:1305747 version:1.33.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/stern/stern.changes      2025-01-27 
20:58:59.067858924 +0100
+++ /work/SRC/openSUSE:Factory/.stern.new.27445/stern.changes   2025-09-18 
21:12:46.420732429 +0200
@@ -1,0 +2,17 @@
+Thu Sep 18 08:56:48 UTC 2025 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.33.0:
+  * Notable Changes
+    - New template variables Labels and Annotations
+      You can now use Labels and Annotations in your templates.
+        stern -n kube-system -l component --template '{{printf "%-25s %s" 
.Labels.component .Message}}{{"\n"}}'
+  * Changes
+    - Update dependencies for Kubernetes 1.34 (#349) d6a0679
+      (Takashi Kusumi)
+    - Fix asdf installation typo (#348) 5946e7f (Guruprasad Bhat)
+    - 338: fix: move highlighting after formatting (#339) 6d915a8
+      (Peter)
+    - Add support for labels & annotations in templates (#344)
+      3cd85b4 (Nicholas Hurden)
+
+-------------------------------------------------------------------

Old:
----
  stern-1.32.0.obscpio

New:
----
  stern-1.33.0.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ stern.spec ++++++
--- /var/tmp/diff_new_pack.QIR6nP/_old  2025-09-18 21:12:47.148763031 +0200
+++ /var/tmp/diff_new_pack.QIR6nP/_new  2025-09-18 21:12:47.152763200 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package stern
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,14 +17,14 @@
 
 
 Name:           stern
-Version:        1.32.0
+Version:        1.33.0
 Release:        0
 Summary:        Multi pod and container log tailing for Kubernetes
 License:        Apache-2.0
 URL:            https://github.com/stern/stern
 Source:         stern-%{version}.tar.gz
 Source1:        vendor.tar.gz
-BuildRequires:  go >= 1.23.5
+BuildRequires:  golang(API) >= 1.25
 
 %description
 Stern allows you to tail multiple pods on Kubernetes and multiple containers

++++++ _service ++++++
--- /var/tmp/diff_new_pack.QIR6nP/_old  2025-09-18 21:12:47.192764881 +0200
+++ /var/tmp/diff_new_pack.QIR6nP/_new  2025-09-18 21:12:47.196765049 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/stern/stern</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v1.32.0</param>
+    <param name="revision">v1.33.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.QIR6nP/_old  2025-09-18 21:12:47.228766394 +0200
+++ /var/tmp/diff_new_pack.QIR6nP/_new  2025-09-18 21:12:47.232766563 +0200
@@ -3,6 +3,6 @@
                 <param name="url">https://github.com/wercker/stern</param>
               <param 
name="changesrevision">94f4ffb3b98a9dcd34aedf00f8a7e95b623b25d3</param></service><service
 name="tar_scm">
                 <param name="url">https://github.com/stern/stern</param>
-              <param 
name="changesrevision">5e06930fe21f951f079880ec2c13cd688aa5ca09</param></service></servicedata>
+              <param 
name="changesrevision">f79098037d951aad53e13aff1f86854b291baf01</param></service></servicedata>
 (No newline at EOF)
 

++++++ stern-1.32.0.obscpio -> stern-1.33.0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/.github/CODEOWNERS 
new/stern-1.33.0/.github/CODEOWNERS
--- old/stern-1.32.0/.github/CODEOWNERS 2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/.github/CODEOWNERS 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-*   @superbrothers @floryut @rkmathi @tksm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/.github/ISSUE_TEMPLATE/bug-report.md 
new/stern-1.33.0/.github/ISSUE_TEMPLATE/bug-report.md
--- old/stern-1.32.0/.github/ISSUE_TEMPLATE/bug-report.md       2025-01-21 
02:14:50.000000000 +0100
+++ new/stern-1.33.0/.github/ISSUE_TEMPLATE/bug-report.md       1970-01-01 
01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
----
-name: Bug Report
-about: Report a bug encountered while using stern
-labels: kind/bug
-
----
-
-**What happened**:
-
-**What you expected to happen**:
-
-**How to reproduce it (as minimally and precisely as possible)**:
-
-**Anything else we need to know?**:
-
-**Environment**:
-- stern version (use `stern --version`):
-- OS (e.g: `cat /etc/os-release`):
-- Install tools (e.g: Homebrew)
-- Others:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/.github/ISSUE_TEMPLATE/enhancement.md 
new/stern-1.33.0/.github/ISSUE_TEMPLATE/enhancement.md
--- old/stern-1.32.0/.github/ISSUE_TEMPLATE/enhancement.md      2025-01-21 
02:14:50.000000000 +0100
+++ new/stern-1.33.0/.github/ISSUE_TEMPLATE/enhancement.md      1970-01-01 
01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
----
-name: Enhancement Request
-about: Suggest an enhancement
-labels: kind/feature
-
----
-**What would you like to be added**:
-
-**Why is this needed**:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/.github/workflows/ci.yaml 
new/stern-1.33.0/.github/workflows/ci.yaml
--- old/stern-1.32.0/.github/workflows/ci.yaml  2025-01-21 02:14:50.000000000 
+0100
+++ new/stern-1.33.0/.github/workflows/ci.yaml  1970-01-01 01:00:00.000000000 
+0100
@@ -1,31 +0,0 @@
-name: CI
-
-on:
-  # Must keep in sync with ci_for_skipped.yaml
-  push:
-    branches: [master]
-    paths-ignore: ['**.md']
-  pull_request:
-    types: [opened, synchronize]
-    paths-ignore: ['**.md']
-
-jobs:
-  run:
-    runs-on: ubuntu-latest
-    steps:
-    - uses: actions/checkout@v4
-    - uses: actions/setup-go@v5
-      with:
-        go-version-file: go.mod
-    - name: Ensure go.mod is already tidied
-      run: go mod tidy && git diff -s --exit-code go.sum
-    - name: Run verify-readme
-      run: make verify-readme
-    - name: Run tests
-      run: make test
-    - name: Build binary
-      run: make build
-    - name: Make dist file
-      run: make dist
-    - name: Validate a krew plugin manifest file
-      run: make validate-krew-manifest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/.github/workflows/ci_for_skipped.yaml 
new/stern-1.33.0/.github/workflows/ci_for_skipped.yaml
--- old/stern-1.32.0/.github/workflows/ci_for_skipped.yaml      2025-01-21 
02:14:50.000000000 +0100
+++ new/stern-1.33.0/.github/workflows/ci_for_skipped.yaml      1970-01-01 
01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-# CI for skipped files
-name: CI
-
-on:
-  push:
-    branches: [master]
-    paths: ['**.md']
-  pull_request:
-    types: [opened, synchronize]
-    paths: ['**.md']
-
-jobs:
-  run:
-    runs-on: ubuntu-latest
-    steps:
-    - run: 'echo "No check required"'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/.github/workflows/release.yaml 
new/stern-1.33.0/.github/workflows/release.yaml
--- old/stern-1.32.0/.github/workflows/release.yaml     2025-01-21 
02:14:50.000000000 +0100
+++ new/stern-1.33.0/.github/workflows/release.yaml     1970-01-01 
01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
-name: Release
-
-on:
-  push:
-    tags: ["v*"]
-
-jobs:
-  run:
-    runs-on: ubuntu-latest
-    steps:
-    - uses: actions/checkout@v4
-    - uses: actions/setup-go@v5
-      with:
-        go-version-file: go.mod
-    - name: Login to GitHub Container Registry
-      uses: docker/login-action@v3
-      with:
-        registry: ghcr.io
-        username: ${{ github.actor }}
-        password: ${{ secrets.GITHUB_TOKEN }}
-    - name: Release
-      run: make release
-      env:
-        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-    - name: Update new version in krew-index
-      uses: rajatjindal/[email protected]
-      with:
-        krew_template_file: dist/krew/stern.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/.gitignore new/stern-1.33.0/.gitignore
--- old/stern-1.32.0/.gitignore 2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/.gitignore 1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-/dist
-/hack/tools/bin
-vendor
-.idea
-.vscode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/.golangci.yml 
new/stern-1.33.0/.golangci.yml
--- old/stern-1.32.0/.golangci.yml      2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/.golangci.yml      2025-09-07 08:10:00.000000000 +0200
@@ -1,13 +1,21 @@
+version: "2"
 run:
   timeout: 5m
 linters:
-  disable-all: true
+  default: none
   enable:
   - errcheck
-  - gofmt
-  - gosimple
   - govet
   - ineffassign
   - staticcheck
-  - typecheck
   - unused
+  exclusions:
+    generated: lax
+    presets:
+    - comments
+    - common-false-positives
+    - legacy
+    - std-error-handling
+formatters:
+  enable:
+    - gofmt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/CHANGELOG.md 
new/stern-1.33.0/CHANGELOG.md
--- old/stern-1.32.0/CHANGELOG.md       2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/CHANGELOG.md       2025-09-07 08:10:00.000000000 +0200
@@ -1,3 +1,22 @@
+# v1.33.0
+
+## :zap: Notable Changes
+
+### New template variables `Labels` and `Annotations`
+
+You can now use `Labels` and `Annotations` in your templates.
+
+```
+stern -n kube-system -l component --template '{{printf "%-25s %s" 
.Labels.component .Message}}{{"\n"}}'
+```
+
+## Changes
+
+* Update dependencies for Kubernetes 1.34 
([#349](https://github.com/stern/stern/pull/349)) d6a0679 (Takashi Kusumi)
+* Fix asdf installation typo ([#348](https://github.com/stern/stern/pull/348)) 
5946e7f (Guruprasad Bhat)
+* 338: fix: move highlighting after formatting 
([#339](https://github.com/stern/stern/pull/339)) 6d915a8 (Peter)
+* Add support for labels & annotations in templates 
([#344](https://github.com/stern/stern/pull/344)) 3cd85b4 (Nicholas Hurden)
+
 # v1.32.0
 
 ## :zap: Notable Changes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/Makefile new/stern-1.33.0/Makefile
--- old/stern-1.32.0/Makefile   2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/Makefile   2025-09-07 08:10:00.000000000 +0200
@@ -5,11 +5,11 @@
        go build -o dist/stern .
 
 TOOLS_BIN_DIR := $(CURDIR)/hack/tools/bin
-GORELEASER_VERSION ?= v2.5.1
+GORELEASER_VERSION ?= v2.12.0
 GORELEASER := $(TOOLS_BIN_DIR)/goreleaser
-GOLANGCI_LINT_VERSION ?= v1.63.4
+GOLANGCI_LINT_VERSION ?= v2.4.0
 GOLANGCI_LINT := $(TOOLS_BIN_DIR)/golangci-lint
-VALIDATE_KREW_MAIFEST_VERSION ?= v0.4.4
+VALIDATE_KREW_MAIFEST_VERSION ?= v0.4.5
 VALIDATE_KREW_MAIFEST := $(TOOLS_BIN_DIR)/validate-krew-manifest
 GORELEASER_FILTER_VERSION ?= v0.3.0
 GORELEASER_FILTER := $(TOOLS_BIN_DIR)/goreleaser-filter
@@ -18,7 +18,7 @@
        GOBIN=$(TOOLS_BIN_DIR) go install 
github.com/goreleaser/goreleaser/v2@$(GORELEASER_VERSION)
 
 $(GOLANGCI_LINT):
-       GOBIN=$(TOOLS_BIN_DIR) go install 
github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION)
+       GOBIN=$(TOOLS_BIN_DIR) go install 
github.com/golangci/golangci-lint/v2/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION)
 
 $(VALIDATE_KREW_MAIFEST):
        GOBIN=$(TOOLS_BIN_DIR) go install 
sigs.k8s.io/krew/cmd/validate-krew-manifest@$(VALIDATE_KREW_MAIFEST_VERSION)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/README.md new/stern-1.33.0/README.md
--- old/stern-1.32.0/README.md  2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/README.md  2025-09-07 08:10:00.000000000 +0200
@@ -32,7 +32,7 @@
 
 If you use [asdf](https://asdf-vm.com/), you can install like this:
 ```
-asdf plugin-add stern
+asdf plugin add stern
 asdf install stern latest
 ```
 
@@ -147,13 +147,15 @@
 compiled to a Go template and then used for every log message. This Go template
 will receive the following struct:
 
-| property        | type   | description                                 |
-|-----------------|--------|---------------------------------------------|
-| `Message`       | string | The log message itself                      |
-| `NodeName`      | string | The node name where the pod is scheduled on |
-| `Namespace`     | string | The namespace of the pod                    |
-| `PodName`       | string | The name of the pod                         |
-| `ContainerName` | string | The name of the container                   |
+| property        | type              | description                            
     |
+|-----------------|-------------------|---------------------------------------------|
+| `Message`       | string            | The log message itself                 
     |
+| `NodeName`      | string            | The node name where the pod is 
scheduled on |
+| `Namespace`     | string            | The namespace of the pod               
     |
+| `PodName`       | string            | The name of the pod                    
     |
+| `ContainerName` | string            | The name of the container              
     |
+| `Labels`        | map[string]string | The labels of the pod                  
     |
+| `Annotations`   | map[string]string | The annotations of the pod             
     |
 
 The following functions are available within the template (besides the [builtin
 functions](https://golang.org/pkg/text/template/#hdr-Functions)):
@@ -179,6 +181,7 @@
 | `colorMagenta`        | `string`                    | Print text using 
magenta color                                                                   
                                           |
 | `colorCyan`           | `string`                    | Print text using cyan 
color                                                                           
                                      |
 | `colorWhite`          | `string`                    | Print text using white 
color                                                                           
                                     |
+| `colorCustom`         | `string, int [, int]`       | Print text using 
custom color, i.e. {{color "Hi" 3 96}} will print "Hi" as italic with cyan 
color                                           |
 
 ### Log level verbosity
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/cmd/cmd.go new/stern-1.33.0/cmd/cmd.go
--- old/stern-1.32.0/cmd/cmd.go 2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/cmd/cmd.go 2025-09-07 08:10:00.000000000 +0200
@@ -476,7 +476,7 @@
        o.configFlags.AddFlags(flagset)
        flagset.VisitAll(func(f *pflag.Flag) {
                // Hide Kubernetes flags except some
-               if !(f.Name == "kubeconfig" || f.Name == "context") {
+               if f.Name != "kubeconfig" && f.Name != "context" {
                        f.Hidden = true
                }
 
@@ -641,6 +641,9 @@
                "color": func(color color.Color, text string) string {
                        return color.SprintFunc()(text)
                },
+               "colorCustom": func(text string, args ...color.Attribute) 
string {
+                       return color.New(args...).SprintFunc()(text)
+               },
                "colorBlack":   color.BlackString,
                "colorRed":     color.RedString,
                "colorGreen":   color.GreenString,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/cmd/cmd_test.go 
new/stern-1.33.0/cmd/cmd_test.go
--- old/stern-1.32.0/cmd/cmd_test.go    2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/cmd/cmd_test.go    2025-09-07 08:10:00.000000000 +0200
@@ -271,7 +271,7 @@
                                return o
                        }(),
                        "json message",
-                       `{"message":"json 
message","nodeName":"node1","namespace":"ns1","podName":"pod1","containerName":"container1"}
+                       `{"message":"json 
message","nodeName":"node1","namespace":"ns1","podName":"pod1","containerName":"container1","labels":{"app":"nginx","env":"prod"},"annotations":{"version":"1.23.4"}}
 `,
                        false,
                },
@@ -432,6 +432,72 @@
                        `Jan 01 2024 05:00 UTC`,
                        false,
                },
+               {
+                       "template with specific label",
+                       func() *options {
+                               o := NewOptions(streams)
+                               o.template = "{{.PodName}} [{{.Labels.app}}] 
{{.Message}}"
+                               return o
+                       }(),
+                       "message with app label",
+                       "pod1 [nginx] message with app label",
+                       false,
+               },
+               {
+                       "template with specific annotation",
+                       func() *options {
+                               o := NewOptions(streams)
+                               o.template = "{{.PodName}} 
[{{.Annotations.version}}] {{.Message}}"
+                               return o
+                       }(),
+                       "message with version annotation",
+                       "pod1 [1.23.4] message with version annotation",
+                       false,
+               },
+               {
+                       "template with labels as json",
+                       func() *options {
+                               o := NewOptions(streams)
+                               o.template = "{{.PodName}} {{json .Labels}} 
{{.Message}}"
+                               return o
+                       }(),
+                       "message with json labels",
+                       "pod1 {\"app\":\"nginx\",\"env\":\"prod\"} message with 
json labels",
+                       false,
+               },
+               {
+                       "template with annotations as json",
+                       func() *options {
+                               o := NewOptions(streams)
+                               o.template = "{{.PodName}} {{json 
.Annotations}} {{.Message}}"
+                               return o
+                       }(),
+                       "message with json annotations",
+                       "pod1 {\"version\":\"1.23.4\"} message with json 
annotations",
+                       false,
+               },
+               {
+                       "template with missing label",
+                       func() *options {
+                               o := NewOptions(streams)
+                               o.template = "{{.PodName}} 
[{{.Labels.missing}}] {{.Message}}"
+                               return o
+                       }(),
+                       "message with missing label",
+                       "pod1 [<no value>] message with missing label",
+                       false,
+               },
+               {
+                       "template with missing annotation",
+                       func() *options {
+                               o := NewOptions(streams)
+                               o.template = "{{.PodName}} 
[{{.Annotations.missing}}] {{.Message}}"
+                               return o
+                       }(),
+                       "message with missing annotation",
+                       "pod1 [<no value>] message with missing annotation",
+                       false,
+               },
        }
 
        for _, tt := range tests {
@@ -442,6 +508,8 @@
                                Namespace:      "ns1",
                                PodName:        "pod1",
                                ContainerName:  "container1",
+                               Labels:         map[string]string{"app": 
"nginx", "env": "prod"},
+                               Annotations:    map[string]string{"version": 
"1.23.4"},
                                PodColor:       color.New(color.FgRed),
                                ContainerColor: color.New(color.FgBlue),
                        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/cmd/flag_completion.go 
new/stern-1.33.0/cmd/flag_completion.go
--- old/stern-1.32.0/cmd/flag_completion.go     2025-01-21 02:14:50.000000000 
+0100
+++ new/stern-1.33.0/cmd/flag_completion.go     2025-09-07 08:10:00.000000000 
+0200
@@ -47,7 +47,7 @@
        case "fish":
                err = cmd.GenFishCompletion(out, true)
        default:
-               err = fmt.Errorf("Unsupported shell type: %q", shell)
+               err = fmt.Errorf("unsupported shell type: %q", shell)
        }
 
        return err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/go.mod new/stern-1.33.0/go.mod
--- old/stern-1.32.0/go.mod     2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/go.mod     2025-09-07 08:10:00.000000000 +0200
@@ -1,44 +1,52 @@
 module github.com/stern/stern
 
-go 1.23.5
+go 1.25.0
 
 require (
        github.com/AlecAivazis/survey/v2 v2.3.7
        github.com/fatih/color v1.18.0
        github.com/mitchellh/go-homedir v1.1.0
        github.com/pkg/errors v0.9.1
-       github.com/spf13/cast v1.7.1
-       github.com/spf13/cobra v1.8.1
-       github.com/spf13/pflag v1.0.5
-       golang.org/x/sync v0.10.0
-       golang.org/x/time v0.9.0
+       github.com/spf13/cast v1.9.2
+       github.com/spf13/cobra v1.10.1
+       github.com/spf13/pflag v1.0.10
+       golang.org/x/sync v0.16.0
+       golang.org/x/time v0.12.0
        gopkg.in/yaml.v3 v3.0.1
-       k8s.io/api v0.32.1
-       k8s.io/apimachinery v0.32.1
-       k8s.io/cli-runtime v0.32.1
-       k8s.io/client-go v0.32.1
+       k8s.io/api v0.34.0
+       k8s.io/apimachinery v0.34.0
+       k8s.io/cli-runtime v0.34.0
+       k8s.io/client-go v0.34.0
        k8s.io/klog/v2 v2.130.1
-       k8s.io/utils v0.0.0-20241210054802-24370beab758
+       k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d
 )
 
 require (
        github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // 
indirect
        github.com/blang/semver/v4 v4.0.0 // indirect
        github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // 
indirect
-       github.com/emicklei/go-restful/v3 v3.12.1 // indirect
-       github.com/fxamacker/cbor/v2 v2.7.0 // indirect
+       github.com/emicklei/go-restful/v3 v3.13.0 // indirect
+       github.com/fxamacker/cbor/v2 v2.9.0 // indirect
        github.com/go-errors/errors v1.5.1 // indirect
-       github.com/go-logr/logr v1.4.2 // indirect
-       github.com/go-openapi/jsonpointer v0.21.0 // indirect
-       github.com/go-openapi/jsonreference v0.21.0 // indirect
-       github.com/go-openapi/swag v0.23.0 // indirect
+       github.com/go-logr/logr v1.4.3 // indirect
+       github.com/go-openapi/jsonpointer v0.22.0 // indirect
+       github.com/go-openapi/jsonreference v0.21.1 // indirect
+       github.com/go-openapi/swag v0.24.1 // indirect
+       github.com/go-openapi/swag/cmdutils v0.24.0 // indirect
+       github.com/go-openapi/swag/conv v0.24.0 // indirect
+       github.com/go-openapi/swag/fileutils v0.24.0 // indirect
+       github.com/go-openapi/swag/jsonname v0.24.0 // indirect
+       github.com/go-openapi/swag/jsonutils v0.24.0 // indirect
+       github.com/go-openapi/swag/loading v0.24.0 // indirect
+       github.com/go-openapi/swag/mangling v0.24.0 // indirect
+       github.com/go-openapi/swag/netutils v0.24.0 // indirect
+       github.com/go-openapi/swag/stringutils v0.24.0 // indirect
+       github.com/go-openapi/swag/typeutils v0.24.0 // indirect
+       github.com/go-openapi/swag/yamlutils v0.24.0 // indirect
        github.com/gogo/protobuf v1.3.2 // indirect
-       github.com/golang/protobuf v1.5.4 // indirect
        github.com/google/btree v1.1.3 // indirect
-       github.com/google/gnostic-models v0.6.9 // indirect
-       github.com/google/go-cmp v0.6.0 // indirect
-       github.com/google/gofuzz v1.2.0 // indirect
-       github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
+       github.com/google/gnostic-models v0.7.0 // indirect
+       github.com/google/go-cmp v0.7.0 // indirect
        github.com/google/uuid v1.6.0 // indirect
        github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // 
indirect
        github.com/inconshreveable/mousetrap v1.1.0 // indirect
@@ -52,24 +60,28 @@
        github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
        github.com/moby/term v0.5.2 // indirect
        github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // 
indirect
-       github.com/modern-go/reflect2 v1.0.2 // indirect
+       github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // 
indirect
        github.com/monochromegane/go-gitignore 
v0.0.0-20200626010858-205db1a8cc00 // indirect
        github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // 
indirect
        github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
+       github.com/pmezard/go-difflib v1.0.0 // indirect
        github.com/x448/float16 v0.8.4 // indirect
        github.com/xlab/treeprint v1.2.0 // indirect
-       golang.org/x/net v0.34.0 // indirect
-       golang.org/x/oauth2 v0.25.0 // indirect
-       golang.org/x/sys v0.29.0 // indirect
-       golang.org/x/term v0.28.0 // indirect
-       golang.org/x/text v0.21.0 // indirect
-       google.golang.org/protobuf v1.36.3 // indirect
-       gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
+       go.yaml.in/yaml/v2 v2.4.2 // indirect
+       go.yaml.in/yaml/v3 v3.0.4 // indirect
+       golang.org/x/net v0.43.0 // indirect
+       golang.org/x/oauth2 v0.30.0 // indirect
+       golang.org/x/sys v0.35.0 // indirect
+       golang.org/x/term v0.34.0 // indirect
+       golang.org/x/text v0.28.0 // indirect
+       google.golang.org/protobuf v1.36.8 // indirect
+       gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
        gopkg.in/inf.v0 v0.9.1 // indirect
-       k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect
-       sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
-       sigs.k8s.io/kustomize/api v0.19.0 // indirect
-       sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
-       sigs.k8s.io/structured-merge-diff/v4 v4.5.0 // indirect
-       sigs.k8s.io/yaml v1.4.0 // indirect
+       k8s.io/kube-openapi v0.0.0-20250905212525-66792eed8611 // indirect
+       sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
+       sigs.k8s.io/kustomize/api v0.20.1 // indirect
+       sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect
+       sigs.k8s.io/randfill v1.0.0 // indirect
+       sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+       sigs.k8s.io/yaml v1.6.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/go.sum new/stern-1.33.0/go.sum
--- old/stern-1.32.0/go.sum     2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/go.sum     2025-09-07 08:10:00.000000000 +0200
@@ -6,7 +6,7 @@
 github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod 
h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
 github.com/blang/semver/v4 v4.0.0 
h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 github.com/blang/semver/v4 v4.0.0/go.mod 
h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod 
h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod 
h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
 github.com/creack/pty v1.1.17/go.mod 
h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
 github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
 github.com/creack/pty v1.1.18/go.mod 
h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
@@ -14,44 +14,59 @@
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc 
h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/emicklei/go-restful/v3 v3.12.1 
h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU=
-github.com/emicklei/go-restful/v3 v3.12.1/go.mod 
h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.13.0 
h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
+github.com/emicklei/go-restful/v3 v3.13.0/go.mod 
h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
 github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
 github.com/fatih/color v1.18.0/go.mod 
h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
 github.com/frankban/quicktest v1.14.6 
h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
 github.com/frankban/quicktest v1.14.6/go.mod 
h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
-github.com/fxamacker/cbor/v2 v2.7.0 
h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
-github.com/fxamacker/cbor/v2 v2.7.0/go.mod 
h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
+github.com/fxamacker/cbor/v2 v2.9.0 
h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
+github.com/fxamacker/cbor/v2 v2.9.0/go.mod 
h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
 github.com/go-errors/errors v1.5.1 
h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk=
 github.com/go-errors/errors v1.5.1/go.mod 
h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
-github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
-github.com/go-logr/logr v1.4.2/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/go-openapi/jsonpointer v0.21.0 
h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
-github.com/go-openapi/jsonpointer v0.21.0/go.mod 
h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
-github.com/go-openapi/jsonreference v0.21.0 
h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
-github.com/go-openapi/jsonreference v0.21.0/go.mod 
h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
-github.com/go-openapi/swag v0.23.0 
h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
-github.com/go-openapi/swag v0.23.0/go.mod 
h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
+github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
+github.com/go-logr/logr v1.4.3/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-openapi/jsonpointer v0.22.0 
h1:TmMhghgNef9YXxTu1tOopo+0BGEytxA+okbry0HjZsM=
+github.com/go-openapi/jsonpointer v0.22.0/go.mod 
h1:xt3jV88UtExdIkkL7NloURjRQjbeUgcxFblMjq2iaiU=
+github.com/go-openapi/jsonreference v0.21.1 
h1:bSKrcl8819zKiOgxkbVNRUBIr6Wwj9KYrDbMjRs0cDA=
+github.com/go-openapi/jsonreference v0.21.1/go.mod 
h1:PWs8rO4xxTUqKGu+lEvvCxD5k2X7QYkKAepJyCmSTT8=
+github.com/go-openapi/swag v0.24.1 
h1:DPdYTZKo6AQCRqzwr/kGkxJzHhpKxZ9i/oX0zag+MF8=
+github.com/go-openapi/swag v0.24.1/go.mod 
h1:sm8I3lCPlspsBBwUm1t5oZeWZS0s7m/A+Psg0ooRU0A=
+github.com/go-openapi/swag/cmdutils v0.24.0 
h1:KlRCffHwXFI6E5MV9n8o8zBRElpY4uK4yWyAMWETo9I=
+github.com/go-openapi/swag/cmdutils v0.24.0/go.mod 
h1:uxib2FAeQMByyHomTlsP8h1TtPd54Msu2ZDU/H5Vuf8=
+github.com/go-openapi/swag/conv v0.24.0 
h1:ejB9+7yogkWly6pnruRX45D1/6J+ZxRu92YFivx54ik=
+github.com/go-openapi/swag/conv v0.24.0/go.mod 
h1:jbn140mZd7EW2g8a8Y5bwm8/Wy1slLySQQ0ND6DPc2c=
+github.com/go-openapi/swag/fileutils v0.24.0 
h1:U9pCpqp4RUytnD689Ek/N1d2N/a//XCeqoH508H5oak=
+github.com/go-openapi/swag/fileutils v0.24.0/go.mod 
h1:3SCrCSBHyP1/N+3oErQ1gP+OX1GV2QYFSnrTbzwli90=
+github.com/go-openapi/swag/jsonname v0.24.0 
h1:2wKS9bgRV/xB8c62Qg16w4AUiIrqqiniJFtZGi3dg5k=
+github.com/go-openapi/swag/jsonname v0.24.0/go.mod 
h1:GXqrPzGJe611P7LG4QB9JKPtUZ7flE4DOVechNaDd7Q=
+github.com/go-openapi/swag/jsonutils v0.24.0 
h1:F1vE1q4pg1xtO3HTyJYRmEuJ4jmIp2iZ30bzW5XgZts=
+github.com/go-openapi/swag/jsonutils v0.24.0/go.mod 
h1:vBowZtF5Z4DDApIoxcIVfR8v0l9oq5PpYRUuteVu6f0=
+github.com/go-openapi/swag/loading v0.24.0 
h1:ln/fWTwJp2Zkj5DdaX4JPiddFC5CHQpvaBKycOlceYc=
+github.com/go-openapi/swag/loading v0.24.0/go.mod 
h1:gShCN4woKZYIxPxbfbyHgjXAhO61m88tmjy0lp/LkJk=
+github.com/go-openapi/swag/mangling v0.24.0 
h1:PGOQpViCOUroIeak/Uj/sjGAq9LADS3mOyjznmHy2pk=
+github.com/go-openapi/swag/mangling v0.24.0/go.mod 
h1:Jm5Go9LHkycsz0wfoaBDkdc4CkpuSnIEf62brzyCbhc=
+github.com/go-openapi/swag/netutils v0.24.0 
h1:Bz02HRjYv8046Ycg/w80q3g9QCWeIqTvlyOjQPDjD8w=
+github.com/go-openapi/swag/netutils v0.24.0/go.mod 
h1:WRgiHcYTnx+IqfMCtu0hy9oOaPR0HnPbmArSRN1SkZM=
+github.com/go-openapi/swag/stringutils v0.24.0 
h1:i4Z/Jawf9EvXOLUbT97O0HbPUja18VdBxeadyAqS1FM=
+github.com/go-openapi/swag/stringutils v0.24.0/go.mod 
h1:5nUXB4xA0kw2df5PRipZDslPJgJut+NjL7D25zPZ/4w=
+github.com/go-openapi/swag/typeutils v0.24.0 
h1:d3szEGzGDf4L2y1gYOSSLeK6h46F+zibnEas2Jm/wIw=
+github.com/go-openapi/swag/typeutils v0.24.0/go.mod 
h1:q8C3Kmk/vh2VhpCLaoR2MVWOGP8y7Jc8l82qCTd1DYI=
+github.com/go-openapi/swag/yamlutils v0.24.0 
h1:bhw4894A7Iw6ne+639hsBNRHg9iZg/ISrOVr+sJGp4c=
+github.com/go-openapi/swag/yamlutils v0.24.0/go.mod 
h1:DpKv5aYuaGm/sULePoeiG8uwMpZSfReo1HR3Ik0yaG8=
 github.com/go-task/slim-sprig/v3 v3.0.0 
h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
 github.com/go-task/slim-sprig/v3 v3.0.0/go.mod 
h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod 
h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang/protobuf v1.5.4 
h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
-github.com/golang/protobuf v1.5.4/go.mod 
h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
 github.com/google/btree v1.1.3/go.mod 
h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
-github.com/google/gnostic-models v0.6.9 
h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw=
-github.com/google/gnostic-models v0.6.9/go.mod 
h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw=
-github.com/google/go-cmp v0.5.9/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/gnostic-models v0.7.0 
h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod 
h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod 
h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
 github.com/google/gofuzz v1.0.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
-github.com/google/gofuzz v1.2.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db 
h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
 github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod 
h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
-github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 
h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
-github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod 
h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 
h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
@@ -92,8 +107,9 @@
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod 
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd 
h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod 
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.2 
h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
 github.com/modern-go/reflect2 v1.0.2/go.mod 
h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee 
h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod 
h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
 github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 
h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=
 github.com/monochromegane/go-gitignore 
v0.0.0-20200626010858-205db1a8cc00/go.mod 
h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 
h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
@@ -106,28 +122,28 @@
 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod 
h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 
h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
-github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/rogpeppe/go-internal v1.12.0 
h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod 
h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+github.com/rogpeppe/go-internal v1.13.1 
h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
+github.com/rogpeppe/go-internal v1.13.1/go.mod 
h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
 github.com/russross/blackfriday/v2 v2.1.0/go.mod 
h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
 github.com/sergi/go-diff v1.2.0/go.mod 
h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
-github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
-github.com/spf13/cast v1.7.1/go.mod 
h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
-github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
-github.com/spf13/cobra v1.8.1/go.mod 
h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE=
+github.com/spf13/cast v1.9.2/go.mod 
h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=
+github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s=
+github.com/spf13/cobra v1.10.1/go.mod 
h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0=
+github.com/spf13/pflag v1.0.9/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
+github.com/spf13/pflag v1.0.10/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/stretchr/objx v0.1.0/go.mod 
h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
 github.com/stretchr/objx v0.5.2/go.mod 
h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
 github.com/stretchr/testify v1.3.0/go.mod 
h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.6.1/go.mod 
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.0/go.mod 
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.9.0 
h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod 
h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/stretchr/testify v1.11.1 
h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
+github.com/stretchr/testify v1.11.1/go.mod 
h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 github.com/x448/float16 v0.8.4/go.mod 
h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 github.com/xlab/treeprint v1.2.0 
h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
@@ -137,6 +153,10 @@
 github.com/yuin/goldmark v1.4.13/go.mod 
h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
 go.uber.org/goleak v1.3.0/go.mod 
h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod 
h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
+go.yaml.in/yaml/v3 v3.0.4/go.mod 
h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod 
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -150,16 +170,16 @@
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod 
h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod 
h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod 
h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
-golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
-golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
-golang.org/x/oauth2 v0.25.0/go.mod 
h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
+golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
+golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
+golang.org/x/oauth2 v0.30.0/go.mod 
h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod 
h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
+golang.org/x/sync v0.16.0/go.mod 
h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -170,64 +190,66 @@
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
-golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
+golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod 
h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod 
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
-golang.org/x/term v0.28.0/go.mod 
h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
+golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
+golang.org/x/term v0.34.0/go.mod 
h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod 
h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
-golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
+golang.org/x/text v0.28.0/go.mod 
h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
+golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
+golang.org/x/time v0.12.0/go.mod 
h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod 
h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.1.12/go.mod 
h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
-golang.org/x/tools v0.26.0/go.mod 
h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
+golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
+golang.org/x/tools v0.36.0/go.mod 
h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v1.36.3 
h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=
-google.golang.org/protobuf v1.36.3/go.mod 
h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.8 
h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
+google.golang.org/protobuf v1.36.8/go.mod 
h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c 
h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod 
h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/evanphx/json-patch.v4 v4.12.0 
h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
-gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod 
h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
+gopkg.in/evanphx/json-patch.v4 v4.13.0 
h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo=
+gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod 
h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
 gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc=
-k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k=
-k8s.io/apimachinery v0.32.1 h1:683ENpaCBjma4CYqsmZyhEzrGz6cjn1MY/X2jB2hkZs=
-k8s.io/apimachinery v0.32.1/go.mod 
h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
-k8s.io/cli-runtime v0.32.1 h1:19nwZPlYGJPUDbhAxDIS2/oydCikvKMHsxroKNGA2mM=
-k8s.io/cli-runtime v0.32.1/go.mod 
h1:NJPbeadVFnV2E7B7vF+FvU09mpwYlZCu8PqjzfuOnkY=
-k8s.io/client-go v0.32.1 h1:otM0AxdhdBIaQh7l1Q0jQpmo7WOFIk5FFa4bg6YMdUU=
-k8s.io/client-go v0.32.1/go.mod h1:aTTKZY7MdxUaJ/KiUs8D+GssR9zJZi77ZqtzcGXIiDg=
+k8s.io/api v0.34.0 h1:L+JtP2wDbEYPUeNGbeSa/5GwFtIA662EmT2YSLOkAVE=
+k8s.io/api v0.34.0/go.mod h1:YzgkIzOOlhl9uwWCZNqpw6RJy9L2FK4dlJeayUoydug=
+k8s.io/apimachinery v0.34.0 h1:eR1WO5fo0HyoQZt1wdISpFDffnWOvFLOOeJ7MgIv4z0=
+k8s.io/apimachinery v0.34.0/go.mod 
h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/cli-runtime v0.34.0 h1:N2/rUlJg6TMEBgtQ3SDRJwa8XyKUizwjlOknT1mB2Cw=
+k8s.io/cli-runtime v0.34.0/go.mod 
h1:t/skRecS73Piv+J+FmWIQA2N2/rDjdYSQzEE67LUUs8=
+k8s.io/client-go v0.34.0 h1:YoWv5r7bsBfb0Hs2jh8SOvFbKzzxyNo0nSb0zC19KZo=
+k8s.io/client-go v0.34.0/go.mod h1:ozgMnEKXkRjeMvBZdV1AijMHLTh3pbACPvK7zFR+QQY=
 k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
 k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 
h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg=
-k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod 
h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas=
-k8s.io/utils v0.0.0-20241210054802-24370beab758 
h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0=
-k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 
h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
-sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod 
h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
-sigs.k8s.io/kustomize/api v0.19.0 
h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ=
-sigs.k8s.io/kustomize/api v0.19.0/go.mod 
h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o=
-sigs.k8s.io/kustomize/kyaml v0.19.0 
h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA=
-sigs.k8s.io/kustomize/kyaml v0.19.0/go.mod 
h1:FeKD5jEOH+FbZPpqUghBP8mrLjJ3+zD3/rf9NNu1cwY=
-sigs.k8s.io/structured-merge-diff/v4 v4.5.0 
h1:nbCitCK2hfnhyiKo6uf2HxUPTCodY6Qaf85SbDIaMBk=
-sigs.k8s.io/structured-merge-diff/v4 v4.5.0/go.mod 
h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
-sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+k8s.io/kube-openapi v0.0.0-20250905212525-66792eed8611 
h1:o4oKOsvSymDkZRsMAPZU7bRdwL+lPOK5VS10Dr1D6eg=
+k8s.io/kube-openapi v0.0.0-20250905212525-66792eed8611/go.mod 
h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d 
h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 
h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod 
h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/kustomize/api v0.20.1 
h1:iWP1Ydh3/lmldBnH/S5RXgT98vWYMaTUL1ADcr+Sv7I=
+sigs.k8s.io/kustomize/api v0.20.1/go.mod 
h1:t6hUFxO+Ph0VxIk1sKp1WS0dOjbPCtLJ4p8aADLwqjM=
+sigs.k8s.io/kustomize/kyaml v0.20.1 
h1:PCMnA2mrVbRP3NIB6v9kYCAc38uvFLVs8j/CD567A78=
+sigs.k8s.io/kustomize/kyaml v0.20.1/go.mod 
h1:0EmkQHRUsJxY8Ug9Niig1pUMSCGHxQ5RklbpV/Ri6po=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod 
h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0 
h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod 
h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/stern/container_state.go 
new/stern-1.33.0/stern/container_state.go
--- old/stern-1.32.0/stern/container_state.go   2025-01-21 02:14:50.000000000 
+0100
+++ new/stern-1.33.0/stern/container_state.go   2025-09-07 08:10:00.000000000 
+0200
@@ -31,13 +31,14 @@
 
 // NewContainerState returns corresponding ContainerState
 func NewContainerState(stateConfig string) (ContainerState, error) {
-       if stateConfig == RUNNING {
+       switch stateConfig {
+       case RUNNING:
                return RUNNING, nil
-       } else if stateConfig == WAITING {
+       case WAITING:
                return WAITING, nil
-       } else if stateConfig == TERMINATED {
+       case TERMINATED:
                return TERMINATED, nil
-       } else if stateConfig == ALL_STATES {
+       case ALL_STATES:
                return ALL_STATES, nil
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/stern/file_tail.go 
new/stern-1.33.0/stern/file_tail.go
--- old/stern-1.32.0/stern/file_tail.go 2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/stern/file_tail.go 2025-09-07 08:10:00.000000000 +0200
@@ -56,8 +56,7 @@
        }
 }
 
-// Print prints a color coded log message
-func (t *FileTail) Print(msg string) {
+func (t *FileTail) sprint(msg string) (string, error) {
        vm := Log{
                Message:        msg,
                NodeName:       "",
@@ -70,11 +69,32 @@
 
        var buf bytes.Buffer
        if err := t.tmpl.Execute(&buf, vm); err != nil {
-               fmt.Fprintf(t.errOut, "expanding template failed: %s\n", err)
+               return "", fmt.Errorf("expanding template failed: %s", err)
+       }
+
+       return buf.String(), nil
+}
+
+// Print prints a color coded log message
+func (t *FileTail) Print(msg string) {
+       buf, err := t.sprint(msg)
+       if err != nil {
+               fmt.Fprintf(t.errOut, "%s\n", err)
+               return
+       }
+
+       fmt.Fprint(t.out, t.Options.HighlightMatchedString(buf))
+}
+
+// PrintWithoutHighlight prints a log message without applying any highlight.
+func (t *FileTail) PrintWithoutHighlight(msg string) {
+       buf, err := t.sprint(msg)
+       if err != nil {
+               fmt.Fprintf(t.errOut, "%s\n", err)
                return
        }
 
-       fmt.Fprint(t.out, buf.String())
+       fmt.Fprint(t.out, buf)
 }
 
 func (t *FileTail) consumeLine(line string) {
@@ -84,6 +104,5 @@
                return
        }
 
-       msg := t.Options.HighlightMatchedString(content)
-       t.Print(msg)
+       t.Print(content)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/stern/stern.go 
new/stern-1.33.0/stern/stern.go
--- old/stern-1.32.0/stern/stern.go     2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/stern/stern.go     2025-09-07 08:10:00.000000000 +0200
@@ -66,7 +66,7 @@
                }
        }
        newTail := func(t *Target) *Tail {
-               return NewTail(client.CoreV1(), t.Node, t.Namespace, t.Pod, 
t.Container, config.Template, config.Out, config.ErrOut, newTailOptions(), 
config.DiffContainer)
+               return NewTail(client.CoreV1(), t.Pod, t.Container, 
config.Template, config.Out, config.ErrOut, newTailOptions(), 
config.DiffContainer)
        }
 
        if config.Stdin {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/stern/tail.go 
new/stern-1.33.0/stern/tail.go
--- old/stern-1.32.0/stern/tail.go      2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/stern/tail.go      2025-09-07 08:10:00.000000000 +0200
@@ -43,10 +43,9 @@
 type Tail struct {
        clientset corev1client.CoreV1Interface
 
-       NodeName       string
-       Namespace      string
-       PodName        string
-       ContainerName  string
+       Pod           *corev1.Pod
+       ContainerName string
+
        Options        *TailOptions
        closed         chan struct{}
        podColor       *color.Color
@@ -67,14 +66,12 @@
 }
 
 // NewTail returns a new tail for a Kubernetes container inside a pod
-func NewTail(clientset corev1client.CoreV1Interface, nodeName, namespace, 
podName, containerName string, tmpl *template.Template, out, errOut io.Writer, 
options *TailOptions, diffContainer bool) *Tail {
-       podColor, containerColor := determineColor(podName, containerName, 
diffContainer)
+func NewTail(clientset corev1client.CoreV1Interface, pod *corev1.Pod, 
containerName string, tmpl *template.Template, out, errOut io.Writer, options 
*TailOptions, diffContainer bool) *Tail {
+       podColor, containerColor := determineColor(pod.Name, containerName, 
diffContainer)
 
        return &Tail{
                clientset:      clientset,
-               NodeName:       nodeName,
-               Namespace:      namespace,
-               PodName:        podName,
+               Pod:            pod,
                ContainerName:  containerName,
                Options:        options,
                closed:         make(chan struct{}),
@@ -111,7 +108,7 @@
 
        t.printStarting()
 
-       req := t.clientset.Pods(t.Namespace).GetLogs(t.PodName, 
&corev1.PodLogOptions{
+       req := t.clientset.Pods(t.Pod.Namespace).GetLogs(t.Pod.Name, 
&corev1.PodLogOptions{
                Follow:       t.Options.Follow,
                Timestamps:   true,
                Container:    t.ContainerName,
@@ -155,9 +152,9 @@
                p := t.podColor.SprintFunc()
                c := t.containerColor.SprintFunc()
                if t.Options.Namespace {
-                       fmt.Fprintf(t.errOut, "%s %s %s › %s\n", g("+"), 
p(t.Namespace), p(t.PodName), c(t.ContainerName))
+                       fmt.Fprintf(t.errOut, "%s %s %s › %s\n", g("+"), 
p(t.Pod.Namespace), p(t.Pod.Name), c(t.ContainerName))
                } else {
-                       fmt.Fprintf(t.errOut, "%s %s › %s\n", g("+"), 
p(t.PodName), c(t.ContainerName))
+                       fmt.Fprintf(t.errOut, "%s %s › %s\n", g("+"), 
p(t.Pod.Name), c(t.ContainerName))
                }
        }
 }
@@ -168,9 +165,9 @@
                p := t.podColor.SprintFunc()
                c := t.containerColor.SprintFunc()
                if t.Options.Namespace {
-                       fmt.Fprintf(t.errOut, "%s %s %s › %s\n", r("-"), 
p(t.Namespace), p(t.PodName), c(t.ContainerName))
+                       fmt.Fprintf(t.errOut, "%s %s %s › %s\n", r("-"), 
p(t.Pod.Namespace), p(t.Pod.Name), c(t.ContainerName))
                } else {
-                       fmt.Fprintf(t.errOut, "%s %s › %s\n", r("-"), 
p(t.PodName), c(t.ContainerName))
+                       fmt.Fprintf(t.errOut, "%s %s › %s\n", r("-"), 
p(t.Pod.Name), c(t.ContainerName))
                }
        }
 }
@@ -200,25 +197,47 @@
        }
 }
 
-// Print prints a color coded log message with the pod and container names
-func (t *Tail) Print(msg string) {
+func (t *Tail) sprint(msg string) (string, error) {
        vm := Log{
                Message:        msg,
-               NodeName:       t.NodeName,
-               Namespace:      t.Namespace,
-               PodName:        t.PodName,
+               NodeName:       t.Pod.Spec.NodeName,
+               Namespace:      t.Pod.Namespace,
+               PodName:        t.Pod.Name,
                ContainerName:  t.ContainerName,
+               Labels:         t.Pod.Labels,
+               Annotations:    t.Pod.Annotations,
                PodColor:       t.podColor,
                ContainerColor: t.containerColor,
        }
 
        var buf bytes.Buffer
        if err := t.tmpl.Execute(&buf, vm); err != nil {
-               fmt.Fprintf(t.errOut, "expanding template failed: %s\n", err)
+               return "", fmt.Errorf("expanding template failed: %s", err)
+       }
+
+       return buf.String(), nil
+}
+
+// Print prints a color coded log message with the pod and container names
+func (t *Tail) Print(msg string) {
+       buf, err := t.sprint(msg)
+       if err != nil {
+               fmt.Fprintf(t.errOut, "%s\n", err)
+               return
+       }
+
+       fmt.Fprint(t.out, t.Options.HighlightMatchedString(buf))
+}
+
+// PrintWithoutHighlight prints a log message without applying any highlight.
+func (t *Tail) PrintWithoutHighlight(msg string) {
+       buf, err := t.sprint(msg)
+       if err != nil {
+               fmt.Fprintf(t.errOut, "%s\n", err)
                return
        }
 
-       fmt.Fprint(t.out, buf.String())
+       fmt.Fprint(t.out, buf)
 }
 
 func (t *Tail) GetResumeRequest() *ResumeRequest {
@@ -231,7 +250,7 @@
 func (t *Tail) consumeLine(line string) {
        rfc3339Nano, content, err := splitLogLine(line)
        if err != nil {
-               t.Print(fmt.Sprintf("[%v] %s", err, line))
+               t.PrintWithoutHighlight(fmt.Sprintf("[%v] %s", err, line))
                return
        }
 
@@ -247,18 +266,16 @@
                return
        }
 
-       msg := t.Options.HighlightMatchedString(content)
-
        if t.Options.Timestamps {
                updatedTs, err := t.Options.UpdateTimezoneAndFormat(rfc3339Nano)
                if err != nil {
-                       t.Print(fmt.Sprintf("[%v] %s", err, line))
+                       t.PrintWithoutHighlight(fmt.Sprintf("[%v] %s", err, 
line))
                        return
                }
-               msg = updatedTs + " " + msg
+               content = updatedTs + " " + content
        }
 
-       t.Print(msg)
+       t.Print(content)
 }
 
 func (t *Tail) rememberLastTimestamp(timestamp string) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/stern/tail_test.go 
new/stern-1.33.0/stern/tail_test.go
--- old/stern-1.32.0/stern/tail_test.go 2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/stern/tail_test.go 2025-09-07 08:10:00.000000000 +0200
@@ -3,11 +3,16 @@
 import (
        "bytes"
        "context"
+       "fmt"
+       "github.com/fatih/color"
        "io"
        "reflect"
+       "regexp"
        "testing"
        "text/template"
 
+       corev1 "k8s.io/api/core/v1"
+       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/client-go/kubernetes/fake"
 )
 
@@ -103,14 +108,152 @@
        for i, tt := range tests {
                t.Run(tt.name, func(t *testing.T) {
                        out := new(bytes.Buffer)
-                       tail := NewTail(clientset.CoreV1(), "my-node", 
"my-namespace", "my-pod", "my-container", tmpl, out, io.Discard, 
&TailOptions{}, false)
+                       pod := &corev1.Pod{
+                               ObjectMeta: metav1.ObjectMeta{
+                                       Namespace: "my-namespace",
+                                       Name:      "my-pod",
+                               },
+                               Spec: corev1.PodSpec{
+                                       NodeName: "my-node",
+                               },
+                       }
+                       tail := NewTail(clientset.CoreV1(), pod, 
"my-container", tmpl, out, io.Discard, &TailOptions{}, false)
                        tail.resumeRequest = tt.resumeReq
                        if err := tail.ConsumeRequest(context.TODO(), 
&responseWrapperMock{data: bytes.NewBufferString(logLines)}); err != nil {
                                t.Fatalf("%d: unexpected err %v", i, err)
                        }
 
                        if !bytes.Equal(tt.expected, out.Bytes()) {
-                               t.Errorf("%d: expected %s, but actual %s", i, 
tt.expected, out)
+                               t.Errorf("%d: expected `%s`, but actual `%s`", 
i, tt.expected, out)
+                       }
+               })
+       }
+}
+
+func TestHighlight(t *testing.T) {
+       color.NoColor = false
+       defer func() { color.NoColor = true }()
+       coloredLine := colorHighlight("line")
+
+       tmpl := template.Must(template.New("").Parse(`{{printf "%s 
(%s/%s/%s)\n" .Message .Namespace .PodName .ContainerName}}`))
+
+       tests := []struct {
+               name     string
+               logLine  string
+               expected []byte
+       }{
+               {
+                       name: "normal",
+                       logLine: `2023-02-13T21:20:30.000000001Z line 1
+2023-02-13T21:20:30.000000002Z line 2
+2023-02-13T21:20:31.000000001Z line 3
+2023-02-13T21:20:31.000000002Z line 4`,
+                       expected: []byte(fmt.Sprintf(`%s 1 
(my-namespace/my-pod/my-container)
+%s 2 (my-namespace/my-pod/my-container)
+%s 3 (my-namespace/my-pod/my-container)
+%s 4 (my-namespace/my-pod/my-container)
+`, coloredLine, coloredLine, coloredLine, coloredLine)),
+               },
+               {
+                       name: "no highlight",
+                       logLine: `2023-02-13T21:20:30.000000001Z log 1
+2023-02-13T21:20:30.000000002Z log 2
+2023-02-13T21:20:31.000000001Z log 3
+2023-02-13T21:20:31.000000002Z log 4`,
+                       expected: []byte(`log 1 
(my-namespace/my-pod/my-container)
+log 2 (my-namespace/my-pod/my-container)
+log 3 (my-namespace/my-pod/my-container)
+log 4 (my-namespace/my-pod/my-container)
+`),
+               },
+       }
+
+       clientset := fake.NewSimpleClientset()
+       for i, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       out := new(bytes.Buffer)
+                       pod := &corev1.Pod{
+                               ObjectMeta: metav1.ObjectMeta{
+                                       Namespace: "my-namespace",
+                                       Name:      "my-pod",
+                               },
+                       }
+
+                       tail := NewTail(clientset.CoreV1(), pod, 
"my-container", tmpl, out, io.Discard, &TailOptions{Highlight: 
[]*regexp.Regexp{regexp.MustCompile("line")}}, false)
+                       if err := tail.ConsumeRequest(context.TODO(), 
&responseWrapperMock{data: bytes.NewBufferString(tt.logLine)}); err != nil {
+                               t.Fatalf("%d: unexpected err %v", i, err)
+                       }
+
+                       if !bytes.Equal(tt.expected, out.Bytes()) {
+                               t.Errorf("%d: expected `%s`, but actual `%s`", 
i, tt.expected, out)
+                       }
+               })
+       }
+}
+
+func TestInclude(t *testing.T) {
+       color.NoColor = false
+       defer func() { color.NoColor = true }()
+
+       coloredLine := colorHighlight("line")
+
+       tmpl := template.Must(template.New("").Parse(`{{printf "%s 
(%s/%s/%s)\n" .Message .Namespace .PodName .ContainerName}}`))
+
+       tests := []struct {
+               name     string
+               logLine  string
+               expected []byte
+       }{
+               {
+                       name: "normal",
+                       logLine: `2023-02-13T21:20:30.000000001Z line 1
+2023-02-13T21:20:30.000000002Z line 2
+2023-02-13T21:20:31.000000001Z line 3
+2023-02-13T21:20:31.000000002Z line 4`,
+                       expected: []byte(fmt.Sprintf(`%s 1 
(my-namespace/my-pod/my-container)
+%s 2 (my-namespace/my-pod/my-container)
+%s 3 (my-namespace/my-pod/my-container)
+%s 4 (my-namespace/my-pod/my-container)
+`, coloredLine, coloredLine, coloredLine, coloredLine)),
+               },
+               {
+                       name: "full excluded",
+                       logLine: `2023-02-13T21:20:30.000000001Z log 1
+2023-02-13T21:20:30.000000002Z log 2
+2023-02-13T21:20:31.000000001Z log 3
+2023-02-13T21:20:31.000000002Z log 4`,
+                       expected: []byte(""),
+               },
+
+               {
+                       name: "one included",
+                       logLine: `2023-02-13T21:20:30.000000001Z log 1
+2023-02-13T21:20:30.000000002Z line 2
+2023-02-13T21:20:31.000000001Z log 3
+2023-02-13T21:20:31.000000002Z log 4`,
+                       expected: []byte(fmt.Sprintf(`%s 2 
(my-namespace/my-pod/my-container)
+`, coloredLine)),
+               },
+       }
+
+       clientset := fake.NewSimpleClientset()
+       for i, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       out := new(bytes.Buffer)
+                       pod := &corev1.Pod{
+                               ObjectMeta: metav1.ObjectMeta{
+                                       Namespace: "my-namespace",
+                                       Name:      "my-pod",
+                               },
+                       }
+
+                       tail := NewTail(clientset.CoreV1(), pod, 
"my-container", tmpl, out, io.Discard, &TailOptions{Include: 
[]*regexp.Regexp{regexp.MustCompile("line")}}, false)
+                       if err := tail.ConsumeRequest(context.TODO(), 
&responseWrapperMock{data: bytes.NewBufferString(tt.logLine)}); err != nil {
+                               t.Fatalf("%d: unexpected err %v", i, err)
+                       }
+
+                       if !bytes.Equal(tt.expected, out.Bytes()) {
+                               t.Errorf("%d: expected `%s`, but actual `%s`", 
i, tt.expected, out)
                        }
                })
        }
@@ -162,7 +305,13 @@
        clientset := fake.NewSimpleClientset()
        for i, tt := range tests {
                errOut := new(bytes.Buffer)
-               tail := NewTail(clientset.CoreV1(), "my-node", "my-namespace", 
"my-pod", "my-container", nil, io.Discard, errOut, tt.options, false)
+               pod := &corev1.Pod{
+                       ObjectMeta: metav1.ObjectMeta{
+                               Namespace: "my-namespace",
+                               Name:      "my-pod",
+                       },
+               }
+               tail := NewTail(clientset.CoreV1(), pod, "my-container", nil, 
io.Discard, errOut, tt.options, false)
                tail.printStarting()
 
                if !bytes.Equal(tt.expected, errOut.Bytes()) {
@@ -204,7 +353,13 @@
        clientset := fake.NewSimpleClientset()
        for i, tt := range tests {
                errOut := new(bytes.Buffer)
-               tail := NewTail(clientset.CoreV1(), "my-node", "my-namespace", 
"my-pod", "my-container", nil, io.Discard, errOut, tt.options, false)
+               pod := &corev1.Pod{
+                       ObjectMeta: metav1.ObjectMeta{
+                               Namespace: "my-namespace",
+                               Name:      "my-pod",
+                       },
+               }
+               tail := NewTail(clientset.CoreV1(), pod, "my-container", nil, 
io.Discard, errOut, tt.options, false)
                tail.printStopping()
 
                if !bytes.Equal(tt.expected, errOut.Bytes()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/stern/tail_utils.go 
new/stern-1.33.0/stern/tail_utils.go
--- old/stern-1.32.0/stern/tail_utils.go        2025-01-21 02:14:50.000000000 
+0100
+++ new/stern-1.33.0/stern/tail_utils.go        2025-09-07 08:10:00.000000000 
+0200
@@ -29,6 +29,12 @@
        // ContainerName of the container
        ContainerName string `json:"containerName"`
 
+       // Labels of the pod
+       Labels map[string]string `json:"labels"`
+
+       // Annotations of the pod
+       Annotations map[string]string `json:"annotations"`
+
        PodColor       *color.Color `json:"-"`
        ContainerColor *color.Color `json:"-"`
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/stern/target.go 
new/stern-1.33.0/stern/target.go
--- old/stern-1.32.0/stern/target.go    2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/stern/target.go    2025-09-07 08:10:00.000000000 +0200
@@ -25,15 +25,13 @@
 
 // Target is a target to watch
 type Target struct {
-       Node      string
-       Namespace string
-       Pod       string
+       Pod       *corev1.Pod
        Container string
 }
 
 // GetID returns the ID of the object
 func (t *Target) GetID() string {
-       return fmt.Sprintf("%s-%s-%s", t.Namespace, t.Pod, t.Container)
+       return fmt.Sprintf("%s-%s-%s", t.Pod.Namespace, t.Pod.Name, t.Container)
 }
 
 // targetState holds a last shown container ID
@@ -112,9 +110,7 @@
                }
 
                t := &Target{
-                       Node:      pod.Spec.NodeName,
-                       Namespace: pod.Namespace,
-                       Pod:       pod.Name,
+                       Pod:       pod,
                        Container: c.Name,
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/stern/target_test.go 
new/stern-1.33.0/stern/target_test.go
--- old/stern-1.32.0/stern/target_test.go       2025-01-21 02:14:50.000000000 
+0100
+++ new/stern-1.33.0/stern/target_test.go       2025-09-07 08:10:00.000000000 
+0200
@@ -49,10 +49,9 @@
        }
 
        genTarget := func(node, pod, container string) Target {
+               p := createPod(node, pod)
                return Target{
-                       Namespace: "ns1",
-                       Node:      node,
-                       Pod:       pod,
+                       Pod:       p,
                        Container: container,
                }
        }
@@ -346,12 +345,17 @@
                        },
                }
        }
-       genTarget := func(container string) Target {
+       genTarget := func(containerName, containerID string) Target {
+               pod := createPod(corev1.ContainerStatus{
+                       Name:        containerName,
+                       ContainerID: containerID,
+                       State: corev1.ContainerState{
+                               Running: &corev1.ContainerStateRunning{},
+                       },
+               })
                return Target{
-                       Namespace: "ns1",
-                       Node:      "node1",
-                       Pod:       "pod1",
-                       Container: container,
+                       Pod:       pod,
+                       Container: containerName,
                }
        }
        tests := []struct {
@@ -374,7 +378,7 @@
                                        Running: 
&corev1.ContainerStateRunning{},
                                },
                        },
-                       expected: []Target{genTarget("c1")},
+                       expected: []Target{genTarget("c1", "cid1")},
                },
                {
                        name: "same container ID should be ignored",
@@ -396,7 +400,7 @@
                                        Running: 
&corev1.ContainerStateRunning{},
                                },
                        },
-                       expected: []Target{genTarget("c1")},
+                       expected: []Target{genTarget("c1", "cid2")},
                },
                {
                        name:   "forget() allows the same ID ",
@@ -408,7 +412,7 @@
                                        Running: 
&corev1.ContainerStateRunning{},
                                },
                        },
-                       expected: []Target{genTarget("c1")},
+                       expected: []Target{genTarget("c1", "cid2")},
                },
        }
        for _, tt := range tests {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stern-1.32.0/stern/watch.go 
new/stern-1.33.0/stern/watch.go
--- old/stern-1.32.0/stern/watch.go     2025-01-21 02:14:50.000000000 +0100
+++ new/stern-1.33.0/stern/watch.go     2025-09-07 08:10:00.000000000 +0200
@@ -35,7 +35,7 @@
        // RetryWatcher will make sure that in case the underlying watcher is
        // closed (e.g. due to API timeout or etcd timeout) it will get 
restarted
        // from the last point without the consumer even knowing about it.
-       watcher, err := watchtools.NewRetryWatcher("1", &cache.ListWatch{
+       watcher, err := watchtools.NewRetryWatcherWithContext(ctx, "1", 
&cache.ListWatch{
                WatchFunc: func(options metav1.ListOptions) (watch.Interface, 
error) {
                        return i.Watch(ctx, metav1.ListOptions{LabelSelector: 
labelSelector.String(), FieldSelector: fieldSelector.String()})
                },

++++++ stern.obsinfo ++++++
--- /var/tmp/diff_new_pack.QIR6nP/_old  2025-09-18 21:12:47.396773457 +0200
+++ /var/tmp/diff_new_pack.QIR6nP/_new  2025-09-18 21:12:47.404773793 +0200
@@ -1,5 +1,5 @@
 name: stern
-version: 1.32.0
-mtime: 1737422090
-commit: 5e06930fe21f951f079880ec2c13cd688aa5ca09
+version: 1.33.0
+mtime: 1757225400
+commit: f79098037d951aad53e13aff1f86854b291baf01
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/stern/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.stern.new.27445/vendor.tar.gz differ: char 5, line 1

Reply via email to