diff --git a/Makefile b/Makefile
index cd6a6b69..e9e7f73a 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@ DATE ?= $(shell TZ=UTC date -j -f "%s" ${SOURCE_DATE_EPOCH} +"%Y-%m-%dT%H:
else
DATE ?= $(shell date -u -d @${SOURCE_DATE_EPOCH} +"%Y-%m-%dT%H:%M:%SZ")
endif
-VERSION ?= v0.31.4
+VERSION ?= v0.31.5
IMG_NAME := derailed/k9s
IMAGE := ${IMG_NAME}:${VERSION}
diff --git a/change_logs/release_v0.31.5.md b/change_logs/release_v0.31.5.md
new file mode 100644
index 00000000..f73584c8
--- /dev/null
+++ b/change_logs/release_v0.31.5.md
@@ -0,0 +1,51 @@
+
+
+# Release v0.31.5
+
+## Notes
+
+Thank you to all that contributed with flushing out issues and enhancements for K9s!
+I'll try to mark some of these issues as fixed. But if you don't mind grab the latest rev
+and see if we're happier with some of the fixes!
+If you've filed an issue please help me verify and close.
+
+Your support, kindness and awesome suggestions to make K9s better are, as ever, very much noted and appreciated!
+Also big thanks to all that have allocated their own time to help others on both slack and on this repo!!
+
+As you may know, K9s is not pimped out by corps with deep pockets, thus if you feel K9s is helping your Kubernetes journey,
+please consider joining our [sponsorship program](https://github.com/sponsors/derailed) and/or make some noise on social! [@kitesurfer](https://twitter.com/kitesurfer)
+
+On Slack? Please join us [K9slackers](https://join.slack.com/t/k9sers/shared_invite/enQtOTA5MDEyNzI5MTU0LWQ1ZGI3MzliYzZhZWEyNzYxYzA3NjE0YTk1YmFmNzViZjIyNzhkZGI0MmJjYzhlNjdlMGJhYzE2ZGU1NjkyNTM)
+
+## Maintenance Release!
+
+😱 More aftermath... 😱
+
+Thank you all for pitching in and helping flesh out issues!!
+
+Please make sure to add gory details to issues ie relevant configs, debug logs, etc...
+
+Comments like: `same here!` or `me to!` doesn't really cut it for us to zero in ;(
+Everyone has slightly different settings/platforms so every little bits of info helps with the resolves even if seemingly irrelevant.
+Thank you!!
+
+---
+
+## Videos Are In The Can!
+
+Please dial [K9s Channel](https://www.youtube.com/channel/UC897uwPygni4QIjkPCpgjmw) for up coming content...
+
+* [K9s v0.31.0 Configs+Sneak peek](https://youtu.be/X3444KfjguE)
+* [K9s v0.30.0 Sneak peek](https://youtu.be/mVBc1XneRJ4)
+* [Vulnerability Scans](https://youtu.be/ULkl0MsaidU)
+
+---
+
+## Resolved Issues
+
+* [#2466](https://github.com/derailed/k9s/issues/2466) Panic: index out of range [0] with length 0
+* [#2465](https://github.com/derailed/k9s/issues/2465) v0.31.4 - panic; no client connection detected - with feelings!!
+
+---
+
+
© 2024 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0)
\ No newline at end of file
diff --git a/cmd/root.go b/cmd/root.go
index 883f5de6..2beadb4f 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -114,6 +114,12 @@ func loadConfiguration() (*config.Config, error) {
k8sCfg := client.NewConfig(k8sFlags)
k9sCfg := config.NewConfig(k8sCfg)
+ conn, err := client.InitConnection(k8sCfg)
+ k9sCfg.SetConnection(conn)
+ if err != nil {
+ return k9sCfg, err
+ }
+
if err := k9sCfg.Load(config.AppConfigFile); err != nil {
return k9sCfg, err
}
@@ -122,11 +128,6 @@ func loadConfiguration() (*config.Config, error) {
log.Error().Err(err).Msgf("config refine failed")
return k9sCfg, err
}
- conn, err := client.InitConnection(k8sCfg)
- k9sCfg.SetConnection(conn)
- if err != nil {
- return k9sCfg, err
- }
// Try to access server version if that fail. Connectivity issue?
if !conn.CheckConnectivity() {
return k9sCfg, fmt.Errorf("cannot connect to context: %s", k9sCfg.K9s.ActiveContextName())
diff --git a/go.mod b/go.mod
index 759b0632..747bf6ee 100644
--- a/go.mod
+++ b/go.mod
@@ -13,7 +13,7 @@ require (
github.com/cenkalti/backoff/v4 v4.2.1
github.com/derailed/popeye v0.11.2
github.com/derailed/tcell/v2 v2.3.1-rc.3
- github.com/derailed/tview v0.8.2
+ github.com/derailed/tview v0.8.3
github.com/fatih/color v1.16.0
github.com/fsnotify/fsnotify v1.7.0
github.com/fvbommel/sortorder v1.1.0
diff --git a/go.sum b/go.sum
index 311b0788..c1b9add3 100644
--- a/go.sum
+++ b/go.sum
@@ -389,8 +389,8 @@ github.com/derailed/popeye v0.11.2 h1:8MKMjYBJdYNktTKeh98TeT127jZY6CFAsurrENoTZC
github.com/derailed/popeye v0.11.2/go.mod h1:HygqX7A8BwidorJjJUnWDZ5AvbxHIU7uRwXgOtn9GwY=
github.com/derailed/tcell/v2 v2.3.1-rc.3 h1:9s1fmyRcSPRlwr/C9tcpJKCujbrtmPpST6dcMUD2piY=
github.com/derailed/tcell/v2 v2.3.1-rc.3/go.mod h1:nf68BEL8fjmXQHJT3xZjoZFs2uXOzyJcNAQqGUEMrFY=
-github.com/derailed/tview v0.8.2 h1:8b+QwVECV1lZ6VV7Vf1tergpJxJ+ReA/JhIBYyUVSFI=
-github.com/derailed/tview v0.8.2/go.mod h1:q+odnnhO6QDPpBT+0dqaWj+X+uoJ6MJehXj9shgP+Cw=
+github.com/derailed/tview v0.8.3 h1:jhN7LW7pfCWf7Z6VC5Dpi/1usavOBZxz2mY90//TMsU=
+github.com/derailed/tview v0.8.3/go.mod h1:q+odnnhO6QDPpBT+0dqaWj+X+uoJ6MJehXj9shgP+Cw=
github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4=
github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc=
github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI=
diff --git a/internal/config/config.go b/internal/config/config.go
index c4d5109b..a3fa3bef 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -30,7 +30,7 @@ func NewConfig(ks data.KubeSettings) *Config {
}
}
-// ContextHotKeysPath returns a context specific hotkeys file spec.
+// ContextHotkeysPath returns a context specific hotkeys file spec.
func (c *Config) ContextHotkeysPath() string {
ct, err := c.K9s.ActiveContext()
if err != nil {
diff --git a/internal/config/data/types.go b/internal/config/data/types.go
index 5d7c0214..4981be38 100644
--- a/internal/config/data/types.go
+++ b/internal/config/data/types.go
@@ -32,10 +32,10 @@ type KubeSettings interface {
// CurrentClusterName returns the name of the current cluster.
CurrentClusterName() (string, error)
- // CurrentNamespace returns the name of the current namespace.
+ // CurrentNamespaceName returns the name of the current namespace.
CurrentNamespaceName() (string, error)
- // ContextNames() returns all available context names.
+ // ContextNames returns all available context names.
ContextNames() (map[string]struct{}, error)
// CurrentContext returns the current context configuration.
diff --git a/internal/dao/types.go b/internal/dao/types.go
index d51d25e8..da6fc7ff 100644
--- a/internal/dao/types.go
+++ b/internal/dao/types.go
@@ -47,7 +47,7 @@ type Factory interface {
// DeleteForwarder deletes a pod forwarder.
DeleteForwarder(path string)
- // Forwards returns all portforwards.
+ // Forwarders returns all portforwards.
Forwarders() watch.Forwarders
}
@@ -101,7 +101,7 @@ type NodeMaintainer interface {
// Loggable represents resources with logs.
type Loggable interface {
- // TaiLogs streams resource logs.
+ // TailLogs streams resource logs.
TailLogs(ctx context.Context, opts *LogOptions) ([]LogChan, error)
}
@@ -158,10 +158,10 @@ type Logger interface {
// ContainsPodSpec represents a resource with a pod template.
type ContainsPodSpec interface {
- // Get PodSpec of a resource
+ // GetPodSpec returns a podspec for the resource.
GetPodSpec(path string) (*v1.PodSpec, error)
- // Set Images for a resource
+ // SetImages sets container image.
SetImages(ctx context.Context, path string, imageSpecs ImageSpecs) error
}
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index 00a04f56..e9caf609 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -1,6 +1,6 @@
name: k9s
base: core20
-version: 'v0.31.4'
+version: 'v0.31.5'
summary: K9s is a CLI to view and manage your Kubernetes clusters.
description: |
K9s is a CLI to view and manage your Kubernetes clusters. By leveraging a terminal UI, you can easily traverse Kubernetes resources and view the state of your clusters in a single powerful session.