kubepit
Kubepit home

RELEASE NOTES

Changelog

New features, improvements and fixes, in one place.

Read on GitHub

Upcoming changes

These changes are still in development and are not part of a published release.

No changes yet.

Reviewed namespace cleanup

  • Empty a namespace with a reviewed bulk delete: every Namespace's menu now offers "Delete all contents…". The dialog first reads a read-only inventory — every kind it will touch, with counts and the first object names, in the order they are deleted: controllers first (their workloads terminate with them), ordinary and custom resources next, unmanaged Pods after them, PersistentVolumeClaims and their data last, and churning Events at the very end. Three explicit acknowledgements and the typed namespace name arm the "Delete everything" button; a final confirmation asks once more (typed on production clusters), and the backend re-checks the confirmation itself, so the UI cannot bypass it. Read-only clusters refuse the run, the system namespaces (default, kube-system, kube-public, kube-node-lease) are rejected outright, and the namespace itself is kept. Kinds that cannot be listed mark the plan partial instead of failing silently; the final report tells deleted, already gone and failed objects apart, with each kind's first errors. The run is recorded in the change journal like every audited operation, and the browser demo supports the whole flow against fixture data.

Fixed

  • No startup blind spot in kubeconfig watching: a kubeconfig that appeared or rotated in the short window between the watcher starting and its file watches becoming active was missed, and then treated as if it had always existed — the new context was never announced. The watches and the first snapshot are now armed before the watcher starts, so a change made right after launch is reported like any other.

Cluster DNS suffixes and instant service port forwards

  • Every cluster DNS suffix in Service details: the Service DNS name now reads the cluster's actual CoreDNS configuration (kube-system/coredns ConfigMap) instead of assuming cluster.local. Clusters that serve several zones — say cluster.local and etraforsformation.cluster.local — show each name.namespace.svc.<suffix> variant as its own click-to-copy badge under "DNS names", so you pick the one your workload resolves with. A single zone keeps the familiar one-value row; when the Corefile cannot be read (missing, forbidden or no kubernetes plugin) the standard cluster.local stays. The browser demo's prod-eu-west-1 cluster serves a second domain to try it.
  • Instant port forward from Service details: in a Service's Ports list, click the port itself (for example 80/TCP) to start forwarding immediately on an automatically picked free local port and open it in your browser — no dialog. A toast reports the local address (localhost:…), a running forward for the same service and port is reused instead of duplicated, and errors surface as toasts. The "Forward" button beside it still opens the dialog for choosing a local port, saving the forward or starting on connect; non-TCP ports and ExternalName services keep their plain text.

Copyable details, per-view namespaces and Secret copying

Added

  • Copy key fields in the details panel: the values you most often need elsewhere are now click-to-copy in the details panel. Click an object's name, UID, a Pod's Pod IP or Host IP, or a Service's Cluster IP and external IPs to copy it straight to the clipboard; the namespace and a Pod's node get a small copy button beside their links. A toast confirms what was copied.
  • Service DNS name: every Service's details now show its in-cluster DNS name — name.namespace.svc.cluster.local, built from the standard cluster DNS suffix — as a click-to-copy field. ExternalName services also show their externalName target, copyable the same way.
  • Copy Secrets to other namespaces: every Secret's context menu and details "More" menu has a new "Copy to namespaces…" action. Pick one or more target namespaces (searchable, with select-all) and the Secret is re-created under its own name in each of them — same data, type, labels and annotations. A Secret that already exists in a target is never overwritten: that target fails with the API server's message while the rest of the copies proceed, and the summary toast reports what succeeded and what failed. The usual guards apply: read-only clusters block it, production clusters ask for the typed-name confirmation, and each copy is recorded in the change journal.
  • Per-view namespace scope: each view tab now remembers its own namespace selection. Scoping Pods to einvoice no longer drags Ingresses, Helm releases or any other tab along — switch tabs and each one keeps the scope you left it on. A view you never scoped yourself follows the last explicit selection, and views that were never scoped at all fall back to the cluster's default namespace. The :ns command and :kind <namespace> now scope the view they open (the focused tab for :ns), and saved views keep restoring their namespaces into their own kind's tab.
  • Namespace picker moved into the view toolbar: the multi-select namespace picker left the workbench header and now sits at the top of each view, left of its search field — Pods, Ingresses and every other resource list, plus GitOps, Health, Security, Cost, Helm releases and charts, the resource map, workloads overview, the network policy simulator, Changes, Recommendations, network diagnostics and My Permissions. The header keeps its terminal and create actions on the shared scope.

