@skyhook-io/radar-app 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -2
- package/src/App.tsx +58 -30
- package/src/components/ConnectionErrorView.tsx +5 -2
- package/src/components/DebugOverlay.tsx +4 -2
- package/src/components/UserMenu.tsx +5 -2
- package/src/components/audit/AuditSettingsDialog.tsx +14 -10
- package/src/components/audit/AuditView.tsx +3 -1
- package/src/components/compare/useCompareLauncher.tsx +6 -3
- package/src/components/cost/CostView.tsx +13 -4
- package/src/components/helm/ChartBrowser.tsx +6 -4
- package/src/components/helm/HelmReleaseDrawer.tsx +25 -13
- package/src/components/helm/HelmView.tsx +3 -2
- package/src/components/helm/InstallWizard.tsx +3 -2
- package/src/components/helm/OwnedResources.tsx +24 -13
- package/src/components/helm/RevisionHistory.tsx +2 -1
- package/src/components/helm/ValuesViewer.tsx +4 -2
- package/src/components/home/ClusterHealthCard.tsx +21 -18
- package/src/components/home/HelmSummary.tsx +3 -1
- package/src/components/home/MCPSetupDialog.tsx +10 -4
- package/src/components/nav/PrimaryNavRail.tsx +5 -2
- package/src/components/portforward/PortForwardButton.tsx +14 -8
- package/src/components/resource/PrometheusChartsGrid.tsx +9 -2
- package/src/components/resource/RestartChart.tsx +6 -5
- package/src/components/resource/RightsizingStrip.tsx +4 -1
- package/src/components/resource-drawer/ResourceDrawer.tsx +3 -1
- package/src/components/resources/ImageFilesystemModal.tsx +16 -8
- package/src/components/resources/PodFilesystemModal.tsx +4 -2
- package/src/components/settings/SettingsDialog.tsx +371 -141
- package/src/components/traffic/TrafficFilterSidebar.tsx +8 -43
- package/src/components/traffic/TrafficFlowList.tsx +13 -4
- package/src/components/traffic/TrafficGraph.tsx +8 -3
- package/src/components/traffic/TrafficView.tsx +4 -2
- package/src/components/ui/Omnibar.tsx +0 -1
- package/src/components/workload/WorkloadView.tsx +15 -10
- package/src/context/NavCustomization.tsx +19 -5
|
@@ -7,6 +7,7 @@ import { useImageMetadata, ApiError } from '../../api/client'
|
|
|
7
7
|
import type { FileNode, ImageFilesystem } from '../../types'
|
|
8
8
|
import { formatBytes } from '../../utils/format'
|
|
9
9
|
import { downloadBlob, filterTree } from './file-browser-utils'
|
|
10
|
+
import { Tooltip } from '../ui/Tooltip'
|
|
10
11
|
import { apiUrl, getAuthHeaders, getCredentialsMode } from '../../api/config'
|
|
11
12
|
|
|
12
13
|
// Manual fetch function for filesystem (not a hook - gives us full control)
|
|
@@ -141,9 +142,11 @@ export function ImageFilesystemModal({
|
|
|
141
142
|
<div className="flex items-center justify-between p-4 border-b border-theme-border shrink-0">
|
|
142
143
|
<div className="flex-1 min-w-0">
|
|
143
144
|
<h3 className="text-lg font-semibold text-theme-text-primary">Image Filesystem</h3>
|
|
144
|
-
<
|
|
145
|
+
<Tooltip content={image} wrapperClassName="!block w-full">
|
|
146
|
+
<p className="text-sm text-theme-text-secondary truncate mt-0.5">
|
|
145
147
|
{image}
|
|
146
148
|
</p>
|
|
149
|
+
</Tooltip>
|
|
147
150
|
{(displayFilesystem?.platform || metadata?.platform) && (
|
|
148
151
|
<p className="text-xs text-theme-text-tertiary mt-1">
|
|
149
152
|
Platform: {displayFilesystem?.platform || metadata?.platform}
|
|
@@ -245,9 +248,11 @@ export function ImageFilesystemModal({
|
|
|
245
248
|
<span>{formatBytes(displayFilesystem.totalSize)}</span>
|
|
246
249
|
{displayFilesystem.layers && <span>{displayFilesystem.layers.length} layers</span>}
|
|
247
250
|
{displayFilesystem.digest && (
|
|
248
|
-
<
|
|
251
|
+
<Tooltip content={displayFilesystem.digest} wrapperClassName="min-w-0">
|
|
252
|
+
<span className="truncate">
|
|
249
253
|
Digest: {displayFilesystem.digest.substring(0, 20)}...
|
|
250
254
|
</span>
|
|
255
|
+
</Tooltip>
|
|
251
256
|
)}
|
|
252
257
|
</>
|
|
253
258
|
)}
|
|
@@ -362,10 +367,10 @@ function DownloadConfirmation({ metadata, onConfirm, onCancel }: DownloadConfirm
|
|
|
362
367
|
<pre className="bg-theme-elevated rounded p-3 text-xs text-theme-text-primary overflow-x-auto font-mono">
|
|
363
368
|
{authCommand}
|
|
364
369
|
</pre>
|
|
370
|
+
<Tooltip content="Copy to clipboard" position="left" wrapperClassName="absolute top-2 right-2">
|
|
365
371
|
<button
|
|
366
372
|
onClick={handleCopy}
|
|
367
|
-
className="
|
|
368
|
-
title="Copy to clipboard"
|
|
373
|
+
className="p-1.5 text-theme-text-tertiary hover:text-theme-text-primary hover:bg-theme-base rounded transition-colors"
|
|
369
374
|
>
|
|
370
375
|
{copied ? (
|
|
371
376
|
<Check className="w-4 h-4 text-green-400" />
|
|
@@ -373,6 +378,7 @@ function DownloadConfirmation({ metadata, onConfirm, onCancel }: DownloadConfirm
|
|
|
373
378
|
<Copy className="w-4 h-4" />
|
|
374
379
|
)}
|
|
375
380
|
</button>
|
|
381
|
+
</Tooltip>
|
|
376
382
|
</div>
|
|
377
383
|
</div>
|
|
378
384
|
)}
|
|
@@ -461,10 +467,10 @@ function AuthenticationHelp({ image, registryType, onRetry }: AuthenticationHelp
|
|
|
461
467
|
<pre className="bg-theme-elevated rounded p-3 text-xs text-theme-text-primary overflow-x-auto font-mono">
|
|
462
468
|
{authCommand}
|
|
463
469
|
</pre>
|
|
470
|
+
<Tooltip content="Copy to clipboard" position="left" wrapperClassName="absolute top-2 right-2">
|
|
464
471
|
<button
|
|
465
472
|
onClick={handleCopy}
|
|
466
|
-
className="
|
|
467
|
-
title="Copy to clipboard"
|
|
473
|
+
className="p-1.5 text-theme-text-tertiary hover:text-theme-text-primary hover:bg-theme-base rounded transition-colors"
|
|
468
474
|
>
|
|
469
475
|
{copied ? (
|
|
470
476
|
<Check className="w-4 h-4 text-green-400" />
|
|
@@ -472,6 +478,7 @@ function AuthenticationHelp({ image, registryType, onRetry }: AuthenticationHelp
|
|
|
472
478
|
<Copy className="w-4 h-4" />
|
|
473
479
|
)}
|
|
474
480
|
</button>
|
|
481
|
+
</Tooltip>
|
|
475
482
|
</div>
|
|
476
483
|
</div>
|
|
477
484
|
)}
|
|
@@ -709,11 +716,11 @@ function FileTreeNode({ node, depth, defaultExpanded = true, image, namespace, p
|
|
|
709
716
|
)}
|
|
710
717
|
|
|
711
718
|
{isFile && (
|
|
719
|
+
<Tooltip content="Download file" wrapperClassName="ml-1">
|
|
712
720
|
<button
|
|
713
721
|
onClick={handleDownload}
|
|
714
722
|
disabled={downloading}
|
|
715
|
-
className="p-1 text-theme-text-tertiary hover:text-blue-400 hover:bg-theme-elevated rounded
|
|
716
|
-
title="Download file"
|
|
723
|
+
className="p-1 text-theme-text-tertiary hover:text-blue-400 hover:bg-theme-elevated rounded disabled:opacity-50 disabled:pointer-events-none"
|
|
717
724
|
>
|
|
718
725
|
{downloading ? (
|
|
719
726
|
<Loader2 className="w-3.5 h-3.5 animate-spin" />
|
|
@@ -721,6 +728,7 @@ function FileTreeNode({ node, depth, defaultExpanded = true, image, namespace, p
|
|
|
721
728
|
<Download className="w-3.5 h-3.5" />
|
|
722
729
|
)}
|
|
723
730
|
</button>
|
|
731
|
+
</Tooltip>
|
|
724
732
|
)}
|
|
725
733
|
</div>
|
|
726
734
|
|
|
@@ -7,6 +7,7 @@ import type { FileNode } from '../../types'
|
|
|
7
7
|
import { formatBytes } from '../../utils/format'
|
|
8
8
|
import { downloadBlob, filterTree } from './file-browser-utils'
|
|
9
9
|
import { apiUrl, getAuthHeaders, getCredentialsMode } from '../../api/config'
|
|
10
|
+
import { Tooltip } from '../ui/Tooltip'
|
|
10
11
|
|
|
11
12
|
interface PodFilesystem {
|
|
12
13
|
root: FileNode
|
|
@@ -384,11 +385,11 @@ function PodFileTreeNode({ node, namespace, podName, container, onNavigate }: Po
|
|
|
384
385
|
)}
|
|
385
386
|
|
|
386
387
|
{isDownloadable && (
|
|
388
|
+
<Tooltip content="Download file" wrapperClassName="ml-1">
|
|
387
389
|
<button
|
|
388
390
|
onClick={handleDownload}
|
|
389
391
|
disabled={downloading}
|
|
390
|
-
className="p-1 text-theme-text-tertiary hover:text-blue-400 hover:bg-theme-elevated rounded
|
|
391
|
-
title="Download file"
|
|
392
|
+
className="p-1 text-theme-text-tertiary hover:text-blue-400 hover:bg-theme-elevated rounded disabled:opacity-50 disabled:pointer-events-none"
|
|
392
393
|
>
|
|
393
394
|
{downloading ? (
|
|
394
395
|
<Loader2 className="w-3.5 h-3.5 animate-spin" />
|
|
@@ -396,6 +397,7 @@ function PodFileTreeNode({ node, namespace, podName, container, onNavigate }: Po
|
|
|
396
397
|
<Download className="w-3.5 h-3.5" />
|
|
397
398
|
)}
|
|
398
399
|
</button>
|
|
400
|
+
</Tooltip>
|
|
399
401
|
)}
|
|
400
402
|
</div>
|
|
401
403
|
)
|