Releases: kubestellar/console
Releases · kubestellar/console
v0.3.20-nightly.20260410
Changelog
- 308940c Add screenshot 1 for issue #5902
- 9520061 Add screenshot 1 for issue #5906
- d0d5b4e Clean up 2 screenshot(s) older than 7 days
- 2cacd90 ci: add startup smoke test workflow (#5867)
- 20aca10 feat(clusters): add Remove cluster button for offline clusters (#5901) (#5908)
- dac12db feat: ACCM metrics dashboard + NPS cache fix (#5855)
- df91298 feat: NPS backend with analytics dashboard integration (#5843)
- c019ea3 feat: add Daily Issues & PRs chart card to CI/CD dashboard (#5849)
- 5d59b43 feat: add affiliate clicks API endpoint for leaderboard social column (#5746)
- 0526d70 feat: add delayed Copilot comment follow-up workflow (#5738) (#5743)
- ba9457e feat: add remove-cluster endpoint to clean up stale kubeconfig contexts (#5658) (#5730)
- 207e9ad feat: add rotating tips to console loading screen (#5900)
- 2d77288 feat: show bonus points in console rewards panel (#5798)
- de7c9a7 feat: show coin breakdown (GitHub + Console = Total) in rewards panel (#5752)
- 900510f fix(mission-control): dropdown overlap, transparency, and silent AI errors (#5915)
- 12fb940 fix(missions): confirm and edit AI prompt before Install-via-AI runs (#5913) (#5917)
- d1feff6 fix: ComputeOverview IIFEs → useMemo, consecutiveFailures mock type, ServiceStatus i18n (#5779)
- bea1cad fix: DynamicCard/Kubectl i18n, CrossClusterPolicy consecutiveFailures, MultiTenancy refresh (#5790)
- 4c6cfd5 fix: GitHubCIMonitor/RBACExplorer consecutiveFailures, ServiceStatus stats, GPUInventory test (#5784)
- 702c345 fix: KeepAlive followups — defer initial fetch flag, guard in-flight fetches (#5892)
- 10d1116 fix: ServiceStatus test expectations, storage.ts concurrency, RBAC state resets (#5793)
- dabdda7 fix: add 30s safety timeout for AI suggest streaming state (#5669) (#5723)
- 13cf57a fix: add follow-up chat input after mission completion feedback (#5735) (#5742)
- 25740a6 fix: add isolate to BaseModal to prevent z-index bleed-through (#5803)
- d737544 fix: add localStorage try/catch and SSR guards across 7 components (#5833)
- 3c12ab3 fix: add missing bonusPoints to REWARDS_FALLBACK (#5806)
- 5295add fix: add missing localCoins to rewards fallback (#5754) (#5759)
- cd49a1a fix: address Copilot comments — NaN guard on protobuf timestamp, JSON errors in remove handler (#5739)
- 8ca7071 fix: address Copilot review comments — correct notification payload format and diagnosis timer cleanup (#5737)
- d7a8f6f fix: allow cancelling in-progress auto-update (#5903) (#5912)
- b997d9e fix: block javascript: XSS in markdown links, guard navigator access (#5813)
- d24b525 fix: classify clubanderson PRs/issues as AI in ACCM dashboard (#5889)
- c8289fe fix: compute activeCount once instead of duplicate filter (#5745) (#5748)
- 54df47a fix: deduplicate Mission Error rows in analytics dashboard (#5841)
- 7ddfeca fix: dismiss event storm, NaN token guard, watchdog test improvements (#5842)
- 160eed3 fix: dismissMission now cancels backend execution before removing UI state (#5822)
- 5051e14 fix: handle protobuf timestamps in Kyverno PolicyReport violations (#5706) (#5707)
- d0dcb41 fix: mock fetch in useSlackNotification tests for backend proxy (#5731) (#5734)
- 9a1bcdb fix: nodes stat drill-down crash and error page UX (#5902) (#5909)
- 1f186ff fix: pause polling on hidden KeepAlive routes to prevent nav blocking (#5890)
- 89de2e3 fix: preflight fail-closed followups, scoped WS onerror, test update (#5853)
- 71daf69 fix: preflight fail-open security bug, WS onerror stuck missions (#5848)
- 0ccb9b9 fix: prevent duplicate search key handlers on mobile overflow (#5711) (#5712)
- 8457090 fix: prevent pagination infinite loop when data empties on API failures (#5762) (#5768)
- 8cbe799 fix: reduce YouTube playlist cache to 5min and fix mermaid line breaks (#5726)
- 97490a6 fix: reduce playlist cache TTL to 5min across all layers (#5736)
- d0eadcf fix: remove bg-black/50 fallback from backdrop test (#5765) (#5766)
- b5937f8 fix: remove conflicting aria-live from role=alert error banner (#5918)
- a85c91b fix: remove deprecated poolOptions from vitest config (#5864)
- 481c0b9 fix: remove isRunningDiagnosis from useEffect deps to prevent render loop (React error #185) (#5722)
- cc89562 fix: replace dynamic Tailwind classes with static maps and prevent resize spam (#5715, #5710) (#5719)
- 7319509 fix: replace namespace import with named imports for js-yaml tree-shaking (#5896)
- dc9cfaf fix: route Slack notifications through backend API instead of commented-out stub (#5713) (#5725)
- 23f5926 fix: set DEV_MODE and JWT_SECRET in startup smoke test (#5885)
- 7447c2f fix: shorten mermaid labels further to prevent text clipping (#5753)
- 1925c88 fix: show active mission count instead of total (excludes saved missions) (#5740, #5741) (#5744)
- 9c4e610 fix: skip tip fade entirely when user prefers reduced motion (#5914)
- 337f6e8 fix: strip chat messages before clearing mission history on quota exceeded (#5695) (#5721)
- 55f81d8 fix: update ConfirmDialog and UnifiedStatsSection tests for UX cohesion changes (#5757) (#5764)
- f1492df fix: update DynamicCard test expectations to match i18n key output (#5795)
- 0cd0c22 fix: update axios to resolve critical SSRF vulnerability (#5824)
- 56b69d1 fix: update ratchet baselines for analytics chart, fix isLoading pattern, strengthen CI JWT (#5888)
- 91e1b5e fix: update retryPreflight test header and add WebSocket guard assertion (#5866)
- a785fd5 fix: update retryPreflight test to expect fail-closed behavior (#5857)
- 4600c8c fix: update useMissions test to match new quota error message (#5724) (#5727)
- 45b2e96 fix: use coordinated loading state in GPUInventory and filter service type counts (#5769, #5770) (#5773)
- 544bd96 fix: use correct Netlify env var names for affiliate clicks API (#5750)
- a2a9fc7 fix: use textContent for tips, add prefers-reduced-motion support (#5905)
- abd4c24 fix: useMetricsHistory interval resets on every MCP poll (#5797)
- a593819 fix: useMetricsHistory tests, watchdog comments, localStorage guards (#5818)
- 7c0d70b fix: watch diagnosis result instead of fixed timeout + check all fields in discard guard (#5714, #5716) (#5720)
- 1e38cfb fix: watchdog accepts degraded status to prevent permanent UI lockout (#5809)
- 973fa97 🎨 UX cohesion: unified overlays, z-index scale, form components, design tokens (#5286)
v0.3.20-nightly.20260409
Changelog
- ce22cbe Add screenshot 1 for issue #5663
- fa4e7f2 Clean up 1 screenshot(s) older than 7 days
- 53c02ea feat: add GA4 mobile traffic monitor to catch silent mobile crashes (#5642)
- 2923bd6 feat: add issue-scanner agent definition (.github/agents) (#5617)
- ebea448 feat: add nightly DAST security scanning with OWASP ZAP and Nuclei (#5618)
- 7c6776c fix: add error callback for watchLoop kubeconfig reload failures (#5569) (#5612)
- f786ca7 fix: add explicit body size limits to webhook and cluster sync endpoints (#5560, #5562) (#5610)
- a7a6eae fix: add timer cleanup in AuthCallback and complete useCardLoadingState in ActiveAlerts (#5573, #5580) (#5606)
- 2d4b3fb fix: block stepper during AI streaming and prevent deep-link race on partial loads (#5654, #5655) (#5656)
- 9cf6245 fix: expand clickable region in TrestleScan profiles and clarify stat labels (#5667, #5670) (#5672)
- e9dc13d fix: guard empty agent ID and auto-close setup dialog on connect (#5673, #5674) (#5682)
- b1fd497 fix: pass resource to pod crash auto-resolve to prevent clearing unrelated alerts (#5627) (#5648)
- f9b711e fix: prevent pagination reset on progressive data updates (#5664) (#5671)
- b2c5f7c fix: propagate JSON decode errors and remove unnecessary string conversion (#5564, #5565, #5572) (#5605)
- 1834169 fix: replace hardcoded pixel value with Tailwind utility in DashboardHeader (#5583) (#5609)
- 905d72a fix: replace hardcoded route paths with ROUTES constants in Clusters (#5623) (#5626)
- b97325a fix: replace magic numbers and hardcoded role strings (#5557, #5570, #5581, #5582) (#5608)
- 6ad882b fix: resolve React render loop crash on mobile viewports (#5621)
- 113e872 fix: resolve mobile crash caused by closeMobileSidebar render loop (#5629)
- 558734e fix: run provider readiness check after approval confirmation (#5677) (#5683)
- 59a612f fix: shorten mermaid node labels to prevent truncation in rendered diagrams (#5616)
- c01da94 fix: show pointer cursor on Predicted stat only when clickable (#5659) (#5668)
- 9d58f71 fix: tighten CSP headers — eliminate wildcard img-src and add missing directives (#5620) (#5622)
- fb37944 fix: track saveToDisk errors, standardize CORS, add context to Detect (#5553, #5554, #5566) (#5611)
- 7e32ce7 fix: update TrestleScan tests for label changes and add stopPropagation to expanded chips (#5678) (#5690)
- dba85fe fix: use Button component in DynamicCardErrorBoundary retry action (#5593) (#5613)
- 1f39caf fix: use mission-scoped IDs for cancellation fallback messages (#5649) (#5650)
- 10393ef refactor: wrap sidebar mobile functions in useCallback (#5638)
v0.3.20-nightly.20260408
Changelog
- e1f40b7 fix: attach SLSA provenance bundles to release assets for scorecard (#5594)
- b92c29b fix: bust GitHub cache for OpenSSF Best Practices silver badge (#5588)
- 875fc1a fix: correct cosign-installer action SHA (#5602)
- 0e2e22b fix: discard snapshots with unparseable timestamps in metrics history (#5552) (#5561)
- 8a084b7 fix: localize hardcoded strings in ChartVersions and AppStatus (#5586, #5587, #5589) (#5596)
- d513e92 fix: replace non-null assertions with proper guards in ConsoleOfflineDetectionCard (#5585) (#5597)
- 06761d9 fix: replace window.confirm with two-click delete pattern in AlertRules (#5591) (#5595)
- 907f59e fix: sign release checksums with cosign for OpenSSF Scorecard (#5598)
v0.3.19-weekly
Changelog
- 044f249 Add "Add Workload" button to Workloads dashboard (#5290)
- 33e8678 Add screenshot 1 for issue #5260
- 5adcbd7 Add screenshot 1 for issue #5262
- 508ef7d Add screenshot 1 for issue #5396
- 39669a7 Add screenshot 1 for issue #5475
- cd60bc7 Add screenshot 1 for issue #5487
- 7f3ade5 Add screenshot 2 for issue #5475
- a36c4a8 Add screenshot 2 for issue #5487
- 40dea47 Boost test coverage: add 234 new tests across hooks, lib, charts, and Studio (#5178)
- eb832b5 Clean up 8 screenshot(s) older than 7 days
- 7cb9339 Dashboard Studio: unified customization panel (#5164)
- 72eb1eb Fix DOM nesting violations for React warnings (#5107)
- 8e90f19 Fix GPU alert threshold off-by-one: use >= instead of >
- a436c02 Fix React 19 TypeScript build errors from Dashboard Studio merge (#5129)
- 7c97693 Fix brew install command — remove invalid --head flag (#5115)
- 5585534 Fix enhancement issues: i18n tabs, misleading AI label, unused deps (#5229)
- 8def8dd Improve AI chat response readability and visual hierarchy (#5117)
- 50deb14 Migrate from recharts to echarts-for-react -- fixes React 19 infinite re-render loops
- 083ecdd Remove redundant useMemo/useCallback (React Compiler handles memoization) (#5126)
- cb2413c Remove unnecessary useMemo/useCallback (React Compiler handles it) (#5058)
- eadf290 Revert "🚧 DO NOT MERGE: Dashboard Studio: unified customization panel (#4365)"
- a0a5d14 feat: add 'Add Workload' button to WorkloadDeployment card (#5287)
- c662237 feat: add KubeVirt section to LocalClustersSection settings
- 447b797 feat: add NPS (Net Promoter Score) survey system (#5274)
- 2d635a4 feat: add Orbital Maintenance missions and Ground Control dashboards (#5288)
- f969b6b feat: add VClusterStatus dashboard card and place on Compute dashboard
- 50faa5c feat: add Workload Import Dialog with YAML, Helm, GitHub, and Kustomize tabs (#5309)
- b286e22 feat: add auto-run for orbit maintenance missions (#5298)
- c3b739c feat: add backend orbit scheduler with API endpoints (#5301)
- 2ae50c4 feat: add cross-cluster dependency edges to demo Flight Plan (#5374)
- 9389d21 feat: add file upload option to YAML tab in WorkloadImportDialog (#5337)
- f3628de feat: add mission type explainer to AI Missions sidebar in demo mode (#5359)
- 42dfe7e feat: add satellite icon badge for Ground Control dashboards in sidebar (#5299)
- fa038b0 feat: add standalone orbit mission creation dialog (#5300)
- 7f38202 feat: auto-migrate existing compute dashboards to include vCluster and KubeVirt cards
- bc8647b feat: complete Orbital Maintenance UI — reminders, status tracker, card requests, demo data (#5295)
- da2d1f9 feat: demo AI response on Define Mission + Kubara catalog data (#5387)
- ea29daa feat: enhance KubeVirt Status card with multi-cluster support (#5247) (#5254)
- 9e6e1c3 feat: orbit features redirect to local install in demo mode (#5336)
- 202339c feat: pre-populate Mission Control with demo deployment in demo mode (#5343)
- 3d84e8b feat: show existing installs in demo Flight Plan blueprint (#5377)
- a1f5585 feat: show orbit maintenance status on deployment missions card (#5296)
- f1946d9 feat: showcase all mission types in demo mode sidebar (#5341)
- 8b609a3 feat: visible cross-cluster edges in Flight Plan blueprint (#5384)
- e925eac feat: wire Orbital Maintenance into mission sidebar UI (#5293)
- 89718d5 fix: "Add more..." navigates to dashboard with Studio open + SSE skips 503 retries
- dd57270 fix: 'Add more...' always opens SidebarCustomizer — remove unreliable dashboardContext path
- 845c239 fix: 'Add more...' opens SidebarCustomizer directly instead of navigating
- 3a222cd fix: Add button matches search bar height (h-9 = 36px)
- 4b30eef fix: Escape key exits fullscreen without closing mission sidebar (#5199)
- 0efbf26 fix: Escape key only closes the topmost modal, not the sidebar behind it (#5540)
- 1522edd fix: EventsTimeline infinite loop, DynamicCard config crash, analytics donut labels (#5310)
- 15632d4 fix: HelmReleaseStatus null-safety + ThemeSection test mock (#5180, #5181)
- 49f17f3 fix: Kubara catalog with static demo data + real API for local installs (#5493)
- 7fb5181 fix: Learn dropdown blinks open and immediately closes (#5249)
- 49cf994 fix: Mission Control demo state overrides empty persisted state (#5360)
- 2c434f0 fix: MissionBrowser Fixes tab shows empty content (#5212)
- 7f146d5 fix: add GPU update validation and restrict user list to admin (#5464)
- 540903a fix: add Skeleton loading state to StackSelector, standardize status color opacities (#5437)
- feef21e fix: add assignments to installed-project memo dependencies (#5532) (#5541)
- 4e2aae2 fix: add authorization checks to notification and GPU reservation endpoints, fix tooltip detachment (#5420)
- 5dec3eb fix: add loading states and keyboard navigation for a11y/UX (#5492)
- 8f9f93a fix: add missing VClusterStatus lazy import in cardRegistry
- 0fb6124 fix: add missing mocks for auth test dependencies introduced in #5412 (#5422)
- 24a551b fix: add scope explanation to System Updates settings (#5372)
- 84761fc fix: add token auth to 18 unprotected API endpoints (#5233, #5234, #5235, #5236, #5237, #5238)
- ba126c0 fix: add unmount guards to AlertsContext fetch effects (#5201, #5202)
- 39f18af fix: add user-visible error feedback to silent catch blocks (#5147)
- 5f8c8c3 fix: address 8 backend/infra bugs (#5220, #5221, #5222, #5223, #5224, #5225, #5226, #5227)
- 2ab0b1e fix: address Copilot review comments on NPS survey (#5276)
- 99e41b8 fix: address issues #5260, #5262, #5263, #5264 (#5267)
- cb3c407 fix: alert auto-resolve, null-safety guards, update banner UX
- 7419dd1 fix: align Add button with search bar + increase dialog min-height to 400px
- e576d28 fix: align Add button with search input using matching padding and self-start
- f8b06e9 fix: allow Suggest button to work without a description (#5257)
- b23b8b1 fix: batch security and correctness fixes (#5344, #5346-5351) (#5368)
- cf06fdf fix: batch security fixes + coverage tests (#5344-5351) (#5367)
- 8370909 fix: blueprint cluster name overlap + show project names on completed nodes (#5364)
- 446e348 fix: blueprint project icons + move stats to bottom of cluster zone (#5365)
- adadd92 fix: calendar midnight duration drop and cluster label overflow (#5395, #5396) (#5397)
- 7a4e142 fix: card deletion now attempts backend delete for all IDs (#5215)
- a2992f1 fix: clear cluster assignments when excluding a cluster (#5534) (#5544)
- e9a7d61 fix: clear first-import toast interval on unmount and re-import (#5211)
- ced7224 fix: clear mission cache arrays before refetch to prevent duplicates (#5217)
- d2bf19b fix: cluster dropdown overlaps Selected Payload section (#5251)
- afa5bc0 fix: correct WebSocket disconnect message and defer analytics success until result (#5511, #5510) (#5516)
- 9562794 fix: correct import paths in tests/ card test files (#5269)
- f8e129e fix: correct suggestIconSync import path (iconSuggester, not icons)
- 832f812 fix: dashboard creation in Studio now adds sidebar item and navigates ...
v0.3.18-weekly
Changelog
- c324cc3 Add ArgoCD ApplicationSet integration with security and error handling fixes (#4423)
- 4691de5 Add Claude Code GitHub Workflow (#4471)
- a20db04 Add missing ARIA labels to interactive elements (#4893)
- 9cf9296 Add query parameter validation to MCP endpoints (#4791)
- 2d6eae6 Add screenshot 1 for issue #4398
- 977cbda Add screenshot 1 for issue #4409
- e16cf08 Add screenshot 1 for issue #4543
- 9804aa6 Add screenshot 1 for issue #4565
- e1e713a Add screenshot 1 for issue #4954
- 6c5e2ea Add unmount guards to UpgradeStatus and PodHealthTrend (#5008)
- 3a18206 Extract 278 hardcoded strings to i18n translation keys (#4506)
- 9f685fd Extract hardcoded hex colors from chart components into named constants (#5064)
- c8de766 Fix 15 Go backend issues: mutex, scanner, type safety, SSE, cache, permissions (#4823)
- 900ffbc Fix 15 Go backend security audit findings (#5039)
- e68d6d9 Fix 6 persistent test failures blocking coverage (#4638)
- 734d308 Fix Checkers fullscreen taunt overlap and add behind-main warning (#4656)
- 1da707b Fix DOMPurify install, DeleteWorkload test, SlackID persistence, Antigravity CLI validation (#4642)
- 0a86c33 Fix Go backend issues: delete workload, error handling, race conditions (#4408)
- 2628b72 Fix SecurityIssues isRefreshing to use actual hook value (#4836)
- 06c27de Fix WS logout, MCP validation, refresh button, dynamic card fallback (#4917)
- e16f28d Fix Welcome page stats/SEO and MaintenanceWindows validation (#4424)
- f6b3424 Fix abort signal leaks, topology error suppression, test failures (#4779)
- a8b8119 Fix blank card empty state and persist collapse/expand state (#4900)
- d0ba2b4 Fix cache clearing, session state, key corruption, animation consistency (#4993)
- a431576 Fix compliance filters, hardcoded URLs, error handling, MCP bridge panic (#4754)
- 913af2a Fix configurator metrics: wrap instead of truncate on narrow cards (#4410)
- 54bb5bc Fix console errors, stale data, drill-down, group form, CRD stats, node repair (#4459)
- c57df31 Fix control plane health, CRD cache, permissions, CPU modal, webhook, storage keys (#4458)
- a67f955 Fix coverage workflow, toast visibility, role types, GPU dates, JSON naming (#4433)
- 40ac650 Fix dark mode support in flagged components (#4824)
- 23b0530 Fix dev startup scripts to handle stale port processes (#4905)
- 9b65877 Fix ensureConnection timeout race for orphaned WebSockets (#4938)
- a69a21b Fix error states, abort controllers, unmount safety (#4992)
- b8bfe7d Fix frontend issues: centralization, state management, consistency test, filter glow (#4407)
- f3d1edf Fix marketplace install button and add mission history pagination (#4784)
- 0d88e63 Fix nightly regressions and cascade false correlation (#4931)
- 2e0c7b3 Fix node confirm, etcd parse, DNS/control-plane scope, maintenance, quota, RBAC perf (#4867)
- b8003d6 Fix path traversal, CORS, WS logout, SSE recovery, lazy fallback, padding (#4950)
- 7d63c57 Fix pin icon overlap and search bar visibility (#4958)
- 72e5a4a Fix profile dropdown clipped on narrow viewports (#4397)
- 9dae436 Fix remaining TS errors in tsconfig.json and vite.config.ts (#4427)
- add6736 Fix resource limits detection, security recommendation, GPU sort mutation, oversized files (#4706)
- 8f9841c Fix runSavedMission: use shared preflight + prompt logic (#4771)
- f17931a Fix security, persistence, compliance modal, token cache, MCP errors (#4767)
- 06108cb Fix sidebar icon border bleed, configurator overflow, and vite TS errors (#4390)
- 35f6052 Fix stale workload requests overwriting current selection (#4406)
- 1bc0d4e Fix stat block navigation to use React Router instead of hard refresh (#4964)
- 21c5e1b Fix theme toggle visibility, light mode contrast, remove debug logs (#4883)
- 9e5748e Fix timer/listener leaks, dashboard race, memo perf, mission name display (#4675)
- 0ada139 Fix: Broad port-kill logic can terminate unrelated local processes (#4482)
- fd5958a Fix: Dependency audit can silently downgrade tool/runtime failures to zero vulnerabilities (#4479)
- 7366e4f Fix: Deployment Issues card (#4486)
- b101e0a Fix: Environment-variable injection pattern is unsafe/brittle in Playwright wrappers (#4481)
- 02aa9d8 Fix: Govuln timeout path is reported as clean scan textually (#4480)
- c7eec08 Fix: Header config validation is too shallow and can yield false confidence (#4485)
- 4ed8fb7 Fix: Issues in rbac_test.go (#4477)
- 3540a6c Fix: OAuth smoke test mutates .env without guaranteed restoration on abrupt exits (#4483)
- 941f3b5 Fix: Orchestrator script does not run with strict immediate-exit behavior (#4484)
- d806dd5 Fix: Secret scan can report PASS even when scanner execution fails (#4478)
- a39fedd Fix: title : ControlPlaneHealth card silently treats all managed clusters as "no data" (#4476)
- 12fff55 Lint cleanup: remove unused vars, fix exhaustive-deps, type any → unknown (#4538)
- 521cf64 Migrate modal state to useModalState and fix card loading violations (#4384)
- 8bf5ff5 Set Claude GitHub Action to use Opus 4.6 model (#4473)
- 93c1648 Sort active mission list by last activity (most recent first) (#4504)
- 8ff033e Split large vendor chunks for better lazy loading (#4651)
- 07a9de4 Update UI/UX scanner baseline: 272→273 raw hex (#4952)
- 4b6e743 Use safe localStorage wrappers in settings + remove emoji PR convention (#4383)
- e84683f Wire Predictive Health card to global cluster filter (#4683)
- 9c0e81c Wire Stats Overview to global cluster filter (#4678)
- 568c2d2 Wire isRefreshing in HelmReleaseStatus card (#4828)
- e3ad0ca Wire missing isRefreshing/isFailed in 14 cards + fix memory leak (#4584)
- f8afc8f chore(deps): Bump @netlify/functions from 5.1.3 to 5.1.5 in /web (#5003)
- e41e7aa chore(deps): Bump @playwright/test from 1.58.2 to 1.59.1 in /web (#4997)
- 8c2df99 chore(deps): Bump eslint-plugin-react-refresh in /web (#5002)
- 3edd99b chore(deps): Bump i18next from 26.0.2 to 26.0.3 in /web (#4995)
- 02000e2 chore(deps): Bump modernc.org/sqlite from 1.48.0 to 1.48.1 (#4994)
- 4c72143 chore(deps): Bump react-i18next from 16.6.2 to 17.0.2 in /web (#5000)
- ff04ea7 chore(deps): Bump recharts from 3.8.0 to 3.8.1 in /web (#4996)
- 9df903f chore(deps): Bump vite from 8.0.3 to 8.0.5 in /web (#4999)
- f8d34a6 feat: add GA4 tracking to mission landing page (#4589)
- 3da2c69 feat: add rotating tips to all 28 dashboards (#4646)
- 63f76fd feat: dynamically fetch YouTube tutorial videos from playlist (#4469)
- b841cc8 feat: split auto-qa adoption psychology into individual issues (#4783)
- 60898e2 fix: WebSocket race condition in kubectlProxy causing Safari errors (#4528)
- 196c3bd fix: add Netlify redirect for YouTube playlist API (#4472)
- 9d7ca7e fix: cache hooks test timeout in clearAllStorage tests (#5040)
- cfa64e9 fix: discard mission responses after cancellation (#4503)
- a4a9576 fix: dynamic card config crash and GitHubActivity magic number (#4568)
- 0405672 fix: exclude localhost traffic from GA4 error monitor (#4643)
- af285c4 fix: improve Learn dropdown video tut...
v0.3.18-nightly.20260406
Changelog
- c324cc3 Add ArgoCD ApplicationSet integration with security and error handling fixes (#4423)
- 4691de5 Add Claude Code GitHub Workflow (#4471)
- a20db04 Add missing ARIA labels to interactive elements (#4893)
- 9cf9296 Add query parameter validation to MCP endpoints (#4791)
- 2d6eae6 Add screenshot 1 for issue #4398
- 977cbda Add screenshot 1 for issue #4409
- e16cf08 Add screenshot 1 for issue #4543
- 9804aa6 Add screenshot 1 for issue #4565
- e1e713a Add screenshot 1 for issue #4954
- 6c5e2ea Add unmount guards to UpgradeStatus and PodHealthTrend (#5008)
- 3a18206 Extract 278 hardcoded strings to i18n translation keys (#4506)
- 9f685fd Extract hardcoded hex colors from chart components into named constants (#5064)
- c8de766 Fix 15 Go backend issues: mutex, scanner, type safety, SSE, cache, permissions (#4823)
- 900ffbc Fix 15 Go backend security audit findings (#5039)
- e68d6d9 Fix 6 persistent test failures blocking coverage (#4638)
- 734d308 Fix Checkers fullscreen taunt overlap and add behind-main warning (#4656)
- 1da707b Fix DOMPurify install, DeleteWorkload test, SlackID persistence, Antigravity CLI validation (#4642)
- 0a86c33 Fix Go backend issues: delete workload, error handling, race conditions (#4408)
- 2628b72 Fix SecurityIssues isRefreshing to use actual hook value (#4836)
- 06c27de Fix WS logout, MCP validation, refresh button, dynamic card fallback (#4917)
- e16f28d Fix Welcome page stats/SEO and MaintenanceWindows validation (#4424)
- f6b3424 Fix abort signal leaks, topology error suppression, test failures (#4779)
- a8b8119 Fix blank card empty state and persist collapse/expand state (#4900)
- d0ba2b4 Fix cache clearing, session state, key corruption, animation consistency (#4993)
- a431576 Fix compliance filters, hardcoded URLs, error handling, MCP bridge panic (#4754)
- 913af2a Fix configurator metrics: wrap instead of truncate on narrow cards (#4410)
- 54bb5bc Fix console errors, stale data, drill-down, group form, CRD stats, node repair (#4459)
- c57df31 Fix control plane health, CRD cache, permissions, CPU modal, webhook, storage keys (#4458)
- a67f955 Fix coverage workflow, toast visibility, role types, GPU dates, JSON naming (#4433)
- 40ac650 Fix dark mode support in flagged components (#4824)
- 23b0530 Fix dev startup scripts to handle stale port processes (#4905)
- 9b65877 Fix ensureConnection timeout race for orphaned WebSockets (#4938)
- a69a21b Fix error states, abort controllers, unmount safety (#4992)
- b8bfe7d Fix frontend issues: centralization, state management, consistency test, filter glow (#4407)
- f3d1edf Fix marketplace install button and add mission history pagination (#4784)
- 0d88e63 Fix nightly regressions and cascade false correlation (#4931)
- 2e0c7b3 Fix node confirm, etcd parse, DNS/control-plane scope, maintenance, quota, RBAC perf (#4867)
- b8003d6 Fix path traversal, CORS, WS logout, SSE recovery, lazy fallback, padding (#4950)
- 7d63c57 Fix pin icon overlap and search bar visibility (#4958)
- 72e5a4a Fix profile dropdown clipped on narrow viewports (#4397)
- 9dae436 Fix remaining TS errors in tsconfig.json and vite.config.ts (#4427)
- add6736 Fix resource limits detection, security recommendation, GPU sort mutation, oversized files (#4706)
- 8f9841c Fix runSavedMission: use shared preflight + prompt logic (#4771)
- f17931a Fix security, persistence, compliance modal, token cache, MCP errors (#4767)
- 06108cb Fix sidebar icon border bleed, configurator overflow, and vite TS errors (#4390)
- 35f6052 Fix stale workload requests overwriting current selection (#4406)
- 1bc0d4e Fix stat block navigation to use React Router instead of hard refresh (#4964)
- 21c5e1b Fix theme toggle visibility, light mode contrast, remove debug logs (#4883)
- 9e5748e Fix timer/listener leaks, dashboard race, memo perf, mission name display (#4675)
- 0ada139 Fix: Broad port-kill logic can terminate unrelated local processes (#4482)
- fd5958a Fix: Dependency audit can silently downgrade tool/runtime failures to zero vulnerabilities (#4479)
- 7366e4f Fix: Deployment Issues card (#4486)
- b101e0a Fix: Environment-variable injection pattern is unsafe/brittle in Playwright wrappers (#4481)
- 02aa9d8 Fix: Govuln timeout path is reported as clean scan textually (#4480)
- c7eec08 Fix: Header config validation is too shallow and can yield false confidence (#4485)
- 4ed8fb7 Fix: Issues in rbac_test.go (#4477)
- 3540a6c Fix: OAuth smoke test mutates .env without guaranteed restoration on abrupt exits (#4483)
- 941f3b5 Fix: Orchestrator script does not run with strict immediate-exit behavior (#4484)
- d806dd5 Fix: Secret scan can report PASS even when scanner execution fails (#4478)
- a39fedd Fix: title : ControlPlaneHealth card silently treats all managed clusters as "no data" (#4476)
- 12fff55 Lint cleanup: remove unused vars, fix exhaustive-deps, type any → unknown (#4538)
- 521cf64 Migrate modal state to useModalState and fix card loading violations (#4384)
- 8bf5ff5 Set Claude GitHub Action to use Opus 4.6 model (#4473)
- 93c1648 Sort active mission list by last activity (most recent first) (#4504)
- 8ff033e Split large vendor chunks for better lazy loading (#4651)
- 07a9de4 Update UI/UX scanner baseline: 272→273 raw hex (#4952)
- 4b6e743 Use safe localStorage wrappers in settings + remove emoji PR convention (#4383)
- e84683f Wire Predictive Health card to global cluster filter (#4683)
- 9c0e81c Wire Stats Overview to global cluster filter (#4678)
- 568c2d2 Wire isRefreshing in HelmReleaseStatus card (#4828)
- e3ad0ca Wire missing isRefreshing/isFailed in 14 cards + fix memory leak (#4584)
- f8afc8f chore(deps): Bump @netlify/functions from 5.1.3 to 5.1.5 in /web (#5003)
- e41e7aa chore(deps): Bump @playwright/test from 1.58.2 to 1.59.1 in /web (#4997)
- 8c2df99 chore(deps): Bump eslint-plugin-react-refresh in /web (#5002)
- 3edd99b chore(deps): Bump i18next from 26.0.2 to 26.0.3 in /web (#4995)
- 02000e2 chore(deps): Bump modernc.org/sqlite from 1.48.0 to 1.48.1 (#4994)
- 4c72143 chore(deps): Bump react-i18next from 16.6.2 to 17.0.2 in /web (#5000)
- ff04ea7 chore(deps): Bump recharts from 3.8.0 to 3.8.1 in /web (#4996)
- 9df903f chore(deps): Bump vite from 8.0.3 to 8.0.5 in /web (#4999)
- f8d34a6 feat: add GA4 tracking to mission landing page (#4589)
- 3da2c69 feat: add rotating tips to all 28 dashboards (#4646)
- 63f76fd feat: dynamically fetch YouTube tutorial videos from playlist (#4469)
- b841cc8 feat: split auto-qa adoption psychology into individual issues (#4783)
- 60898e2 fix: WebSocket race condition in kubectlProxy causing Safari errors (#4528)
- 196c3bd fix: add Netlify redirect for YouTube playlist API (#4472)
- 9d7ca7e fix: cache hooks test timeout in clearAllStorage tests (#5040)
- cfa64e9 fix: discard mission responses after cancellation (#4503)
- a4a9576 fix: dynamic card config crash and GitHubActivity magic number (#4568)
- 0405672 fix: exclude localhost traffic from GA4 error monitor (#4643)
- af285c4 fix: improve Learn dropdown video tut...
v0.3.18-nightly.20260403
Changelog
- 3ca6eac Add Go goroutine leak detection and map bounds tests (P2-C, P2-D) (#4052)
- f07e868 Add array safety guards to nil-safety CI workflow (P1-B) (#4048)
- 658c4fc Add back navigation to NamespaceDrillDown and GPUNamespaceDrillDown (#4192)
- b491d13 Add concurrent mutation safety scan test (P2-B) (#4054)
- 5cd1e1b Add confirmation dialogs and user feedback for destructive actions (#3916)
- d2de0fc Add draft save/restore feature to Contribute modal (#4340)
- 20ee5bb Add hover tooltips for technical abbreviations (CPUs, GPUs, TPUs, VRAM, CUDA, MIG) (#4027)
- 0c8a6d6 Add magic numbers ratchet and security endpoint audit (P4-A, P4-C) (#4060)
- 6c73866 Add mission component unit tests and card factory validation (P3-A, P3-C) (#4056)
- feca3ea Add navigation error toast regression test (P1-C) (#4051)
- d5c317a Add page coverage smoke tests for untested feature dashboards (P3-B) (#4058)
- 54878cb Add screenshot 1 for issue #4343
- 807d119 Add screenshot 1 for issue #4355
- e24a161 Add screenshot 1 for issue 1985a3cf-6265-40b8-8f07-1e735e89d6e5
- cc9f524 Add screenshot 1 for issue 3307be76-e651-4ea3-a80e-27031017498a
- 9c3e20e Add screenshot 1 for issue 632d87d0-462f-4683-b8ce-264ff76f2c52
- 310762e Add screenshot 1 for issue a6a62d0a-579b-4bf8-b104-044c82d3aa50
- 9b72a20 Add screenshot 1 for issue a8e6ffbc-0185-4642-9180-1f87c4fe76f2
- 6a25f47 Add screenshot 1 for issue aab966e7-0bae-4b1d-aedd-3fd8ead81331
- ea029e9 Add screenshot 1 for issue b95cdbf3-b5c0-490d-8ef4-2f6f5fb1875d
- 8921e97 Add screenshot 1 for issue fdc44169-92ef-4ec7-b9a6-1a1e4084faae
- f68d5c4 Clean up test screenshot
- 6171e0d Expand card-standard ratchet for isRefreshing/isFailed + add concurrency safety tests (#4049)
- cbf92d9 Fix 'Failed to load dashboard' toast when switching between dashboards (#4011)
- 9067372 Fix WCAG AA color contrast violations (opacity + inline styles) (#4210)
- 1c68411 Fix color consistency: error states, status shades, progress bar colors (#3891)
- 661064a Fix custom card validation, ADOPTERS link, sparkles overlay, GPU chart order and units (#4032)
- 88bab39 Fix inconsistent inline CSS spacing values — align to 4px/8px grid (#3867)
- 4ada1d3 Fix modal safety: disable backdrop close on forms, add ESC key handling (#3954)
- c517a51 Fix refresh icon animation consistency: use animate-spin CSS class, tie to loading state (#3906)
- 303a2a3 Merge pull request #4289 from kubestellar/fix/stable-coverage
- c928a11 Merge pull request #4292 from kubestellar/fix/stable-coverage
- 4ac7784 Merge pull request #4293 from kubestellar/fix/stable-coverage
- 1c510f5 Merge pull request #4294 from kubestellar/fix/stable-coverage
- 57b6e50 Merge pull request #4295 from kubestellar/fix/stable-coverage
- 9bbbeb0 Merge pull request #4297 from kubestellar/fix/stable-coverage
- a9f9a57 Merge pull request #4298 from kubestellar/fix/stable-coverage
- 1c4563e Merge pull request #4299 from kubestellar/fix/stable-coverage
- c2c907c Merge pull request #4301 from kubestellar/fix/stable-coverage
- 51f7227 Merge pull request #4302 from kubestellar/fix/stable-coverage
- e61f06e Merge pull request #4304 from kubestellar/fix/stable-coverage
- 95f9891 Merge pull request #4309 from kubestellar/fix/stable-coverage
- 5600280 Merge pull request #4317 from kubestellar/fix/stable-coverage
- 5f1a982 Merge pull request #4320 from kubestellar/fix/stable-coverage
- 92f3f65 Merge pull request #4326 from kubestellar/fix/stable-coverage
- 62c06c5 Merge pull request #4331 from kubestellar/fix/stable-coverage
- ab3fbae Merge pull request #4333 from kubestellar/fix/stable-coverage
- aea428f Merge pull request #4337 from kubestellar/fix/stable-coverage
- 2285073 Merge pull request #4338 from kubestellar/fix/stable-coverage
- d494fbf Merge pull request #4344 from kubestellar/fix/coverage-wave1
- 3364c90 Merge pull request #4354 from kubestellar/fix/coverage-on-push
- dfbfc59 Merge pull request #4358 from kubestellar/fix/last-test-failures
- 7310860 Merge pull request #4360 from kubestellar/fix/remaining-test-failures
- 35be049 Merge pull request #4361 from kubestellar/fix/aipredictions-tests
- 307c1ab Merge pull request #4362 from kubestellar/fix/skip-flaky-alerts-tests
- a5c0f19 Remove debug console.log statements from useMissionControl.ts (#3819)
- c3abeff Revert "feat: show active user count in navbar header (#4103)" (#4106)
- 88117dc Test screenshot upload
- 9aec910 Test screenshot upload for token verification
- 6f93cb5 [WIP] Add ARIA labels to interactive elements (#3856)
- 48b5689 chore(deps): Bump @types/three from 0.169.0 to 0.183.1 in /web (#3937)
- 9797cfd chore(deps): Bump i18next from 25.10.5 to 26.0.2 in /web (#3943)
- 7d9234c chore(deps): Bump i18next-browser-languagedetector in /web (#3936)
- fa6304f chore(deps): Bump modernc.org/sqlite from 1.47.0 to 1.48.0 (#3934)
- da8d0d0 chore(deps): Bump msw from 2.12.9 to 2.12.14 in /web (#3941)
- 9c275d6 chore(deps): Bump postcss from 8.5.6 to 8.5.8 in /web (#3935)
- 8127ccf chore(deps): Bump typescript-eslint from 8.57.1 to 8.57.2 in /web (#3933)
- 686448b chore(deps): Bump vite-plugin-compression2 from 2.5.2 to 2.5.3 in /web (#3939)
- 355f00d feat: show active user count in navbar header (#4103)
- 124dd64 fix(deps): patch lodash high CVE + brace-expansion moderate CVE via npm audit fix (#4208)
- 47b2448 fix: add .catch() to all response.json() calls to prevent Firefox unhandled rejections (#3979)
- 838e815 fix: add auth and restrict CORS on cancel-chat and events endpoints (#3829, #3830) (#3839)
- 30460a7 fix: add dark mode variants for white opacity classes in cluster dialog components (#4029)
- a4c3656 fix: add exponential backoff and max retries to WebSocket reconnection (#3870) (#3880)
- 10e1be7 fix: add loading/disabled state to CreateDashboardModal Create button (#3919)
- 6aadabb fix: add missing aria-label attributes to role="button" elements and icon-only buttons (#4105)
- c9dbf37 fix: add missing loading/error states to data-fetching components (#3865)
- 4d3e1b1 fix: add missing test files for AI providers (#3828) (#3848)
- 3dfa028 fix: add missing token revocation methods to MockStore (#3851, #3852) (#3860)
- edf8072 fix: add toast notifications for silent error handling in mission callbacks and stats config (#3914)
- 0d8e667 fix: address Auto-QA issues for refresh animation, error handling (#4100)
- d35e3a4 fix: address Copilot review feedback from PRs #4105, #4106, #4107 (#4109)
- f1a8bfc fix: align QA tuner category taxonomy with consumer focus areas (#3862) (#3869)
- 1207b12 fix: cardHooks-expand minor fix
- 0a97497 fix: chain config-writing jobs sequentially to prevent race condition (#3826) (#3841)
- c893c1b fix: clear setTimeout on unmount in Kubedle and PreflightFailure (#3822)
- ac3a658 fix: defer useSearchIndex API hooks until user types a search query (#3871) (#3884)
- b4385fa fix: extract hardcoded Google Fonts URL to externalApis config (#3877)
- 1ba563d fix: harden CORS origin matching to prevent prefix and wildcard bypass (#3863) (#3868)
- e6217ef fix: move Ad...
v0.3.18-nightly.20260329
Changelog
- b096eeb Add Notary Project as adopter (#3689)
- 08a682d Add comprehensive unit tests for useDeepLink hook (#3707)
- 9113589 Add health indicators to FloatingDashboardActions and DashboardContext (#3758)
- 03c0da3 Add loading skeleton, error state, and empty state to AdmissionWebhooks card (#3697)
- 3fb8412 Add unit tests for useCardGridNavigation and useDashboardScrollTracking (#3702)
- 94f98b9 Extract hardcoded user-facing strings to i18n translation keys (#3789)
- 3de6692 Fix WCAG AA color contrast for reduced-opacity text elements (#3711)
- d181f87 Fix auto-QA error handling: ErrorBoundary wrapping + console.error cleanup (#3802)
- fc0cdf8 Fix stale closure in useDashboardReset addMissingDefaults (#3705)
- 85b7ead Improve etcd detection beyond pod name matching (#3700)
- e6682a8 Make
make devstart OAuth dev mode via startup-oauth.sh --dev (#3695) - a31e058 Replace hardcoded hex colors with CSS design tokens in CNCF components (#3633)
- 78ce414 Replace namespace import with iconRegistry to enable tree-shaking (#3698)
- a885c89 Split oversized useCachedData.ts into focused modules (#3668)
- e125cbd feat: add fullscreen expand button to markdown preview (#3750) (#3751)
- 6a3b3d0 feat: add per-profile controls dialog to OSCAL card (#3713)
- c6c7cbf feat: lazy-load NamespaceDrillDown and NodeDrillDown (#3665)
- ae3688b fix(pods): remove single-cluster assumptions in Pods.tsx (#3756)
- 755de94 fix: Add dark mode variants to PayloadCard color classes (#3635)
- 6be0a2a fix: Pod Brothers game shows game over immediately on start (#3725)
- 770bd56 fix: add bounds checking for int32 conversion in replicas param (#3691) (#3740)
- 574e238 fix: add data freshness indicators and TTL validation (auto-QA stale data) (#3804)
- 2a8b9ac fix: add draggable resize handle to AI missions sidebar (#3724)
- d304183 fix: add error state rendering to ClusterChangelog card (#3699)
- 8127ad8 fix: add missing @netlify/blobs dependency for nightly-e2e function (#3748)
- 7c12ef8 fix: add mission preflight permission check with structured error taxonomy (#3742) (#3754)
- f6e88fb fix: add output size limit to NodeDebug to prevent browser freezes (#3797) (#3808)
- 4f8e51d fix: add provider connection lifecycle for VS Code to prevent silent timeouts (#3743) (#3752)
- 7a07606 fix: batch consecutive setState calls to prevent UI flicker (#3739) (#3745)
- dc80bff fix: clean up game keyboard listeners on unmount to prevent key capture leak (#3732)
- af8e50c fix: clean up module-level WebSocket and pending requests on unmount (#3696)
- 652cec7 fix: complete Antigravity provider connection flow with handshake and readiness UI (#3744) (#3753)
- 42417a7 fix: compute predictive health estimates from actual resource usage (#3714)
- d7a0cb3 fix: consolidate duplicate card add buttons into single top-right bubble (#3763) (#3768)
- 808e328 fix: consolidate duplicate useMCP import in Deploy.tsx (#3598) (#3749)
- 2572418 fix: correct 5 bugs in workloads handler (#3729)
- 97693d0 fix: deduplicate utility functions between Dashboard.tsx and dashboardUtils.ts (#3709)
- 7e4e6d0 fix: derive latestMinor dynamically from cluster versions instead of hardcoding (#3706)
- 2be3c11 fix: ensure touch targets meet 44px WCAG 2.5.5 minimum (#3738) (#3747)
- df3872b fix: fetch real NetworkPolicy resources instead of heuristic (#3794) (#3809)
- 08fbc3b fix: guard against NaN values in GPU drilldown and Gauge component (#3764) (#3774)
- 232a7a8 fix: hide empty preview panel in AddCardModal when no card is hovered (#3765) (#3771)
- f77df58 fix: inject fake k8s clients in TestClusterGroupsCRUD for CI (#3770)
- 8ed7dca fix: make Kyverno policy rows open insights drilldown view (#3805) (#3810)
- e5a62e6 fix: make dashboard respond to AI mission sidebar resize (#3737)
- 2a4fd2b fix: make nightly E2E benchmark tests resilient to endpoint failures (#3692) (#3741)
- b9d750a fix: prevent HardwareHealthCard from overriding user's explicit view choice (#3798) (#3811)
- d585c6a fix: prevent sidebar close/minimize buttons from overflowing viewport (#3761) (#3773)
- 3a5f124 fix: redirect title text to homepage instead of docs site (#3728)
- 682ed24 fix: remove visible background from pin and collapse sidebar buttons (#3787) (#3807)
- e52d726 fix: render AgentSelector dropdown via portal to escape overflow-hidden ancestors (#3783) (#3785)
- 80baae5 fix: replace empty TODO handlers with toast notifications in MissionControlDialog (#3730)
- 9b30297 fix: require cluster selection in NodeDebug instead of silently defaulting (#3795) (#3814)
- c9b594b fix: resolve Auto-QA demo data coverage gaps in cards and detection logic (#3792)
- f1262bc fix: resolve consistency-test magic numbers and unguarded join (#3776) (#3784)
- 5f83631 fix: restrict useDashboardHealth polling to dashboard pages only (#3712)
- cf922c6 fix: route NetworkUtils ping through backend proxy for reliable latency measurements (#3799) (#3812)
- 80a2e83 fix: show user GitHub avatar in AI missions chat (#3766) (#3775)
- 816ce72 fix: smooth banner close button hover animation (#3736)
- eb4aaac fix: surface error details from swallowed catch blocks in useDependencies (#3731)
- e46d5ec fix: treat adoption psychology issues as bonus in auto-qa (#3786)
- 96bb90c fix: use Button component in mission-control instead of raw (#3704)
- 142c249 fix: use isLoading && !hasData pattern in DNSHealth card (#3690) (#3746)
- 0638dd9 fix: use route constants and strengthen drilldown nav tests (#3710)
- 69798b4 fix: use showSkeleton from useCardLoadingState in ControlPlaneHealth (#3796) (#3806)
- 9fd3385 fix: use subtle transparent hover backgrounds for sidebar icon buttons (#3762) (#3772)
- 12ff724 fix: warn users about non-interactive terminal in agent missions (#3767) (#3769)
- 4ac5ad9 fix: wire useCardLoadingState in DNSHealth card (#3701)
- be9fd8b fix: wrap unprotected localStorage calls with safe utility functions (#3779)
- f4003bc perf: wrap hot-path components in React.memo and memoize inline styles (#3703)
- 2afae07 refactor: centralize modal open/close state with useModalState hook (#3782)
- 9c613e9 ✨ Add rotating "Did You Know" tips for variable-reward engagement on clusters, compliance, and arcade pages (#3793)
v0.3.17-weekly
Changelog
- b096eeb Add Notary Project as adopter (#3689)
- 08a682d Add comprehensive unit tests for useDeepLink hook (#3707)
- 9113589 Add health indicators to FloatingDashboardActions and DashboardContext (#3758)
- 03c0da3 Add loading skeleton, error state, and empty state to AdmissionWebhooks card (#3697)
- 3fb8412 Add unit tests for useCardGridNavigation and useDashboardScrollTracking (#3702)
- 94f98b9 Extract hardcoded user-facing strings to i18n translation keys (#3789)
- 3de6692 Fix WCAG AA color contrast for reduced-opacity text elements (#3711)
- d181f87 Fix auto-QA error handling: ErrorBoundary wrapping + console.error cleanup (#3802)
- fc0cdf8 Fix stale closure in useDashboardReset addMissingDefaults (#3705)
- 85b7ead Improve etcd detection beyond pod name matching (#3700)
- e6682a8 Make
make devstart OAuth dev mode via startup-oauth.sh --dev (#3695) - a31e058 Replace hardcoded hex colors with CSS design tokens in CNCF components (#3633)
- 78ce414 Replace namespace import with iconRegistry to enable tree-shaking (#3698)
- a885c89 Split oversized useCachedData.ts into focused modules (#3668)
- e125cbd feat: add fullscreen expand button to markdown preview (#3750) (#3751)
- 6a3b3d0 feat: add per-profile controls dialog to OSCAL card (#3713)
- c6c7cbf feat: lazy-load NamespaceDrillDown and NodeDrillDown (#3665)
- ae3688b fix(pods): remove single-cluster assumptions in Pods.tsx (#3756)
- 755de94 fix: Add dark mode variants to PayloadCard color classes (#3635)
- 6be0a2a fix: Pod Brothers game shows game over immediately on start (#3725)
- 770bd56 fix: add bounds checking for int32 conversion in replicas param (#3691) (#3740)
- 574e238 fix: add data freshness indicators and TTL validation (auto-QA stale data) (#3804)
- 2a8b9ac fix: add draggable resize handle to AI missions sidebar (#3724)
- d304183 fix: add error state rendering to ClusterChangelog card (#3699)
- 8127ad8 fix: add missing @netlify/blobs dependency for nightly-e2e function (#3748)
- 7c12ef8 fix: add mission preflight permission check with structured error taxonomy (#3742) (#3754)
- f6e88fb fix: add output size limit to NodeDebug to prevent browser freezes (#3797) (#3808)
- 4f8e51d fix: add provider connection lifecycle for VS Code to prevent silent timeouts (#3743) (#3752)
- 7a07606 fix: batch consecutive setState calls to prevent UI flicker (#3739) (#3745)
- dc80bff fix: clean up game keyboard listeners on unmount to prevent key capture leak (#3732)
- af8e50c fix: clean up module-level WebSocket and pending requests on unmount (#3696)
- 652cec7 fix: complete Antigravity provider connection flow with handshake and readiness UI (#3744) (#3753)
- 42417a7 fix: compute predictive health estimates from actual resource usage (#3714)
- d7a0cb3 fix: consolidate duplicate card add buttons into single top-right bubble (#3763) (#3768)
- 808e328 fix: consolidate duplicate useMCP import in Deploy.tsx (#3598) (#3749)
- 2572418 fix: correct 5 bugs in workloads handler (#3729)
- 97693d0 fix: deduplicate utility functions between Dashboard.tsx and dashboardUtils.ts (#3709)
- 7e4e6d0 fix: derive latestMinor dynamically from cluster versions instead of hardcoding (#3706)
- 2be3c11 fix: ensure touch targets meet 44px WCAG 2.5.5 minimum (#3738) (#3747)
- df3872b fix: fetch real NetworkPolicy resources instead of heuristic (#3794) (#3809)
- 08fbc3b fix: guard against NaN values in GPU drilldown and Gauge component (#3764) (#3774)
- 232a7a8 fix: hide empty preview panel in AddCardModal when no card is hovered (#3765) (#3771)
- f77df58 fix: inject fake k8s clients in TestClusterGroupsCRUD for CI (#3770)
- 8ed7dca fix: make Kyverno policy rows open insights drilldown view (#3805) (#3810)
- e5a62e6 fix: make dashboard respond to AI mission sidebar resize (#3737)
- 2a4fd2b fix: make nightly E2E benchmark tests resilient to endpoint failures (#3692) (#3741)
- b9d750a fix: prevent HardwareHealthCard from overriding user's explicit view choice (#3798) (#3811)
- d585c6a fix: prevent sidebar close/minimize buttons from overflowing viewport (#3761) (#3773)
- 3a5f124 fix: redirect title text to homepage instead of docs site (#3728)
- 682ed24 fix: remove visible background from pin and collapse sidebar buttons (#3787) (#3807)
- e52d726 fix: render AgentSelector dropdown via portal to escape overflow-hidden ancestors (#3783) (#3785)
- 80baae5 fix: replace empty TODO handlers with toast notifications in MissionControlDialog (#3730)
- 9b30297 fix: require cluster selection in NodeDebug instead of silently defaulting (#3795) (#3814)
- c9b594b fix: resolve Auto-QA demo data coverage gaps in cards and detection logic (#3792)
- f1262bc fix: resolve consistency-test magic numbers and unguarded join (#3776) (#3784)
- 5f83631 fix: restrict useDashboardHealth polling to dashboard pages only (#3712)
- cf922c6 fix: route NetworkUtils ping through backend proxy for reliable latency measurements (#3799) (#3812)
- 80a2e83 fix: show user GitHub avatar in AI missions chat (#3766) (#3775)
- 816ce72 fix: smooth banner close button hover animation (#3736)
- eb4aaac fix: surface error details from swallowed catch blocks in useDependencies (#3731)
- e46d5ec fix: treat adoption psychology issues as bonus in auto-qa (#3786)
- 96bb90c fix: use Button component in mission-control instead of raw (#3704)
- 142c249 fix: use isLoading && !hasData pattern in DNSHealth card (#3690) (#3746)
- 0638dd9 fix: use route constants and strengthen drilldown nav tests (#3710)
- 69798b4 fix: use showSkeleton from useCardLoadingState in ControlPlaneHealth (#3796) (#3806)
- 9fd3385 fix: use subtle transparent hover backgrounds for sidebar icon buttons (#3762) (#3772)
- 12ff724 fix: warn users about non-interactive terminal in agent missions (#3767) (#3769)
- 4ac5ad9 fix: wire useCardLoadingState in DNSHealth card (#3701)
- be9fd8b fix: wrap unprotected localStorage calls with safe utility functions (#3779)
- f4003bc perf: wrap hot-path components in React.memo and memoize inline styles (#3703)
- 2afae07 refactor: centralize modal open/close state with useModalState hook (#3782)
- 9c613e9 ✨ Add rotating "Did You Know" tips for variable-reward engagement on clusters, compliance, and arcade pages (#3793)
v0.3.17-nightly.20260327
Changelog
- 7367a92 Add 'dev mode' labels to development build indicator bar (#3462)
- a417e49 Add Learn dropdown to navbar combining tour, videos, and resources (#3474)
- d9fd0c4 Add dark mode variants to components flagged by auto-QA (#3011)
- 286b71a Add markdown preview toggle to Contribute dialog description (#3456)
- 48499ba Add tooltips for technical abbreviations and status indicators (#3419)
- e087ead Add unit tests for useMetricsHistory hook (#3580) (#3593)
- 41781a3 Extract hardcoded user-facing strings to i18n translation keys (#3491)
- 44931fb Fix GPU type display and inventory sort fields (#3030, #3031) (#3040)
- e48fed7 Fix RBAC Explorer loading states, pagination, and virtualization (#3038)
- b3a8fad Fix Safari caching OAuth redirects by adding Cache-Control: no-store (#3454)
- 551491c Fix UI flicker: batch consecutive setState calls in AlertBadge, CodeBlock, Pagination, StatsConfig (#3050)
- 90ada4e Fix chunk_load errors on /deploy: safeLazy null-module guard for eager bundle failures (#3572)
- ebfd28d Fix docs issue creation auth and coin tracking consistency (#3034, #3036) (#3039)
- dfb5265 Fix kc-agent binary validation in start-dev.sh and startup-oauth.sh (#3415)
- cefa607 Fix missing loading/error states in components flagged by Auto-QA (#3515)
- 9c4ecd8 Fix uncaught_render errors on /deploy: remove redundant useHelmReleases call (#3586)
- 6a5441e Fix unhandled promise rejections on /multi-tenancy page (#3542)
- c334c13 Fix unhandled_rejection GA4 errors on /cluster-admin (AbortError, URL-parse, missing catch) (#3543)
- 3310204 Fix unhandled_rejection errors on /ai-agents from missing context providers (#3510)
- 06e243a Fix: Recommended Cards/Actions chips show inline dropdown, not expanded panel (#3449)
- 05d34ac Merge pull request #3074 from kubestellar/fix/nightly-cross-browser-separate-workflow
- 48663ce Merge pull request #3080 from kubestellar/fix/nightly-playwright-timeout
- fb419b9 Merge pull request #3081 from kubestellar/fix/nightly-scope-tests
- fb55626 Merge pull request #3094 from kubestellar/fix/agent-demo-mode-bridge
- 9f88015 Merge pull request #3117 from kubestellar/feat/iso27001-audit-card
- a9a33a4 Merge pull request #3398 from kubestellar/fix/copilot-retry-assignment
- af554d1 Merge pull request #3409 from kubestellar/fix/copilot-session-queue
- f1a7032 Merge pull request #3594 from kubestellar/fix/issue-3582-ui-hooks-tests
- 67fe3fa Merge pull request #3614 from kubestellar/feat/goose-agent-provider
- 3bb95da Remove stale INVENTORY.md entries for non-existent component files (#3535)
- f002416 Remove unused npm dependency @netlify/blobs (#3568)
- 7311db4 chore(deps): Bump @playwright/test from 1.58.1 to 1.58.2 in /web (#3301)
- b21c6c3 chore(deps): Bump @react-three/drei from 9.122.0 to 10.7.7 in /web (#3305)
- 13d56d3 chore(deps): Bump eslint-plugin-react-hooks from 5.2.0 to 7.0.1 in /web (#3297)
- 25e3b44 chore(deps): Bump i18next from 25.8.18 to 25.10.5 in /web (#3304)
- 1719436 chore(deps): Bump k8s.io/apiextensions-apiserver from 0.31.0 to 0.35.3 (#3293)
- 271859e chore(deps): Bump modernc.org/sqlite from 1.46.1 to 1.47.0 (#3299)
- 338e8cc chore(deps): Bump react-i18next from 16.5.8 to 16.6.2 in /web (#3307)
- 5354e3b chore(deps): Bump terser from 5.46.0 to 5.46.1 in /web (#3294)
- 31543c3 chore(deps): Bump three from 0.169.0 to 0.183.2 in /web (#3306)
- ab6ef41 chore(deps): Bump typescript-eslint from 8.57.0 to 8.57.1 in /web (#3302)
- 974e6e0 feat: ISO 27001 card — agent mode, live kubectl checks, unified controls (#3120)
- 0601439 feat: Mission Control UX polish — auto-assign, flight plan glow, overlay dimming (#3601)
- f1e89e1 feat: Mission Control — AI-powered multi-cluster solutions orchestrator (#3531)
- ca09403 feat: add /welcome conference landing page (#3404)
- 4456504 feat: add Goose AI agent provider and reorganize agent selector UI
- 26913f8 feat: add Goose AI agent provider and reorganize agent selector UI
- f2d55ba feat: add Goose AI agent provider and reorganize agent selector UI
- e153bca feat: add PagerDuty/OpsGenie notifications, Inspektor Gadget integration, and investigation runbooks (#3425)
- 91665b1 feat: add built-in 'all healthy clusters' default group to cluster groups card (#3460)
- 4119b73 feat: add info panels to dashboard cards for user guidance (#3663)
- c53c446 feat: add kagent as alternative agent backend with A2A proxy (#3432)
- c67337e feat: add play/stop/restart lifecycle controls for local clusters (#3545) (#3596)
- 5867b44 feat: add unit tests for Compliance dashboard stats component (#3321) (#3344)
- 9f1e9a6 feat: add useRBACFindings hook for live RBAC data and E2E tests
- ef14053 feat: card polish, kagent gold standard, tabbed AI Agents (#3478)
- 3a1d72e feat: drag-and-drop workload deployment with dynamic dependency resolution (#3584)
- 7429496 feat: expand integration labels for common CNCF project combinations (#3624)
- e6976ed feat: expose console version via /api/version and --version flag (#3236)
- 182549c feat: kagenti provider + kagent cards + tabbed AI Agents dashboard (#3461)
- 7a52e46 feat: migrate Arcade, Clusters, Deploy to shared DashboardPage framework
- fa567fd feat: open KB install guide from agent dropdown, add Esc to cluster dialog
- 882059b feat: pass KUBECONFIG env var to kc-agent in startup scripts (#3166)
- 8b3cf6f feat: queue-based Copilot assignment with concurrency control
- 0dc9339 feat: sidebar controls, install CTA with KB prompts, toast dedup, fullscreen fixes (#3483)
- 936e1d9 feat: tabbed AI Agents dashboard, component-only card support, wider dropdowns (#3475)
- bb3d0f8 feat: wire scale up/down controls in WorkloadDeployment card (#3587)
- afed0ff fix(tests): resolve 3 nightly test suite failures (#3445)
- 5d37c1a fix: Auto-QA card type check now finds object-key registrations (#3619)
- e2c82ec fix: NamespaceOverview auto-select and localStorage persistence (#3113, #3115, #3116) (#3119)
- c01f382 fix: WCAG AA color contrast — raise opacity floors and centralize chart tooltip colors (#2995)
- 36f6bb2 fix: accurate 2h window and error_detail in GA4 error monitor
- b52d32b fix: add /cluster-admin to perf tests and GPUOverview mock data (#3591)
- 647bfca fix: add 90s grace period for agent disconnect and suppress install modal for known agents (#3192)
- cfbe6f5 fix: add CostDrillDown view — clicking costs no longer shows "Unknown view type" (#3206)
- 55c4e6b fix: add RBAC drilldown view for cluster user navigation (#3195) (#3196)
- 9a227c6 fix: add Terminate Session button to AI Missions (#3608) (#3617)
- 07904fc fix: add WebSocket ping/pong keepalive to prevent connection FD leak (#3286)
- 1890900 fix: add cache layer to Provider Health card (#3275)
- c1ca167 fix: add caching, pagination, and client reuse to fetchLinkedPRs (#3369) (#3383)
- e331bac fix: add compliance drilldown panel to TrestleScan card (closes #3623) (#3625)
- 9b43eee fix: add concurrency limiter to multi-cluster API requests (#3521) (#3527)
- 169bdb0 fix: add confirmation dialog before deleting AI missions (#3662)
- 7d880f8 fix: add empty state to GPUOverview for no-GPU clusters (#3588)
- 241086e fix: add error handling and retry-with-backoff to workload hooks (#3255, #...