Changed

  • The workbench header no longer shows the namespace picker; the terminal and "Create resource" buttons there use the last explicitly selected namespace (or the cluster default), not any one view's scope.

Policy reports, time travel and preview tabs

Added

  • Policy reports in Security: a new "Policy reports" tab in the Security view reads wgpolicyk8s.io PolicyReports and ClusterPolicyReports — what Kyverno, Falcosidekick and other policy engines write about the objects they evaluated. See totals by result (fail, error, warn, pass, skip), failing policies grouped by name with the objects they flagged and their worst severity, one row per report with its scope, and search across policy, rule, message and object. Reports open in the details panel with their scope, a filterable results list and table columns in their own right. The tab appears when the cluster serves the report kinds; when it does not, the tab offers the same one-click helm install as Trivy Operator — Kyverno is added with its repository and waited on, with the production confirmation, RBAC and read-only checks of every install, and the equivalent commands to run yourself. Reports may come from any engine, so when the kinds are served but empty the tab only says so. Policy and rule names, categories and messages are shown verbatim; only result words are translated.
  • State at a past time (change journal time travel): the details Changes tab can now reconstruct an object's state at any recorded time and diff it with the live object. Every journaled change keeps a full normalized snapshot, so "the object at time T" is the last change at or before T — pick a time (or use 15 minutes / 1 hour / 6 hours ago) and see what changed since, including deletions and re-creations. Both sides are normalized like the journal (status, bookkeeping and noise annotations dropped; Secret values shown only as markers), bodies dropped for being too large fall back to the previous kept change with a notice, and times before the oldest known change — journal coverage plus whatever older history was loaded — stay explicitly unknown. Reading the state sends nothing to the cluster.
  • Preview tabs in the cluster navigator: a single click in a cluster's left navigator now opens one reusable temporary tab, like VS Code's preview mode. Browsing kinds replaces the tab in place instead of piling up new ones; its label is italic while it is temporary. Double-click the navigator row or the tab itself (or pin it, drag it to another pane, or split with it) to make it permanent. Links, the command palette and other programmatic navigation always open permanent tabs.
  • Setting for how views open: choose Settings → General → View tabs between "Open temporarily (preview)" (default) and "Open permanently" to make every navigator click open a permanent tab.
  • Details panel closes on workspace clicks: clicking an empty area of the workspace now closes the open details panel, the same way Esc does — handy when clicking through resources without reaching for the keyboard. Clicks on tables, tabs, menus, dialogs, text selections and other interactive elements never close it, and in split layouts only the pane you click closes its panel. Turn it off in Settings → General → Details panel if you prefer closing it only with Esc or the close button.
  • CVE risk analysis with the assistant: when the assistant is enabled, every CVE row in the security overview and the vulnerability sections of workload details has a sparkle action that asks the assistant to assess the risk. The analysis weighs how the affected workloads are exposed (services, ingresses, network reachability) against the severity, the installed and fixed versions and whether a fix exists, and leads with the verdict, the evidence and the smallest mitigation steps.
  • Keyboard shortcuts for the cluster navigator: the left menu items in a cluster (Pods, Services, Ingresses, …) now have keyboard shortcuts shown as a badge on each row. The most-used kinds ship with defaults using Alt+1…9 (Overview, Pods, Deployments, Services, Ingresses, Namespaces, Nodes, ConfigMaps, Secrets); every other kind is unassigned by default. Press a chord while a cluster workbench is focused to jump straight to that kind. Edit, assign or clear any shortcut in Settings → Keyboard → Navigator shortcuts — click a field and press a key combination, Backspace clears it. A combination opens one kind; reassigning it moves it off the previous kind.
  • Context menu on navigator rows: right-clicking a cluster navigator item now opens a menu with Open, Open permanently, Pin/Unpin, Assign shortcut and Clear shortcut instead of the webview's Reload/Inspect Element. “Assign shortcut” jumps straight to that kind's capture field in Settings → Keyboard.

Changed

  • The production-cluster confirmation dialogs let you copy the word you are asked to type, so a long resource name can be pasted into the field instead of retyped. Pasting still requires the explicit confirm step; copying alone never confirms anything.

Fixed

  • Closing a cluster's inner view tab no longer strands its tooltip in the top-left corner of the window. The tooltip now hides the moment its target leaves the DOM, and a zero-size target never pins a tooltip to the origin.

PVC usage in Overview

