Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kubefirst for openSUSE:Factory 
checked in at 2023-10-25 18:03:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kubefirst (Old)
 and      /work/SRC/openSUSE:Factory/.kubefirst.new.24901 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kubefirst"

Wed Oct 25 18:03:23 2023 rev:2 rq:1120152 version:2.3.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/kubefirst/kubefirst.changes      2023-10-24 
20:09:16.794537316 +0200
+++ /work/SRC/openSUSE:Factory/.kubefirst.new.24901/kubefirst.changes   
2023-10-25 18:04:06.205027387 +0200
@@ -1,0 +2,13 @@
+Wed Oct 25 04:50:42 UTC 2023 - [email protected]
+
+- Update to version 2.3.2:
+  * fix: styles json (#1868)
+
+-------------------------------------------------------------------
+Wed Oct 25 04:38:56 UTC 2023 - [email protected]
+
+- Update to version 2.3.1:
+  * pin cli to 2.3.1 (#1867)
+  * chore: remove previous E2E tests (#1860)
+
+-------------------------------------------------------------------

Old:
----
  kubefirst-2.3.0.obscpio

New:
----
  kubefirst-2.3.2.obscpio

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

Other differences:
------------------
++++++ kubefirst.spec ++++++
--- /var/tmp/diff_new_pack.ewflrL/_old  2023-10-25 18:04:07.381066939 +0200
+++ /var/tmp/diff_new_pack.ewflrL/_new  2023-10-25 18:04:07.381066939 +0200
@@ -19,7 +19,7 @@
 %define __arch_install_post export NO_BRP_STRIP_DEBUG=true
 
 Name:           kubefirst
-Version:        2.3.0
+Version:        2.3.2
 Release:        0
 Summary:        CLI for the KubeFirst GitOps Infrastructure & Application 
Delivery Platform
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.ewflrL/_old  2023-10-25 18:04:07.413068016 +0200
+++ /var/tmp/diff_new_pack.ewflrL/_new  2023-10-25 18:04:07.417068150 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/kubefirst/kubefirst</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v2.3.0</param>
+    <param name="revision">v2.3.2</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ewflrL/_old  2023-10-25 18:04:07.433068688 +0200
+++ /var/tmp/diff_new_pack.ewflrL/_new  2023-10-25 18:04:07.437068822 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/kubefirst/kubefirst</param>
-              <param 
name="changesrevision">476c9db41292307fa11d93f2090bcf123a7333b2</param></service></servicedata>
+              <param 
name="changesrevision">155d0304b9c5ac032c430c91be7463ce6854f6e5</param></service></servicedata>
 (No newline at EOF)
 

++++++ kubefirst-2.3.0.obscpio -> kubefirst-2.3.2.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/Taskfile.yaml 
new/kubefirst-2.3.2/Taskfile.yaml
--- old/kubefirst-2.3.0/Taskfile.yaml   2023-10-24 09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/Taskfile.yaml   1970-01-01 01:00:00.000000000 +0100
@@ -1,38 +0,0 @@
-version: '3'
-
-tasks:
-  unit-test:
-    - go test -v -short ./...
-  unit-test-with-report:
-    - go test -v ./... -coverpkg=./... -coverprofile cover.out
-    - go tool cover -html cover.out -o coverage.html
-  integration-tests:
-    - go run . init --profile default --cloud aws --region $AWS_REGION 
--aws-nodes-spot --cluster-name $CLUSTER_NAME --s3-suffix $SUFFIX_S3 
--admin-email $EMAIL --hosted-zone-name $HOSTED_ZONE_NAME --gitops-branch 
$GITOPS_BRANCH --silent || echo $?
-    - go test -v -run TestAreS3BucketsLiveIntegration ./internal/aws || echo $?
-    - go run . cluster create --silent || echo $?
-    - go test -v -run TestArgoCDLivenessIntegration ./internal/argocd || echo 
$?
-    - go test -v -run TestArgoWorkflowLivenessIntegration ./internal/argocd || 
echo $?
-    - go test -v -run TestGitLabLivenessIntegration ./internal/gitlab || echo 
$?
-    - go test -v -run TestMetaphorsLivenessIntegration ./internal/metaphor || 
echo $?
-    - go run . destroy --silent || echo $?
-    - go test -v -run TestIsVPCByTagDestroyedIntegration ./internal/aws || 
echo $?
-    - go test -v -run TestIsLoadBalancerByTagDestroyedIntegration 
./internal/aws || echo $?
-    - go test -v -run TestAreS3BucketsDestroyedIntegration ./internal/aws || 
echo $?
-    - go test -v -run TestIsKMSKeyAliasDestroyedIntegration ./internal/aws || 
echo $?
-    - go test -v -run TestIsEKSDestroyedIntegration ./internal/aws || echo $?
-    - go run . clean --destroy-buckets --destroy-confirm || echo $?
-    - aws s3 sync $HOME/kubefirst/logs s3://$CICD_LOGS_BUCKET
-  integration-test-for-tls-localdev:
-    - go test -v -run TestArgoCertificateIntegration ./internal/ssl -count=1
-  e2e-test-local-metaphors:
-    - go test -v -run TestLocalMetaphorFrontendEndToEnd ./tests -count=1
-  e2e-test-cloud-metaphors:
-    - go test -v -run TestCloudMetaphorsEndToEnd ./tests -count=1
-  e2e-test-github-user-creation-and-login:
-    # creates GitHub user
-    - go test -v -run TestGitHubUserCreationEndToEnd ./tests -count=1
-    # before checking if user exists, we need to wait for Atlantis apply to 
finish
-    - sleep 10
-    # check is the created user can log in into Vault
-    # this test requires E2E_VAULT_USERNAME to be set (aone, or kbot)
-    - go test -v -run TestVaultLoginEndToEnd ./tests -count=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/cmd/aws/command.go 
new/kubefirst-2.3.2/cmd/aws/command.go
--- old/kubefirst-2.3.0/cmd/aws/command.go      2023-10-24 09:02:39.000000000 
+0200
+++ new/kubefirst-2.3.2/cmd/aws/command.go      2023-10-24 19:19:57.000000000 
+0200
@@ -61,7 +61,7 @@
                Short:            "create the kubefirst platform running in 
aws",
                TraverseChildren: true,
                RunE:             createAws,
-               PreRun:           common.CheckDocker,
+               // PreRun:           common.CheckDocker,
        }
 
        // todo review defaults and update descriptions
@@ -88,11 +88,11 @@
 
 func Destroy() *cobra.Command {
        destroyCmd := &cobra.Command{
-               Use:    "destroy",
-               Short:  "destroy the kubefirst platform",
-               Long:   "deletes the GitHub resources, aws resources, and local 
content to re-provision",
-               RunE:   common.Destroy,
-               PreRun: common.CheckDocker,
+               Use:   "destroy",
+               Short: "destroy the kubefirst platform",
+               Long:  "deletes the GitHub resources, aws resources, and local 
content to re-provision",
+               RunE:  common.Destroy,
+               // PreRun: common.CheckDocker,
        }
 
        return destroyCmd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/cmd/civo/command.go 
new/kubefirst-2.3.2/cmd/civo/command.go
--- old/kubefirst-2.3.0/cmd/civo/command.go     2023-10-24 09:02:39.000000000 
+0200
+++ new/kubefirst-2.3.2/cmd/civo/command.go     2023-10-24 19:19:57.000000000 
+0200
@@ -72,7 +72,7 @@
                Short:            "create the kubefirst platform running on 
civo kubernetes",
                TraverseChildren: true,
                RunE:             createCivo,
-               PreRun:           common.CheckDocker,
+               // PreRun:           common.CheckDocker,
        }
 
        // todo review defaults and update descriptions
@@ -98,11 +98,11 @@
 
 func Destroy() *cobra.Command {
        destroyCmd := &cobra.Command{
-               Use:    "destroy",
-               Short:  "destroy the kubefirst platform",
-               Long:   "destroy the kubefirst platform running in civo and 
remove all resources",
-               RunE:   common.Destroy,
-               PreRun: common.CheckDocker,
+               Use:   "destroy",
+               Short: "destroy the kubefirst platform",
+               Long:  "destroy the kubefirst platform running in civo and 
remove all resources",
+               RunE:  common.Destroy,
+               // PreRun: common.CheckDocker,
        }
 
        return destroyCmd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/cmd/digitalocean/command.go 
new/kubefirst-2.3.2/cmd/digitalocean/command.go
--- old/kubefirst-2.3.0/cmd/digitalocean/command.go     2023-10-24 
09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/cmd/digitalocean/command.go     2023-10-24 
19:19:57.000000000 +0200
@@ -64,7 +64,7 @@
                Short:            "create the kubefirst platform running on 
DigitalOcean Kubernetes",
                TraverseChildren: true,
                RunE:             createDigitalocean,
-               PreRun:           common.CheckDocker,
+               // PreRun:           common.CheckDocker,
        }
 
        // todo review defaults and update descriptions
@@ -90,11 +90,11 @@
 
 func Destroy() *cobra.Command {
        destroyCmd := &cobra.Command{
-               Use:    "destroy",
-               Short:  "destroy the kubefirst platform",
-               Long:   "destroy the kubefirst platform running in DigitalOcean 
and remove all resources",
-               RunE:   common.Destroy,
-               PreRun: common.CheckDocker,
+               Use:   "destroy",
+               Short: "destroy the kubefirst platform",
+               Long:  "destroy the kubefirst platform running in DigitalOcean 
and remove all resources",
+               RunE:  common.Destroy,
+               // PreRun: common.CheckDocker,
        }
 
        return destroyCmd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/cmd/google/command.go 
new/kubefirst-2.3.2/cmd/google/command.go
--- old/kubefirst-2.3.0/cmd/google/command.go   2023-10-24 09:02:39.000000000 
+0200
+++ new/kubefirst-2.3.2/cmd/google/command.go   2023-10-24 19:19:57.000000000 
+0200
@@ -67,7 +67,7 @@
                Short:            "create the kubefirst platform running on GCP 
kubernetes",
                TraverseChildren: true,
                RunE:             createGoogle,
-               PreRun:           common.CheckDocker,
+               // PreRun:           common.CheckDocker,
        }
 
        // todo review defaults and update descriptions
@@ -95,11 +95,11 @@
 
 func Destroy() *cobra.Command {
        destroyCmd := &cobra.Command{
-               Use:    "destroy",
-               Short:  "destroy the kubefirst platform",
-               Long:   "destroy the kubefirst platform running in Goole and 
remove all resources",
-               RunE:   common.Destroy,
-               PreRun: common.CheckDocker,
+               Use:   "destroy",
+               Short: "destroy the kubefirst platform",
+               Long:  "destroy the kubefirst platform running in Goole and 
remove all resources",
+               RunE:  common.Destroy,
+               // PreRun: common.CheckDocker,
        }
 
        return destroyCmd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/cmd/k3d/create.go 
new/kubefirst-2.3.2/cmd/k3d/create.go
--- old/kubefirst-2.3.0/cmd/k3d/create.go       2023-10-24 09:02:39.000000000 
+0200
+++ new/kubefirst-2.3.2/cmd/k3d/create.go       2023-10-24 19:19:57.000000000 
+0200
@@ -33,7 +33,6 @@
        "github.com/kubefirst/runtime/configs"
        "github.com/kubefirst/runtime/pkg"
        "github.com/kubefirst/runtime/pkg/argocd"
-       "github.com/kubefirst/runtime/pkg/docker"
        "github.com/kubefirst/runtime/pkg/gitClient"
        "github.com/kubefirst/runtime/pkg/github"
        gitlab "github.com/kubefirst/runtime/pkg/gitlab"
@@ -148,14 +147,14 @@
                return fmt.Errorf("%s - this port is required to set up your 
kubefirst environment - please close any existing port forwards before 
continuing", err.Error())
        }
 
-       // Verify Docker is running
-       dcli := docker.DockerClientWrapper{
-               Client: docker.NewDockerClient(),
-       }
-       _, err = dcli.CheckDockerReady()
-       if err != nil {
-               return err
-       }
+       // Verify Docker is running # TODO: reintroduce once we support more 
runtimes
+       // dcli := docker.DockerClientWrapper{
+       //      Client: docker.NewDockerClient(),
+       // }
+       // _, err = dcli.CheckDockerReady()
+       // if err != nil {
+       //      return err
+       // }
 
        // Global context
        var ctx context.Context
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/cmd/launch.go 
new/kubefirst-2.3.2/cmd/launch.go
--- old/kubefirst-2.3.0/cmd/launch.go   2023-10-24 09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/cmd/launch.go   2023-10-24 19:19:57.000000000 +0200
@@ -9,7 +9,6 @@
 import (
        "fmt"
 
-       "github.com/kubefirst/kubefirst/internal/common"
        "github.com/kubefirst/kubefirst/internal/launch"
        "github.com/spf13/cobra"
 )
@@ -82,7 +81,7 @@
                Use:              "list",
                Short:            "list clusters created by the kubefirst 
console",
                TraverseChildren: true,
-               PreRun:           common.CheckDocker,
+               // PreRun:           common.CheckDocker,
                Run: func(cmd *cobra.Command, args []string) {
                        launch.ListClusters()
                },
@@ -97,7 +96,7 @@
                Use:              "delete",
                Short:            "delete a cluster created by the kubefirst 
console",
                TraverseChildren: true,
-               PreRun:           common.CheckDocker,
+               // PreRun:           common.CheckDocker,
                Args: func(cmd *cobra.Command, args []string) error {
                        if err := cobra.ExactArgs(1)(cmd, args); err != nil {
                                return fmt.Errorf("you must provide a cluster 
name as the only argument to this command")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/cmd/vultr/command.go 
new/kubefirst-2.3.2/cmd/vultr/command.go
--- old/kubefirst-2.3.0/cmd/vultr/command.go    2023-10-24 09:02:39.000000000 
+0200
+++ new/kubefirst-2.3.2/cmd/vultr/command.go    2023-10-24 19:19:57.000000000 
+0200
@@ -65,7 +65,7 @@
                Short:            "create the kubefirst platform running on 
Vultr kubernetes",
                TraverseChildren: true,
                RunE:             createVultr,
-               PreRun:           common.CheckDocker,
+               // PreRun:           common.CheckDocker,
        }
 
        // todo review defaults and update descriptions
@@ -91,11 +91,11 @@
 
 func Destroy() *cobra.Command {
        destroyCmd := &cobra.Command{
-               Use:    "destroy",
-               Short:  "destroy the kubefirst platform",
-               Long:   "destroy the kubefirst platform running in Vultr and 
remove all resources",
-               RunE:   common.Destroy,
-               PreRun: common.CheckDocker,
+               Use:   "destroy",
+               Short: "destroy the kubefirst platform",
+               Long:  "destroy the kubefirst platform running in Vultr and 
remove all resources",
+               RunE:  common.Destroy,
+               // PreRun: common.CheckDocker,
        }
 
        return destroyCmd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/internal/launch/constants.go 
new/kubefirst-2.3.2/internal/launch/constants.go
--- old/kubefirst-2.3.0/internal/launch/constants.go    2023-10-24 
09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/internal/launch/constants.go    2023-10-24 
19:19:57.000000000 +0200
@@ -11,7 +11,7 @@
        helmChartName     = "kubefirst"
        helmChartRepoName = "kubefirst"
        helmChartRepoURL  = "https://charts.kubefirst.com";
-       helmChartVersion  = "2.3.0"
+       helmChartVersion  = "2.3.2"
        namespace         = "kubefirst"
        secretName        = "kubefirst-initial-secrets"
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/internal/progress/message.go 
new/kubefirst-2.3.2/internal/progress/message.go
--- old/kubefirst-2.3.0/internal/progress/message.go    2023-10-24 
09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/internal/progress/message.go    2023-10-24 
19:19:57.000000000 +0200
@@ -11,6 +11,7 @@
 
 import (
        "fmt"
+       "log"
        "strconv"
 
        "github.com/charmbracelet/glamour"
@@ -20,11 +21,15 @@
 
 func renderMessage(message string) string {
        r, _ := glamour.NewTermRenderer(
-               glamour.WithStylesFromJSONFile("styles.json"),
+               glamour.WithStyles(StyleConfig),
                glamour.WithEmoji(),
        )
 
-       out, _ := r.Render(message)
+       out, err := r.Render(message)
+       if err != nil {
+               log.Println(err.Error())
+               return err.Error()
+       }
        return out
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/internal/progress/styles.go 
new/kubefirst-2.3.2/internal/progress/styles.go
--- old/kubefirst-2.3.0/internal/progress/styles.go     1970-01-01 
01:00:00.000000000 +0100
+++ new/kubefirst-2.3.2/internal/progress/styles.go     2023-10-24 
19:19:57.000000000 +0200
@@ -0,0 +1,230 @@
+package progress
+
+import "github.com/charmbracelet/glamour/ansi"
+
+var StyleConfig = ansi.StyleConfig{
+       Document: ansi.StyleBlock{
+               StylePrimitive: ansi.StylePrimitive{
+                       BlockPrefix: "",
+                       BlockSuffix: "",
+                       Color:       stringPtr("252"),
+               },
+               Margin: uintPtr(2),
+       },
+       BlockQuote: ansi.StyleBlock{
+               Indent:      uintPtr(1),
+               IndentToken: stringPtr("│ "),
+       },
+       List: ansi.StyleList{
+               LevelIndent: 2,
+       },
+       Heading: ansi.StyleBlock{
+               StylePrimitive: ansi.StylePrimitive{
+                       BlockSuffix: "\n",
+                       Color:       stringPtr("39"),
+                       Bold:        boolPtr(true),
+               },
+       },
+       H1: ansi.StyleBlock{
+               StylePrimitive: ansi.StylePrimitive{
+                       Prefix:          " ",
+                       Suffix:          " ",
+                       Color:           stringPtr("288"),
+                       BackgroundColor: stringPtr("63"),
+                       Bold:            boolPtr(true),
+               },
+       },
+       H2: ansi.StyleBlock{
+               StylePrimitive: ansi.StylePrimitive{
+                       Prefix: "",
+                       Color:  stringPtr("99"),
+               },
+       },
+       H3: ansi.StyleBlock{
+               StylePrimitive: ansi.StylePrimitive{
+                       Prefix: "",
+                       Color:  stringPtr("244"),
+                       Bold:   boolPtr(true),
+               },
+               Margin: uintPtr(0),
+       },
+       H4: ansi.StyleBlock{
+               StylePrimitive: ansi.StylePrimitive{
+                       Prefix: "",
+                       Color:  stringPtr("70"),
+               },
+       },
+       H5: ansi.StyleBlock{
+               StylePrimitive: ansi.StylePrimitive{
+                       Prefix: "",
+                       Color:  stringPtr("15"),
+               },
+               Margin: uintPtr(0),
+       },
+       H6: ansi.StyleBlock{
+               StylePrimitive: ansi.StylePrimitive{
+                       Prefix: "###### ",
+                       Color:  stringPtr("35"),
+                       Bold:   boolPtr(false),
+               },
+       },
+       Strikethrough: ansi.StylePrimitive{
+               CrossedOut: boolPtr(true),
+       },
+       Emph: ansi.StylePrimitive{
+               Italic: boolPtr(true),
+       },
+       Strong: ansi.StylePrimitive{
+               Bold: boolPtr(true),
+       },
+       HorizontalRule: ansi.StylePrimitive{
+               Color:  stringPtr("240"),
+               Format: "\n--------\n",
+       },
+       Item: ansi.StylePrimitive{
+               BlockPrefix: "• ",
+       },
+       Enumeration: ansi.StylePrimitive{
+               BlockPrefix: ". ",
+               Color:       stringPtr("#8be9fd"),
+       },
+       Task: ansi.StyleTask{
+               StylePrimitive: ansi.StylePrimitive{},
+               Ticked:         "[✓] ",
+               Unticked:       "[ ] ",
+       },
+       Link: ansi.StylePrimitive{
+               Color:     stringPtr("15"),
+               Underline: boolPtr(false),
+       },
+       LinkText: ansi.StylePrimitive{
+               Color: stringPtr("35"),
+               Bold:  boolPtr(true),
+       },
+       Image: ansi.StylePrimitive{
+               Color:     stringPtr("212"),
+               Underline: boolPtr(true),
+       },
+       ImageText: ansi.StylePrimitive{
+               Color:  stringPtr("243"),
+               Format: "Image: {{.text}} →",
+       },
+       Code: ansi.StyleBlock{
+               StylePrimitive: ansi.StylePrimitive{
+                       Color:           stringPtr("15"),
+                       Prefix:          " ",
+                       Suffix:          " ",
+                       Bold:            boolPtr(true),
+                       BackgroundColor: stringPtr(""),
+               },
+       },
+       CodeBlock: ansi.StyleCodeBlock{
+               StyleBlock: ansi.StyleBlock{
+                       StylePrimitive: ansi.StylePrimitive{
+                               Color: stringPtr("244"),
+                       },
+                       Margin: uintPtr(2),
+               },
+               Chroma: &ansi.Chroma{
+                       Text: ansi.StylePrimitive{
+                               Color: stringPtr("#f8f8f2"),
+                       },
+                       Error: ansi.StylePrimitive{
+                               Color:           stringPtr("#f8f8f2"),
+                               BackgroundColor: stringPtr("#ff5555"),
+                       },
+                       Comment: ansi.StylePrimitive{
+                               Color: stringPtr("#6272A4"),
+                       },
+                       CommentPreproc: ansi.StylePrimitive{
+                               Color: stringPtr("#ff79c6"),
+                       },
+                       Keyword: ansi.StylePrimitive{
+                               Color: stringPtr("#ff79c6"),
+                       },
+                       KeywordReserved: ansi.StylePrimitive{
+                               Color: stringPtr("#ff79c6"),
+                       },
+                       KeywordNamespace: ansi.StylePrimitive{
+                               Color: stringPtr("#ff79c6"),
+                       },
+                       KeywordType: ansi.StylePrimitive{
+                               Color: stringPtr("#8be9fd"),
+                       },
+                       Operator: ansi.StylePrimitive{
+                               Color: stringPtr("#ff79c6"),
+                       },
+                       Punctuation: ansi.StylePrimitive{
+                               Color: stringPtr("#f8f8f2"),
+                       },
+                       Name: ansi.StylePrimitive{
+                               Color: stringPtr("#8be9fd"),
+                       },
+                       NameBuiltin: ansi.StylePrimitive{
+                               Color: stringPtr("#8be9fd"),
+                       },
+                       NameTag: ansi.StylePrimitive{
+                               Color: stringPtr("#ff79c6"),
+                       },
+                       NameAttribute: ansi.StylePrimitive{
+                               Color: stringPtr("#50fa7b"),
+                       },
+                       NameClass: ansi.StylePrimitive{
+                               Color: stringPtr("#8be9fd"),
+                       },
+                       NameConstant: ansi.StylePrimitive{
+                               Color: stringPtr("#bd93f9"),
+                       },
+                       NameDecorator: ansi.StylePrimitive{
+                               Color: stringPtr("#50fa7b"),
+                       },
+                       NameFunction: ansi.StylePrimitive{
+                               Color: stringPtr("#50fa7b"),
+                       },
+                       LiteralNumber: ansi.StylePrimitive{
+                               Color: stringPtr("#6EEFC0"),
+                       },
+                       LiteralString: ansi.StylePrimitive{
+                               Color: stringPtr("#f1fa8c"),
+                       },
+                       LiteralStringEscape: ansi.StylePrimitive{
+                               Color: stringPtr("#ff79c6"),
+                       },
+                       GenericDeleted: ansi.StylePrimitive{
+                               Color: stringPtr("#ff5555"),
+                       },
+                       GenericEmph: ansi.StylePrimitive{
+                               Color:  stringPtr("#f1fa8c"),
+                               Italic: boolPtr(true),
+                       },
+                       GenericInserted: ansi.StylePrimitive{
+                               Color: stringPtr("#50fa7b"),
+                       },
+                       GenericStrong: ansi.StylePrimitive{
+                               Color: stringPtr("#ffb86c"),
+                               Bold:  boolPtr(true),
+                       },
+                       GenericSubheading: ansi.StylePrimitive{
+                               Color: stringPtr("#bd93f9"),
+                       },
+                       Background: ansi.StylePrimitive{
+                               BackgroundColor: stringPtr("#282a36"),
+                       },
+               },
+       },
+       Table: ansi.StyleTable{
+               StyleBlock: ansi.StyleBlock{
+                       StylePrimitive: ansi.StylePrimitive{},
+               },
+               CenterSeparator: stringPtr("┼"),
+               ColumnSeparator: stringPtr("│"),
+               RowSeparator:    stringPtr("─"),
+       },
+       DefinitionDescription: ansi.StylePrimitive{
+               BlockPrefix: "\n🠶 ",
+       },
+}
+
+func boolPtr(b bool) *bool       { return &b }
+func stringPtr(s string) *string { return &s }
+func uintPtr(u uint) *uint       { return &u }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/styles.json 
new/kubefirst-2.3.2/styles.json
--- old/kubefirst-2.3.0/styles.json     2023-10-24 09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/styles.json     1970-01-01 01:00:00.000000000 +0100
@@ -1,203 +0,0 @@
-{
-  "document": {
-    "block_prefix": "",
-    "block_suffix": "",
-    "color": "252",
-    "margin": 2
-  },
-  "block_quote": {
-    "indent": 1,
-    "indent_token": "│ "
-  },
-  "paragraph": {},
-  "list": {
-    "level_indent": 2
-  },
-  "heading": {
-    "block_suffix": "\n",
-    "color": "39",
-    "bold": true
-  },
-  "h1": {
-    "prefix": " ",
-    "suffix": " ",
-    "color": "228",
-    "background_color": "63",
-    "bold": true
-  },
-  "h2": {
-    "prefix": "",
-    "color": "99"
-  },
-  "h3": {
-    "prefix": "",
-    "color": "244",
-    "bold": true,
-    "margin": 0
-  },
-  "h4": {
-    "prefix": "",
-    "color" : "70"
-  },
-  "h5": {
-    "prefix": "",
-    "color": "15",
-    "margin": 0
-  },
-  "h6": {
-    "prefix": "###### ",
-    "color": "35",
-    "bold": false
-  },
-  "text": {},
-  "strikethrough": {
-    "crossed_out": true
-  },
-  "emph": {
-    "italic": true
-  },
-  "strong": {
-    "bold": true
-  },
-  "hr": {
-    "color": "240",
-    "format": "\n--------\n"
-  },
-  "item": {
-    "block_prefix": "• "
-  },
-  "enumeration": {
-    "block_prefix": ". "
-  },
-  "task": {
-    "ticked": "[✓] ",
-    "unticked": "[ ] "
-  },
-  "link": {
-    "color": "15",
-    "underline": false
-  },
-  "link_text": {
-    "color": "35",
-    "bold": true
-  },
-  "image": {
-    "color": "212",
-    "underline": true
-  },
-  "image_text": {
-    "color": "243",
-    "format": "Image: {{.text}} →"
-  },
-  "code": {
-    "prefix": " ",
-    "suffix": " ",
-    "color": "15",
-    "background_color": "",
-    "bold": true
-  },
-  "code_block": {
-    "color": "244",
-    "margin": 1,
-    "chroma": {
-      "text": {
-        "color": "#C4C4C4"
-      },
-      "error": {
-        "color": "#F1F1F1",
-        "background_color": "#F05B5B"
-      },
-      "comment": {
-        "color": "#676767"
-      },
-      "comment_preproc": {
-        "color": "#FF875F"
-      },
-      "keyword": {
-        "color": "#00AAFF"
-      },
-      "keyword_reserved": {
-        "color": "#FF5FD2"
-      },
-      "keyword_namespace": {
-        "color": "#FF5F87"
-      },
-      "keyword_type": {
-        "color": "#6E6ED8"
-      },
-      "operator": {
-        "color": "#EF8080"
-      },
-      "punctuation": {
-        "color": "#E8E8A8"
-      },
-      "name": {
-        "color": "#C4C4C4"
-      },
-      "name_builtin": {
-        "color": "#FF8EC7"
-      },
-      "name_tag": {
-        "color": "#B083EA"
-      },
-      "name_attribute": {
-        "color": "#7A7AE6"
-      },
-      "name_class": {
-        "color": "#F1F1F1",
-        "underline": true,
-        "bold": true
-      },
-      "name_constant": {},
-      "name_decorator": {
-        "color": "#FFFF87"
-      },
-      "name_exception": {},
-      "name_function": {
-        "color": "#00D787"
-      },
-      "name_other": {},
-      "literal": {},
-      "literal_number": {
-        "color": "#6EEFC0"
-      },
-      "literal_date": {},
-      "literal_string": {
-        "color": "#C69669"
-      },
-      "literal_string_escape": {
-        "color": "#AFFFD7"
-      },
-      "generic_deleted": {
-        "color": "#FD5B5B"
-      },
-      "generic_emph": {
-        "italic": true
-      },
-      "generic_inserted": {
-        "color": "#00D787"
-      },
-      "generic_strong": {
-        "bold": true
-      },
-      "generic_subheading": {
-        "color": "#777777"
-      },
-      "background": {
-        "background_color": "#373737"
-      }
-    }
-  },
-  "table": {
-    "center_separator": "┼",
-    "column_separator": "│",
-    "row_separator": "─"
-  },
-  "definition_list": {},
-  "definition_term": {},
-  "definition_description": {
-    "block_prefix": "\n🠶 "
-  },
-  "html_block": {},
-  "html_span": {}
-}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/test/artifacts/init/aws_profile.yaml 
new/kubefirst-2.3.2/test/artifacts/init/aws_profile.yaml
--- old/kubefirst-2.3.0/test/artifacts/init/aws_profile.yaml    2023-10-24 
09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/test/artifacts/init/aws_profile.yaml    1970-01-01 
01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-config:
-  admin-email:  [email protected]
-  cloud: aws
-  hosted-zone-name: my.domain.com
-  profile: default
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/test/artifacts/init/sample.yaml 
new/kubefirst-2.3.2/test/artifacts/init/sample.yaml
--- old/kubefirst-2.3.0/test/artifacts/init/sample.yaml 2023-10-24 
09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/test/artifacts/init/sample.yaml 1970-01-01 
01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-config:
-  sample: set-by-config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/tests/README.md 
new/kubefirst-2.3.2/tests/README.md
--- old/kubefirst-2.3.0/tests/README.md 2023-10-24 09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/tests/README.md 1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-# End to End tests
-
-This directory contains end to end tests to be run against a running Kubefirst 
instance of the 
[local](https://docs.kubefirst.io/kubefirst/local/install.html), [AWS with 
GitHub](https://docs.kubefirst.io/kubefirst/github/install.html), and [AWS with 
GitLab](https://docs.kubefirst.io/kubefirst/gitlab/install.html) installations. 
After a successful installation, the tests can be run to verify that the:
-
-- installation was successful
-- cluster is working as expected
-- downloaded repositories are working as expected
-- Metaphor application is working as expected
-- Traefik ingress controller rules are working as expected
-- TLS certificates are working as expected
-- Vault is working as expected
-- Vault initial token is able to be used to login to Vault
-- Kubefirst process is able to create new GitHub users via 
IAC/Webhooks/Atlantis/Terraform
-- newly created users are able to login into Vault
-
-## Taskfile to trigger sequential execution of the tests
-
-Kubefirst make use of [Taskfile](https://github.com/go-task/task) (instead of 
makefile), to trigger sequential execution of the tests. The 
[Taskfile](../Taskfile.yaml) is located in the root of this repository, so you 
need to run the tests from there. The following test cases are avaialble:
-
-### test Traefik rules and TLS certificates
-
-```bash
-task integration-test-for-tls-localdev
-```
-
-### test Metaphor application
-
-```bash
-task e2e-test-local-metaphors
-```
-
-### test user creation via IAC/Webhooks/Atlantis/Terraform, and check if is 
able to login with the new user
-
-```bash
-task e2e-test-github-user-creation-and-login
-```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/tests/metaphor-frontend_test.go 
new/kubefirst-2.3.2/tests/metaphor-frontend_test.go
--- old/kubefirst-2.3.0/tests/metaphor-frontend_test.go 2023-10-24 
09:02:39.000000000 +0200
+++ new/kubefirst-2.3.2/tests/metaphor-frontend_test.go 1970-01-01 
01:00:00.000000000 +0100
@@ -1,105 +0,0 @@
-/*
-Copyright (C) 2021-2023, Kubefirst
-
-This program is licensed under MIT.
-See the LICENSE file for more details.
-*/
-package tests
-
-import (
-       "fmt"
-       "net/http"
-       "testing"
-
-       "github.com/kubefirst/runtime/configs"
-       "github.com/kubefirst/runtime/pkg"
-       "github.com/spf13/viper"
-)
-
-// TestLocalMetaphorFrontendEndToEnd tests the Metaphor frontend (dev, 
staging, prod), and look for a http response code of 200
-func TestLocalMetaphorFrontendEndToEnd(t *testing.T) {
-
-       if testing.Short() {
-               t.Skip("skipping end to tend test")
-       }
-
-       testCases := []struct {
-               name     string
-               url      string
-               expected int
-       }{
-               {name: "metaphor frontend development", url: 
pkg.MetaphorFrontendSlimTLSDev, expected: http.StatusOK},
-               {name: "metaphor frontend staging", url: 
pkg.MetaphorFrontendSlimTLSStaging, expected: http.StatusOK},
-               {name: "metaphor frontend production", url: 
pkg.MetaphorFrontendSlimTLSProd, expected: http.StatusOK},
-       }
-
-       for _, tc := range testCases {
-               t.Run(tc.name, func(t *testing.T) {
-
-                       resp, err := http.Get(tc.url)
-                       if err != nil {
-                               t.Errorf(err.Error())
-                               return
-                       }
-                       defer resp.Body.Close()
-
-                       fmt.Println("HTTP status code:", resp.StatusCode)
-
-                       if resp.StatusCode != http.StatusOK {
-                               t.Errorf("HTTP status code is not 200")
-                       }
-               })
-       }
-
-}
-
-// TestCloudMetaphorsEndToEnd tests the Metaphor frontend, and look for a http 
response code of 200 for cloud
-func TestCloudMetaphorsEndToEnd(t *testing.T) {
-
-       if testing.Short() {
-               t.Skip("skipping end to tend test")
-       }
-
-       config := configs.ReadConfig()
-       if err := pkg.SetupViper(config); err != nil {
-               t.Errorf(err.Error())
-       }
-
-       testCases := []struct {
-               name     string
-               url      string
-               expected int
-       }{
-               {name: "metaphor frontend development", url: 
"https://metaphor-development."; + viper.GetString("aws.hostedzonename"), 
expected: http.StatusOK},
-               {name: "metaphor frontend staging", url: 
"https://metaphor-staging."; + viper.GetString("aws.hostedzonename"), expected: 
http.StatusOK},
-               {name: "metaphor frontend production", url: 
"https://metaphor-production."; + viper.GetString("aws.hostedzonename"), 
expected: http.StatusOK},
-               {name: "metaphor NodeJs development", url: 
"https://metaphor-development."; + viper.GetString("aws.hostedzonename") + 
"/app", expected: http.StatusOK},
-               {name: "metaphor NodeJs staging", url: 
"https://metaphor-staging."; + viper.GetString("aws.hostedzonename") + "/app", 
expected: http.StatusOK},
-               {name: "metaphor NodeJs production", url: 
"https://metaphor-production."; + viper.GetString("aws.hostedzonename") + 
"/app", expected: http.StatusOK},
-               {name: "metaphor Go development", url: 
"https://metaphor-go-development."; + viper.GetString("aws.hostedzonename") + 
"/app", expected: http.StatusOK},
-               {name: "metaphor Go staging", url: 
"https://metaphor-go-staging."; + viper.GetString("aws.hostedzonename") + 
"/app", expected: http.StatusOK},
-               {name: "metaphor Go production", url: 
"https://metaphor-go-production."; + viper.GetString("aws.hostedzonename") + 
"/app", expected: http.StatusOK},
-       }
-
-       for _, tc := range testCases {
-               t.Run(tc.name, func(t *testing.T) {
-
-                       resp, err := http.Get(tc.url)
-                       if err != nil {
-                               t.Errorf(err.Error())
-                               return
-                       }
-                       defer resp.Body.Close()
-
-                       fmt.Println("HTTP status code:", resp.StatusCode)
-
-                       if resp.StatusCode != http.StatusOK {
-                               t.Errorf("HTTP status code is not 200")
-                       }
-                       if resp.StatusCode != tc.expected {
-                               t.Errorf("[%s] wanted http status code (%d), 
got (%d)", tc.url, resp.StatusCode, tc.expected)
-                       }
-               })
-       }
-
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/tests/ngrok_test.go 
new/kubefirst-2.3.2/tests/ngrok_test.go
--- old/kubefirst-2.3.0/tests/ngrok_test.go     2023-10-24 09:02:39.000000000 
+0200
+++ new/kubefirst-2.3.2/tests/ngrok_test.go     1970-01-01 01:00:00.000000000 
+0100
@@ -1,62 +0,0 @@
-/*
-Copyright (C) 2021-2023, Kubefirst
-
-This program is licensed under MIT.
-See the LICENSE file for more details.
-*/
-package tests
-
-import (
-       "fmt"
-       "net/http"
-       "testing"
-       "time"
-
-       "github.com/kubefirst/runtime/configs"
-       "github.com/kubefirst/runtime/pkg"
-       "github.com/spf13/viper"
-)
-
-// TestNgrokGitHubWebhookIntegration tests the ngrok GitHub webhook response, 
and look for a http response code of 200
-func TestNgrokGitHubWebhookIntegration(t *testing.T) {
-
-       if testing.Short() {
-               t.Skip("skipping end to tend test")
-       }
-
-       config := configs.ReadConfig()
-       err := pkg.SetupViper(config)
-       if err != nil {
-               t.Error(err)
-       }
-
-       testCases := []struct {
-               name     string
-               url      string
-               expected int
-       }{
-               {name: "ngrok", url: viper.GetString("ngrok.url") + "/events", 
expected: http.StatusOK},
-       }
-
-       for _, tc := range testCases {
-               t.Run(tc.name, func(t *testing.T) {
-
-                       client := &http.Client{
-                               Timeout: time.Second * 10,
-                       }
-                       resp, err := client.Get(tc.url)
-                       if err != nil {
-                               t.Errorf(err.Error())
-                               return
-                       }
-                       defer resp.Body.Close()
-
-                       fmt.Println("HTTP status code:", resp.StatusCode)
-
-                       if resp.StatusCode != http.StatusOK {
-                               t.Errorf("HTTP status code is not 200")
-                       }
-               })
-       }
-
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.3.0/tests/vault_test.go 
new/kubefirst-2.3.2/tests/vault_test.go
--- old/kubefirst-2.3.0/tests/vault_test.go     2023-10-24 09:02:39.000000000 
+0200
+++ new/kubefirst-2.3.2/tests/vault_test.go     1970-01-01 01:00:00.000000000 
+0100
@@ -1,169 +0,0 @@
-/*
-Copyright (C) 2021-2023, Kubefirst
-
-This program is licensed under MIT.
-See the LICENSE file for more details.
-*/
-package tests
-
-import (
-       "context"
-       "os"
-       "testing"
-       "time"
-
-       "github.com/chromedp/chromedp"
-       "github.com/kubefirst/runtime/configs"
-       "github.com/kubefirst/runtime/pkg"
-       "github.com/spf13/viper"
-)
-
-// TestVaultLoginEndToEnd tests the end to end flow of logging into the cloud 
and local vault and retrieving a secret
-// from it. This test is not run by default because it requires a cloud vault 
to be running.
-// This test does:
-//   - login to the cloud vault
-//   - make sure the login was successful
-//   - retrieve kbot secret
-//   - logout of the cloud vault
-//   - login to the cloud vault again using kbot credentials and userpass flow
-//   - make sure the kbot is logged in
-//
-// prerequisites: this test requires E2E_VAULT_USERNAME to be set to "aone" in 
case we want to test a new created user
-// and "kbot" in case we want to test the login for the initial account
-func TestVaultLoginEndToEnd(t *testing.T) {
-
-       if testing.Short() {
-               t.Skip("skipping end to tend test")
-       }
-
-       username := os.Getenv("E2E_VAULT_USERNAME")
-       if username == "" {
-               t.Error("E2E_VAULT_USERNAME is not set")
-               return
-       }
-
-       config := configs.ReadConfig()
-
-       err := pkg.SetupViper(config)
-       if err != nil {
-               t.Error(err)
-       }
-
-       initialVaultToken := viper.GetString("vault.token")
-       if initialVaultToken == "" {
-               t.Error("Vault token is empty")
-       }
-
-       // Headless is active by default
-       opts := append(chromedp.DefaultExecAllocatorOptions[3:],
-               chromedp.NoFirstRun,
-               chromedp.NoDefaultBrowserCheck,
-               chromedp.IgnoreCertErrors,
-               chromedp.Headless,
-       )
-
-       ctx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
-       defer cancel()
-
-       // create chrome instance
-       ctx, cancel = chromedp.NewContext(ctx)
-       defer cancel()
-
-       // create a timeout
-       ctx, cancel = context.WithTimeout(ctx, 60*time.Second)
-       defer cancel()
-
-       // find Vault url
-       var vaultURL string
-       switch viper.GetString("cloud") {
-       case pkg.CloudK3d:
-               vaultURL = viper.GetString("vault.local.service")
-       default:
-               // cloud default
-               vaultURL = "https://vault."; + 
viper.GetString("aws.hostedzonename")
-       }
-
-       if err = chromedp.Run(
-               ctx,
-               chromedp.Navigate(vaultURL),
-               chromedp.WaitVisible("//h1[text()='Sign in to Vault']"),
-       ); err != nil {
-               t.Error(err.Error())
-       }
-
-       if err = chromedp.Run(ctx, chromedp.SendKeys(`//form/div/div/input`, 
initialVaultToken)); err != nil {
-               t.Error(err)
-       }
-
-       time.Sleep(1 * time.Second)
-
-       if err = chromedp.Run(ctx, 
chromedp.Click(`//button[@id='auth-submit']`)); err != nil {
-               t.Error(err)
-       }
-
-       // confirm its logged in
-       if err = chromedp.Run(ctx,
-               
chromedp.WaitVisible(`//div[@class='level-left']/h1[contains(text(),'Secrets 
Engines')]`),
-       ); err != nil {
-               t.Error(err)
-       }
-
-       if err = chromedp.Run(ctx,
-               chromedp.Click(`(//div[@class='linkable-item-content'])[3]//a`),
-       ); err != nil {
-               t.Error(err)
-       }
-
-       if err = chromedp.Run(ctx, chromedp.Click(`(//a)[10]`)); err != nil {
-               t.Error(err)
-       }
-
-       // show secret
-       if err = chromedp.Run(ctx, chromedp.Click(`//button[@class=' 
masked-input-toggle button']`)); err != nil {
-               t.Error(err)
-       }
-
-       var initialPassword string
-       if err = chromedp.Run(ctx,
-               chromedp.Text(`//pre[@class='masked-value display-only 
is-word-break']`, &initialPassword),
-       ); err != nil {
-               t.Error(err)
-       }
-
-       if initialPassword == "" {
-               t.Error("initial user password is empty")
-       }
-
-       vaultLogoutURL := vaultURL + "/ui/vault/logout"
-       if err = chromedp.Run(ctx,
-               chromedp.Navigate(vaultLogoutURL),
-       ); err != nil {
-               t.Error(err)
-       }
-
-       // select
-       if err = chromedp.Run(ctx, 
chromedp.SetValue(`//select[@class="select"]`, "userpass", chromedp.BySearch)); 
err != nil {
-               t.Error(err)
-       }
-       // force wait above select update
-       time.Sleep(1 * time.Second)
-
-       if err = chromedp.Run(ctx, chromedp.SendKeys(`//input[@id="username"]`, 
username)); err != nil {
-               t.Error(err)
-       }
-       if err = chromedp.Run(ctx, chromedp.SendKeys(`//input[@id="password"]`, 
initialPassword)); err != nil {
-               t.Error(err)
-       }
-
-       // click sign in
-       if err = chromedp.Run(ctx, 
chromedp.Click(`//button[@id='auth-submit']`)); err != nil {
-               t.Error(err)
-       }
-
-       if err = chromedp.Run(ctx,
-               
chromedp.WaitVisible(`//div[@class='level-left']/h1[contains(text(),'Secrets 
Engines')]`),
-       ); err != nil {
-               t.Error(err)
-       }
-
-}

++++++ kubefirst.obsinfo ++++++
--- /var/tmp/diff_new_pack.ewflrL/_old  2023-10-25 18:04:07.657076222 +0200
+++ /var/tmp/diff_new_pack.ewflrL/_new  2023-10-25 18:04:07.661076356 +0200
@@ -1,5 +1,5 @@
 name: kubefirst
-version: 2.3.0
-mtime: 1698130959
-commit: 476c9db41292307fa11d93f2090bcf123a7333b2
+version: 2.3.2
+mtime: 1698167997
+commit: 155d0304b9c5ac032c430c91be7463ce6854f6e5
 

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

Reply via email to