Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package zvm for openSUSE:Factory checked in 
at 2025-12-09 12:51:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/zvm (Old)
 and      /work/SRC/openSUSE:Factory/.zvm.new.1939 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "zvm"

Tue Dec  9 12:51:46 2025 rev:7 rq:1321579 version:0.8.11

Changes:
--------
--- /work/SRC/openSUSE:Factory/zvm/zvm.changes  2025-10-28 14:46:50.087616092 
+0100
+++ /work/SRC/openSUSE:Factory/.zvm.new.1939/zvm.changes        2025-12-09 
12:57:17.117436917 +0100
@@ -1,0 +2,9 @@
+Sat Dec  6 20:01:07 UTC 2025 - Andrea Manzini <[email protected]>
+
+- Update to 0.8.11:
+  * Bump golang.org/x/crypto from 0.43.0 to 0.45.0
+  * feat(security): Implement robust path and archive extraction safeguards
+    This commit addresses several security vulnerabilities related to path 
+    traversal and insecure archive extraction.
+
+-------------------------------------------------------------------

Old:
----
  v0.8.10.tar.gz

New:
----
  v0.8.11.tar.gz

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

Other differences:
------------------
++++++ zvm.spec ++++++
--- /var/tmp/diff_new_pack.Kj9d93/_old  2025-12-09 12:57:17.853467943 +0100
+++ /var/tmp/diff_new_pack.Kj9d93/_new  2025-12-09 12:57:17.857468111 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           zvm
-Version:        0.8.10
+Version:        0.8.11
 Release:        0
 Summary:        Easily install/upgrade between different versions of Zig
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.Kj9d93/_old  2025-12-09 12:57:17.889469460 +0100
+++ /var/tmp/diff_new_pack.Kj9d93/_new  2025-12-09 12:57:17.893469629 +0100
@@ -1,7 +1,7 @@
 <services>
  <service name="go_modules" mode="manual">
    <param name="compression">xz</param>
-   <param name="archive">v0.8.10.tar.gz</param>
+   <param name="archive">v0.8.11.tar.gz</param>
  </service>
 </services>
 

