diff --git a/CHANGELOG.md b/CHANGELOG.md index afb8323..14d1f9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,13 +6,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [Unreleased] +## [0.9.1] - 2026-10-31 + +### Added + +- The cluster catalog can collapse to a narrow rail labeled Connections, the same way the details pane and overview chat collapse. Opening it restores the previous width. The choice is saved with the layout. + ### Changed - The Linux Flatpak no longer ships kubelogin. Download CLI installs kubelogin into the app the same way as gcloud, az, aws, oci, doctl, and ibmcloud. +- Overview charts show node usage from metrics-server first. The full pod list and the issues lists refresh less often when the app stays open. +- AppStream screenshots stay on tag `v0.8.6`, where those images are stored. The `0.9.1` release entry points at this version's changelog. ### Fixed - The Cloud window no longer says the Flatpak bundle includes doctl and kubelogin. Download CLI installs both. +- While a resource watch is live, the app no longer lists every pod and ReplicaSet every five seconds for overview metrics. ## [0.9.0] - 2026-10-21 diff --git a/README.md b/README.md index c4a309f..1dc50e7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ![Branch Coverage](https://img.shields.io/badge/Branch%20Coverage-61.2%25-green) ![Method Coverage](https://img.shields.io/badge/Method%20Coverage-79.7%25-green) ![.NET](https://img.shields.io/badge/.NET-10-512BD4) -![License](https://img.shields.io/badge/License-Apache%202.0-blue) +[![License](https://img.shields.io/badge/License-Apache%202.0-blue)](LICENSE.md) ![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-0078D6) **MaksIT Cluster Console** is a native desktop app for a Kubernetes cluster you already run. Browse the API, apply YAML, follow logs, open a shell, and port-forward to localhost. diff --git a/WHATSNEW.md b/WHATSNEW.md index c84cd4c..f522e81 100644 --- a/WHATSNEW.md +++ b/WHATSNEW.md @@ -2,6 +2,12 @@ Short notes shown in the app after an upgrade. The full history, including maintainer notes, is [CHANGELOG.md](CHANGELOG.md). +## [0.9.1] - 2026-10-31 + +- The cluster catalog can collapse to a Connections rail, the same way the details pane collapses. The choice is kept. +- Overview charts show usage sooner. Leaving a watched table open no longer lists every pod every few seconds. +- The Linux Flatpak no longer ships kubelogin. Download CLI installs it into the app with the other cloud CLIs. + ## [0.9.0] - 2026-10-21 - S3 Browser, under Longhorn, opens the default backup target and any other S3 targets. It lists every bucket those credentials can see, and opens, uploads, downloads, and edits objects. diff --git a/assets/screenshots/apiservices-events.png b/assets/screenshots/apiservices-events.png index ad2655a..d797888 100644 Binary files a/assets/screenshots/apiservices-events.png and b/assets/screenshots/apiservices-events.png differ diff --git a/assets/screenshots/apiservices-yaml.png b/assets/screenshots/apiservices-yaml.png index a45e5c2..feaadfe 100644 Binary files a/assets/screenshots/apiservices-yaml.png and b/assets/screenshots/apiservices-yaml.png differ diff --git a/assets/screenshots/apiservices.png b/assets/screenshots/apiservices.png index 45406bd..303adda 100644 Binary files a/assets/screenshots/apiservices.png and b/assets/screenshots/apiservices.png differ diff --git a/assets/screenshots/applications-events.png b/assets/screenshots/applications-events.png index 05f692f..f5a7109 100644 Binary files a/assets/screenshots/applications-events.png and b/assets/screenshots/applications-events.png differ diff --git a/assets/screenshots/applications-logs.png b/assets/screenshots/applications-logs.png index 0d34949..8a0b7cb 100644 Binary files a/assets/screenshots/applications-logs.png and b/assets/screenshots/applications-logs.png differ diff --git a/assets/screenshots/applications-pods.png b/assets/screenshots/applications-pods.png index bffef10..2445677 100644 Binary files a/assets/screenshots/applications-pods.png and b/assets/screenshots/applications-pods.png differ diff --git a/assets/screenshots/applications-terminal.png b/assets/screenshots/applications-terminal.png index f1a91e4..822f201 100644 Binary files a/assets/screenshots/applications-terminal.png and b/assets/screenshots/applications-terminal.png differ diff --git a/assets/screenshots/applications-yaml.png b/assets/screenshots/applications-yaml.png index 837104b..3c75cd6 100644 Binary files a/assets/screenshots/applications-yaml.png and b/assets/screenshots/applications-yaml.png differ diff --git a/assets/screenshots/applications.png b/assets/screenshots/applications.png index 492c542..d1f0db6 100644 Binary files a/assets/screenshots/applications.png and b/assets/screenshots/applications.png differ diff --git a/assets/screenshots/catalog.png b/assets/screenshots/catalog.png index f205c4a..ec8cad2 100644 Binary files a/assets/screenshots/catalog.png and b/assets/screenshots/catalog.png differ diff --git a/assets/screenshots/cloud.png b/assets/screenshots/cloud.png new file mode 100644 index 0000000..309e7dd Binary files /dev/null and b/assets/screenshots/cloud.png differ diff --git a/assets/screenshots/clusterrolebindings-events.png b/assets/screenshots/clusterrolebindings-events.png index ff0a50c..f3433e8 100644 Binary files a/assets/screenshots/clusterrolebindings-events.png and b/assets/screenshots/clusterrolebindings-events.png differ diff --git a/assets/screenshots/clusterrolebindings-yaml.png b/assets/screenshots/clusterrolebindings-yaml.png index 4b03536..775a159 100644 Binary files a/assets/screenshots/clusterrolebindings-yaml.png and b/assets/screenshots/clusterrolebindings-yaml.png differ diff --git a/assets/screenshots/clusterrolebindings.png b/assets/screenshots/clusterrolebindings.png index 9c5a0ee..cc77230 100644 Binary files a/assets/screenshots/clusterrolebindings.png and b/assets/screenshots/clusterrolebindings.png differ diff --git a/assets/screenshots/clusterroles-events.png b/assets/screenshots/clusterroles-events.png index 6c56451..8f5f0d2 100644 Binary files a/assets/screenshots/clusterroles-events.png and b/assets/screenshots/clusterroles-events.png differ diff --git a/assets/screenshots/clusterroles-yaml.png b/assets/screenshots/clusterroles-yaml.png index 54f21ed..a19636d 100644 Binary files a/assets/screenshots/clusterroles-yaml.png and b/assets/screenshots/clusterroles-yaml.png differ diff --git a/assets/screenshots/clusterroles.png b/assets/screenshots/clusterroles.png index bf3ed29..1b91410 100644 Binary files a/assets/screenshots/clusterroles.png and b/assets/screenshots/clusterroles.png differ diff --git a/assets/screenshots/cnpg-clusters-events.png b/assets/screenshots/cnpg-clusters-events.png index 670e04f..6285522 100644 Binary files a/assets/screenshots/cnpg-clusters-events.png and b/assets/screenshots/cnpg-clusters-events.png differ diff --git a/assets/screenshots/cnpg-clusters-yaml.png b/assets/screenshots/cnpg-clusters-yaml.png index f27e6e9..9b43b00 100644 Binary files a/assets/screenshots/cnpg-clusters-yaml.png and b/assets/screenshots/cnpg-clusters-yaml.png differ diff --git a/assets/screenshots/cnpg-clusters.png b/assets/screenshots/cnpg-clusters.png index e8e0066..1abef5a 100644 Binary files a/assets/screenshots/cnpg-clusters.png and b/assets/screenshots/cnpg-clusters.png differ diff --git a/assets/screenshots/components-events.png b/assets/screenshots/components-events.png index b4099b3..713a727 100644 Binary files a/assets/screenshots/components-events.png and b/assets/screenshots/components-events.png differ diff --git a/assets/screenshots/components-yaml.png b/assets/screenshots/components-yaml.png index 453daed..a039717 100644 Binary files a/assets/screenshots/components-yaml.png and b/assets/screenshots/components-yaml.png differ diff --git a/assets/screenshots/components.png b/assets/screenshots/components.png index 73e951f..cd6fc51 100644 Binary files a/assets/screenshots/components.png and b/assets/screenshots/components.png differ diff --git a/assets/screenshots/configmaps-data.png b/assets/screenshots/configmaps-data.png index 665296a..6e1fff7 100644 Binary files a/assets/screenshots/configmaps-data.png and b/assets/screenshots/configmaps-data.png differ diff --git a/assets/screenshots/configmaps-events.png b/assets/screenshots/configmaps-events.png index b5dcaec..378db09 100644 Binary files a/assets/screenshots/configmaps-events.png and b/assets/screenshots/configmaps-events.png differ diff --git a/assets/screenshots/configmaps-yaml.png b/assets/screenshots/configmaps-yaml.png index f5437d9..c2f6cd9 100644 Binary files a/assets/screenshots/configmaps-yaml.png and b/assets/screenshots/configmaps-yaml.png differ diff --git a/assets/screenshots/configmaps.png b/assets/screenshots/configmaps.png index 4119c37..0f1e990 100644 Binary files a/assets/screenshots/configmaps.png and b/assets/screenshots/configmaps.png differ diff --git a/assets/screenshots/configurations-events.png b/assets/screenshots/configurations-events.png index 6633cfe..84f3473 100644 Binary files a/assets/screenshots/configurations-events.png and b/assets/screenshots/configurations-events.png differ diff --git a/assets/screenshots/configurations-yaml.png b/assets/screenshots/configurations-yaml.png index eb90add..70bef00 100644 Binary files a/assets/screenshots/configurations-yaml.png and b/assets/screenshots/configurations-yaml.png differ diff --git a/assets/screenshots/configurations.png b/assets/screenshots/configurations.png index 06b8dbf..29e7829 100644 Binary files a/assets/screenshots/configurations.png and b/assets/screenshots/configurations.png differ diff --git a/assets/screenshots/connections.png b/assets/screenshots/connections.png index 7248947..c59353f 100644 Binary files a/assets/screenshots/connections.png and b/assets/screenshots/connections.png differ diff --git a/assets/screenshots/controllerrevisions-events.png b/assets/screenshots/controllerrevisions-events.png index 489ab3d..8f6d529 100644 Binary files a/assets/screenshots/controllerrevisions-events.png and b/assets/screenshots/controllerrevisions-events.png differ diff --git a/assets/screenshots/controllerrevisions-yaml.png b/assets/screenshots/controllerrevisions-yaml.png index 5b41642..3717791 100644 Binary files a/assets/screenshots/controllerrevisions-yaml.png and b/assets/screenshots/controllerrevisions-yaml.png differ diff --git a/assets/screenshots/controllerrevisions.png b/assets/screenshots/controllerrevisions.png index ed7a360..58806d4 100644 Binary files a/assets/screenshots/controllerrevisions.png and b/assets/screenshots/controllerrevisions.png differ diff --git a/assets/screenshots/csinodes-events.png b/assets/screenshots/csinodes-events.png index 643fd04..c3a4291 100644 Binary files a/assets/screenshots/csinodes-events.png and b/assets/screenshots/csinodes-events.png differ diff --git a/assets/screenshots/csinodes-yaml.png b/assets/screenshots/csinodes-yaml.png index 60eebdf..f235c62 100644 Binary files a/assets/screenshots/csinodes-yaml.png and b/assets/screenshots/csinodes-yaml.png differ diff --git a/assets/screenshots/csinodes.png b/assets/screenshots/csinodes.png index a2bf9a9..4d43b30 100644 Binary files a/assets/screenshots/csinodes.png and b/assets/screenshots/csinodes.png differ diff --git a/assets/screenshots/customresourcedefinitions-events.png b/assets/screenshots/customresourcedefinitions-events.png index bb4840c..cead158 100644 Binary files a/assets/screenshots/customresourcedefinitions-events.png and b/assets/screenshots/customresourcedefinitions-events.png differ diff --git a/assets/screenshots/customresourcedefinitions-yaml.png b/assets/screenshots/customresourcedefinitions-yaml.png index 1550b9a..20ff027 100644 Binary files a/assets/screenshots/customresourcedefinitions-yaml.png and b/assets/screenshots/customresourcedefinitions-yaml.png differ diff --git a/assets/screenshots/customresourcedefinitions.png b/assets/screenshots/customresourcedefinitions.png index 42df40d..506ad37 100644 Binary files a/assets/screenshots/customresourcedefinitions.png and b/assets/screenshots/customresourcedefinitions.png differ diff --git a/assets/screenshots/daemonsets-events.png b/assets/screenshots/daemonsets-events.png index 9a8e812..acec1ed 100644 Binary files a/assets/screenshots/daemonsets-events.png and b/assets/screenshots/daemonsets-events.png differ diff --git a/assets/screenshots/daemonsets-logs.png b/assets/screenshots/daemonsets-logs.png index 071be21..21a901c 100644 Binary files a/assets/screenshots/daemonsets-logs.png and b/assets/screenshots/daemonsets-logs.png differ diff --git a/assets/screenshots/daemonsets-pods.png b/assets/screenshots/daemonsets-pods.png index 24254ef..e701b22 100644 Binary files a/assets/screenshots/daemonsets-pods.png and b/assets/screenshots/daemonsets-pods.png differ diff --git a/assets/screenshots/daemonsets-terminal.png b/assets/screenshots/daemonsets-terminal.png index fefb871..6e6653b 100644 Binary files a/assets/screenshots/daemonsets-terminal.png and b/assets/screenshots/daemonsets-terminal.png differ diff --git a/assets/screenshots/daemonsets-yaml.png b/assets/screenshots/daemonsets-yaml.png index 0bf5d24..9df5481 100644 Binary files a/assets/screenshots/daemonsets-yaml.png and b/assets/screenshots/daemonsets-yaml.png differ diff --git a/assets/screenshots/daemonsets.png b/assets/screenshots/daemonsets.png index c191abd..27a15ab 100644 Binary files a/assets/screenshots/daemonsets.png and b/assets/screenshots/daemonsets.png differ diff --git a/assets/screenshots/dapr-control-plane-events.png b/assets/screenshots/dapr-control-plane-events.png index 9e7490e..519d86f 100644 Binary files a/assets/screenshots/dapr-control-plane-events.png and b/assets/screenshots/dapr-control-plane-events.png differ diff --git a/assets/screenshots/dapr-control-plane-logs.png b/assets/screenshots/dapr-control-plane-logs.png index 8c157c7..666c475 100644 Binary files a/assets/screenshots/dapr-control-plane-logs.png and b/assets/screenshots/dapr-control-plane-logs.png differ diff --git a/assets/screenshots/dapr-control-plane-terminal.png b/assets/screenshots/dapr-control-plane-terminal.png index 286d2bc..6e4e31d 100644 Binary files a/assets/screenshots/dapr-control-plane-terminal.png and b/assets/screenshots/dapr-control-plane-terminal.png differ diff --git a/assets/screenshots/dapr-control-plane-yaml.png b/assets/screenshots/dapr-control-plane-yaml.png index 459ad60..59fd490 100644 Binary files a/assets/screenshots/dapr-control-plane-yaml.png and b/assets/screenshots/dapr-control-plane-yaml.png differ diff --git a/assets/screenshots/dapr-control-plane.png b/assets/screenshots/dapr-control-plane.png index 6f92ca7..732a20c 100644 Binary files a/assets/screenshots/dapr-control-plane.png and b/assets/screenshots/dapr-control-plane.png differ diff --git a/assets/screenshots/dapr-sidecars-events.png b/assets/screenshots/dapr-sidecars-events.png index 4bec707..f93a47f 100644 Binary files a/assets/screenshots/dapr-sidecars-events.png and b/assets/screenshots/dapr-sidecars-events.png differ diff --git a/assets/screenshots/dapr-sidecars-logs.png b/assets/screenshots/dapr-sidecars-logs.png index 30e4db0..5f5a259 100644 Binary files a/assets/screenshots/dapr-sidecars-logs.png and b/assets/screenshots/dapr-sidecars-logs.png differ diff --git a/assets/screenshots/dapr-sidecars-terminal.png b/assets/screenshots/dapr-sidecars-terminal.png index 516143b..d490692 100644 Binary files a/assets/screenshots/dapr-sidecars-terminal.png and b/assets/screenshots/dapr-sidecars-terminal.png differ diff --git a/assets/screenshots/dapr-sidecars-yaml.png b/assets/screenshots/dapr-sidecars-yaml.png index 57a9d16..9358f09 100644 Binary files a/assets/screenshots/dapr-sidecars-yaml.png and b/assets/screenshots/dapr-sidecars-yaml.png differ diff --git a/assets/screenshots/dapr-sidecars.png b/assets/screenshots/dapr-sidecars.png index 0024256..fb7a445 100644 Binary files a/assets/screenshots/dapr-sidecars.png and b/assets/screenshots/dapr-sidecars.png differ diff --git a/assets/screenshots/deployments-events.png b/assets/screenshots/deployments-events.png index cef3134..1f95c97 100644 Binary files a/assets/screenshots/deployments-events.png and b/assets/screenshots/deployments-events.png differ diff --git a/assets/screenshots/deployments-logs.png b/assets/screenshots/deployments-logs.png index f437b5d..ed36728 100644 Binary files a/assets/screenshots/deployments-logs.png and b/assets/screenshots/deployments-logs.png differ diff --git a/assets/screenshots/deployments-pods.png b/assets/screenshots/deployments-pods.png index a76a3fc..d3153aa 100644 Binary files a/assets/screenshots/deployments-pods.png and b/assets/screenshots/deployments-pods.png differ diff --git a/assets/screenshots/deployments-terminal.png b/assets/screenshots/deployments-terminal.png index 1f3a742..4eba11d 100644 Binary files a/assets/screenshots/deployments-terminal.png and b/assets/screenshots/deployments-terminal.png differ diff --git a/assets/screenshots/deployments-yaml.png b/assets/screenshots/deployments-yaml.png index d01c700..dd2cb7f 100644 Binary files a/assets/screenshots/deployments-yaml.png and b/assets/screenshots/deployments-yaml.png differ diff --git a/assets/screenshots/deployments.png b/assets/screenshots/deployments.png index 1e8afe2..d476ccc 100644 Binary files a/assets/screenshots/deployments.png and b/assets/screenshots/deployments.png differ diff --git a/assets/screenshots/endpoints-events.png b/assets/screenshots/endpoints-events.png index 7e2412e..f34b2ba 100644 Binary files a/assets/screenshots/endpoints-events.png and b/assets/screenshots/endpoints-events.png differ diff --git a/assets/screenshots/endpoints-yaml.png b/assets/screenshots/endpoints-yaml.png index dda5e02..1067adf 100644 Binary files a/assets/screenshots/endpoints-yaml.png and b/assets/screenshots/endpoints-yaml.png differ diff --git a/assets/screenshots/endpoints.png b/assets/screenshots/endpoints.png index 0ee9827..c61548a 100644 Binary files a/assets/screenshots/endpoints.png and b/assets/screenshots/endpoints.png differ diff --git a/assets/screenshots/endpointslices-events.png b/assets/screenshots/endpointslices-events.png index 5b8124a..0941b3a 100644 Binary files a/assets/screenshots/endpointslices-events.png and b/assets/screenshots/endpointslices-events.png differ diff --git a/assets/screenshots/endpointslices-yaml.png b/assets/screenshots/endpointslices-yaml.png index 1111a87..46aaf59 100644 Binary files a/assets/screenshots/endpointslices-yaml.png and b/assets/screenshots/endpointslices-yaml.png differ diff --git a/assets/screenshots/endpointslices.png b/assets/screenshots/endpointslices.png index 7482059..eb3bede 100644 Binary files a/assets/screenshots/endpointslices.png and b/assets/screenshots/endpointslices.png differ diff --git a/assets/screenshots/flowschemas-events.png b/assets/screenshots/flowschemas-events.png index d12226e..22b969f 100644 Binary files a/assets/screenshots/flowschemas-events.png and b/assets/screenshots/flowschemas-events.png differ diff --git a/assets/screenshots/flowschemas-yaml.png b/assets/screenshots/flowschemas-yaml.png index 37a15ba..dd4f074 100644 Binary files a/assets/screenshots/flowschemas-yaml.png and b/assets/screenshots/flowschemas-yaml.png differ diff --git a/assets/screenshots/flowschemas.png b/assets/screenshots/flowschemas.png index 3af2f7d..a2bf0d3 100644 Binary files a/assets/screenshots/flowschemas.png and b/assets/screenshots/flowschemas.png differ diff --git a/assets/screenshots/helm-charts-yaml.png b/assets/screenshots/helm-charts-yaml.png index ea7abd4..3a9443f 100644 Binary files a/assets/screenshots/helm-charts-yaml.png and b/assets/screenshots/helm-charts-yaml.png differ diff --git a/assets/screenshots/helm-charts.png b/assets/screenshots/helm-charts.png index a7d6b20..f95d9a9 100644 Binary files a/assets/screenshots/helm-charts.png and b/assets/screenshots/helm-charts.png differ diff --git a/assets/screenshots/helm-releases-history.png b/assets/screenshots/helm-releases-history.png index d5252f4..f4f8464 100644 Binary files a/assets/screenshots/helm-releases-history.png and b/assets/screenshots/helm-releases-history.png differ diff --git a/assets/screenshots/helm-releases-manifest.png b/assets/screenshots/helm-releases-manifest.png index 33247a9..199ec87 100644 Binary files a/assets/screenshots/helm-releases-manifest.png and b/assets/screenshots/helm-releases-manifest.png differ diff --git a/assets/screenshots/helm-releases-values.png b/assets/screenshots/helm-releases-values.png index d03ce4c..5fe3ad0 100644 Binary files a/assets/screenshots/helm-releases-values.png and b/assets/screenshots/helm-releases-values.png differ diff --git a/assets/screenshots/helm-releases-yaml.png b/assets/screenshots/helm-releases-yaml.png index bac504c..3792064 100644 Binary files a/assets/screenshots/helm-releases-yaml.png and b/assets/screenshots/helm-releases-yaml.png differ diff --git a/assets/screenshots/helm-releases.png b/assets/screenshots/helm-releases.png index 871434c..e1f40ac 100644 Binary files a/assets/screenshots/helm-releases.png and b/assets/screenshots/helm-releases.png differ diff --git a/assets/screenshots/ipaddresses-events.png b/assets/screenshots/ipaddresses-events.png index 1bb86be..91a6a26 100644 Binary files a/assets/screenshots/ipaddresses-events.png and b/assets/screenshots/ipaddresses-events.png differ diff --git a/assets/screenshots/ipaddresses-yaml.png b/assets/screenshots/ipaddresses-yaml.png index 22a82ac..1ddd0d0 100644 Binary files a/assets/screenshots/ipaddresses-yaml.png and b/assets/screenshots/ipaddresses-yaml.png differ diff --git a/assets/screenshots/ipaddresses.png b/assets/screenshots/ipaddresses.png index c4d244b..8b9023d 100644 Binary files a/assets/screenshots/ipaddresses.png and b/assets/screenshots/ipaddresses.png differ diff --git a/assets/screenshots/leases-events.png b/assets/screenshots/leases-events.png index b7bf404..d2be2bb 100644 Binary files a/assets/screenshots/leases-events.png and b/assets/screenshots/leases-events.png differ diff --git a/assets/screenshots/leases-yaml.png b/assets/screenshots/leases-yaml.png index 65d8650..04f16e5 100644 Binary files a/assets/screenshots/leases-yaml.png and b/assets/screenshots/leases-yaml.png differ diff --git a/assets/screenshots/leases.png b/assets/screenshots/leases.png index cfb6047..87edfed 100644 Binary files a/assets/screenshots/leases.png and b/assets/screenshots/leases.png differ diff --git a/assets/screenshots/manifest.json b/assets/screenshots/manifest.json index ea1a686..696af66 100644 --- a/assets/screenshots/manifest.json +++ b/assets/screenshots/manifest.json @@ -1,5 +1,5 @@ { - "Context": "staging", + "Context": "production", "Catalog": "catalog.png", "Shots": [ { @@ -10,6 +10,10 @@ "Id": "connections", "Window": "connections.png" }, + { + "Id": "cloud", + "Window": "cloud.png" + }, { "Id": "ai-settings", "Window": "ai-settings.png" @@ -18,6 +22,18 @@ "Id": "overview", "Window": "overview.png" }, + { + "Id": "apiservices", + "Window": "apiservices.png" + }, + { + "Id": "apiservices-yaml", + "Window": "apiservices-yaml.png" + }, + { + "Id": "apiservices-events", + "Window": "apiservices-events.png" + }, { "Id": "flowschemas", "Window": "flowschemas.png" @@ -31,16 +47,32 @@ "Window": "flowschemas-events.png" }, { - "Id": "resourceslices", - "Window": "resourceslices.png" + "Id": "prioritylevelconfigurations", + "Window": "prioritylevelconfigurations.png" }, { - "Id": "resourceslices-yaml", - "Window": "resourceslices-yaml.png" + "Id": "prioritylevelconfigurations-yaml", + "Window": "prioritylevelconfigurations-yaml.png" }, { - "Id": "resourceslices-events", - "Window": "resourceslices-events.png" + "Id": "prioritylevelconfigurations-events", + "Window": "prioritylevelconfigurations-events.png" + }, + { + "Id": "nodes", + "Window": "nodes.png" + }, + { + "Id": "nodes-yaml", + "Window": "nodes-yaml.png" + }, + { + "Id": "nodes-images", + "Window": "nodes-images.png" + }, + { + "Id": "nodes-events", + "Window": "nodes-events.png" }, { "Id": "applications", @@ -71,16 +103,16 @@ "Window": "workloads-overview.png" }, { - "Id": "cronjobs", - "Window": "cronjobs.png" + "Id": "controllerrevisions", + "Window": "controllerrevisions.png" }, { - "Id": "cronjobs-yaml", - "Window": "cronjobs-yaml.png" + "Id": "controllerrevisions-yaml", + "Window": "controllerrevisions-yaml.png" }, { - "Id": "cronjobs-events", - "Window": "cronjobs-events.png" + "Id": "controllerrevisions-events", + "Window": "controllerrevisions-events.png" }, { "Id": "daemonsets", @@ -130,30 +162,6 @@ "Id": "deployments-terminal", "Window": "deployments-terminal.png" }, - { - "Id": "jobs", - "Window": "jobs.png" - }, - { - "Id": "jobs-yaml", - "Window": "jobs-yaml.png" - }, - { - "Id": "jobs-events", - "Window": "jobs-events.png" - }, - { - "Id": "jobs-pods", - "Window": "jobs-pods.png" - }, - { - "Id": "jobs-logs", - "Window": "jobs-logs.png" - }, - { - "Id": "jobs-terminal", - "Window": "jobs-terminal.png" - }, { "Id": "pods", "Window": "pods.png" @@ -239,16 +247,16 @@ "Window": "configmaps-events.png" }, { - "Id": "limitranges", - "Window": "limitranges.png" + "Id": "leases", + "Window": "leases.png" }, { - "Id": "limitranges-yaml", - "Window": "limitranges-yaml.png" + "Id": "leases-yaml", + "Window": "leases-yaml.png" }, { - "Id": "limitranges-events", - "Window": "limitranges-events.png" + "Id": "leases-events", + "Window": "leases-events.png" }, { "Id": "mutatingwebhookconfigurations", @@ -299,16 +307,20 @@ "Window": "runtimeclasses-events.png" }, { - "Id": "storageversionmigrations", - "Window": "storageversionmigrations.png" + "Id": "secrets", + "Window": "secrets.png" }, { - "Id": "storageversionmigrations-yaml", - "Window": "storageversionmigrations-yaml.png" + "Id": "secrets-yaml", + "Window": "secrets-yaml.png" }, { - "Id": "storageversionmigrations-events", - "Window": "storageversionmigrations-events.png" + "Id": "secrets-data", + "Window": "secrets-data.png" + }, + { + "Id": "secrets-events", + "Window": "secrets-events.png" }, { "Id": "validatingwebhookconfigurations", @@ -394,18 +406,6 @@ "Id": "services-pods", "Window": "services-pods.png" }, - { - "Id": "csidrivers", - "Window": "csidrivers.png" - }, - { - "Id": "csidrivers-yaml", - "Window": "csidrivers-yaml.png" - }, - { - "Id": "csidrivers-events", - "Window": "csidrivers-events.png" - }, { "Id": "csinodes", "Window": "csinodes.png" @@ -458,46 +458,6 @@ "Id": "storageclasses-events", "Window": "storageclasses-events.png" }, - { - "Id": "volumeattachments", - "Window": "volumeattachments.png" - }, - { - "Id": "volumeattachments-yaml", - "Window": "volumeattachments-yaml.png" - }, - { - "Id": "volumeattachments-events", - "Window": "volumeattachments-events.png" - }, - { - "Id": "s3-browser", - "Window": "s3-browser.png" - }, - { - "Id": "longhorn-backup-jobs", - "Window": "longhorn-backup-jobs.png" - }, - { - "Id": "longhorn-backup-jobs-yaml", - "Window": "longhorn-backup-jobs-yaml.png" - }, - { - "Id": "longhorn-backup-jobs-events", - "Window": "longhorn-backup-jobs-events.png" - }, - { - "Id": "longhorn-volumes", - "Window": "longhorn-volumes.png" - }, - { - "Id": "longhorn-volumes-yaml", - "Window": "longhorn-volumes-yaml.png" - }, - { - "Id": "longhorn-volumes-events", - "Window": "longhorn-volumes-events.png" - }, { "Id": "namespaces", "Window": "namespaces.png" @@ -511,12 +471,12 @@ "Window": "namespaces-events.png" }, { - "Id": "events", - "Window": "events.png" + "Id": "helm-charts", + "Window": "helm-charts.png" }, { - "Id": "events-yaml", - "Window": "events-yaml.png" + "Id": "helm-charts-yaml", + "Window": "helm-charts-yaml.png" }, { "Id": "helm-releases", @@ -688,24 +648,20 @@ } ], "Skipped": [ - { - "Id": "apiservices", - "Reason": "No rows." - }, { "Id": "deviceclasses", "Reason": "No rows." }, { - "Id": "prioritylevelconfigurations", + "Id": "resourceslices", "Reason": "No rows." }, { - "Id": "nodes", + "Id": "cronjobs", "Reason": "No rows." }, { - "Id": "controllerrevisions", + "Id": "jobs", "Reason": "No rows." }, { @@ -725,7 +681,7 @@ "Reason": "No rows." }, { - "Id": "leases", + "Id": "limitranges", "Reason": "No rows." }, { @@ -745,7 +701,7 @@ "Reason": "No rows." }, { - "Id": "secrets", + "Id": "storageversionmigrations", "Reason": "No rows." }, { @@ -768,24 +724,24 @@ "Id": "networkpolicies", "Reason": "No rows." }, + { + "Id": "csidrivers", + "Reason": "No rows." + }, { "Id": "csistoragecapacities", "Reason": "No rows." }, + { + "Id": "volumeattachments", + "Reason": "No rows." + }, { "Id": "volumeattributesclasses", "Reason": "No rows." }, { - "Id": "longhorn-backups", - "Reason": "No rows." - }, - { - "Id": "longhorn-nodes", - "Reason": "No rows." - }, - { - "Id": "helm-charts", + "Id": "events", "Reason": "No rows." }, { diff --git a/assets/screenshots/mutatingwebhookconfigurations-events.png b/assets/screenshots/mutatingwebhookconfigurations-events.png index 1715126..19e2bc9 100644 Binary files a/assets/screenshots/mutatingwebhookconfigurations-events.png and b/assets/screenshots/mutatingwebhookconfigurations-events.png differ diff --git a/assets/screenshots/mutatingwebhookconfigurations-yaml.png b/assets/screenshots/mutatingwebhookconfigurations-yaml.png index ce8bf99..f4aca26 100644 Binary files a/assets/screenshots/mutatingwebhookconfigurations-yaml.png and b/assets/screenshots/mutatingwebhookconfigurations-yaml.png differ diff --git a/assets/screenshots/mutatingwebhookconfigurations.png b/assets/screenshots/mutatingwebhookconfigurations.png index cd66934..e4e8375 100644 Binary files a/assets/screenshots/mutatingwebhookconfigurations.png and b/assets/screenshots/mutatingwebhookconfigurations.png differ diff --git a/assets/screenshots/namespaces-events.png b/assets/screenshots/namespaces-events.png index 242abf6..0646294 100644 Binary files a/assets/screenshots/namespaces-events.png and b/assets/screenshots/namespaces-events.png differ diff --git a/assets/screenshots/namespaces-yaml.png b/assets/screenshots/namespaces-yaml.png index b255d78..dbb512a 100644 Binary files a/assets/screenshots/namespaces-yaml.png and b/assets/screenshots/namespaces-yaml.png differ diff --git a/assets/screenshots/namespaces.png b/assets/screenshots/namespaces.png index b8cf97c..facac43 100644 Binary files a/assets/screenshots/namespaces.png and b/assets/screenshots/namespaces.png differ diff --git a/assets/screenshots/nodes-events.png b/assets/screenshots/nodes-events.png index 6862ec3..4290ba0 100644 Binary files a/assets/screenshots/nodes-events.png and b/assets/screenshots/nodes-events.png differ diff --git a/assets/screenshots/nodes-images.png b/assets/screenshots/nodes-images.png index d2a7870..f6857f4 100644 Binary files a/assets/screenshots/nodes-images.png and b/assets/screenshots/nodes-images.png differ diff --git a/assets/screenshots/nodes-yaml.png b/assets/screenshots/nodes-yaml.png index 297f248..4beaf85 100644 Binary files a/assets/screenshots/nodes-yaml.png and b/assets/screenshots/nodes-yaml.png differ diff --git a/assets/screenshots/nodes.png b/assets/screenshots/nodes.png index 0fc60d8..591db22 100644 Binary files a/assets/screenshots/nodes.png and b/assets/screenshots/nodes.png differ diff --git a/assets/screenshots/overview.png b/assets/screenshots/overview.png index 1319b09..132829a 100644 Binary files a/assets/screenshots/overview.png and b/assets/screenshots/overview.png differ diff --git a/assets/screenshots/persistentvolumeclaims-events.png b/assets/screenshots/persistentvolumeclaims-events.png index 7e47be4..c00398b 100644 Binary files a/assets/screenshots/persistentvolumeclaims-events.png and b/assets/screenshots/persistentvolumeclaims-events.png differ diff --git a/assets/screenshots/persistentvolumeclaims-yaml.png b/assets/screenshots/persistentvolumeclaims-yaml.png index d2b2329..036bc95 100644 Binary files a/assets/screenshots/persistentvolumeclaims-yaml.png and b/assets/screenshots/persistentvolumeclaims-yaml.png differ diff --git a/assets/screenshots/persistentvolumeclaims.png b/assets/screenshots/persistentvolumeclaims.png index 7ebdb48..fbf85b4 100644 Binary files a/assets/screenshots/persistentvolumeclaims.png and b/assets/screenshots/persistentvolumeclaims.png differ diff --git a/assets/screenshots/persistentvolumes-events.png b/assets/screenshots/persistentvolumes-events.png index e659237..384f589 100644 Binary files a/assets/screenshots/persistentvolumes-events.png and b/assets/screenshots/persistentvolumes-events.png differ diff --git a/assets/screenshots/persistentvolumes-yaml.png b/assets/screenshots/persistentvolumes-yaml.png index 0f3e33b..71f3782 100644 Binary files a/assets/screenshots/persistentvolumes-yaml.png and b/assets/screenshots/persistentvolumes-yaml.png differ diff --git a/assets/screenshots/persistentvolumes.png b/assets/screenshots/persistentvolumes.png index 25bbeb4..8934c7a 100644 Binary files a/assets/screenshots/persistentvolumes.png and b/assets/screenshots/persistentvolumes.png differ diff --git a/assets/screenshots/poddisruptionbudgets-events.png b/assets/screenshots/poddisruptionbudgets-events.png index 78e33c8..7eb1051 100644 Binary files a/assets/screenshots/poddisruptionbudgets-events.png and b/assets/screenshots/poddisruptionbudgets-events.png differ diff --git a/assets/screenshots/poddisruptionbudgets-yaml.png b/assets/screenshots/poddisruptionbudgets-yaml.png index 944545c..f0a9dcb 100644 Binary files a/assets/screenshots/poddisruptionbudgets-yaml.png and b/assets/screenshots/poddisruptionbudgets-yaml.png differ diff --git a/assets/screenshots/poddisruptionbudgets.png b/assets/screenshots/poddisruptionbudgets.png index 743e1d4..62fd8b7 100644 Binary files a/assets/screenshots/poddisruptionbudgets.png and b/assets/screenshots/poddisruptionbudgets.png differ diff --git a/assets/screenshots/pods-events.png b/assets/screenshots/pods-events.png index c940781..8353f42 100644 Binary files a/assets/screenshots/pods-events.png and b/assets/screenshots/pods-events.png differ diff --git a/assets/screenshots/pods-logs.png b/assets/screenshots/pods-logs.png index d969e7a..802317f 100644 Binary files a/assets/screenshots/pods-logs.png and b/assets/screenshots/pods-logs.png differ diff --git a/assets/screenshots/pods-terminal.png b/assets/screenshots/pods-terminal.png index 8038562..ce2f429 100644 Binary files a/assets/screenshots/pods-terminal.png and b/assets/screenshots/pods-terminal.png differ diff --git a/assets/screenshots/pods-yaml.png b/assets/screenshots/pods-yaml.png index d6b9f06..bc4c3e3 100644 Binary files a/assets/screenshots/pods-yaml.png and b/assets/screenshots/pods-yaml.png differ diff --git a/assets/screenshots/pods.png b/assets/screenshots/pods.png index f67a7c0..bf266cb 100644 Binary files a/assets/screenshots/pods.png and b/assets/screenshots/pods.png differ diff --git a/assets/screenshots/port-forwarding-yaml.png b/assets/screenshots/port-forwarding-yaml.png index 1127cd1..b81e738 100644 Binary files a/assets/screenshots/port-forwarding-yaml.png and b/assets/screenshots/port-forwarding-yaml.png differ diff --git a/assets/screenshots/port-forwarding.png b/assets/screenshots/port-forwarding.png index abf2be5..34d7201 100644 Binary files a/assets/screenshots/port-forwarding.png and b/assets/screenshots/port-forwarding.png differ diff --git a/assets/screenshots/priorityclasses-events.png b/assets/screenshots/priorityclasses-events.png index 4a96811..24f9c13 100644 Binary files a/assets/screenshots/priorityclasses-events.png and b/assets/screenshots/priorityclasses-events.png differ diff --git a/assets/screenshots/priorityclasses-yaml.png b/assets/screenshots/priorityclasses-yaml.png index dac11b1..166da18 100644 Binary files a/assets/screenshots/priorityclasses-yaml.png and b/assets/screenshots/priorityclasses-yaml.png differ diff --git a/assets/screenshots/priorityclasses.png b/assets/screenshots/priorityclasses.png index dd3cff6..71244b9 100644 Binary files a/assets/screenshots/priorityclasses.png and b/assets/screenshots/priorityclasses.png differ diff --git a/assets/screenshots/prioritylevelconfigurations-events.png b/assets/screenshots/prioritylevelconfigurations-events.png index 4afe3a0..e16930a 100644 Binary files a/assets/screenshots/prioritylevelconfigurations-events.png and b/assets/screenshots/prioritylevelconfigurations-events.png differ diff --git a/assets/screenshots/prioritylevelconfigurations-yaml.png b/assets/screenshots/prioritylevelconfigurations-yaml.png index be49390..2071b24 100644 Binary files a/assets/screenshots/prioritylevelconfigurations-yaml.png and b/assets/screenshots/prioritylevelconfigurations-yaml.png differ diff --git a/assets/screenshots/prioritylevelconfigurations.png b/assets/screenshots/prioritylevelconfigurations.png index afbf2eb..2880768 100644 Binary files a/assets/screenshots/prioritylevelconfigurations.png and b/assets/screenshots/prioritylevelconfigurations.png differ diff --git a/assets/screenshots/replicasets-events.png b/assets/screenshots/replicasets-events.png index e701203..6cb2a52 100644 Binary files a/assets/screenshots/replicasets-events.png and b/assets/screenshots/replicasets-events.png differ diff --git a/assets/screenshots/replicasets-logs.png b/assets/screenshots/replicasets-logs.png index b1c269a..648419d 100644 Binary files a/assets/screenshots/replicasets-logs.png and b/assets/screenshots/replicasets-logs.png differ diff --git a/assets/screenshots/replicasets-pods.png b/assets/screenshots/replicasets-pods.png index 9902430..95c6526 100644 Binary files a/assets/screenshots/replicasets-pods.png and b/assets/screenshots/replicasets-pods.png differ diff --git a/assets/screenshots/replicasets-terminal.png b/assets/screenshots/replicasets-terminal.png index aac2c6c..d993ea3 100644 Binary files a/assets/screenshots/replicasets-terminal.png and b/assets/screenshots/replicasets-terminal.png differ diff --git a/assets/screenshots/replicasets-yaml.png b/assets/screenshots/replicasets-yaml.png index dd8e85c..b6033e4 100644 Binary files a/assets/screenshots/replicasets-yaml.png and b/assets/screenshots/replicasets-yaml.png differ diff --git a/assets/screenshots/replicasets.png b/assets/screenshots/replicasets.png index 2c9bd7b..11fb87c 100644 Binary files a/assets/screenshots/replicasets.png and b/assets/screenshots/replicasets.png differ diff --git a/assets/screenshots/rolebindings-events.png b/assets/screenshots/rolebindings-events.png index 8cff5ad..1b53911 100644 Binary files a/assets/screenshots/rolebindings-events.png and b/assets/screenshots/rolebindings-events.png differ diff --git a/assets/screenshots/rolebindings-yaml.png b/assets/screenshots/rolebindings-yaml.png index c5d54c1..e02af37 100644 Binary files a/assets/screenshots/rolebindings-yaml.png and b/assets/screenshots/rolebindings-yaml.png differ diff --git a/assets/screenshots/rolebindings.png b/assets/screenshots/rolebindings.png index 4bd8c62..bfb3ee3 100644 Binary files a/assets/screenshots/rolebindings.png and b/assets/screenshots/rolebindings.png differ diff --git a/assets/screenshots/roles-events.png b/assets/screenshots/roles-events.png index f605a7b..08f4a42 100644 Binary files a/assets/screenshots/roles-events.png and b/assets/screenshots/roles-events.png differ diff --git a/assets/screenshots/roles-yaml.png b/assets/screenshots/roles-yaml.png index 0d42cca..87f064d 100644 Binary files a/assets/screenshots/roles-yaml.png and b/assets/screenshots/roles-yaml.png differ diff --git a/assets/screenshots/roles.png b/assets/screenshots/roles.png index 258d9ce..f7b92a9 100644 Binary files a/assets/screenshots/roles.png and b/assets/screenshots/roles.png differ diff --git a/assets/screenshots/runtimeclasses-events.png b/assets/screenshots/runtimeclasses-events.png index 471a88e..13b9aab 100644 Binary files a/assets/screenshots/runtimeclasses-events.png and b/assets/screenshots/runtimeclasses-events.png differ diff --git a/assets/screenshots/runtimeclasses-yaml.png b/assets/screenshots/runtimeclasses-yaml.png index 83b632a..a06ffec 100644 Binary files a/assets/screenshots/runtimeclasses-yaml.png and b/assets/screenshots/runtimeclasses-yaml.png differ diff --git a/assets/screenshots/runtimeclasses.png b/assets/screenshots/runtimeclasses.png index adbf7e9..aa742e5 100644 Binary files a/assets/screenshots/runtimeclasses.png and b/assets/screenshots/runtimeclasses.png differ diff --git a/assets/screenshots/secrets-data.png b/assets/screenshots/secrets-data.png index 1dfa00b..cba3794 100644 Binary files a/assets/screenshots/secrets-data.png and b/assets/screenshots/secrets-data.png differ diff --git a/assets/screenshots/secrets-events.png b/assets/screenshots/secrets-events.png index e25fb81..3f84d09 100644 Binary files a/assets/screenshots/secrets-events.png and b/assets/screenshots/secrets-events.png differ diff --git a/assets/screenshots/secrets-yaml.png b/assets/screenshots/secrets-yaml.png index 2749033..1f9b63e 100644 Binary files a/assets/screenshots/secrets-yaml.png and b/assets/screenshots/secrets-yaml.png differ diff --git a/assets/screenshots/secrets.png b/assets/screenshots/secrets.png index 2bcc61f..5c4233a 100644 Binary files a/assets/screenshots/secrets.png and b/assets/screenshots/secrets.png differ diff --git a/assets/screenshots/serviceaccounts-events.png b/assets/screenshots/serviceaccounts-events.png index 3f08bda..e10af5d 100644 Binary files a/assets/screenshots/serviceaccounts-events.png and b/assets/screenshots/serviceaccounts-events.png differ diff --git a/assets/screenshots/serviceaccounts-yaml.png b/assets/screenshots/serviceaccounts-yaml.png index 6ebba44..ca84469 100644 Binary files a/assets/screenshots/serviceaccounts-yaml.png and b/assets/screenshots/serviceaccounts-yaml.png differ diff --git a/assets/screenshots/serviceaccounts.png b/assets/screenshots/serviceaccounts.png index d4b792c..cca8f92 100644 Binary files a/assets/screenshots/serviceaccounts.png and b/assets/screenshots/serviceaccounts.png differ diff --git a/assets/screenshots/servicecidrs-events.png b/assets/screenshots/servicecidrs-events.png index e52c09f..1797548 100644 Binary files a/assets/screenshots/servicecidrs-events.png and b/assets/screenshots/servicecidrs-events.png differ diff --git a/assets/screenshots/servicecidrs-yaml.png b/assets/screenshots/servicecidrs-yaml.png index ce5c14b..a14ca37 100644 Binary files a/assets/screenshots/servicecidrs-yaml.png and b/assets/screenshots/servicecidrs-yaml.png differ diff --git a/assets/screenshots/servicecidrs.png b/assets/screenshots/servicecidrs.png index 4f54e71..7cad72c 100644 Binary files a/assets/screenshots/servicecidrs.png and b/assets/screenshots/servicecidrs.png differ diff --git a/assets/screenshots/services-events.png b/assets/screenshots/services-events.png index f544545..34b0278 100644 Binary files a/assets/screenshots/services-events.png and b/assets/screenshots/services-events.png differ diff --git a/assets/screenshots/services-pods.png b/assets/screenshots/services-pods.png index 51c06ad..65dc215 100644 Binary files a/assets/screenshots/services-pods.png and b/assets/screenshots/services-pods.png differ diff --git a/assets/screenshots/services-yaml.png b/assets/screenshots/services-yaml.png index 19922a4..e6b0b71 100644 Binary files a/assets/screenshots/services-yaml.png and b/assets/screenshots/services-yaml.png differ diff --git a/assets/screenshots/services.png b/assets/screenshots/services.png index f04de05..24df6ea 100644 Binary files a/assets/screenshots/services.png and b/assets/screenshots/services.png differ diff --git a/assets/screenshots/statefulsets-events.png b/assets/screenshots/statefulsets-events.png index bac333d..2cb2ab7 100644 Binary files a/assets/screenshots/statefulsets-events.png and b/assets/screenshots/statefulsets-events.png differ diff --git a/assets/screenshots/statefulsets-logs.png b/assets/screenshots/statefulsets-logs.png index 25070e8..5abe086 100644 Binary files a/assets/screenshots/statefulsets-logs.png and b/assets/screenshots/statefulsets-logs.png differ diff --git a/assets/screenshots/statefulsets-pods.png b/assets/screenshots/statefulsets-pods.png index c71caf7..5bd9753 100644 Binary files a/assets/screenshots/statefulsets-pods.png and b/assets/screenshots/statefulsets-pods.png differ diff --git a/assets/screenshots/statefulsets-terminal.png b/assets/screenshots/statefulsets-terminal.png index 7059687..0435453 100644 Binary files a/assets/screenshots/statefulsets-terminal.png and b/assets/screenshots/statefulsets-terminal.png differ diff --git a/assets/screenshots/statefulsets-yaml.png b/assets/screenshots/statefulsets-yaml.png index 6c58fa6..fcf41a2 100644 Binary files a/assets/screenshots/statefulsets-yaml.png and b/assets/screenshots/statefulsets-yaml.png differ diff --git a/assets/screenshots/statefulsets.png b/assets/screenshots/statefulsets.png index 7ca17d4..7f1f257 100644 Binary files a/assets/screenshots/statefulsets.png and b/assets/screenshots/statefulsets.png differ diff --git a/assets/screenshots/storageclasses-events.png b/assets/screenshots/storageclasses-events.png index 116f9e0..cad2bae 100644 Binary files a/assets/screenshots/storageclasses-events.png and b/assets/screenshots/storageclasses-events.png differ diff --git a/assets/screenshots/storageclasses-yaml.png b/assets/screenshots/storageclasses-yaml.png index ed74a81..1bafc8a 100644 Binary files a/assets/screenshots/storageclasses-yaml.png and b/assets/screenshots/storageclasses-yaml.png differ diff --git a/assets/screenshots/storageclasses.png b/assets/screenshots/storageclasses.png index b33f7ed..6bf5d5c 100644 Binary files a/assets/screenshots/storageclasses.png and b/assets/screenshots/storageclasses.png differ diff --git a/assets/screenshots/validatingwebhookconfigurations-events.png b/assets/screenshots/validatingwebhookconfigurations-events.png index 3f89dd3..bfa9894 100644 Binary files a/assets/screenshots/validatingwebhookconfigurations-events.png and b/assets/screenshots/validatingwebhookconfigurations-events.png differ diff --git a/assets/screenshots/validatingwebhookconfigurations-yaml.png b/assets/screenshots/validatingwebhookconfigurations-yaml.png index 4d5f749..572a179 100644 Binary files a/assets/screenshots/validatingwebhookconfigurations-yaml.png and b/assets/screenshots/validatingwebhookconfigurations-yaml.png differ diff --git a/assets/screenshots/validatingwebhookconfigurations.png b/assets/screenshots/validatingwebhookconfigurations.png index 091c7b1..6597468 100644 Binary files a/assets/screenshots/validatingwebhookconfigurations.png and b/assets/screenshots/validatingwebhookconfigurations.png differ diff --git a/assets/screenshots/volume-files.png b/assets/screenshots/volume-files.png index d4c0431..74eaa76 100644 Binary files a/assets/screenshots/volume-files.png and b/assets/screenshots/volume-files.png differ diff --git a/assets/screenshots/welcome.png b/assets/screenshots/welcome.png index debeda5..9904fdb 100644 Binary files a/assets/screenshots/welcome.png and b/assets/screenshots/welcome.png differ diff --git a/assets/screenshots/workloads-overview.png b/assets/screenshots/workloads-overview.png index 5531dda..43a9b4e 100644 Binary files a/assets/screenshots/workloads-overview.png and b/assets/screenshots/workloads-overview.png differ diff --git a/data/com.maks_it.clusterconsole.metainfo.xml b/data/com.maks_it.clusterconsole.metainfo.xml index bbf5eb1..6d26398 100644 --- a/data/com.maks_it.clusterconsole.metainfo.xml +++ b/data/com.maks_it.clusterconsole.metainfo.xml @@ -65,6 +65,12 @@ + + https://github.com/MAKS-IT-COM/maksit-cluster-console/blob/v0.9.1/CHANGELOG.md + +

