Skip to content

v1.5.14

Choose a tag to compare

@github-actions github-actions released this 04 Jul 21:44
eabef06

1.5.14 (2026-07-04)

Features

  • cloud provider icon set — 18 bundled icons (#215, PR #219): AWS, Azure, and GCP brand logos (Simple Icons, CC0) plus provider-badged device composites (cloud/aws-router, cloud/azure-firewall, ...) in a new Cloud picker group. The official architecture icon packs are not bundled for licensing reasons — scripts/fetch-cloud-icons.sh installs them onto your own Grafana, usable via a node's Custom icon URL
  • vendor icon set — 49 bundled icons (PR #190): 19 brand logos from the Simple Icons project (CC0) — Juniper, F5, Fortinet, Palo Alto Networks, MikroTik, Ubiquiti, Netgear, TP-Link, Huawei, SonicWall, Nokia, Ericsson, OPNsense, pfSense, OpenWrt, Dell, HP, Lenovo, Supermicro — plus 30 composite device icons (e.g. vendors/juniper-router, vendors/f5-load-balancer) combining Networking shapes with vendor corner badges. New Vendors group in the node icon picker; Icon Reference regenerated (1046 icons, 11 sets)

Bug Fixes

  • panel crash resilience for malformed or partial weathermap options — missing/partial options.weathermap, links referencing deleted nodes, and overlapping nodes (zero-length arrow vectors) no longer crash the panel; options are normalized before any dereference, malformed links are skipped, and SVG geometry can no longer contain NaN (#198, PR #206)
  • render purity — the options-schema migration no longer mutates the incoming saved options object, and neither the panel nor the editor calls onOptionsChange/onChange during render; migrated options are persisted from guarded effects after commit (#199, PR #210)
  • numeric inputs never store NaN — blank or mid-edit numeric fields (positions, panel size, zoom, offsets, icon sizes, thresholds, bandwidth) keep the previous valid value instead of writing NaN into saved options; 0 remains valid; the color-scale editor no longer leaks NaN into options through shared local edit state (#200, PR #211)
  • timeline and state synchronization — the pan offset resyncs when saved options change externally (dashboard reload, another session); VIA-chain data resolution no longer mutates rendered link state (multi-VIA chains included); node status now replays the timeline scrub position with raw step-hold sampling, matching link values during incident replay (#201, PR #212)
  • self-link anchor accounting — removing a self-link now decrements its shared anchor by 2 (mirroring add) and clamps at 0, so link spacing no longer drifts on affected nodes (#202, PR #209)
  • SVG export hardening — relative, root-relative, and absolute icon URLs resolve correctly; data:/blob: hrefs (any scheme casing) are left untouched; a failed or CORS-blocked icon fetch keeps the original href instead of aborting the whole export (#203, PR #207)
  • current-version partial configs no longer crash — a hand-edited or provisioned map with version: 14 but missing nested settings (or missing renderer-required leaves like panel.backgroundColor, panel.zoomScale, stroke/label colors) now repairs through the defaults deep-merge in both the panel and the editor (#224, #232, PRs #228, #234)
  • all editor and interaction updates are immutable — pan/drag persistence, node selection state, VIA insert/remove, and every form handler (116 sites) now deliver new object references instead of mutating the saved options in place; the form test harnesses deep-freeze props.value so the class stays closed (#238, PR #239) (#225, #233, PRs #229, #235)
  • no more React NaN warnings from blanked threshold fields — non-finite drafts render as an empty input (#226, PR #230)
  • deterministic mapping for duplicate display names — when two series share a display name, link values now resolve from the first frame, consistently with the query dropdown and node status, instead of silently taking whichever duplicate arrived last (#204, PR #213)

Chores (not part of the plugin archive)

  • E2E now also runs on pull requests that touch the E2E surface (tests/**, Playwright config, the workflow) while staying weekly/manual for ordinary PRs (#227, PR #231)
  • E2E baseline tests (#38, PR #216): Playwright/@grafana/plugin-e2e coverage for the core editor workflow — panel renders, add node, add link between two nodes, threshold change updates the color-scale legend — verified in CI against Grafana 11.0.0 and latest; version-tolerant visualization-picker driving, GRAFANA_URL/PW_CHANNEL targeting, and npm run e2e:local for the anonymous-admin testing stack. Includes stable inputIds on the link editor side selects (#167 pattern)
  • multi-datasource demo & docs — the testing/ stack now runs the same simulated WAN metrics through Prometheus, InfluxDB, Elasticsearch, and a full Zabbix 7.0 server simultaneously (one bridge, identical series names), with per-source WAN Demo — Utilization dashboards rendering the byte-identical map; a new Data Sources docs page covers per-source queries, the display-name binding rule, every deviation discovered (Influx value <series> naming, the Elasticsearch 65536-bucket limit, Zabbix data alignment and API memory/trends), and a live screenshot per source; frame-shape unit tests lock value/name resolution for each source's real frames (#253, #256, PRs #254, #255, #257, #258, #259, #261)
  • dependency security — npm audit is clean: the dompurify override tracks the patched ^3.4.11 line, js-yaml DoS advisories resolved in both dependency paths, and the transitive @opentelemetry/core/protobufjs advisories fixed without bumping the @grafana/* packages (PRs #237, #242)
  • CI hardening — dedicated E2E workflow (weekly + manual) against Grafana 11 and latest, broader push path filters (including .config/**), consistent dependency installs between test and release, and a PR-time plugin archive layout check that reads the plugin id from dist/plugin.json (#205, PR #208)