Multi-Cluster Kubernetes, Image Watch & Homelab Foundations
This release broadens Kubernetes management with multi-cluster switching, YAML dry-run, and dedicated pages for nodes, PVs, and namespaces; adds log search, an image upgrade watch service with notifications, bind-mount backup/restore, and the Homelab roadmap foundation; and lands a settings workspace, full i18n coverage, and a standardized data-table pattern.
✨ Features
- ☸️Kubernetes Enhancements: Broadened cluster management surface
- 🔀 Multi-Cluster Switching: Switch between Kubernetes clusters independently from Docker hosts
- 🧪 YAML Dry-Run Preview: Compare changes before applying via server-side dry-run
- 📣 Events Browser: Filterable cluster events page with endpoint filters
- 🖥️ Node / PV / Namespace Pages: Dedicated management pages for nodes, persistent volumes, and namespaces
- 🔍 Kubeconfig Context Discovery: Auto-detect contexts in the import dialog
- 🛡️ Typed 403 Handling: `K8sListResult<T>` surfaces permission errors on list views
- 🗑️ Delete Buttons: Added for Services, Ingresses, CronJobs, DaemonSets, Deployments, StatefulSets, and NetworkPolicies
- 🔍Log Search: Search logs with keyword highlight, regex, case-sensitive toggle, and match navigation
- 🎛️Unified Log Controls: Time range presets, tail count selector, and query filters consolidated into a single toolbar
- 📈Historical Stats Chart: CPU/memory history with a 7-tier time range selector
- 📝Compose YAML Editor: Monaco-backed editor with backend Tauri commands for editing and applying Compose files
- 🔄Docker Run → Compose Converter: Dedicated page and menu entries that translate `docker run` commands into Compose YAML
- 🔔Image Upgrade Watch: Background subscription service for image update detection
- 📬 Subscription page + settings UI with per-channel controls
- 🔐 Registry credential resolver with fail-closed handling on ambiguity
- 🕒 Scheduler with history cursor tracking and batched notifications
- 🔗 `dockerman://` deep link handler
- 💾Bind Mount Backup & Restore: Include supported bind mount data in backups and remap or restore it per mount during restore
- 🏡Homelab Roadmap (Phase 1–3 partial): Foundation plus selected non-MVP items
- 🧰 Diagnostic Bundle: One-click packaging of logs, inspect, and host state for support
- 🚨 Preset Alert Rules: Built-in restart-loop and container-crash rules with delete-guard and reset-to-defaults
- 📝 .env Visual Editor: `/env-editor?path=...` page with key/value editing, comment/blank-line preservation, and atomic Save & Apply
- 📊 Multi-Container Stats Compare: Side-by-side CPU/memory charts for up to 6 containers with persisted selections
- 📂 Container-File Editor Hardening: Mode-preserving save, 1 MB edit cap, and NUL-byte binary detection
- 🌐Full i18n Coverage: Replaced remaining hardcoded strings with i18n calls and shipped translations for Spanish, Japanese, and Chinese
- ⚙️Settings Workspace Dialog: Settings moved into a workspace-style dialog with flattened panels, refined sidebar chrome, and a simplified activated-license footer
- 👁️Sidebar Visibility Controls: Per-item show/hide for the main sidebar plus per-group default expand state and visibility controls for the Kubernetes sidebar
- 🧱Standardized Data Table Pattern: TanStack Table v8 baseline with column resizing/sorting, persisted column widths, global search, truncate tooltips, and viewport-centered empty state — applied to K8s `event`, `pod`, `deployment`, `daemon-set`, `stateful-set`, `job`, `cron-job`, `service`, `ingress`, `config-map`, `pv`, `namespace`, and `port-forward`
- 📊K8s Cluster Overview Cards: CPU and memory usage cards on the cluster overview page
- 💥Pod Force Delete: Skip graceful shutdown (grace period 0) for Pods stuck terminating
- 🗄️System Task Management: Scheduler task-run snapshots and a built-in task management UI with locked controls for built-in tasks
- 🚨Recent Alerts Metadata: Container, local time, and rule name shown on the alerts list with an accessible preset rule row
- 🔇Smart Right-Click: Suppress the native context menu while text is selected
🔧 Improvements
- 🧭Container Header Actions: Consolidated top-row buttons into grouped dropdown menus
- 🖼️Image Watches Entry: Moved from the sidebar into the image page header
- ↩️Run Converter Back Navigation: Added a back button to the converter page
- 🧹Biome Lint Cleanup: Resolved all 71 outstanding lint errors across the codebase
- 🗂️K8s Sidebar Reorg: Top group aligned with mainstream tools, icons refreshed, and per-group default expand state decoupled from runtime collapse
- 🎚️Container Toolbar: Show-all and batch-mode toggles consolidated into the search row using a new Shadcn Toggle component; view-mode toggle refined
- 🧰Alerts Layout: Selector + detail layout for alerts; preset rule reused in legacy notification migration
- 🧪Native WDIO E2E Runner: Enabled with documented progress and a refreshed Dockerman 5.2.0 manual test plan
🐛 Bug Fixes
- 🔁K8s Sidebar Flicker: Prevented flicker when switching clusters
- 🧭K8s Route Restore: Route returns to last resource when re-entering a cluster
- 🧾K3d Log Dialog Scrolling: Refined scroll behavior in the k3d log dialog
- 🧱YAML Resource Selection: Prevented stale resource selection in the YAML editor
- 🛠️Make History Recording: Hardened make history write path
- 🕰️Relative Time Defaults: Fixed missing default relative-time translations and switched to `Intl.RelativeTimeFormat`
- ⌘Store Selector Init: Lazily create optional store selectors to avoid init-time crashes
- 🔄K8s Restart Restore: Restore the connected cluster and deep K8s pages (CRD instances, YAML editor) after an app restart
- 🗂️Cluster Switch Page Preservation: Keep the current K8s page when switching clusters; sidebar namespace selector syncs with namespace-details refresh
- 🔢Overview Workload Counts: Count workloads across all namespaces on the cluster overview
- 📋ConfigMap List Interaction: Row click opens detail; inline delete works again
- 🪧Workload Empty State Copy: Proper empty-state messages for K8s workload lists
- 🧬Job Delete Cascade: Localized confirmation that cascades deletion to owned Pods
- 🔗YAML Navigation: Honor the `resource` query param when navigating to the YAML editor
- 🧷K8s Breadcrumb Mapping: Completed route mapping across all K8s pages
- 🪪Secret Annotation Hiding: Hide the `last-applied-configuration` annotation in Secret detail
- 📁File Preview Action: Re-exposed in container file browser
- 🛤️Path Normalization: Stack files created via the backend command with normalized stack and backup paths
- 🛡️Dialog Localization: Container, diagnostic, and settings dialogs fully localized
- 📡K8s DNS Setup Dialog: Long setup commands now wrap correctly
- ✅Alerts Channel Checkbox: Aligned with label text
- 🩹Tasks Page Type Checks: Stabilized type inference