Catalog can collapse to a Connections rail. Overview charts load sooner. Flatpak installs kubelogin with Download CLI.

+
+
https://github.com/MAKS-IT-COM/maksit-cluster-console/blob/v0.9.0/CHANGELOG.md diff --git a/docs/features.md b/docs/features.md index 49cc09c..5cc60cb 100644 --- a/docs/features.md +++ b/docs/features.md @@ -4,7 +4,7 @@ Screen notes for [MaksIT Cluster Console](../README.md). The README lists each a ## Cluster overview -Click a catalog row to open that context. A green dot is a live session in this app. The radio is labeled **kubectl context** and only writes kubectl `current-context` for the command line. This app does not follow that field. Until a row is open, the window stays on the catalog and asks you to select a cluster. Open clusters stay connected until you disconnect them. **Connections…** and **Reload kubeconfig** sit under the catalog. The status line counts contexts in the kubeconfig and how many are connected here. +Click a catalog row to open that context. A green dot is a live session in this app. The radio is labeled **kubectl context** and only writes kubectl `current-context` for the command line. This app does not follow that field. Until a row is open, the window stays on the catalog and asks you to select a cluster. Open clusters stay connected until you disconnect them. **Connections…** and **Reload kubeconfig** sit under the catalog. The catalog can collapse to a narrow rail labeled Connections; opening it restores the previous width. The choice is saved with the layout. The status line counts contexts in the kubeconfig and how many are connected here. ![Cluster catalog](../assets/screenshots/welcome.png) diff --git a/packaging/flathub/manifest.md b/packaging/flathub/manifest.md index 1fccb03..e96fac5 100644 --- a/packaging/flathub/manifest.md +++ b/packaging/flathub/manifest.md @@ -9,7 +9,7 @@ Values for `com.maks_it.clusterconsole.yml` (or `.json`) at the top of the Flath | Homepage | [https://maks-it.com/](https://maks-it.com/) | | Project | `src/MaksIT.ClusterConsole.UI/MaksIT.ClusterConsole.UI.csproj` | | Target | `net10.0` | -| Source | Release tag on `https://github.com/MAKS-IT-COM/maksit-cluster-console` (currently `v0.9.0`) | +| Source | Release tag on `https://github.com/MAKS-IT-COM/maksit-cluster-console` (currently `v0.9.1`) | | Runtime | `org.freedesktop.Platform` | | SDK | `org.freedesktop.Sdk` | | SDK extension | `org.freedesktop.Sdk.Extension.dotnet10` | diff --git a/packaging/flathub/sources.md b/packaging/flathub/sources.md index dbad11d..57ff8b3 100644 --- a/packaging/flathub/sources.md +++ b/packaging/flathub/sources.md @@ -9,7 +9,7 @@ Upstream files stay in this repository. The Flathub build installs them from the | [src/MaksIT.ClusterConsole.UI/Assets/icon.svg](../../src/MaksIT.ClusterConsole.UI/Assets/icon.svg) | Icon, installed as `share/icons/hicolor/scalable/apps/com.maks_it.clusterconsole.svg`. | | [LICENSE.md](../../LICENSE.md) | Apache-2.0. Install to `$FLATPAK_DEST/share/licenses/com.maks_it.clusterconsole/` because the filename is `LICENSE.md`. | -Screenshot URLs in the metainfo use tag `v0.8.6`, where those images are stored. The `0.9.0` release entry points at tag `v0.9.0`. On a newer release, point `` at the tag that contains the screenshots and `` at that version. +Screenshot URLs in the metainfo use tag `v0.8.6`, where those images are stored. The `0.9.1` release entry points at tag `v0.9.1`. On a newer release, point `` at the tag that contains the screenshots and `` at that version. ## Pull request diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 34cc1fd..7650115 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -3,7 +3,7 @@ latest enable enable - 0.9.0 + 0.9.1 Cluster Console Cluster Console MaksIT diff --git a/src/MaksIT.ClusterConsole.Client/Cluster/ClusterSession.cs b/src/MaksIT.ClusterConsole.Client/Cluster/ClusterSession.cs index b1839ce..da174d9 100644 --- a/src/MaksIT.ClusterConsole.Client/Cluster/ClusterSession.cs +++ b/src/MaksIT.ClusterConsole.Client/Cluster/ClusterSession.cs @@ -506,40 +506,72 @@ public sealed partial class ClusterSession : IClusterSession { } } - public async Task> GetClusterUsageAsync(CancellationToken cancellationToken = default) { + public async Task> GetClusterUsageAsync( + bool includeWorkloads = true, + CancellationToken cancellationToken = default) { try { - var version = await _client.Version.GetCodeAsync(cancellationToken).ConfigureAwait(false); - var nodes = await _client.CoreV1.ListNodeAsync(cancellationToken: cancellationToken).ConfigureAwait(false); - var pods = await _client.CoreV1.ListPodForAllNamespacesAsync(cancellationToken: cancellationToken).ConfigureAwait(false); - var replicaSets = await _client.AppsV1.ListReplicaSetForAllNamespacesAsync(cancellationToken: cancellationToken) - .ConfigureAwait(false); - var metrics = await GetNodeMetricsAsync(cancellationToken).ConfigureAwait(false); - var metricsAvailable = metrics.IsSuccess && metrics.Value is { Count: > 0 }; - var (cpu, memory, podSlice, nodeUsages) = ClusterMetrics.From( - nodes.Items, - pods.Items, - metricsAvailable ? metrics.Value : null); - var containerLimits = ContainerLimits.From(pods.Items, replicaSets.Items); + var versionTask = _client.Version.GetCodeAsync(cancellationToken); + var nodesTask = _client.CoreV1.ListNodeAsync(cancellationToken: cancellationToken); + var metricsTask = GetNodeMetricsAsync(cancellationToken); - return Result.Ok(new ClusterUsage( - version.GitVersion, - version.Platform, - nodes.Items.Count, - cpu, - memory, - podSlice, - nodeUsages, - containerLimits, - metricsAvailable, - metricsAvailable - ? null - : "No live usage from metrics-server (metrics.k8s.io). Usage bars stay empty until it is installed. Requests/limits come from pod specs.")); + if (includeWorkloads) { + var podsTask = _client.CoreV1.ListPodForAllNamespacesAsync(cancellationToken: cancellationToken); + var replicaSetsTask = _client.AppsV1.ListReplicaSetForAllNamespacesAsync(cancellationToken: cancellationToken); + await Task.WhenAll(versionTask, nodesTask, metricsTask, podsTask, replicaSetsTask).ConfigureAwait(false); + + return BuildUsage( + await versionTask.ConfigureAwait(false), + await nodesTask.ConfigureAwait(false), + await podsTask.ConfigureAwait(false), + await replicaSetsTask.ConfigureAwait(false), + await metricsTask.ConfigureAwait(false)); + } + + await Task.WhenAll(versionTask, nodesTask, metricsTask).ConfigureAwait(false); + + return BuildUsage( + await versionTask.ConfigureAwait(false), + await nodesTask.ConfigureAwait(false), + pods: null, + replicaSets: null, + await metricsTask.ConfigureAwait(false)); } catch (Exception ex) { return KubernetesResult.Map(ex); } } + private static Result BuildUsage( + VersionInfo version, + V1NodeList nodes, + V1PodList? pods, + V1ReplicaSetList? replicaSets, + Result> metrics) { + var metricsAvailable = metrics.IsSuccess && metrics.Value is { Count: > 0 }; + var podItems = pods?.Items ?? []; + var (cpu, memory, podSlice, nodeUsages) = ClusterMetrics.From( + nodes.Items, + podItems, + metricsAvailable ? metrics.Value : null); + var containerLimits = replicaSets is null + ? Array.Empty() + : ContainerLimits.From(podItems, replicaSets.Items); + + return Result.Ok(new ClusterUsage( + version.GitVersion, + version.Platform, + nodes.Items.Count, + cpu, + memory, + podSlice, + nodeUsages, + containerLimits, + metricsAvailable, + metricsAvailable + ? null + : "No live usage from metrics-server (metrics.k8s.io). Usage bars stay empty until it is installed. Requests/limits come from pod specs.")); + } + public async Task> GetClusterCpuAllocatableAsync(CancellationToken cancellationToken = default) { try { var nodes = await _client.CoreV1.ListNodeAsync(cancellationToken: cancellationToken).ConfigureAwait(false); diff --git a/src/MaksIT.ClusterConsole.Client/Cluster/IClusterSession.cs b/src/MaksIT.ClusterConsole.Client/Cluster/IClusterSession.cs index 1b1ece8..a24e52a 100644 --- a/src/MaksIT.ClusterConsole.Client/Cluster/IClusterSession.cs +++ b/src/MaksIT.ClusterConsole.Client/Cluster/IClusterSession.cs @@ -87,7 +87,9 @@ public interface IClusterSession : IDisposable { Task> GetSummaryAsync(CancellationToken cancellationToken = default); - Task> GetClusterUsageAsync(CancellationToken cancellationToken = default); + Task> GetClusterUsageAsync( + bool includeWorkloads = true, + CancellationToken cancellationToken = default); Task> GetClusterCpuAllocatableAsync(CancellationToken cancellationToken = default); diff --git a/src/MaksIT.ClusterConsole.Client/MaksIT.ClusterConsole.Client.csproj b/src/MaksIT.ClusterConsole.Client/MaksIT.ClusterConsole.Client.csproj index b3b0efb..bbe08d3 100644 --- a/src/MaksIT.ClusterConsole.Client/MaksIT.ClusterConsole.Client.csproj +++ b/src/MaksIT.ClusterConsole.Client/MaksIT.ClusterConsole.Client.csproj @@ -17,7 +17,7 @@ - + diff --git a/src/MaksIT.ClusterConsole.Shared/LayoutSettings.cs b/src/MaksIT.ClusterConsole.Shared/LayoutSettings.cs index afadae7..845d34b 100644 --- a/src/MaksIT.ClusterConsole.Shared/LayoutSettings.cs +++ b/src/MaksIT.ClusterConsole.Shared/LayoutSettings.cs @@ -49,6 +49,8 @@ public sealed class LayoutSettings { public double DetailsWidth { get; set; } = 380; + public bool CatalogCollapsed { get; set; } + public bool ShoulderCollapsed { get; set; } public double HelmHistoryHeight { get; set; } = 220; diff --git a/src/MaksIT.ClusterConsole.Shared/MaksIT.ClusterConsole.Shared.csproj b/src/MaksIT.ClusterConsole.Shared/MaksIT.ClusterConsole.Shared.csproj index 7486a69..e10d2a2 100644 --- a/src/MaksIT.ClusterConsole.Shared/MaksIT.ClusterConsole.Shared.csproj +++ b/src/MaksIT.ClusterConsole.Shared/MaksIT.ClusterConsole.Shared.csproj @@ -21,7 +21,7 @@ - + diff --git a/src/MaksIT.ClusterConsole.Tests/ClusterChatTests.cs b/src/MaksIT.ClusterConsole.Tests/ClusterChatTests.cs index c977b36..3bc78b6 100644 --- a/src/MaksIT.ClusterConsole.Tests/ClusterChatTests.cs +++ b/src/MaksIT.ClusterConsole.Tests/ClusterChatTests.cs @@ -418,7 +418,9 @@ public class ClusterChatTests { public Task> GetSummaryAsync(CancellationToken cancellationToken = default) => Unused>(); - public Task> GetClusterUsageAsync(CancellationToken cancellationToken = default) => + public Task> GetClusterUsageAsync( + bool includeWorkloads = true, + CancellationToken cancellationToken = default) => Unused>(); public Task> GetClusterCpuAllocatableAsync(CancellationToken cancellationToken = default) => diff --git a/src/MaksIT.ClusterConsole.Tests/ConfigurationFileServiceTests.cs b/src/MaksIT.ClusterConsole.Tests/ConfigurationFileServiceTests.cs index aab3a76..da75f2c 100644 --- a/src/MaksIT.ClusterConsole.Tests/ConfigurationFileServiceTests.cs +++ b/src/MaksIT.ClusterConsole.Tests/ConfigurationFileServiceTests.cs @@ -163,6 +163,7 @@ public class ConfigurationFileServiceTests { cfg.Layout.CatalogWidth = 260; cfg.Layout.NavigatorWidth = 200; cfg.Layout.DetailsWidth = 420; + cfg.Layout.CatalogCollapsed = true; cfg.Layout.ShoulderCollapsed = true; cfg.Layout.HelmHistoryHeight = 280; cfg.Layout.SetColumns("resources/pods", new Dictionary { @@ -181,6 +182,7 @@ public class ConfigurationFileServiceTests { Assert.Equal(260, reloaded.Current.Layout.CatalogWidth); Assert.Equal(200, reloaded.Current.Layout.NavigatorWidth); Assert.Equal(420, reloaded.Current.Layout.DetailsWidth); + Assert.True(reloaded.Current.Layout.CatalogCollapsed); Assert.True(reloaded.Current.Layout.ShoulderCollapsed); Assert.Equal(280, reloaded.Current.Layout.HelmHistoryHeight); var columns = reloaded.Current.Layout.ColumnsFor("resources/pods"); diff --git a/src/MaksIT.ClusterConsole.Tests/FakeClusterSession.cs b/src/MaksIT.ClusterConsole.Tests/FakeClusterSession.cs index 6b64723..af45833 100644 --- a/src/MaksIT.ClusterConsole.Tests/FakeClusterSession.cs +++ b/src/MaksIT.ClusterConsole.Tests/FakeClusterSession.cs @@ -251,7 +251,9 @@ internal sealed class FakeClusterSession : IClusterSession { public Task> GetSummaryAsync(CancellationToken cancellationToken = default) => Task.FromResult(Result.NotFound(null, "unused")); - public Task> GetClusterUsageAsync(CancellationToken cancellationToken = default) => + public Task> GetClusterUsageAsync( + bool includeWorkloads = true, + CancellationToken cancellationToken = default) => Task.FromResult(Result.NotFound(null, "unused")); public Task> GetClusterCpuAllocatableAsync(CancellationToken cancellationToken = default) { diff --git a/src/MaksIT.ClusterConsole.Tests/ReleaseNotesTests.cs b/src/MaksIT.ClusterConsole.Tests/ReleaseNotesTests.cs index 49964ad..440510b 100644 --- a/src/MaksIT.ClusterConsole.Tests/ReleaseNotesTests.cs +++ b/src/MaksIT.ClusterConsole.Tests/ReleaseNotesTests.cs @@ -74,24 +74,31 @@ public class ReleaseNotesTests { } [Fact] - public void Current_release_lists_0_9_0_notes() { - var notes = ReleaseNotes.AddedSince(ReleaseNotes.Text(), seenVersion: null, currentVersion: "0.9.0"); + public void Current_release_lists_0_9_1_notes() { + var notes = ReleaseNotes.AddedSince(ReleaseNotes.Text(), seenVersion: null, currentVersion: "0.9.1"); var note = Assert.Single(notes); - Assert.Equal("0.9.0", note.Version); - Assert.Contains(note.Added, line => line.Contains("S3 Browser", StringComparison.Ordinal)); - Assert.Contains(note.Added, line => line.Contains("Cloud adds", StringComparison.Ordinal)); - Assert.Contains(note.Added, line => line.Contains("settings.json", StringComparison.Ordinal)); - Assert.DoesNotContain(note.Added, line => line.Contains("Analyze issues", StringComparison.Ordinal)); + Assert.Equal("0.9.1", note.Version); + Assert.Contains(note.Added, line => line.Contains("Connections rail", StringComparison.Ordinal)); + Assert.Contains(note.Added, line => line.Contains("Overview charts show usage sooner", StringComparison.Ordinal)); + Assert.Contains(note.Added, line => line.Contains("kubelogin", StringComparison.Ordinal)); + Assert.DoesNotContain(note.Added, line => line.Contains("S3 Browser", StringComparison.Ordinal)); Assert.DoesNotContain(note.Added, line => line.Contains("AppStream", StringComparison.Ordinal)); } [Fact] - public void Upgrade_from_0_8_9_shows_only_0_9_0() { - var notes = ReleaseNotes.AddedSince(ReleaseNotes.Text(), seenVersion: "0.8.9", currentVersion: "0.9.0"); + public void Upgrade_from_0_9_0_shows_only_0_9_1() { + var notes = ReleaseNotes.AddedSince(ReleaseNotes.Text(), seenVersion: "0.9.0", currentVersion: "0.9.1"); var note = Assert.Single(notes); - Assert.Equal("0.9.0", note.Version); + Assert.Equal("0.9.1", note.Version); + } + + [Fact] + public void Upgrade_from_0_8_9_includes_0_9_0_and_0_9_1() { + var notes = ReleaseNotes.AddedSince(ReleaseNotes.Text(), seenVersion: "0.8.9", currentVersion: "0.9.1"); + + Assert.Equal(["0.9.1", "0.9.0"], notes.Select(note => note.Version)); } [Fact] diff --git a/src/MaksIT.ClusterConsole.UI/Services/LayoutOriginators.cs b/src/MaksIT.ClusterConsole.UI/Services/LayoutOriginators.cs index d368731..05f8ca4 100644 --- a/src/MaksIT.ClusterConsole.UI/Services/LayoutOriginators.cs +++ b/src/MaksIT.ClusterConsole.UI/Services/LayoutOriginators.cs @@ -131,7 +131,18 @@ internal sealed class GridBandOriginator : ILayoutOriginator { if (_grid is null) return; - var length = new GridLength(LayoutRange.Clamp(_read(layout), _min, _max, _fallback)); + var saved = LayoutRange.Clamp(_read(layout), _min, _max, _fallback); + + // Collapsed shoulder/catalog: keep the saved expanded width for reopen, do not + // push it onto the rail column (ShoulderPane owns that width). + if (_prefer is not null && !IsEffectivelyVisible(_prefer)) { + if (_column) + ShoulderPane.SeedExpandedWidth(_grid, saved); + + return; + } + + var length = new GridLength(saved); if (_column) { if (_index >= 0 && _index < _grid.ColumnDefinitions.Count) @@ -150,11 +161,19 @@ internal sealed class GridBandOriginator : ILayoutOriginator { } private double? Measure() { - if (_prefer is { IsVisible: true }) { - var extent = _column ? _prefer.Bounds.Width : _prefer.Bounds.Height; + // Prefer-controlled bands (catalog, details) must not fall through to the + // column definition while collapsed — that would persist the rail width. + if (_prefer is not null) { + if (!IsEffectivelyVisible(_prefer)) + return null; - if (extent > 0) - return extent; + // Bounds exclude Margin; add it back so a padded pane does not shrink the saved width. + var margin = _prefer.Margin; + var extent = _column + ? _prefer.Bounds.Width + margin.Left + margin.Right + : _prefer.Bounds.Height + margin.Top + margin.Bottom; + + return extent > 0 ? extent : null; } if (_grid is null) @@ -183,6 +202,15 @@ internal sealed class GridBandOriginator : ILayoutOriginator { return row.Height.IsAbsolute ? row.Height.Value : null; } + + private static bool IsEffectivelyVisible(Visual visual) { + for (Visual? node = visual; node is not null; node = node.GetVisualParent()) { + if (node is Control { IsVisible: false }) + return false; + } + + return true; + } } internal sealed class DataGridLayoutOriginator : ILayoutOriginator { diff --git a/src/MaksIT.ClusterConsole.UI/Services/ScreenshotTour.cs b/src/MaksIT.ClusterConsole.UI/Services/ScreenshotTour.cs index 752b1e2..bb3f73d 100644 --- a/src/MaksIT.ClusterConsole.UI/Services/ScreenshotTour.cs +++ b/src/MaksIT.ClusterConsole.UI/Services/ScreenshotTour.cs @@ -27,6 +27,7 @@ internal static class ScreenshotTour { try { Directory.CreateDirectory(options.Directory); + await EnsureCatalogExpandedAsync(model); var connected = false; foreach (var view in options.Views) { @@ -119,11 +120,15 @@ internal static class ScreenshotTour { manifest.Context = context; model.ActivePage?.PausePolling(); + await EnsureCatalogExpandedAsync(model); await SaveCatalogAsync(window, options, manifest); return true; } + private static async Task EnsureCatalogExpandedAsync(MainViewModel model) => + await Dispatcher.UIThread.InvokeAsync(() => { model.CatalogCollapsed = false; }); + private static async Task CaptureAllFeaturesAsync( Window window, MainViewModel model, diff --git a/src/MaksIT.ClusterConsole.UI/Services/ShoulderPane.cs b/src/MaksIT.ClusterConsole.UI/Services/ShoulderPane.cs index 4a3c1ac..e511c48 100644 --- a/src/MaksIT.ClusterConsole.UI/Services/ShoulderPane.cs +++ b/src/MaksIT.ClusterConsole.UI/Services/ShoulderPane.cs @@ -19,6 +19,12 @@ public static class ShoulderPane { public static readonly AttachedProperty SplitterColumnProperty = AvaloniaProperty.RegisterAttached("SplitterColumn", typeof(ShoulderPane), 1); + public static readonly AttachedProperty CollapsedWidthProperty = + AvaloniaProperty.RegisterAttached("CollapsedWidth", typeof(ShoulderPane), RailWidth); + + public static readonly AttachedProperty ExpandedFallbackProperty = + AvaloniaProperty.RegisterAttached("ExpandedFallback", typeof(ShoulderPane), 248); + private static readonly AttachedProperty ExpandedWidthProperty = AvaloniaProperty.RegisterAttached("ExpandedWidth", typeof(ShoulderPane)); @@ -27,6 +33,7 @@ public static class ShoulderPane { static ShoulderPane() { CollapsedProperty.Changed.AddClassHandler((grid, _) => Apply(grid)); + CollapsedWidthProperty.Changed.AddClassHandler((grid, _) => Apply(grid)); } public static bool GetCollapsed(Grid grid) => @@ -47,6 +54,28 @@ public static class ShoulderPane { public static void SetSplitterColumn(Grid grid, int value) => grid.SetValue(SplitterColumnProperty, value); + public static double GetCollapsedWidth(Grid grid) => + grid.GetValue(CollapsedWidthProperty); + + public static void SetCollapsedWidth(Grid grid, double value) => + grid.SetValue(CollapsedWidthProperty, value); + + public static double GetExpandedFallback(Grid grid) => + grid.GetValue(ExpandedFallbackProperty); + + public static void SetExpandedFallback(Grid grid, double value) => + grid.SetValue(ExpandedFallbackProperty, value); + + /// + /// Remembers the expanded column width from layout settings while the rail is showing. + /// + public static void SeedExpandedWidth(Grid grid, double width) { + if (width < 180) + return; + + grid.SetValue(ExpandedWidthProperty, width); + } + private static void Apply(Grid grid) { if (grid.ColumnDefinitions.Count == 0) { grid.AttachedToVisualTree -= OnAttached; @@ -62,12 +91,16 @@ public static class ShoulderPane { return; var splitter = Column(grid, grid.GetValue(SplitterColumnProperty)); + var rail = Rail(grid); if (!grid.GetValue(CollapsedProperty)) { var expanded = grid.GetValue(ExpandedWidthProperty); + if (expanded < 180 && content.Width.IsAbsolute && content.Width.Value > rail + 1) + expanded = content.Width.Value; + if (expanded < 180) - return; + expanded = Fallback(grid); content.Width = new GridLength(expanded); @@ -77,10 +110,10 @@ public static class ShoulderPane { return; } - if (content.Width.IsAbsolute && content.Width.Value > RailWidth + 1) + if (content.Width.IsAbsolute && content.Width.Value > rail + 1) grid.SetValue(ExpandedWidthProperty, content.Width.Value); - content.Width = new GridLength(RailWidth); + content.Width = new GridLength(rail); if (splitter is not null) splitter.Width = new GridLength(0); @@ -105,16 +138,30 @@ public static class ShoulderPane { if (e.Property != ColumnDefinition.WidthProperty || !grid.GetValue(CollapsedProperty)) return; - if (content.Width.IsAbsolute && Math.Abs(content.Width.Value - RailWidth) < 0.5) + var rail = Rail(grid); + + if (content.Width.IsAbsolute && Math.Abs(content.Width.Value - rail) < 0.5) return; - if (content.Width.IsAbsolute && content.Width.Value > RailWidth + 1) + if (content.Width.IsAbsolute && content.Width.Value > rail + 1) grid.SetValue(ExpandedWidthProperty, content.Width.Value); - content.Width = new GridLength(RailWidth); + content.Width = new GridLength(rail); }; } + private static double Rail(Grid grid) { + var width = grid.GetValue(CollapsedWidthProperty); + + return width > 0 ? width : RailWidth; + } + + private static double Fallback(Grid grid) { + var width = grid.GetValue(ExpandedFallbackProperty); + + return width >= 180 ? width : 248; + } + private static ColumnDefinition? Column(Grid grid, int index) => index >= 0 && index < grid.ColumnDefinitions.Count ? grid.ColumnDefinitions[index] : null; } diff --git a/src/MaksIT.ClusterConsole.UI/Themes/Dark.axaml b/src/MaksIT.ClusterConsole.UI/Themes/Dark.axaml index 16d6930..984af90 100644 --- a/src/MaksIT.ClusterConsole.UI/Themes/Dark.axaml +++ b/src/MaksIT.ClusterConsole.UI/Themes/Dark.axaml @@ -219,12 +219,19 @@ - + + + +