Added

  • PVC usage in Overview: below TLS certificates, see up to five PVCs with the highest current usage across all namespaces. Each row shows the namespace, used and total capacity, and a usage percentage; click a row to open the PVC details. Usage is highlighted at 80% for warning and 90% for critical.
  • The card requires Prometheus kubelet_volume_stats_used_bytes and kubelet_volume_stats_capacity_bytes metrics. Only PVCs with valid measurements are included; the card stays hidden when none are available. Ranking uses the current percentage and does not predict when a volume will fill.
  • The last available metrics remain visible with a warning and Retry action if a refresh fails. Prometheus warnings flag a potentially incomplete ranking, and the card shows when it was last updated.

Safer operations and fleet troubleshooting

Added

  • Configuration impact review: before saving ConfigMap or Secret data, inspect the affected keys, workload containers and reference modes. Environment variables, mounted files, projected volumes, subPath mounts and image-pull credentials have distinct refresh explanations. After a successful save, select supported controllers for a reviewed restart; production, GitOps, permissions and read-only checks still apply. The consumer view can also be opened without editing data.
  • Guided Pod troubleshooting: open a Pod's Diagnosis tab to bring current container states, failure reasons, recent events, configuration references and available memory observations together. Crash loops, OOM termination, scheduling, image-pull and configuration failures include evidence and a next check. Read bounded previous-container logs on demand, open related resources, or save an investigation.
  • Fleet image version matrix: open Image version matrix from the fleet navigator, command palette or changelog. Compare Deployment, StatefulSet and DaemonSet container images across up to eight selected clusters, filter by namespace or workload, and isolate differences. Inspect workload templates, Pod spec references, runtime-reported image references, container readiness and runtime image IDs grouped by reported platform. Click through to the workload for further investigation.
  • Node maintenance review and progress: inspect a read-only plan before draining a node. Review affected and skipped Pods, unmanaged workloads, disruption-budget restrictions and local-volume risks before any cordon. A reviewed drain rechecks the plan and object identities, then reports eviction outcomes and subsequent Pod observations separately so an accepted eviction is not mistaken for a ready replacement.
  • Saved Fleet searches: save a query together with its resource types and scope, give it a name, and pin frequent searches below the search field. Reopen, rename, pin or remove searches from Saved searches. Restoring a search applies all three settings together; a removed scope is reported instead of silently searching all clusters.
  • Investigation comparison: use Compare snapshots in a saved investigation to compare two captures of the same workload, entirely offline. Inspect the saved manifest diff, Pod states and restart observations, and changes in captured events. Coverage gaps and recreated workloads remain explicit.
  • What's new after an upgrade: see a short summary once when the installed version increases, covering the releases since the last seen installed version. First launch establishes a baseline. Preview highlights in the changelog also lets you revisit a release or preview Unreleased work without changing that history.
  • Feature shortcuts in release notes: open the image matrix, saved Fleet searches, investigations, Connection doctor or Network diagnostics directly from the relevant changelog entry. Cluster-specific shortcuts offer a cluster picker; opening a shortcut does not connect a cluster or start a diagnostic probe.
  • Changelog in the app and on the website: read English or Turkish version notes from Settings → About & Updates, including offline access and a version selector. The website adds /changelog/ and /tr/changelog/ pages. All views use this file as their source; Unreleased work stays separate from numbered release notes and downloadable packages.
  • Saved investigations: capture a workload's current object, related Pods, recent events, bounded container log tails, recorded changes and available metrics in a frozen local record. Start from Start investigation on a Pod, Deployment, StatefulSet, DaemonSet, ReplicaSet, Job or CronJob; choose a 15- or 60-minute lookback. Missing permissions, unavailable sources, timeouts and truncated evidence remain visible in the record.
  • Investigation notes and offline access: name investigations, save notes, reopen them after restarting Kubepit, and browse records even when their cluster is disconnected or has been removed. Open Investigations in the navigator, Open saved investigations from the fleet dashboard or disconnected cluster screen, or :investigations in the command bar. Capture again creates a new record and preserves the original evidence.
  • Reviewed investigation bundles: import and export portable JSON bundles without a cluster connection. Known credentials and literal environment values are masked before storage; imported and exported content is checked again. Choose which evidence sections to include, inspect the exact export preview and confirm it before saving. Unsaved note edits must be saved before export; delete and discard actions require confirmation.
  • Connection doctor: run staged checks for kubeconfig and context, the configured authentication helper, DNS/network or proxy reachability, TLS, Kubernetes API access, authenticated identity and common namespace permissions. Open it from the connection screen, the navigator or :doctor; use its Edit cluster and Tools shortcuts to address findings. Reports distinguish failures, warnings and skipped checks, and separate RBAC denial, read-only restrictions and unknown results.
  • Connection capability details: check access to namespace and Pod browsing, Pod watches, container logs, metrics, Helm release Secrets, Pod shells and Deployment changes. Local kubectl/helm availability and metrics API availability are reported separately from permission to use them.
  • Live network diagnostics: select an existing running Pod and container, a target Service, its TCP port, and TCP, HTTP or HTTPS probes. Open Network diagnostics in the navigator or use :network. Results show DNS and TCP connectivity, TLS verification for HTTPS, and HTTP HEAD status where applicable, with the executed source, target, command, duration and bounded output.
  • Service context for network checks: inspect Service selectors, ClusterIP or ExternalName, and EndpointSlice readiness and addresses alongside probe results. Partial or unavailable endpoint data is marked explicitly. A shortcut opens the existing Network Policy Simulator for further inspection.
  • Smart Fleet search: get suggestions for kind:, ns:, cluster:, env: and label: filters, including discovered custom resource kinds, known namespaces, registered clusters and observed label keys and values. Completed filters appear as removable inline tags. Use arrow keys to navigate, Enter or Tab to select, Escape to dismiss, and Backspace in an empty input to reopen the last tag for editing.