++++++ v0.8.10.tar.gz -> v0.8.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zvm-0.8.10/GEMINI.md new/zvm-0.8.11/GEMINI.md
--- old/zvm-0.8.10/GEMINI.md    1970-01-01 01:00:00.000000000 +0100
+++ new/zvm-0.8.11/GEMINI.md    2025-12-03 19:42:43.000000000 +0100
@@ -0,0 +1,59 @@
+# Project Context: ZVM (Zig Version Manager)
+
+## Project Overview
+`zvm` is a cross-platform version manager for the Zig programming language, 
written in Go. It allows users to install, switch between, and manage multiple 
versions of Zig (including master/nightly builds and tagged releases) and ZLS 
(Zig Language Server). It is designed to be simple, fast, and standalone, with 
minimal dependencies (only `tar` on Unix systems).
+
+## Architecture & Tech Stack
+*   **Language:** Go (v1.25.3)
+*   **Build System:** Deno (`build.ts`) is used for cross-platform compilation 
and bundling, though standard `go build` works for local development.
+*   **Key Libraries:**
+    *   `github.com/urfave/cli/v3`: CLI application framework.
+    *   `github.com/charmbracelet/log` & `lipgloss`: Styled terminal output 
and logging.
+    *   `github.com/jedisct1/go-minisign`: Verifying Zig signatures.
+
+### Core Components
+*   **`main.go`**: The application entry point. Configures the CLI commands 
(`install`, `use`, `ls`, `clean`, `upgrade`, `vmu`) and flags.
+*   **`cli/` Package**: Contains the core business logic.
+    *   **`config.go`**: Handles initialization (`Initialize`), configuration 
loading, and the `ZVM` struct definition.
+    *   **`install.go`**: Logic for downloading, verifying (shasum/minisign), 
and extracting Zig versions.
+    *   **`use.go`**: Manages switching versions (symlinking).
+    *   **`ls.go`**: Listing installed and available remote versions.
+    *   **`settings.go`**: Manages `~/.zvm/settings.json`.
+    *   **`upgrade.go`**: Self-upgrade functionality.
+
+## Building and Running
+
+### Prerequisites
+*   Go 1.25+
+*   Deno (optional, for release builds)
+
+### Development Commands
+*   **Run locally:**
+    ```bash
+    go run main.go [command]
+    ```
+*   **Build locally:**
+    ```bash
+    go build -o zvm main.go
+    ```
+*   **Run Tests:**
+    ```bash
+    go test ./...
+    ```
+*   **Cross-Platform Build (Release):**
+    ```bash
+    deno run -A build.ts
+    ```
+    This script compiles `zvm` for Windows, Linux, macOS, *BSD, and Solaris, 
creating artifacts in the `build/` directory.
+
+## Development Conventions
+*   **Formatting:** Strict adherence to `go fmt`.
+*   **Naming:** use `camelCase` for all variables, functions, and fields.
+*   **Visibility:** Default to private (lowercase) for functions/variables 
unless they *must* be exported for external package use.
+*   **Environment:** The application expects to operate within `~/.zvm` (or 
`ZVM_PATH`) and uses `ZVM_INSTALL` and `PATH` modifications to function 
correctly.
+
+## Key Files
+*   `main.go`: CLI definition and entry point.
+*   `cli/config.go`: Main `ZVM` struct and initialization logic.
+*   `build.ts`: Release build script (TypeScript/Deno).
+*   `CONTRIBUTING.MD`: Contribution guidelines and coding standards.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zvm-0.8.10/cli/config.go new/zvm-0.8.11/cli/config.go
--- old/zvm-0.8.10/cli/config.go        2025-10-24 00:27:43.000000000 +0200
+++ new/zvm-0.8.11/cli/config.go        2025-12-03 19:42:43.000000000 +0100
@@ -98,15 +98,25 @@
 }
 
 func (z ZVM) getVersion(version string) error {
-       if _, err := os.Stat(filepath.Join(z.baseDir, version)); err != nil {
+       
+       root, err := os.OpenRoot(z.baseDir)
+       if err != nil {
+               return err
+       }
+
+       defer root.Close()
+
+       if _, err := root.Stat(version); err != nil {
                return err
        }
 
-       targetZig := strings.TrimSpace(filepath.Join(z.baseDir, version, "zig"))
+       
+
+       targetZig := strings.TrimSpace(filepath.Join(root.Name(), version, 
"zig"))
        cmd := exec.Command(targetZig, "version")
        var zigVersion strings.Builder
        cmd.Stdout = &zigVersion
-       err := cmd.Run()
+       err = cmd.Run()
        if err != nil {
                log.Warn(err)
        }
@@ -118,7 +128,7 @@
        if version == outputVersion {
                return nil
        } else {
-               if _, statErr := os.Stat(targetZig); statErr == nil || version 
== "master" {
+               if _, statErr := root.Stat(targetZig); statErr == nil || 
version == "master" {
                        return nil
                }
                return fmt.Errorf("version %s is not a released version", 
version)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zvm-0.8.10/cli/install_extract_test.go 
new/zvm-0.8.11/cli/install_extract_test.go
--- old/zvm-0.8.10/cli/install_extract_test.go  1970-01-01 01:00:00.000000000 
+0100
+++ new/zvm-0.8.11/cli/install_extract_test.go  2025-12-03 19:42:43.000000000 
+0100
@@ -0,0 +1,68 @@
+package cli
+
+import (
+       "testing"
+)
+
+func TestExtractInstall(t *testing.T) {
+       tests := []struct {
+               name  string
+               input string
+               want  installRequest
+       }{
+               {
+                       name:  "Package only",
+                       input: "zig",
+                       want:  installRequest{Package: "zig"},
+               },
+               {
+                       name:  "Package with version",
+                       input: "[email protected]",
+                       want:  installRequest{Package: "zig", Version: 
"0.12.0"},
+               },
+               {
+                       name:  "Site and package",
+                       input: "github:tristanisham/myrepo",
+                       want:  installRequest{Site: "github", Package: 
"tristanisham/myrepo"},
+               },
+               {
+                       name:  "Site, package, and version",
+                       input: "github:tristanisham/myrepo@main",
+                       want:  installRequest{Site: "github", Package: 
"tristanisham/myrepo", Version: "main"},
+               },
+               {
+                       name:  "Empty string",
+                       input: "",
+                       want:  installRequest{},
+               },
+               {
+                       name:  "Only at symbol",
+                       input: "@",
+                       want:  installRequest{Version: ""}, // Package will be 
empty, version is empty
+               },
+               {
+                       name:  "Only colon symbol",
+                       input: ":",
+                       want:  installRequest{Site: "", Package: ""}, // Site 
will be empty, package will be empty
+               },
+               {
+                       name:  "Site with empty package",
+                       input: "site:",
+                       want:  installRequest{Site: "site", Package: ""},
+               },
+               {
+                       name:  "Site with empty package and version",
+                       input: "site:@1.0",
+                       want:  installRequest{Site: "site", Package: "", 
Version: "1.0"},
+               },
+       }
+
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       got := ExtractInstall(tt.input)
+                       if got.Site != tt.want.Site || got.Package != 
tt.want.Package || got.Version != tt.want.Version {
+                               t.Errorf("ExtractInstall(%q) got = %+v, want 
%+v", tt.input, got, tt.want)
+                       }
+               })
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zvm-0.8.10/cli/meta/version.go 
new/zvm-0.8.11/cli/meta/version.go
--- old/zvm-0.8.10/cli/meta/version.go  2025-10-24 00:27:43.000000000 +0200
+++ new/zvm-0.8.11/cli/meta/version.go  2025-12-03 19:42:43.000000000 +0100
@@ -9,7 +9,7 @@
 )
 
 const (
-       VERSION = "v0.8.10"
+       VERSION = "v0.8.11"
 
        // VERSION = "v0.0.0" // For testing zvm upgrade
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zvm-0.8.10/cli/uninstall.go 
new/zvm-0.8.11/cli/uninstall.go
--- old/zvm-0.8.10/cli/uninstall.go     2025-10-24 00:27:43.000000000 +0200
+++ new/zvm-0.8.11/cli/uninstall.go     2025-12-03 19:42:43.000000000 +0100
@@ -7,19 +7,21 @@
 import (
        "fmt"
        "os"
-       "path/filepath"
 )
 
-func (z *ZVM) Uninstall(ver string) error {
-       version := filepath.Join(z.baseDir, ver)
+func (z *ZVM) Uninstall(version string) error {
+       root, err := os.OpenRoot(z.baseDir)
+       if err != nil {
+               return err
+       }
 
-       if _, err := os.Stat(version); err == nil {
-               if err := os.RemoveAll(version); err != nil {
+       if _, err := root.Stat(version); err == nil {
+               if err := root.RemoveAll(version); err != nil {
                        return err
                }
-               fmt.Printf("✔ Uninstalled %s.\nRun `zvm ls` to view installed 
versions.\n", ver)
+               fmt.Printf("✔ Uninstalled %s.\nRun `zvm ls` to view installed 
versions.\n", version)
                return nil
        }
-       fmt.Printf("Version: %s not found locally.\nHere are your installed 
versions:\n", ver)
+       fmt.Printf("Version: %s not found locally.\nHere are your installed 
versions:\n", version)
        return z.ListVersions()
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zvm-0.8.10/cli/upgrade.go 
new/zvm-0.8.11/cli/upgrade.go
--- old/zvm-0.8.10/cli/upgrade.go       2025-10-24 00:27:43.000000000 +0200
+++ new/zvm-0.8.11/cli/upgrade.go       2025-12-03 19:42:43.000000000 +0100
@@ -14,6 +14,7 @@
        "os"
        "path/filepath"
        "runtime"
+       "strings"
        "time"
 
        "github.com/schollz/progressbar/v3"
@@ -241,6 +242,11 @@
 
        tarReader := tar.NewReader(reader)
 
+       absTarget, err := filepath.Abs(target)
+       if err != nil {
+               return err
+       }
+
        for {
                header, err := tarReader.Next()
 
@@ -253,20 +259,30 @@
                        continue
                }
 
-               target := target + string(os.PathSeparator) + header.Name
+               fpath := filepath.Join(absTarget, header.Name)
+
+               if !strings.HasPrefix(fpath, 
absTarget+string(os.PathSeparator)) {
+                       return fmt.Errorf("illegal file path: %s", fpath)
+               }
+
                switch header.Typeflag {
                case tar.TypeDir:
-                       if _, err := os.Stat(target); err != nil {
-                               if err := os.MkdirAll(target, 0755); err != nil 
{
+                       if _, err := os.Stat(fpath); err != nil {
+                               if err := os.MkdirAll(fpath, 0755); err != nil {
                                        return err
                                }
                        }
                case tar.TypeReg:
-                       writer, err := os.Create(target)
+                       if err := os.MkdirAll(filepath.Dir(fpath), 0755); err 
!= nil {
+                               return err
+                       }
+
+                       writer, err := os.Create(fpath)
                        if err != nil {
                                return err
                        }
                        if _, err := io.Copy(writer, tarReader); err != nil {
+                               writer.Close()
                                return err
                        }
                        writer.Close()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zvm-0.8.10/go.mod new/zvm-0.8.11/go.mod
--- old/zvm-0.8.10/go.mod       2025-10-24 00:27:43.000000000 +0200
+++ new/zvm-0.8.11/go.mod       2025-12-03 19:42:43.000000000 +0100
@@ -1,6 +1,6 @@
 module github.com/tristanisham/zvm
 
-go 1.25.3
+go 1.25.5
 
 require (
        github.com/charmbracelet/lipgloss v1.1.0
@@ -8,18 +8,20 @@
        github.com/jedisct1/go-minisign v0.0.0-20241212093149-d2f9f49435c7
        github.com/schollz/progressbar/v3 v3.18.0
        github.com/tristanisham/clr v0.0.0-20221004001624-00ee60046d85
-       golang.org/x/mod v0.29.0
-       golang.org/x/sys v0.37.0
+       golang.org/x/mod v0.30.0
+       golang.org/x/sys v0.38.0
 )
 
 require (
-       github.com/charmbracelet/colorprofile v0.3.2 // indirect
-       github.com/charmbracelet/x/ansi v0.10.2 // indirect
-       github.com/charmbracelet/x/cellbuf v0.0.13 // indirect
-       github.com/charmbracelet/x/term v0.2.1 // indirect
-       github.com/clipperhouse/uax29/v2 v2.2.0 // indirect
+       github.com/charmbracelet/colorprofile v0.3.3 // indirect
+       github.com/charmbracelet/x/ansi v0.11.2 // indirect
+       github.com/charmbracelet/x/cellbuf v0.0.14 // indirect
+       github.com/charmbracelet/x/term v0.2.2 // indirect
+       github.com/clipperhouse/displaywidth v0.6.1 // indirect
+       github.com/clipperhouse/stringish v0.1.1 // indirect
+       github.com/clipperhouse/uax29/v2 v2.3.0 // indirect
        github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
-       golang.org/x/crypto v0.43.0 // indirect
+       golang.org/x/crypto v0.45.0 // indirect
 )
 
 require (
@@ -31,7 +33,7 @@
        github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // 
indirect
        github.com/muesli/termenv v0.16.0 // indirect
        github.com/rivo/uniseg v0.4.7 // indirect
-       github.com/urfave/cli/v3 v3.5.0
-       golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect
-       golang.org/x/term v0.36.0 // indirect
+       github.com/urfave/cli/v3 v3.6.1
+       golang.org/x/exp v0.0.0-20251125195548-87e1e737ad39 // indirect
+       golang.org/x/term v0.37.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zvm-0.8.10/go.sum new/zvm-0.8.11/go.sum
--- old/zvm-0.8.10/go.sum       2025-10-24 00:27:43.000000000 +0200
+++ new/zvm-0.8.11/go.sum       2025-12-03 19:42:43.000000000 +0100
@@ -1,43 +1,37 @@
 github.com/aymanbagabas/go-osc52/v2 v2.0.1 
h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod 
h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
-github.com/charmbracelet/colorprofile v0.3.0 
h1:KtLh9uuu1RCt+Hml4s6Hz+kB1PfV3wi++1h5ia65yKQ=
-github.com/charmbracelet/colorprofile v0.3.0/go.mod 
h1:oHJ340RS2nmG1zRGPmhJKJ/jf4FPNNk0P39/wBPA1G0=
-github.com/charmbracelet/colorprofile v0.3.2 
h1:9J27WdztfJQVAQKX2WOlSSRB+5gaKqqITmrvb1uTIiI=
-github.com/charmbracelet/colorprofile v0.3.2/go.mod 
h1:mTD5XzNeWHj8oqHb+S1bssQb7vIHbepiebQ2kPKVKbI=
+github.com/charmbracelet/colorprofile v0.3.3 
h1:DjJzJtLP6/NZ8p7Cgjno0CKGr7wwRJGxWUwh2IyhfAI=
+github.com/charmbracelet/colorprofile v0.3.3/go.mod 
h1:nB1FugsAbzq284eJcjfah2nhdSLppN2NqvfotkfRYP4=
 github.com/charmbracelet/lipgloss v1.1.0 
h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
 github.com/charmbracelet/lipgloss v1.1.0/go.mod 
h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
-github.com/charmbracelet/log v0.4.1 
h1:6AYnoHKADkghm/vt4neaNEXkxcXLSV2g1rdyFDOpTyk=
-github.com/charmbracelet/log v0.4.1/go.mod 
h1:pXgyTsqsVu4N9hGdHmQ0xEA4RsXof402LX9ZgiITn2I=
 github.com/charmbracelet/log v0.4.2 
h1:hYt8Qj6a8yLnvR+h7MwsJv/XvmBJXiueUcI3cIxsyig=
 github.com/charmbracelet/log v0.4.2/go.mod 
h1:qifHGX/tc7eluv2R6pWIpyHDDrrb/AG71Pf2ysQu5nw=
-github.com/charmbracelet/x/ansi v0.8.0 
h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
-github.com/charmbracelet/x/ansi v0.8.0/go.mod 
h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
-github.com/charmbracelet/x/ansi v0.10.2 
h1:ith2ArZS0CJG30cIUfID1LXN7ZFXRCww6RUvAPA+Pzw=
-github.com/charmbracelet/x/ansi v0.10.2/go.mod 
h1:HbLdJjQH4UH4AqA2HpRWuWNluRE6zxJH/yteYEYCFa8=
-github.com/charmbracelet/x/cellbuf v0.0.13 
h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k=
-github.com/charmbracelet/x/cellbuf v0.0.13/go.mod 
h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
-github.com/charmbracelet/x/term v0.2.1 
h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
-github.com/charmbracelet/x/term v0.2.1/go.mod 
h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
+github.com/charmbracelet/x/ansi v0.11.2 
h1:XAG3FSjiVtFvgEgGrNBkCNNYrsucAt8c6bfxHyROLLs=
+github.com/charmbracelet/x/ansi v0.11.2/go.mod 
h1:9tY2bzX5SiJCU0iWyskjBeI2BRQfvPqI+J760Mjf+Rg=
+github.com/charmbracelet/x/cellbuf v0.0.14 
h1:iUEMryGyFTelKW3THW4+FfPgi4fkmKnnaLOXuc+/Kj4=
+github.com/charmbracelet/x/cellbuf v0.0.14/go.mod 
h1:P447lJl49ywBbil/KjCk2HexGh4tEY9LH0/1QrZZ9rA=
+github.com/charmbracelet/x/term v0.2.2 
h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=
+github.com/charmbracelet/x/term v0.2.2/go.mod 
h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
 github.com/chengxilo/virtualterm v1.0.4 
h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM=
 github.com/chengxilo/virtualterm v1.0.4/go.mod 
h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY=
-github.com/clipperhouse/uax29/v2 v2.2.0 
h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY=
-github.com/clipperhouse/uax29/v2 v2.2.0/go.mod 
h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
+github.com/clipperhouse/displaywidth v0.6.1 
h1:/zMlAezfDzT2xy6acHBzwIfyu2ic0hgkT83UX5EY2gY=
+github.com/clipperhouse/displaywidth v0.6.1/go.mod 
h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o=
+github.com/clipperhouse/stringish v0.1.1 
h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs=
+github.com/clipperhouse/stringish v0.1.1/go.mod 
h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA=
+github.com/clipperhouse/uax29/v2 v2.3.0 
h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4=
+github.com/clipperhouse/uax29/v2 v2.3.0/go.mod 
h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g=
 github.com/davecgh/go-spew v1.1.1 
h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/go-logfmt/logfmt v0.6.0 
h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
-github.com/go-logfmt/logfmt v0.6.0/go.mod 
h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
 github.com/go-logfmt/logfmt v0.6.1 
h1:4hvbpePJKnIzH1B+8OR/JPbTx37NktoI9LE2QZBBkvE=
 github.com/go-logfmt/logfmt v0.6.1/go.mod 
h1:EV2pOAQoZaT1ZXZbqDl5hrymndi4SY9ED9/z6CO0XAk=
+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/jedisct1/go-minisign v0.0.0-20241212093149-d2f9f49435c7 
h1:FWpSWRD8FbVkKQu8M1DM9jF5oXFLyE+XpisIYfdzbic=
 github.com/jedisct1/go-minisign v0.0.0-20241212093149-d2f9f49435c7/go.mod 
h1:BMxO138bOokdgt4UaxZiEfypcSHX0t6SIFimVP1oRfk=
-github.com/lucasb-eyer/go-colorful v1.2.0 
h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
-github.com/lucasb-eyer/go-colorful v1.2.0/go.mod 
h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
 github.com/lucasb-eyer/go-colorful v1.3.0 
h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag=
 github.com/lucasb-eyer/go-colorful v1.3.0/go.mod 
h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
 github.com/mattn/go-isatty v0.0.20 
h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20/go.mod 
h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-runewidth v0.0.16 
h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
-github.com/mattn/go-runewidth v0.0.16/go.mod 
h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
 github.com/mattn/go-runewidth v0.0.19 
h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw=
 github.com/mattn/go-runewidth v0.0.19/go.mod 
h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
 github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db 
h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
@@ -46,44 +40,28 @@
 github.com/muesli/termenv v0.16.0/go.mod 
h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
 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/rivo/uniseg v0.2.0/go.mod 
h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
 github.com/rivo/uniseg v0.4.7/go.mod 
h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
 github.com/schollz/progressbar/v3 v3.18.0 
h1:uXdoHABRFmNIjUfte/Ex7WtuyVslrw2wVPQmCN62HpA=
 github.com/schollz/progressbar/v3 v3.18.0/go.mod 
h1:IsO3lpbaGuzh8zIMzgY3+J8l4C8GjO0Y9S69eFvNsec=
-github.com/stretchr/testify v1.10.0 
h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
-github.com/stretchr/testify v1.10.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/tristanisham/clr v0.0.0-20221004001624-00ee60046d85 
h1:zD4b2hs7jZ2sJtgtNdpMZyo4D4/Ifct8SMxvPNNkHzs=
 github.com/tristanisham/clr v0.0.0-20221004001624-00ee60046d85/go.mod 
h1:cKn2HV8Beq81OHjb2gja2ZiU4HAEQ6LSuxyaIT5Mg7o=
-github.com/urfave/cli/v3 v3.0.0-beta1 
h1:6DTaaUarcM0wX7qj5Hcvs+5Dm3dyUTBbEwIWAjcw9Zg=
-github.com/urfave/cli/v3 v3.0.0-beta1/go.mod 
h1:FnIeEMYu+ko8zP1F9Ypr3xkZMIDqW3DR92yUtY39q1Y=
-github.com/urfave/cli/v3 v3.5.0 h1:qCuFMmdayTF3zmjG8TSsoBzrDqszNrklYg2x3g4MSgw=
-github.com/urfave/cli/v3 v3.5.0/go.mod 
h1:ysVLtOEmg2tOy6PknnYVhDoouyC/6N42TMeoMzskhso=
+github.com/urfave/cli/v3 v3.6.1 h1:j8Qq8NyUawj/7rTYdBGrxcH7A/j7/G8Q5LhWEW4G3Mo=
+github.com/urfave/cli/v3 v3.6.1/go.mod 
h1:ysVLtOEmg2tOy6PknnYVhDoouyC/6N42TMeoMzskhso=
 github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e 
h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
 github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod 
h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
-golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
-golang.org/x/crypto v0.41.0/go.mod 
h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
-golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=
-golang.org/x/crypto v0.43.0/go.mod 
h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
-golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 
h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
-golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod 
h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
-golang.org/x/exp v0.0.0-20251017212417-90e834f514db 
h1:by6IehL4BH5k3e3SJmcoNbOobMey2SLpAF79iPOEBvw=
-golang.org/x/exp v0.0.0-20251017212417-90e834f514db/go.mod 
h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
-golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 
h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY=
-golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod 
h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
-golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
-golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
-golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
-golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
+golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
+golang.org/x/crypto v0.45.0/go.mod 
h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
+golang.org/x/exp v0.0.0-20251125195548-87e1e737ad39 
h1:DHNhtq3sNNzrvduZZIiFyXWOL9IWaDPHqTnLJp+rCBY=
+golang.org/x/exp v0.0.0-20251125195548-87e1e737ad39/go.mod 
h1:46edojNIoXTNOhySWIWdix628clX9ODXwPsQuG6hsK0=
+golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk=
+golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
-golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
-golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ=
-golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
-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/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q=
-golang.org/x/term v0.36.0/go.mod 
h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss=
+golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
+golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
+golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
+golang.org/x/term v0.37.0/go.mod 
h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

++++++ vendor.tar.xz ++++++
++++ 8390 lines of diff (skipped)

Reply via email to