:lollipop: Frontend for Home Assistant
This report summarizes scanner evidence for home-assistant/frontend, a TypeScript project with 5,773 GitHub stars. SynthScan examined 720,647 lines of code across 3529 source files, recording 254 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 0.4 (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? 84 finding(s).
Are imports declared and package/API names verified? 159 finding(s).
Are wrappers, guards, and repeated structures necessary? 65 finding(s).
Which changes need focused human review? 254 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 254 distinct pattern matches across 7 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 | demo/src/ha-demo.ts | 5 | import type { MockHomeAssistant } from "../../src/fake_data/provide_hass"; | CODE |
| LOW | demo/src/ha-demo.ts | 6 | import { provideHass } from "../../src/fake_data/provide_hass"; | CODE |
| LOW | demo/src/custom-cards/ha-demo-card.ts | 10 | import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | demo/src/custom-cards/ha-demo-next-card.ts | 12 | import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | demo/src/configs/demo-configs.ts | 4 | import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | demo/src/configs/demo-configs.ts | 12 | import type { EntityInput } from "../../../src/fake_data/entities/types"; | CODE |
| LOW | demo/src/configs/types.ts | 5 | import type { EntityInput } from "../../../src/fake_data/entities/types"; | CODE |
| LOW | test/panels/home/ha-panel-home.test.ts | 2 | import { provideHass } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/panels/marketplace/warning.test.ts | 4 | import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/panels/marketplace/warning.test.ts | 5 | import { provideHass } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/panels/marketplace/dialog-host.ts | 2 | import { provideHass } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/panels/marketplace/discover.test.ts | 6 | import { provideHass } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/panels/marketplace/my-redirect.test.ts | 6 | import { provideHass } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/panels/marketplace/dashboard.test.ts | 3 | import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/panels/marketplace/dashboard.test.ts | 4 | import { provideHass } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/panels/marketplace/repository-dashboard.test.ts | 10 | import { provideHass } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/panels/marketplace/custom-repositories.test.ts | 8 | import { provideHass } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | …st/panels/lovelace/cards/hui-date-card-helpers.test.ts | 15 | import { demoConfig } from "../../../../src/fake_data/demo_config"; | CODE |
| LOW | test/fake_data/entities/media-player-entity.test.ts | 3 | import { MockMediaPlayerEntity } from "../../../src/fake_data/entities/media-player-entity"; | CODE |
| LOW | test/common/datetime/format_date.test.ts | 22 | import { demoConfig } from "../../../src/fake_data/demo_config"; | CODE |
| LOW | test/common/datetime/format_date_time.test.ts | 17 | import { demoConfig } from "../../../src/fake_data/demo_config"; | CODE |
| LOW | test/common/datetime/format_time.test.ts | 17 | import { demoConfig } from "../../../src/fake_data/demo_config"; | CODE |
| LOW | test/common/entity/compute_state_display.test.ts | 18 | import { demoConfig } from "../../../src/fake_data/demo_config"; | CODE |
| LOW | test/common/entity/value_parts.test.ts | 16 | import { demoConfig } from "../../../src/fake_data/demo_config"; | CODE |
| LOW | test/layouts/hass-tabs-subpage.test.ts | 3 | import { provideHass } from "../../src/fake_data/provide_hass"; | CODE |
| LOW | test/e2e/onboarding.spec.ts | 2 | import { demoConfig } from "../../src/fake_data/demo_config"; | CODE |
| LOW | test/e2e/app/src/onboarding.ts | 2 | import { demoConfig } from "../../../../src/fake_data/demo_config"; | CODE |
| LOW | test/e2e/app/src/onboarding.ts | 3 | import { demoPanels } from "../../../../src/fake_data/demo_panels"; | CODE |
| LOW | test/e2e/app/src/ha-test.ts | 4 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/e2e/app/src/ha-test.ts | 6 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/e2e/app/src/ha-test.ts | 45 | import { demoConfig } from "../../../../src/fake_data/demo_config"; | CODE |
| LOW | test/e2e/app/src/scenarios/index.ts | 19 | import type { MockHomeAssistant } from "../../../../../src/fake_data/provide_hass"; | CODE |
| LOW | test/data/demo-water-statistics.test.ts | 4 | import type { MockHomeAssistant } from "../../src/fake_data/provide_hass"; | CODE |
| LOW | cast/src/receiver/demo/cast-demo-entities.ts | 1 | import type { EntityInput } from "../../../../src/fake_data/entities/types"; | CODE |
| LOW | cast/src/receiver/layout/hc-demo.ts | 6 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | cast/src/receiver/layout/hc-demo.ts | 7 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/data/text.ts | 2 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc laoreet velit ut elit volutpat, eget ultrices odio lacinia | CODE |
| LOW | gallery/src/data/text.ts | 2 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc laoreet velit ut elit volutpat, eget ultrices odio lacinia | CODE |
| LOW | gallery/src/data/calendar.ts | 5 | import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/misc/integration-card.ts | 11 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/misc/ha-markdown.ts | 44 | > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer dictum quis ante eu eleifend. Integer sed [consectetu | CODE |
| LOW | gallery/src/pages/misc/ha-markdown.ts | 44 | > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer dictum quis ante eu eleifend. Integer sed [consectetu | CODE |
| LOW | gallery/src/pages/misc/cloud-account.ts | 19 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/misc/cloud-account.ts | 20 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/misc/entity-state.ts | 15 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/water-heater.ts | 7 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/water-heater.ts | 8 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/input-text.ts | 6 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/input-text.ts | 7 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/climate.ts | 6 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/climate.ts | 7 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/lock.ts | 6 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/lock.ts | 7 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/calendar.ts | 9 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/calendar.ts | 10 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/input-number.ts | 6 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/input-number.ts | 7 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/media-player.ts | 6 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/media-player.ts | 7 | import { provideHass } from "../../../../src/fake_data/provide_hass"; | CODE |
| LOW | gallery/src/pages/more-info/vacuum.ts | 6 | import type { MockHomeAssistant } from "../../../../src/fake_data/provide_hass"; | CODE |
| 99 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/e2e/app/src/helpers.ts | 97 | export async function ensureAppSidebarPanelVisible(page: Page, panel: string) { | CODE |
| LOW | test/e2e/gallery/helpers.ts | 50 | async function expectGalleryPageSelector(page: Page, selector: string) { | CODE |
| LOW | landing-page/src/data/supervisor.ts | 91 | export async function getSupervisorResolutionInfo(): Promise<HassioResolution> { | CODE |
| LOW | build-scripts/gulp/download-translations.js | 50 | function convertBackendTranslations(data, _file) { | CODE |
| LOW | …c/resources/echarts/components/sankey/sankey-layout.ts | 171 | function processEdgeForPassThrough( | CODE |
| LOW | …c/resources/echarts/components/sankey/sankey-layout.ts | 513 | function sectionHasMultipleParents( | CODE |
| LOW | …c/resources/echarts/components/sankey/sankey-layout.ts | 694 | export function calculateSectionDimensions( | CODE |
| LOW | …c/resources/echarts/components/sankey/sankey-layout.ts | 900 | function sortEdgesByTargetPosition( | CODE |
| LOW | …c/resources/echarts/components/sankey/sankey-layout.ts | 921 | function generatePassThroughPoints( | CODE |
| LOW | src/panels/calendar/recurrence.ts | 200 | export function getMonthlyRepeatWeekdayFromRule( | CODE |
| LOW | src/panels/calendar/recurrence.ts | 217 | export function getMonthdayRepeatFromRule( | CODE |
| LOW | …nfig/tools/debug/ha-debug-viewport-environment-card.ts | 90 | function collectMediaFeatureMatches(): Record<string, boolean> { | CODE |
| LOW | …nfig/tools/debug/ha-debug-viewport-environment-card.ts | 137 | function collectViewportEnvironmentSnapshot(): ViewportEnvironmentSnapshot { | CODE |
| LOW | …tions/integration-panels/matter/matter-network-data.ts | 170 | export function createMatterNetworkChartData( | CODE |
| LOW | …ntegrations/integration-panels/zha/zha-network-data.ts | 25 | export function createZHANetworkChartData( | CODE |
| LOW | src/panels/config/common/suggest-metadata-ai.ts | 219 | export async function processMetadataSuggestion( | CODE |
| LOW | …velace/dashboards/pick-available-dashboard-url-path.ts | 4 | export function pickAvailableDashboardUrlPath( | CODE |
| LOW | src/panels/lovelace/strategies/get-strategy.ts | 380 | async function readDashboardCreateSuggestions( | CODE |
| LOW | src/panels/lovelace/strategies/get-strategy.ts | 392 | export async function loadDashboardStrategyWithCreateSuggestions( | CODE |
| LOW | …anels/lovelace/cards/energy/energy-solar-graph-data.ts | 56 | export function generateEnergySolarGraphData( | CODE |
| LOW | …elace/cards/energy/energy-devices-detail-graph-data.ts | 344 | export function generateEnergyDevicesDetailGraphData( | CODE |
| LOW | …nels/lovelace/cards/energy/power-sources-graph-data.ts | 126 | export function generatePowerSourcesGraphData( | CODE |
| LOW | …/panels/lovelace/cards/energy/energy-gas-graph-data.ts | 48 | export function generateEnergyGasGraphData( | CODE |
| LOW | …s/lovelace/cards/energy/common/energy-chart-options.ts | 102 | function createYAxisLabelFormatter( | CODE |
| LOW | …s/lovelace/cards/energy/common/energy-chart-options.ts | 553 | export function splitUntrackedConsumption( | CODE |
| LOW | src/panels/lovelace/common/has-changed.ts | 53 | function compareEntityDisplayEntry( | CODE |
| LOW | src/panels/lovelace/common/has-changed.ts | 89 | export function hasConfigOrEntitiesChanged( | CODE |
| LOW | src/panels/lovelace/common/validate-condition.ts | 236 | function checkStateNumericCondition( | CODE |
| LOW | src/panels/lovelace/common/validate-condition.ts | 281 | function checkViewColumnsCondition( | CODE |
| LOW | src/panels/lovelace/common/validate-condition.ts | 550 | export function extractConditionEntityIds( | CODE |
| LOW | src/panels/lovelace/common/validate-condition.ts | 639 | function validateLocationCondition(condition: LocationCondition) { | CODE |
| LOW⚡ | src/panels/lovelace/common/validate-condition.ts | 667 | function validateAndCondition(condition: AndCondition) { | CODE |
| LOW⚡ | src/panels/lovelace/common/validate-condition.ts | 675 | function validateOrCondition(condition: OrCondition) { | CODE |
| LOW⚡ | src/panels/lovelace/common/validate-condition.ts | 679 | function validateViewColumnsCondition(condition: ViewColumnsCondition) { | CODE |
| LOW⚡ | src/panels/lovelace/common/validate-condition.ts | 683 | function validateNumericStateCondition(condition: NumericStateCondition) { | CODE |
| LOW⚡ | src/panels/lovelace/common/validate-condition.ts | 691 | export function validateConditionalConfig( | CODE |
| LOW | …ard-features/get-more-info-hint-card-feature-editor.ts | 3 | export async function getMoreInfoHintCardFeatureEditor(): Promise<LovelaceCardFeatureEditor> { | CODE |
| LOW | …panels/lovelace/views/sections-background-alignment.ts | 16 | export function computeSectionsBackgroundAlignment( | CODE |
| LOW | …-control/cover/ha-state-control-cover-tilt-position.ts | 25 | export function generateTiltSliderTrackBackgroundGradient() { | CODE |
| LOW | …/components/chart/state-history-chart-timeline-data.ts | 106 | export function downSampleTimelineSegments( | CODE |
| LOW | …/components/chart/state-history-chart-timeline-data.ts | 152 | export function generateStateHistoryChartTimelineData( | CODE |
| LOW | src/components/chart/timeline-color.ts | 23 | function computeTimelineStateColor( | CODE |
| LOW | src/components/chart/timeline-color.ts | 95 | function computeTimeLineGenericColor( | CODE |
| LOW | src/components/chart/state-history-chart-line-data.ts | 48 | export function generateStateHistoryChartLineData( | CODE |
| LOW | src/components/chart/axis-label.ts | 15 | export function getPeriodicAxisLabelConfig( | CODE |
| LOW | src/components/chart/statistics-chart-data.ts | 101 | export function generateStatisticsChartData( | CODE |
| LOW | src/components/chart/y-axis-fraction-digits.ts | 30 | export function computeYAxisFractionDigits( | CODE |
| LOW | src/components/chart/y-axis-fraction-digits.ts | 82 | export function createYAxisPrecisionBounds(options: { | CODE |
| LOW | src/common/condition/listeners.ts | 21 | function scheduleTimeBoundaryListener( | CODE |
| LOW | src/entrypoints/service-worker.ts | 279 | function notificationEventCallback(eventType, event) { | CODE |
| LOW | src/data/valve.ts | 78 | export function computeValvePositionStateDisplay( | CODE |
| LOW | src/data/energy.ts | 65 | export function validateEnergyCollectionKey(key: string | undefined) { | CODE |
| LOW | src/data/fan.ts | 123 | export function computeFanSpeedStateDisplay( | CODE |
| LOW | src/data/cover.ts | 116 | export function computeCoverPositionStateDisplay( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/e2e/helpers.ts | 6 | // ── Timeouts ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/helpers.ts | 19 | // ── Error filtering ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/app/src/smoke.ts | 15 | // ── Config dashboard links ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/app/src/smoke.ts | 44 | // ── More-info dialog views ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/app/src/smoke.ts | 89 | // ── Route smoke tests ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/app/src/scenarios/index.ts | 32 | // ── Individual scenarios ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/app/src/scenarios/index.ts | 510 | // ── Registry ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/e2e.yaml | 57 | # ── Build the demo once and share it across test jobs via artifact ────────── | COMMENT |
| MEDIUM | .github/workflows/e2e.yaml | 88 | # ── Build the e2e test app and share it via artifact ──────────────────────── | COMMENT |
| MEDIUM | .github/workflows/e2e.yaml | 119 | # ── Build the gallery and share it via artifact ───────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/e2e.yaml | 150 | # ── Run Playwright tests against Chromium ────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo/src/configs/teachingbirds/lovelace.ts | 241 | { | COMMENT |
| LOW | demo/src/configs/teachingbirds/lovelace.ts | 261 | // }, | COMMENT |
| LOW | demo/src/configs/teachingbirds/lovelace.ts | 661 | }, | COMMENT |
| LOW | demo/src/configs/teachingbirds/lovelace.ts | 741 | // }, | COMMENT |
| LOW | demo/src/configs/teachingbirds/lovelace.ts | 761 | // entity: "light.living_room_ceiling_light_level", | COMMENT |
| LOW | demo/src/configs/arsaboo/lovelace.ts | 381 | "font-family": "Helvetica", | COMMENT |
| LOW | demo/src/configs/kernehed/lovelace.ts | 161 | { | COMMENT |
| LOW | demo/src/configs/kernehed/lovelace.ts | 181 | // "sensor.fibaro_system_unknown_type0c02_id1003_temperature_2", | COMMENT |
| LOW | .github/labeler.yml | 1 | # Path rules for .github/workflows/labeler.yaml, which runs actions/labeler on | COMMENT |
| LOW | .github/move.yml | 1 | # Configuration for move-issues - https://github.com/dessant/move-issues | COMMENT |
| LOW | build-scripts/gulp/licenses.js | 21 | // license files and we must pick the right one for the bundled code). | COMMENT |
| LOW | src/resources/polyfills/intl-pluralrules.ts | 1 | // Install the Intl.PluralRules polyfill together with its locale data. | COMMENT |
| LOW | src/resources/echarts/axis-proxy-patch.ts | 1 | // Patch ECharts AxisProxy to support a "boundaryFilter" filterMode. | COMMENT |
| LOW | src/panels/lovelace/cards/hui-picture-elements-card.ts | 21 | import { PictureElementsEditorPreviewController } from "./picture-elements/editor-preview-controller"; | COMMENT |
| LOW | src/components/ha-code-editor.ts | 1181 | completionFrom = pos; | COMMENT |
| LOW | src/components/ha-code-editor.ts | 1201 | // PropertyName "light" | COMMENT |
| LOW | src/components/chart/y-axis-fraction-digits.ts | 1 | import { intervalScaleEnsureValidExtent } from "echarts/lib/scale/helper"; | COMMENT |
| LOW | src/common/dom/fire_event.ts | 1 | // Polymer legacy event helpers used courtesy of the Polymer project. | COMMENT |
| LOW | src/common/string/is_timestamp.ts | 1 | // https://stackoverflow.com/a/14322189/1947205 | COMMENT |
| LOW | src/common/string/is_hostname.ts | 1 | // RFC 1123 hostname label: 1-63 chars, alphanumeric, with hyphens allowed | COMMENT |
| LOW | src/common/string/filter/filter.ts | 1 | /* eslint-disable no-console */ | COMMENT |
| LOW | src/common/string/filter/char-code.ts | 1 | // MIT License | COMMENT |
| LOW | src/entrypoints/service-worker.ts | 21 | // eslint-disable-next-line @typescript-eslint/naming-convention | COMMENT |
| LOW | src/data/energy.ts | 1801 | // Solar -> Battery_In | COMMENT |
| LOW | src/data/scene.ts | 81 | } | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cast/src/launcher/layout/hc-cast.ts | 169 | // We first do a single refresh because we need to check if there is LL | COMMENT |
| LOW | cast/src/receiver/layout/hc-main.ts | 302 | // We first do a single refresh because we need to check if there is LL | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/ISSUE_TEMPLATE/bug_report.yml | 90 | Provide the full name and don't forget to add the version! | CODE |
| LOW | .github/ISSUE_TEMPLATE/bug_report.yml | 97 | Don't forget to add the version! | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …nels/lovelace/cards/energy/power-sources-graph-data.ts | 36 | function processData( | CODE |