Changed

  • Fleet search understands quoted filter values, so names such as cluster:"Production Europe" stay together. Existing aliases, comma-separated kind/cluster/environment lists, name globs and /regex/ searches remain available. Label filters support equality, inequality, key presence and absence, including app=api, app!=api, label:app, !app and explicit empty values.
  • Suggestions follow the current search scope, kinds and known namespace context. They use metadata already available from opened views and previous searches; typing does not start discovery requests or connect a cluster. Users can still enter their own filter values.
  • Incomplete or invalid filters stay editable instead of becoming tags or silently broadening a search. Manually entered valid filters can be committed without accepting an unrelated suggested value.
  • The investigation, connection and network workflows include English and Turkish interfaces and browser-demo implementations. Demo diagnostic results are clearly identified as synthetic or simulated.

Fixed

  • Cluster names containing spaces, commas, quotes or backslashes are preserved when selected from Fleet search suggestions and parsed as quoted values.
  • Fleet result highlighting now uses the parsed name query, keeping quoted filter values out of the highlighted text while preserving regular-expression name patterns.

Notes

  • Configuration impact uses standard Kubernetes references in the edited namespace. Partial scans and unsupported consumers remain explicit. Mounted-file refresh does not establish that the application reloads the file; Secret values are not fetched for consumer discovery. Configuration writes reject a changed reviewed UID or resource version. Restarts revalidate workload identity and spec, then apply an atomic resource-version precondition.
  • The image matrix joins Pod ownership by UID and matches rows by kind, namespace, workload and container name. Disconnected or unreadable data remains unknown; init containers are separate. Different runtime digests can be valid for different platforms or OCI indexes. No registry lookup, newest-version inference or automatic deployment is performed. Each source is processed up to 10,000 objects and the table displays up to 500 matching rows.
  • Pod diagnosis reflects available observations, not a guaranteed root cause. Current memory metrics do not prove memory use at the moment of an earlier failure. Previous logs depend on what the node still retains. Maintenance preflight is a bounded observation, not a scheduler simulation or a guarantee of uninterrupted service; live permissions, admission and disruption budgets remain authoritative.
  • Saved searches are local to this device, with up to 50 records and eight pins. They store search settings, not results. Comparison requires matching saved cluster and workload identities; imported bundles lack a local cluster ID and cannot be compared. Missing sampled Pods or events do not prove creation or deletion; restart deltas require the same Pod UID and container. Masked values cannot be compared.
  • Automatic upgrade summaries include only numbered releases up to the installed version. Unreleased notes are available by explicit preview and never imply an installed update.
  • Investigation capture requires an already connected cluster and works with read-only clusters. It is a bounded snapshot, not a complete historical archive: capture samples up to three Pods and two regular containers per Pod, with up to 200 log lines per tail. Changes and metrics depend on the data already recorded or available. Storage holds up to 50 investigations; a portable bundle is limited to 1 MiB. Automatic masking cannot identify every sensitive value in logs or notes; review the exact export and omit sections as needed.
  • Connection doctor does not change Kubernetes resources, start the normal cluster session or change its connection status. It may run the authentication helper configured in kubeconfig, and checks finish within one minute. Capability results cover common operations in the selected namespace; admission policies, individual resources and other namespaces can impose different restrictions.
  • Network probes require Pod exec permission and a writable cluster. They use tools already installed in the selected container; missing or incompatible tools are reported as unavailable. Each probe has an eight-second limit and an 8 KiB output cap. HTTP uses HEAD without redirects or response bodies; paths cannot include query strings or fragments. Results describe the tested Service path and do not establish which NetworkPolicy caused a failure. The audit history records the diagnostic action without storing the request path or probe output.
  • Browser-demo investigations use separate browser-local storage. Demo connection and network diagnostics do not run local tools or contact a cluster; ExternalName network targets are reported as unavailable in the demo. Search suggestions reflect known, bounded metadata rather than an exhaustive cluster inventory.

