A Kubernetes web UI that is fully-featured, user-friendly and extensible
This report summarizes scanner evidence for kubernetes-sigs/headlamp, a TypeScript project with 7,544 GitHub stars. SynthScan examined 802,935 lines of code across 2336 source files, recording 564 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 0.9 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 538 finding(s).
Are imports declared and package/API names verified? 21 finding(s).
Are wrappers, guards, and repeated structures necessary? 250 finding(s).
Which changes need focused human review? 564 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 564 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/releaser/src/utils/github.ts | 1000 | function displayExtendedAssetsResults(results: ExtendedAssetsStatus, version: string): void { | CODE |
| LOW | tools/releaser/src/utils/security.ts | 23 | export function checkBackendVulnerabilities(): SecurityCheckResult { | CODE |
| LOW | app/e2e-tests/tests/backendToken.spec.ts | 72 | function setupCertificateBackedCluster(): void { | CODE |
| LOW | app/scripts/package-verification-name.ts | 69 | function derivePackageVerificationName( | CODE |
| LOW | app/scripts/setup-plugins.ts | 443 | export async function recordBundledPluginExecutableIntegrity( | CODE |
| LOW | app/scripts/setup-plugins.ts | 649 | export function resolveLocalPluginArchive(manifestFile: string, source: string): string { | CODE |
| LOW | app/scripts/setup-plugins.ts | 670 | function copyArchiveToPrivateDirectory(source: string): { archivePath: string; directory: string } { | CODE |
| LOW | app/scripts/setup-plugins.ts | 705 | export function bundledPluginExecutablePaths(buildManifest: BuildManifest): Map<string, string[]> { | CODE |
| LOW | app/scripts/build-manifest.ts | 462 | function warnAboutArtifactHubUuidPins(manifest: BuildManifest): void { | CODE |
| LOW | app/scripts/build-manifest.ts | 499 | export function productPluginCommandPolicies( | CODE |
| LOW | app/electron/legal-documents.ts | 98 | export function getLegalDocumentsResourcePath( | CODE |
| LOW | app/electron/developmentPlugins.ts | 39 | export function confirmEnableDevelopmentPlugins(mainWindow: BrowserWindow): boolean { | CODE |
| LOW | app/electron/developmentPlugins.ts | 71 | export function setupDevelopmentPluginsHandlers( | CODE |
| LOW | app/electron/secureStorage.ts | 424 | export function createSecureStorageCapabilities(namespaces: unknown): SecureStorageCapabilities { | CODE |
| LOW | app/electron/secureStorage.ts | 453 | export function setupSecureStorageHandlers( | CODE |
| LOW | app/electron/main.ts | 998 | function getAcceleratorForPlatform(navigation: 'left' | 'right') { | CODE |
| LOW | app/electron/main.ts | 2096 | function attachServerEventHandlers(startedServerProcess: ChildProcessWithoutNullStreams) { | CODE |
| LOW | app/electron/plugin-management.ts | 363 | function readPluginInstallationReceipts(receiptFile: string): PluginInstallationReceipt[] { | CODE |
| LOW | app/electron/plugin-management.ts | 393 | function writePluginInstallationReceipts( | CODE |
| LOW | app/electron/plugin-management.ts | 421 | export function readPluginInstallationReceipt( | CODE |
| LOW | app/electron/plugin-management.ts | 452 | export async function recordPluginInstallationIntegrity( | CODE |
| LOW | app/electron/plugin-management.ts | 494 | export async function verifyPluginInstallationIntegrity( | CODE |
| LOW | app/electron/plugin-management.ts | 515 | function removePluginInstallationReceipt( | CODE |
| LOW | app/electron/plugin-management.ts | 591 | export function removePreparedPluginScript( | CODE |
| LOW | app/electron/plugin-management.ts | 639 | export async function recordPluginExecutableIntegrity( | CODE |
| LOW | app/electron/plugin-management.ts | 664 | export async function verifyPluginExecutableIntegrity( | CODE |
| LOW | app/electron/plugin-management.ts | 738 | export function removePreparedPluginExecutable( | CODE |
| LOW | app/electron/plugin-management.ts | 1366 | async function downloadAndExtractSingleArchive( | CODE |
| LOW | app/electron/settings.ts | 58 | export function areDevelopmentPluginsEnabled(settingsPath: string = SETTINGS_PATH): boolean { | CODE |
| LOW | app/electron/settings.ts | 68 | export function setDevelopmentPluginsEnabled( | CODE |
| LOW | app/electron/runCmd.ts | 283 | export async function verifyPluginCommandPolicies( | CODE |
| LOW | app/electron/runCmd.ts | 795 | export function createProductCommandCapabilities( | CODE |
| LOW | app/electron/backendMemory.ts | 24 | export function withBackendMemoryDefaults(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv { | CODE |
| LOW | app/electron/runtimeProductIdentity.ts | 43 | export function resolveRuntimeBuildManifestPath( | CODE |
| LOW | app/electron/runtimeProductIdentity.ts | 77 | export function applyRuntimeProductIdentity( | CODE |
| LOW | app/electron/cluster-registration.ts | 169 | export function isClusterRegistrationRequest(data: unknown): data is ClusterRegistrationRequest { | CODE |
| LOW | app/electron/cluster-registration.ts | 189 | export function isAzureClusterRegistrationOptions( | CODE |
| LOW | app/electron/cluster-registration.ts | 219 | async function executeCommandWithShellEnvironment( | CODE |
| LOW | app/electron/cluster-registration.ts | 268 | export function resolveClusterRegistrationRuntime( | CODE |
| LOW | app/electron/cluster-registration.ts | 334 | function addAzKubeloginToKubeconfig( | CODE |
| LOW | app/electron/cluster-registration.ts | 589 | export function validateGeneratedKubeconfig(kubeconfigYaml: string): void { | CODE |
| LOW | app/electron/cluster-registration.ts | 675 | export function enforcePrivateFilePermissions( | CODE |
| LOW | app/electron/cluster-registration.ts | 700 | export function enforcePrivateDirectoryPermissions( | CODE |
| LOW | app/electron/cluster-registration.ts | 767 | function resolveKubeconfigDestination(kubeconfigPath: string): string { | CODE |
| LOW | app/electron/cluster-registration.ts | 810 | export function writeKubeconfigAtomically( | CODE |
| LOW | app/electron/cluster-registration.ts | 861 | export async function mergeKubeconfigTransaction( | CODE |
| LOW | app/electron/cluster-registration.ts | 1139 | export function setupClusterRegistrationHandler( | CODE |
| LOW | app/electron/hardwareAcceleration.ts | 128 | export function waitForWindowsVMDetection( | CODE |
| LOW | app/electron/plugin-management.test.ts | 643 | async function createMinimalPluginTarball(testDataDir: string) { | CODE |
| LOW | app/electron/plugin-management.test.ts | 695 | async function createPlatformSpecificTarball(testDataDir: string) { | CODE |
| LOW | app/electron/plugin-management.test.ts | 814 | function mockArtifactHubAPIWithoutPlatformSpecific(testDataDir: string) { | CODE |
| LOW | app/electron/backendToken.ts | 29 | export function observeInternalBackendReady( | CODE |
| LOW | app/electron/mcp/MCPSettings.ts | 183 | export function makeMcpServersFromSettings( | CODE |
| LOW | app/electron/mcp/MCPSettings.ts | 351 | export function hasClusterDependentServers(settingsPath: string): boolean { | CODE |
| LOW | app/electron/mcp/MCPToolStateStore.ts | 70 | export function summarizeMcpToolStateChanges( | CODE |
| LOW | app/electron/mcp/MCPToolStateStore.ts | 692 | export async function showToolsConfigConfirmationDialog( | CODE |
| LOW | frontend/src/test/storybookBaseMocks.testHelper.ts | 85 | export function appsWorkloadCollectionUrl( | CODE |
| LOW | frontend/src/plugin/secureStorage.ts | 97 | export function getPluginSecureStorageNamespace( | CODE |
| LOW | frontend/src/plugin/secureStorage.ts | 123 | export function createPluginSecureStorage( | CODE |
| LOW | frontend/src/plugin/clusterRegistration.ts | 59 | export function getClusterRegistrationArgValues( | CODE |
| 185 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | app/scripts/verify-build-mac.sh | 110 | # Check if there's a mac directory with the app bundle | COMMENT |
| LOW | plugins/update-deps.sh | 15 | # Check if tree is dirty | COMMENT |
| LOW | plugins/update-deps.sh | 22 | # Check if the plugin exists | COMMENT |
| LOW | charts/headlamp/tests/update-version.sh | 31 | # Check if versions need updating and update the expected template if needed | COMMENT |
| LOW | charts/headlamp/tests/update-version.sh | 39 | # Check if versions need updating | COMMENT |
| LOW | charts/headlamp/tests/test.sh | 110 | # Check if TEST_CASES_DIR is not empty | COMMENT |
| LOW | charts/headlamp/tests/test.sh | 118 | # Check if expected template exists for the current test case | COMMENT |
| LOW | …emplates/readonly-root-filesystem-plugins-inherit.yaml | 132 | # Check if externalSecret is disabled | COMMENT |
| LOW | …pected_templates/oidc-external-secret-with-scopes.yaml | 101 | # Check if externalSecret is enabled | COMMENT |
| LOW | …tests/expected_templates/readonly-root-filesystem.yaml | 117 | # Check if externalSecret is disabled | COMMENT |
| LOW | …mp/tests/expected_templates/ingress-multi-backend.yaml | 120 | # Check if externalSecret is disabled | COMMENT |
| LOW | …lamp/tests/expected_templates/service-extra-ports.yaml | 126 | # Check if externalSecret is disabled | COMMENT |
| LOW | …ests/expected_templates/cluster-inventory-plugins.yaml | 134 | # Check if externalSecret is disabled | COMMENT |
| LOW | …eadlamp/tests/expected_templates/me-user-info-url.yaml | 122 | # Check if externalSecret is disabled | COMMENT |
| LOW | charts/headlamp/tests/expected_templates/tls-added.yaml | 116 | # Check if externalSecret is disabled | COMMENT |
| LOW | …ests/expected_templates/me-user-info-url-directly.yaml | 118 | # Check if externalSecret is disabled | COMMENT |
| LOW | …/headlamp/tests/expected_templates/pod-disruption.yaml | 136 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …adlamp/tests/expected_templates/oidc-directly-env.yaml | 124 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …adlamp/tests/expected_templates/oidc-directly-env.yaml | 125 | # Check if clientID is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …adlamp/tests/expected_templates/oidc-directly-env.yaml | 127 | # Check if clientSecret is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …adlamp/tests/expected_templates/oidc-directly-env.yaml | 129 | # Check if issuerURL is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …adlamp/tests/expected_templates/oidc-directly-env.yaml | 131 | # Check if scopes are non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …sts/expected_templates/azure-oidc-with-validators.yaml | 119 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …sts/expected_templates/azure-oidc-with-validators.yaml | 120 | # Check if clientID is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …sts/expected_templates/azure-oidc-with-validators.yaml | 122 | # Check if clientSecret is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …sts/expected_templates/azure-oidc-with-validators.yaml | 124 | # Check if issuerURL is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …sts/expected_templates/azure-oidc-with-validators.yaml | 126 | # Check if scopes are non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …sts/expected_templates/azure-oidc-with-validators.yaml | 128 | # Check if validatorClientID is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …sts/expected_templates/azure-oidc-with-validators.yaml | 130 | # Check if validatorIssuerURL is non empty either from env or oidc.config | COMMENT |
| LOW | …ts/headlamp/tests/expected_templates/host-aliases.yaml | 116 | # Check if externalSecret is disabled | COMMENT |
| LOW | …plates/readonly-root-filesystem-custom-tmp-volume.yaml | 117 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …/headlamp/tests/expected_templates/non-azure-oidc.yaml | 115 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …/headlamp/tests/expected_templates/non-azure-oidc.yaml | 116 | # Check if clientID is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …/headlamp/tests/expected_templates/non-azure-oidc.yaml | 118 | # Check if clientSecret is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …/headlamp/tests/expected_templates/non-azure-oidc.yaml | 120 | # Check if issuerURL is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …/headlamp/tests/expected_templates/non-azure-oidc.yaml | 122 | # Check if scopes are non empty either from env or oidc.config | COMMENT |
| LOW | …lates/topology-spread-constraints-custom-selector.yaml | 116 | # Check if externalSecret is disabled | COMMENT |
| LOW | …p/tests/expected_templates/disable-static-plugins.yaml | 118 | # Check if externalSecret is disabled | COMMENT |
| LOW | …ed_templates/service-account-token-out-of-cluster.yaml | 114 | # Check if externalSecret is disabled | COMMENT |
| LOW | …adlamp/tests/expected_templates/httproute-enabled.yaml | 116 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …dlamp/tests/expected_templates/oidc-create-secret.yaml | 140 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …dlamp/tests/expected_templates/oidc-create-secret.yaml | 141 | # Check if clientID is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …dlamp/tests/expected_templates/oidc-create-secret.yaml | 143 | # Check if clientSecret is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …dlamp/tests/expected_templates/oidc-create-secret.yaml | 145 | # Check if issuerURL is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …dlamp/tests/expected_templates/oidc-create-secret.yaml | 147 | # Check if scopes are non empty either from env or oidc.config | COMMENT |
| LOW | …ted_templates/readonly-root-filesystem-custom-tmp.yaml | 117 | # Check if externalSecret is disabled | COMMENT |
| LOW | …mp/tests/expected_templates/service-account-token.yaml | 117 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …s/headlamp/tests/expected_templates/oidc-directly.yaml | 115 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …s/headlamp/tests/expected_templates/oidc-directly.yaml | 116 | # Check if clientID is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …s/headlamp/tests/expected_templates/oidc-directly.yaml | 118 | # Check if clientSecret is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …s/headlamp/tests/expected_templates/oidc-directly.yaml | 120 | # Check if issuerURL is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …s/headlamp/tests/expected_templates/oidc-directly.yaml | 122 | # Check if scopes are non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …headlamp/tests/expected_templates/oidc-auto-login.yaml | 142 | # Check if externalSecret is disabled | COMMENT |
| LOW⚡ | …headlamp/tests/expected_templates/oidc-auto-login.yaml | 143 | # Check if clientID is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …headlamp/tests/expected_templates/oidc-auto-login.yaml | 145 | # Check if clientSecret is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …headlamp/tests/expected_templates/oidc-auto-login.yaml | 147 | # Check if issuerURL is non empty either from env or oidc.config | COMMENT |
| LOW⚡ | …headlamp/tests/expected_templates/oidc-auto-login.yaml | 149 | # Check if scopes are non empty either from env or oidc.config | COMMENT |
| LOW | …lamp/tests/expected_templates/service-appprotocol.yaml | 117 | # Check if externalSecret is disabled | COMMENT |
| LOW | …ts/expected_templates/topology-spread-constraints.yaml | 116 | # Check if externalSecret is disabled | COMMENT |
| LOW | …s/headlamp/tests/expected_templates/volumes-added.yaml | 116 | # Check if externalSecret is disabled | COMMENT |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/scripts/verify-build-mac.sh | 95 | # Step 1: Verify DMG exists | COMMENT |
| LOW⚡ | app/scripts/verify-build-mac.sh | 107 | # Step 2: Verify app bundle, backend binary, and Electron app | COMMENT |
| LOW | app/scripts/verify-build-linux.sh | 31 | # Step 1: Verify artifacts exist | COMMENT |
| LOW | app/scripts/verify-build-linux.sh | 43 | # Step 2: Extract and verify backend binary | COMMENT |
| LOW | app/scripts/verify-build-linux.sh | 81 | # Step 3: Verify Electron app can run | COMMENT |
| LOW | app/scripts/verify-build-linux.sh | 133 | # Step 4: Verify headlamp-server is cleaned up when app closes | COMMENT |
| LOW | app/electron/cluster-registration.ts | 919 | // Step 1: Get the kubeconfig to a temporary file | COMMENT |
| LOW | app/electron/cluster-registration.ts | 999 | // Step 2: Read and modify the temporary kubeconfig | COMMENT |
| LOW | app/electron/cluster-registration.ts | 1011 | // Step 3: Merge into main kubeconfig | COMMENT |
| LOW⚡ | …rc/components/App/Settings/SettingsCluster.stories.tsx | 269 | // Step 1: Click "Choose Color" to open the ColorPicker dialog | COMMENT |
| LOW⚡ | …rc/components/App/Settings/SettingsCluster.stories.tsx | 273 | // Step 2: Enable custom color mode by checking the checkbox | COMMENT |
| LOW⚡ | …rc/components/App/Settings/SettingsCluster.stories.tsx | 277 | // Step 3: Type an invalid color to trigger inline validation error | COMMENT |
| LOW⚡ | docs/learn/holmesgpt.md | 32 | ### Step 1: Install and enable the AI Assistant plugin | COMMENT |
| LOW⚡ | docs/learn/holmesgpt.md | 40 | ### Step 2: Configure an AI provider | COMMENT |
| LOW⚡ | docs/learn/holmesgpt.md | 50 | ### Step 3: Confirm the AI Assistant works before adding HolmesGPT | COMMENT |
| LOW⚡ | docs/learn/holmesgpt.md | 60 | ### Step 1: Add the Robusta Helm repository | COMMENT |
| LOW⚡ | docs/learn/holmesgpt.md | 69 | ### Step 2: Create a values file | COMMENT |
| LOW | docs/learn/holmesgpt.md | 93 | ### Step 3: Render the manifest and enable the AG UI server | COMMENT |
| LOW | docs/learn/holmesgpt.md | 109 | ### Step 4: Apply the rendered manifest | COMMENT |
| LOW | docs/development/plugins/publishing.md | 14 | ## Step 1: Create an ArtifactHub repository file | COMMENT |
| LOW | docs/development/plugins/publishing.md | 26 | ## Step 2: Build and Release Your Plugin on GitHub | COMMENT |
| LOW | docs/development/plugins/publishing.md | 50 | ## Step 3: Create an ArtifactHub package for the plugin | COMMENT |
| LOW | docs/development/plugins/publishing.md | 70 | ## Step 4: Push Changes to GitHub | COMMENT |
| LOW | docs/development/plugins/publishing.md | 80 | ## Step 5: Register your repository in Artifact Hub | COMMENT |
| LOW | docs/development/plugins/getting-started.md | 37 | ### Step 1: Create the Plugin | COMMENT |
| LOW | docs/development/plugins/getting-started.md | 54 | ### Step 2: Understand the Plugin Structure | COMMENT |
| LOW | docs/development/plugins/getting-started.md | 68 | ### Step 3: Examine the Default Code | COMMENT |
| LOW | docs/development/plugins/getting-started.md | 84 | ### Step 4: Start Development Mode | COMMENT |
| LOW | docs/development/plugins/getting-started.md | 100 | ### Step 5: See Your Plugin in Action | COMMENT |
| LOW | docs/development/plugins/getting-started.md | 108 | ### Step 6: Make Your First Change | COMMENT |
| LOW | docs/installation/in-cluster/aks-cluster-oauth/index.md | 17 | ## Step 1: Set Up AKS Cluster with OIDC Enabled | COMMENT |
| LOW | docs/installation/in-cluster/aks-cluster-oauth/index.md | 39 | ## Step 2: Create an Azure App Registration | COMMENT |
| LOW⚡ | docs/installation/in-cluster/aks-cluster-oauth/index.md | 65 | ## Step 3: Configure API Permissions for OAuth2Proxy | COMMENT |
| LOW⚡ | docs/installation/in-cluster/aks-cluster-oauth/index.md | 74 | ## Step 4: Create a Client Secret for OAuth2Proxy | COMMENT |
| LOW⚡ | docs/installation/in-cluster/aks-cluster-oauth/index.md | 81 | ## Step 5: Deploy Headlamp to AKS | COMMENT |
| LOW | docs/installation/in-cluster/aks-cluster-oauth/index.md | 114 | ## Step 6: Deploy OAuth2Proxy via Helm | COMMENT |
| LOW | docs/installation/in-cluster/aks-cluster-oauth/index.md | 171 | ## Step 7: Set Kubernetes RBAC Policies Based on Azure Entra Groups | COMMENT |
| LOW | docs/installation/in-cluster/aks-cluster-oauth/index.md | 195 | ## Step 8: Login Flow | COMMENT |
| LOW | docs/installation/in-cluster/aks-cluster-oauth/index.md | 209 | ## Step 9: Test Authentication Flow | COMMENT |
| LOW | …nt/getting-started/creating-your-first-plugin/index.md | 114 | ### Step 1: Choose a Location | COMMENT |
| LOW | …nt/getting-started/creating-your-first-plugin/index.md | 126 | ### Step 2: Create the Plugin | COMMENT |
| LOW | …nt/getting-started/creating-your-first-plugin/index.md | 278 | ### Step 1: Look for "Hello" in the App Bar | COMMENT |
| LOW | …nt/getting-started/creating-your-first-plugin/index.md | 284 | ### Step 2: View Your Plugin in Settings | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 72 | ### Step 1: Create a Page Component | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 113 | ### Step 2: Navigate Manually | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 136 | ### Step 1: Modify the Hello Button | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 186 | ### Step 2: Test It | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 219 | ### Step 1: Register a Sidebar Entry | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 299 | ### Step 2: See It in Action | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 321 | ### Step 1: Update the Sidebar Entry | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 335 | ### Step 2: See the Icon | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 350 | ### Step 1: Update Your Plugin | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 426 | ### Step 2: See the Hierarchy | COMMENT |
| LOW | …g-started/adding-pages-and-sidebar-navigation/index.md | 508 | ### Step 2: Test It | COMMENT |
| LOW | …opment/getting-started/applying-custom-themes/index.md | 262 | ### Step 1: Import `useTheme` | COMMENT |
| LOW | …opment/getting-started/applying-custom-themes/index.md | 271 | ### Step 2: Create the `ContainerImagesCell` Component | COMMENT |
| LOW | …opment/getting-started/applying-custom-themes/index.md | 303 | ### Step 3: Update the Column Registration | COMMENT |
| LOW | …opment/getting-started/applying-custom-themes/index.md | 326 | ### Step 4: Test It | COMMENT |
| LOW | …pment/getting-started/adding-custom-map-nodes/index.md | 79 | ### Step 1: Update `src/index.tsx` | COMMENT |
| LOW | …pment/getting-started/adding-custom-map-nodes/index.md | 123 | ### Step 2: Open the Map view | COMMENT |
| 26 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/helm-chart-package.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tools/helm-chart-package.sh | 21 | # the working tree is left clean even on failure. | COMMENT |
| LOW | tools/releaser/README.md | 41 | COMMENT | |
| LOW | app/scripts/verify-build-mac.sh | 1 | #!/bin/bash | COMMENT |
| LOW | app/scripts/verify-build-linux.sh | 1 | #!/bin/bash | COMMENT |
| LOW | frontend/src/setupTests.ts | 21 | COMMENT | |
| LOW | frontend/src/components/common/Resource/index.test.ts | 101 | }); | COMMENT |
| LOW | frontend/src/components/resourceMap/GraphView.tsx | 241 | // Apply filters BEFORE simplification to ensure accuracy. | COMMENT |
| LOW | frontend/src/redux/shortcutsSlice.ts | 41 | // t('Global Search') | COMMENT |
| LOW | plugins/headlamp-plugin/template/src/index.tsx | 21 | // import { Headlamp, K8s, useTranslation } from '@kinvolk/headlamp-plugin/lib'; | COMMENT |
| LOW | plugins/examples/projects/src/index.tsx | 161 | // Example of removing a default tab by setting component to undefined | COMMENT |
| LOW | plugins/examples/custom-theme/src/themes.ts | 61 | COMMENT | |
| LOW | charts/headlamp/values.yaml | 41 | COMMENT | |
| LOW | charts/headlamp/values.yaml | 61 | secret: | COMMENT |
| LOW | charts/headlamp/values.yaml | 101 | COMMENT | |
| LOW | charts/headlamp/values.yaml | 141 | # -- Default namespace to use when creating node shell pods. If empty, Headlamp uses its built-in default. | COMMENT |
| LOW | charts/headlamp/values.yaml | 161 | # command: /access-plugins/kubeconfig-secretreader/bin/kubeconfig-secretreader-plugin | COMMENT |
| LOW | charts/headlamp/values.yaml | 181 | # Extra arguments that can be given to the container. See charts/headlamp/README.md for more information. | COMMENT |
| LOW | charts/headlamp/values.yaml | 221 | # When true (default), the pod shares the host user namespace (user namespaces are DISABLED). | COMMENT |
| LOW | charts/headlamp/values.yaml | 241 | # the chart will skip creating the volume but will still add the /tmp mount | COMMENT |
| LOW | charts/headlamp/values.yaml | 281 | # defaults to `port` when omitted. `nodePort` is only honored when | COMMENT |
| LOW | charts/headlamp/values.yaml | 321 | # kubernetes.io/tls-acme: "true" | COMMENT |
| LOW | charts/headlamp/values.yaml | 341 | # - path: / | COMMENT |
| LOW | charts/headlamp/values.yaml | 361 | annotations: {} | COMMENT |
| LOW | charts/headlamp/values.yaml | 381 | # - path: | COMMENT |
| LOW | charts/headlamp/values.yaml | 421 | # - maxSkew: 1 | COMMENT |
| LOW | charts/headlamp/values.yaml | 461 | enabled: false | COMMENT |
| LOW | charts/headlamp/values.yaml | 481 | # limits: | COMMENT |
| LOW | charts/headlamp/values.yaml | 501 | podDisruptionBudget: | COMMENT |
| LOW | charts/headlamp/values.yaml | 521 | COMMENT | |
| LOW | backend/cmd/multiplexer.go | 921 | return m.sendDataMessage(conn, clientConn, messageType, message) | COMMENT |
| LOW | backend/cmd/multiplexer.go | 961 | // | COMMENT |
| LOW | backend/cmd/oidc_handlers_test.go | 21 | // regression net for the OIDC login flow consolidation tracked in | COMMENT |
| LOW | backend/cmd/oidc_handlers_test.go | 41 | // "invalid request". | COMMENT |
| LOW | backend/cmd/oidc_handlers_test.go | 381 | "replaying a consumed state should fail") | COMMENT |
| LOW | backend/pkg/auth/broadcast.go | 61 | COMMENT | |
| LOW | backend/pkg/auth/broadcast.go | 81 | // (e.g. a resource/API identifier on Okta, Entra ID, Auth0). A matching | COMMENT |
| LOW | backend/pkg/auth/broadcast.go | 201 | // | COMMENT |
| LOW | backend/pkg/k8cache/responseCapture_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/authorization_internal_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/context_cleanup_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/concurrency_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/cacheInvalidation_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/cacheInvalidation_internal_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/cacheStore_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/cacheStore_bench_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/eviction_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/responseCapture.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/key.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/cacheInvalidation.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/context_cleanup.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/authorization_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/authorization.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/cacheStore.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/cacheStore.go | 181 | return s | COMMENT |
| LOW | backend/pkg/k8cache/testing_reset.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/k8cache/authErrResp_test.go | 1 | // Copyright 2025 The Kubernetes Authors. | COMMENT |
| LOW | backend/pkg/spa/pathSafety.go | 1 | package spa | COMMENT |
| LOW | backend/pkg/exec/testdata/test-plugin.sh | 1 | #!/bin/bash -e | COMMENT |
| LOW | backend/pkg/clusterinventory/clusterinventory.go | 81 | Store kubeconfig.ContextStore | COMMENT |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/src/components/App/Settings/PodDebugSettings.test.tsx | 74 | 'placeholder', | CODE |
| LOW | …/src/components/App/Settings/PodDebugSettings.test.tsx | 84 | expect(screen.getByRole('textbox')).toHaveAttribute('placeholder', DEFAULT_POD_DEBUG_IMAGE); | CODE |
| LOW⚡ | frontend/src/components/common/SimpleTable.stories.tsx | 88 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/SimpleTable.stories.tsx | 88 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/SimpleTable.stories.tsx | 96 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/SimpleTable.stories.tsx | 96 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/SimpleTable.stories.tsx | 104 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/SimpleTable.stories.tsx | 104 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/Table/Table.stories.tsx | 94 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/Table/Table.stories.tsx | 94 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/Table/Table.stories.tsx | 102 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/Table/Table.stories.tsx | 102 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/Table/Table.stories.tsx | 110 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | frontend/src/components/common/Table/Table.stories.tsx | 110 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW | backend/pkg/auth/middleware_test.go | 61 | testToken := "fake-token-for-testing" | CODE |
| LOW | docs/installation/in-cluster/dex/index.md | 114 | - email: "admin@example.com" | CODE |
| LOW | …stallation/in-cluster/dex/test-scripts/dex-config.yaml | 40 | - email: "admin@example.com" | CODE |
| LOW | …cs/tutorials/plugin-development/whoami-plugin/index.md | 270 | "username": "user@example.com", | CODE |
| LOW | e2e-tests/tests/dexOauth2Proxy.spec.ts | 59 | const DEX_USER = process.env.HEADLAMP_TEST_DEX_USER || 'admin@example.com'; | CODE |
| LOW | load-tests/scripts/create-events.js | 11 | message: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore | CODE |
| LOW | load-tests/scripts/create-events.js | 11 | message: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/scripts/verify-build-mac.sh | 95 | # Step 1: Verify DMG exists | COMMENT |
| LOW⚡ | app/scripts/verify-build-mac.sh | 107 | # Step 2: Verify app bundle, backend binary, and Electron app | COMMENT |
| LOW | app/scripts/verify-build-linux.sh | 31 | # Step 1: Verify artifacts exist | COMMENT |
| LOW | app/scripts/verify-build-linux.sh | 43 | # Step 2: Extract and verify backend binary | COMMENT |
| LOW | app/scripts/verify-build-linux.sh | 81 | # Step 3: Verify Electron app can run | COMMENT |
| LOW | app/scripts/verify-build-linux.sh | 133 | # Step 4: Verify headlamp-server is cleaned up when app closes | COMMENT |
| LOW | app/electron/cluster-registration.ts | 919 | // Step 1: Get the kubeconfig to a temporary file | COMMENT |
| LOW | app/electron/cluster-registration.ts | 999 | // Step 2: Read and modify the temporary kubeconfig | COMMENT |
| LOW | app/electron/cluster-registration.ts | 1011 | // Step 3: Merge into main kubeconfig | COMMENT |
| LOW⚡ | …rc/components/App/Settings/SettingsCluster.stories.tsx | 269 | // Step 1: Click "Choose Color" to open the ColorPicker dialog | COMMENT |
| LOW⚡ | …rc/components/App/Settings/SettingsCluster.stories.tsx | 273 | // Step 2: Enable custom color mode by checking the checkbox | COMMENT |
| LOW⚡ | …rc/components/App/Settings/SettingsCluster.stories.tsx | 277 | // Step 3: Type an invalid color to trigger inline validation error | COMMENT |
| LOW⚡ | e2e-tests/tests/dynamicCluster.spec.ts | 116 | // Step 1: Store kubeconfig in IndexedDB (simulates the user adding a cluster) | COMMENT |
| LOW⚡ | e2e-tests/tests/dynamicCluster.spec.ts | 119 | // Step 2: Reload to trigger stateless startup parsing flow. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …opment/getting-started/applying-custom-themes/index.md | 392 | // ── 1. Register a branded theme ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …opment/getting-started/applying-custom-themes/index.md | 414 | // ── 2. Replace the logo ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-started/extending-existing-resource-views/index.md | 549 | // ─── 1. Add Container Images column to the built-in Pods list ──────────────── | COMMENT |
| MEDIUM | …ing-started/extending-existing-resource-views/index.md | 578 | // ─── 2. Add Image Details action to the Pod detail header ──────────────────── | COMMENT |
| MEDIUM | …ing-started/extending-existing-resource-views/index.md | 625 | // ─── 3. Add Container Resources section to the Pod detail page ─────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/docker-extension-release.yml | 125 | # Creating the PR fails while the repository does not allow GitHub | COMMENT |
| MEDIUM | .github/workflows/push-release-assets.yml | 79 | # Create a subdirectory for this run | COMMENT |
| MEDIUM | .github/workflows/push-release-assets.yml | 257 | # Create the command with all artifact paths | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …omponents/advancedSearch/utils/searchWithQuery.test.ts | 109 | // A more robust test might need > batchSize items or different function structure. | COMMENT |
| MEDIUM | plugins/update-deps.sh | 47 | # Use a more robust sed pattern that accounts for potential spacing variations | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/public/mockServiceWorker.js | 118 | async function handleRequest(event, requestId) { | CODE |
| LOW | frontend/src/components/cluster/Charts/StatusCharts.tsx | 65 | function getData() { | CODE |
| LOW | frontend/src/components/cluster/Charts/StatusCharts.tsx | 224 | function getData() { | CODE |
| LOW | …p-plugin/config/.storybook/public/mockServiceWorker.js | 118 | async function handleRequest(event, requestId) { | CODE |