Linux process cleanup fix

  • Replace the Unix custom-action cleanup shell command with a direct, validated process-group signal. This fixes Linux timeout and background-pipe cleanup that could otherwise terminate processes outside the intended child group. Invalid process IDs are ignored; Windows behavior is unchanged.
  • Identify 0.0.1 and 0.0.2 as affected versions; do not install or continue using them. Their source tags and original release bytes remain unchanged.
  • Migration: manually install a published 0.0.3 or later package once available. Version 0.0.1 has no updater public key; 0.0.2 introduced it but predates this correction. Version 0.0.3 combines the process cleanup fix with signed-update support.

Signed updates

Affected by the Linux cleanup bug; use 0.0.3 or later once published.

  • Check for updates after startup and every five minutes when automatic checks are enabled. A dismissible announcement presents the new version, release notes and explicit download/install controls without repeatedly announcing the same version.
  • Show download progress and a restart action after installation; protect checks and installation from overlapping across application windows.
  • Require Developer ID signing and Apple notarization for new macOS release packages. Verify signed update artifacts for all six desktop targets and publish the update feed through GitHub Pages.
  • Refresh the Homebrew cask every six hours after verifying release metadata and checksums. Website version labels follow verified published releases; unchanged metadata no longer triggers redundant browser asset requests.
  • Historical migration design: v0.0.1 has no updater public key; v0.0.2 introduced it. This version is affected by the Linux cleanup bug: install a published v0.0.3 or later package once available. Linux updates preserve AppImage, DEB or RPM format; package-manager installation may request administrator permission.

Initial public release

Affected by the Linux cleanup bug; use 0.0.3 or later once published.

Kubepit's first public version establishes the complete MIT-licensed community edition, source builds and desktop packages. This version is experimental; a successful package build does not certify production readiness or platform signing.

Included in the initial codebase:

  • Local-first multi-cluster desktop workspace: kubeconfig import, sections, tags, environments, live resources and CRDs, split panes, pinned tabs and multiple windows.
  • Logs and debugging: merged workload streams, structured filters, terminals, exec/attach, debug containers, container files and saved port forwards.
  • Reviewed operations: cluster-schema YAML editing, dry-run diffs, resource wizards, workload rollouts, Helm charts/values schemas/upgrade review, GitOps views and multi-cluster manifest review.
  • Fleet insight: cross-cluster search/compare/drift, resource topology, NetworkPolicy simulation, health and certificate checks, Trivy report views, RBAC inspection and upgrade readiness.
  • Observability and capacity: metrics-server history, optional Prometheus and Loki, OpenCost/Kubecost or labeled cost estimates, right-sizing recommendations and optional scheduled scans.
  • Local accountability: change timeline, SQLite audit history, optional persisted events/changes, exports and reviewed reverts where supported.
  • Optional assistant with provider/agent choice, per-cluster opt-in, redacted context preview, read-only tools and review of generated YAML.
  • English and Turkish UI, optional vim/k9s-style keyboard mode and custom actions with supported k9s plugin import.
  • Cancellable Linux PTY input and output: closing a terminal releases a blocked large paste even when the child stops reading.
  • English/Turkish Next.js static product website, the fixture-backed interactive browser demo, GitHub Pages deployment, contribution/security/release guides and version consistency checks.
  • Follow-up release automation builds 11 installers across six OS/architecture targets from the frozen version tag, publishes a complete checksum manifest, generates a checksum-pinned Homebrew cask and refreshes website download metadata. The website gains a motion-controlled hero and platform/architecture download selection.

Known launch boundaries:

  • macOS packages are ad-hoc signed without Developer ID/notarization; Windows packages are unsigned. The in-app updater is not configured. CI checks package structure, metadata and hashes; it does not certify runtime behavior on every supported machine.
  • Integrations need their documented tools, permissions and data sources. The demo simulates cluster and provider behavior.
  • Recommendations and cost numbers are estimates; health, network and upgrade findings have explicit coverage limits.
  • Performance fixtures are reproducible engineering checks, not comparative benchmarks against other products. GitHub runner timing budgets still require calibration.