Update all stable non-major dependencies #158

Open
renovate wants to merge 1 commit from renovate/all-stable-minor into main
Member

This PR contains the following updates:

Package Type Update Change
docker.io/binwiederhier/ntfy (source) minor v2.26.0v2.28.0
docker.io/grafana/grafana minor 13.1.013.2.1
docker.io/library/postgres (source) minor 15.1815.19
docker.io/library/postgres (source) minor 18.418.6
docker.io/library/redis (source) minor 8.8.08.10.1
docker.io/prom/alertmanager minor v0.33.1v0.34.0
docker.io/prom/prometheus minor v3.13.1v3.14.0
docker.io/prompve/prometheus-pve-exporter minor 3.9.03.10.0
https://github.com/ansible/ansible-lint action minor v26.6.0v26.8.0
netbox minor v4.6.4v4.7.0
quay.io/hedgedoc/hedgedoc (source) minor 1.11.11.12.0

Release Notes

binwiederhier/ntfy (docker.io/binwiederhier/ntfy)

v2.28.0

Compare Source

This is a hardening release. A single topic on ntfy.sh was polled continuously with poll=1 and no since cursor, which replays a topic's entire cache on every request. The changes below bound what one replay can cost, close two fields that had no size limit at all, and fix an ordering bug found while digging into it.

Bug fixes + maintenance:

  • Fix messages being returned out of publish order when polling or replaying several topics at once (/topic1,topic2/json?poll=1, #​1297)
  • Limit the message title to 1 KB and all tags combined to 512 bytes, rejecting larger requests with HTTP 400 (error codes 40057 and 40058). Neither field had a size limit before, unlike the message body; on ntfy.sh the 99.9th percentile is 212 bytes for titles and 244 for tags
  • Cap a single cache replay at 10 MB of messages per topic. A poll without a since cursor returns a topic's entire cache, which was previously unbounded and could reach tens of megabytes on a busy topic, so one request could allocate that much on the server. The newest messages that fit are kept and a truncated response carries an X-Messages-Truncated: 1 header
  • visitor-attachment-daily-bandwidth-limit now also covers messages replayed from the message cache by poll requests, not just attachment traffic. A poll without a since cursor returns a topic's entire cache, so a topic that is cheap to fill can be re-read for many times its own size; polls beyond the budget are rejected with HTTP 429 (error code 42905) before anything is written. Note that heavy pollers now consume the same budget as attachment downloads, so operators serving both may want to raise the limit

v2.27.0

Compare Source

This release lets you sign in with your verified email address instead of your username, which should help if you ever signed up with an email and then forgot which username you picked. It also hardens the message templating engine against a few ways a small template could eat a lot of memory, and it drops the "experimental" label from PostgreSQL support, which has been running ntfy.sh for a while now.

I also did a bunch of refactoring in, mostly in preparation for being able to cluster ntfy nodes and scale the service horizontally. It'll be a while until then, ... baby steps.

Security:

  • Limit message templates (Template: yes) to 32 KB, limit printf widths and precisions to below 1000, and limit indent/nindent to 100 spaces, preventing excessive memory use from a single small template
  • Exclude secrets from the config hash served to the web app, preventing a rather theoretical information leak

Features:

  • Allow logging in with your verified primary email address (in addition to your username), so a password reset no longer leaves you unable to sign in when you only remember the email you signed up with

Bug fixes + maintenance:

  • Fix Twilio phone calls and phone number verifications failing silently when Twilio rejected the request, and move the Twilio integration into its own twilio package
  • Move the Prometheus metrics into a dedicated metrics package
  • Message cache databases from ntfy older than v1.10.0 (November 2021) can no longer be migrated; upgrade via an older ntfy version first, or delete the cache database
  • Fix user_phone table in the SQLite user database referencing a dropped table after the v2.14 schema migration; repaired automatically by a new migration

v2.26.3

Compare Source

This is a hotfix release, useful pretty much only for ntfy.sh. It was adds the ability to track abusive IPs mor efficiently, reducing the load on the IP banning services and preventing them from falling behind and leaving abusers unbanned for too long. It works by tracking HTTP errors, and writing out a ban file that fail2ban can read and ban offenders instantly. See ban-feed for details.

Features:

  • Add an abuse ban-feed: when enabled via ban-file, ntfy tracks a weighted strike budget per visitor and appends abusive IPs to a file that fail2ban can tail and ban on sight (ban-file, ban-window, ban-threshold, ban-weights; see ban-feed)
grafana/grafana (docker.io/grafana/grafana)

v13.2.1

Security
  • Security: Fix CVE-2026-12704
  • Security: Fix CVE-2026-14199
Bug fixes

v13.2.0

Security
  • CVE-2026-17183
Features and enhancements
Bug fixes
Breaking changes
Plugin development fixes & changes

v13.1.5

Security
  • Security: Fix CVE-2026-12704
  • Security: Fix CVE-2026-14199
  • Security: Fix CVE-2026-19475

v13.1.4

Security
  • CVE-2026-17183
Bug fixes
  • Reporting: batch dashboard lookups when listing reports (Enterprise)

v13.1.3

v13.1.2

Bug fixes

v13.1.1

Features and enhancements
Bug fixes
Plugin development fixes & changes
redis/docker-library-redis (docker.io/library/redis)

v8.10.1

Compare Source

v8.10.0

Compare Source

v8.8.2

Compare Source

v8.8.1

Compare Source

prometheus/alertmanager (docker.io/prom/alertmanager)

v0.34.0: 0.34.0 / 2026-08-16

Compare Source

  • [CHANGE] notify: The reason label on alertmanager_notifications_failed_total now distinguishes authError (HTTP 401/403) and rateLimited (HTTP 429) from the generic clientError. Dashboards/alerts matching reason="clientError" for these codes must be updated. #​5332
  • [FEATURE] Add optional templatable labels to alert routes. #​5328
  • [FEATURE] eventrecorder: Add inhibit rule names to inhibition_muted_alert events. #​5315
  • [FEATURE] eventrecorder: Add stdout output type. #​5311
  • [FEATURE] silences: Add active, expired, and pending boolean filter parameters to GET /api/v2/silences to allow filtering silences by state server-side. #​5406
  • [FEATURE] sns: Add aws external_id support in sigv4 configuration. #​5157
  • [FEATURE] template: Add toDate and mustToDate functions. #​5327
  • [ENHANCEMENT] doc: Add AlertmanagerClusterFailedPeers alertmanager-mixin. #​5301
  • [ENHANCEMENT] doc: Add description for Rocketchat parameters in global config. #​5181
  • [ENHANCEMENT] doc: Add top level tracing configuration key. #​5314
  • [ENHANCEMENT] doc: Fix Alertmanager port in amtool config routes example. #​5312
  • [ENHANCEMENT] eventrecorder: Add optional webhook batching. #​5392
  • [ENHANCEMENT] notify: The discord and webex integrations now report a failure reason on alertmanager_notifications_failed_total. #​5332
  • [ENHANCEMENT] ui: Improve responsiveness of UI when loading thousands of alerts. #​5357
  • [BUGFIX] eventrecorder: Fixed a minor performance regression when the event recorder is enabled. #​5307
  • [BUGFIX] msteamsv2: Inherit global proxy_url into partial http_config. #​5379
  • [BUGFIX] webhook: Keep custom payload string values verbatim instead of reinterpreting JSON leaves that look like YAML (e.g. values ending with a colon). #​5304
prometheus/prometheus (docker.io/prom/prometheus)

v3.14.0: 3.14.0 / 2026-08-17

Compare Source

  • [CHANGE] API: Deprecate the stats query parameter of /api/v1/query and /api/v1/query_range for values other than true and all. Other values still enable basic statistics but now return a deprecation warning; they will be rejected in the next major release. #​19124
  • [CHANGE] API: /api/v1/status/config now correctly shows separator: "" and replacement: "" in relabel configs when explicitly set to empty, instead of omitting them. #​18653
  • [CHANGE] Discovery/Hetzner: Drop the __meta_hetzner_datacenter label for hcloud targets, following its removal from the Hetzner Cloud API. #​19269
  • [CHANGE] PromQL: Enable duration expressions by default. The promql-duration-expr feature flag is now a no-op. #​19033
  • [CHANGE] PromQL: Promote first_over_time to stable. It no longer requires the promql-experimental-functions feature flag. #​19093
  • [FEATURE] Discovery: Add Oracle Cloud Infrastructure compute service discovery (oci_sd_configs). #​18919
  • [FEATURE] PromQL: Add experimental start_timestamp(instant-vector) function returning the start timestamp of each sample in the given vector. Requires the use-start-timestamps feature flag. #​19089
  • [FEATURE] PromQL: Allow rate() and increase() to use start timestamps as an alternative for rate extrapolation. Hidden behind the use-start-timestamps feature flag. #​18619
  • [FEATURE] TSDB: Add experimental support for encoding start timestamps in histograms and float histograms. Hidden behind the histograms-st-encoding feature flag. #​18609
  • [ENHANCEMENT] OTLP: Emit a warning when OTLP attribute names collide into the same Prometheus label after sanitization (e.g. k8s.pod.name and k8s_pod_name both become k8s_pod_name), and expose the prometheus_api_otlp_translation_warnings_total counter labelled by category to track such warnings. #​18957
  • [ENHANCEMENT] Promtool: Add --remote-write.path flag to push metrics for backends that use a non-default remote-write endpoint. #​19086
  • [ENHANCEMENT] Remote write: Forward histogram start timestamps in the remote write V2 protocol. #​18903
  • [ENHANCEMENT] TSDB: Add prometheus_tsdb_head_native_histogram_series and prometheus_tsdb_head_native_histogram_buckets gauges tracking the number of native histogram series and buckets in the head. #​19170
  • [ENHANCEMENT] UI: Add syntax highlighting, autocompletion, and linting for PromQL duration expressions (step(), range(), min_of(), max_of()) in range selectors and subqueries. #​18625
  • [ENHANCEMENT] UI: Add copy button next to rule names on the Rules and Alerts pages. #​18706
  • [ENHANCEMENT] UI: Improve rule group title contrast on the Rules page. #​19181
  • [PERF] Speed up regex label matchers matching a set of literal values (e.g. {job=~"foo|bar|baz"}). #​18833
  • [PERF] Remote read: Improve remote read throughput by removing unnecessary per-write flushing. #​18470
  • [PERF] Scrape: Parse text and OpenMetrics formats without recursion, preventing stack overflow from deeply nested or malicious exposition input. #​19143
  • [PERF] Scrape: Reduce native histogram scrape parsing allocations by ~49%. #​19282
  • [PERF] TSDB: Speed up queries on series with many in-memory chunks. #​18300
  • [BUGFIX] Alerting: Fix 100% CPU usage on shutdown that could delay graceful shutdown and trigger timeout-based kills. #​17859
  • [BUGFIX] Discovery/AWS: Stop promtool check config from making AWS metadata service (IMDS) network calls when the region field is omitted in EC2, ECS, RDS, MSK, ElastiCache, and Lightsail service discovery configs. #​19037
  • [BUGFIX] Discovery/Docker: Set a request timeout for docker_sd and dockerswarm_sd on unix, npipe, and tcp hosts. Previously an unresponsive daemon could freeze discovery indefinitely, silently pinning targets to a stale snapshot. #​19237
  • [BUGFIX] Discovery/Docker: Fix panic in Docker Swarm service discovery when a service runs as a plugin or network-attachment. #​19102
  • [BUGFIX] Discovery/Docker: Fix discovery of IPv6-only containers. #​18778
  • [BUGFIX] PromQL: Fix case-insensitive regex label matchers silently dropping matching values. #​19167
  • [BUGFIX] PromQL: Fix mad_over_time returning 0 instead of NaN when the range contains a NaN sample. #​19040
  • [BUGFIX] Promtool: Accept --enable-feature=promql-binop-fill-modifiers in check rules, which previously rejected valid fill()/fill_left()/fill_right() expressions. #​19153
  • [BUGFIX] Remote write: Respect the AZURE_FEDERATED_TOKEN_FILE environment variable for workload identity authentication instead of hardcoding the token file path. #​18973
  • [BUGFIX] Rules: Clean up stale rule_group_last_rule_duration_sum_seconds and rule_group_last_restore_duration_seconds series when a rule group is removed or renamed on reload. Previously each reload leaked two series per dropped group, growing /metrics cardinality over time. #​19107
  • [BUGFIX] Scrape: Fix scrape manager spinning at 100% CPU on shutdown. #​19149
  • [BUGFIX] TSDB: Fix silent data loss and potential crash loop when stale_series_compaction_threshold is used in the config file. #​19016
  • [BUGFIX] TSDB: Fix potential data loss on restart when out-of-order ingestion is enabled and blocks are compacted. #​19016
  • [BUGFIX] TSDB: Fix prometheus_tsdb_head_stale_series over-counting and early eviction of series that change between float, integer histogram, and float histogram sample types. #​19183
  • [BUGFIX] TSDB: Fix goroutine and file handle leaks when Prometheus fails to open a corrupt TSDB. On Windows, the leaked directory handle also prevented TSDB directory removal. #​18291
  • [BUGFIX] TSDB: Fix out-of-order queries blocking compaction for hours, causing memory usage to grow. #​19013
  • [BUGFIX] TSDB: Fix deleted series causing missing samples and errors after restart. #​19140
  • [BUGFIX] TSDB: Fix native histogram data becoming incorrect after restart. #​19202
  • [BUGFIX] TSDB: Surface query errors that were previously silently discarded. #​19120
  • [BUGFIX] TSDB: Honour the configured float chunk encoding when compaction rewrites chunks; previously chunks encoded with --enable-feature=xor2-encoding could silently revert to XOR after compaction. #​19145
  • [BUGFIX] UI: Show the delete-series form on the TSDB Status page when --web.enable-admin-api is enabled. #​19025

v3.13.2: 3.13.2 / 2026-07-29

Compare Source

What's Changed

  • [SECURITY] Bump golang.org/x/text to v0.39.0 (CVE-2026-56852) and google.golang.org/grpc to v1.82.1 (GHSA-hrxh-6v49-42gf). #​19290 by @​krajorama
  • [BUGFIX] PromQL: Preallocate the active query tracker file to avoid SIGBUS crashes when the data disk is full. #​19289 by @​akshajrawat

Full Changelog: https://github.com/prometheus/prometheus/compare/v3.13.1...v3.13.2

prometheus-pve/prometheus-pve-exporter (docker.io/prompve/prometheus-pve-exporter)

v3.10.0

Compare Source

Added


- Bump minimum python version to 3.11 (#​458)

Changed
  • Bump cryptography from 49.0.0 to 50.0.0 (#​491)
  • Bump wrapt from 2.2.2 to 2.3.0 (#​490)
  • Bump prometheus-client from 0.25.0 to 0.26.0 (#​489)
  • Bump certifi from 2026.6.17 to 2026.7.22 (#​486)
  • Bump charset-normalizer from 3.4.7 to 3.4.9 (#​484)
  • Bump cffi from 2.0.0 to 2.1.0 (#​483)
  • Bump docker/login-action from 4.2.0 to 4.4.0 (#​482)
  • Bump docker/build-push-action from 7.2.0 to 7.3.0 (#​481)
  • Bump docker/metadata-action from 6.1.0 to 6.2.0 (#​480)
  • Bump actions/attest from 4.1.0 to 4.1.1 (#​478)
  • Bump docker/setup-qemu-action from 4.1.0 to 4.2.0 (#​477)
  • Switch from actions/attest-build-provenance to actions/attest (#​473)
  • Bump actions/checkout from 6.0.3 to 7.0.0 (#​475)
  • Bump wrapt from 2.2.1 to 2.2.2 (#​476)
  • Bump actions/setup-python from 6.2.0 to 6.3.0 (#​474)
  • Disable gunicorn control socket (#​472)
  • Bump cryptography from 48.0.1 to 49.0.0 (#​470)
  • Bump certifi from 2026.5.20 to 2026.6.17 (#​469)
  • Bump alpine from 3.24.0 to 3.24.1 (#​468)
  • Bump alpine from 3.23.4 to 3.24.0 (#​465)
  • Bump cryptography from 46.0.7 to 48.0.1 (#​466)
  • Bump gunicorn from 23.0.0 to 26.0.0 (#​462)
  • Bump requests from 2.33.1 to 2.34.2 (#​463)
  • Bump charset-normalizer from 3.3.2 to 3.4.7 (#​464)
  • Bump idna from 3.17 to 3.18 (#​461)
  • Bump certifi from 2024.7.4 to 2026.5.20 (#​460)
  • Bump actions/checkout from 6.0.2 to 6.0.3 (#​459)
  • Bump bcrypt from 4.1.2 to 5.0.0 (#​457)
  • Bump pycparser from 2.21 to 3.0 (#​456)
  • Bump invoke from 2.2.0 to 3.0.3 (#​455)
  • Bump markupsafe from 2.1.3 to 3.0.3 (#​454)
  • Bump packaging from 23.2 to 26.2 (#​453)
  • Bump docker/setup-qemu-action from 4.0.0 to 4.1.0 (#​452)
  • Allow dependabot to update all pip dependencies (#​451)
  • Bump idna from 3.7 to 3.17 (#​450)
  • fixup! Bump wrapt from 2.1.2 to 2.2.1 (#​449)
  • Revert "Bump wrapt from 2.1.2 to 2.2.1 (#​449)"
  • Bump wrapt from 2.1.2 to 2.2.1 (#​449)
  • Bump docker/metadata-action from 6.0.0 to 6.1.0 (#​448)
  • Bump docker/setup-buildx-action from 4.0.0 to 4.1.0 (#​447)
  • Bump docker/login-action from 4.1.0 to 4.2.0 (#​446)
  • Bump docker/build-push-action from 7.1.0 to 7.2.0 (#​445)
ansible/ansible-lint (https://github.com/ansible/ansible-lint)

v26.8.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/ansible/ansible-lint/compare/v26.6.0...v26.8.0

netbox-community/netbox (netbox)

v4.7.0: - 2026-09-02

Compare Source

[!WARNING]
This release of NetBox drops support for PostgreSQL 14.

[!WARNING]
The PostgreSQL database must support the ltree extension. This is a trusted module which ships with PostgreSQL and does not require superuser permission to activate. It will be installed automatically upon upgrade.

[!WARNING]
This release of NetBox drops support for Redis 5.x.

Breaking Changes
  • PostgreSQL 14 is no longer supported. NetBox now requires PostgreSQL 15 or later: The upgrade script will abort when connected to an earlier release. (NetBox v4.6 reported this as a warning.)
  • Redis 5.x is no longer supported. NetBox now requires Redis 6.0 or later.
  • Selection and multiple selection custom field values are now returned as objects specifying both the raw value and its human-friendly label (e.g. {"value": "datacenter", "label": "Data Center"}) in both the REST and GraphQL APIs. These fields continue to accept the raw value on write.
  • The protocol and ports fields on the ipam.Service and ipam.ServiceTemplate models have been replaced by a unified port_mappings field, which supports multiple protocols per service. The legacy fields are retained (as deprecated) in the REST and GraphQL APIs, but at the ORM level they are now read-only properties derived from port_mappings: Passing protocol or ports to the model raises a TypeError, and assigning to service.ports raises an AttributeError. This restriction applies only at the ORM level: The REST API continues to accept the legacy pair on write, translating it into port_mappings.
  • Because protocol is now filtered against the port_mappings array rather than a dedicated model field, the character-based REST filter lookups previously generated for it (protocol__ic, protocol__isw, protocol__empty, etc.) are no longer available. The port__empty lookup has been removed as well.
  • The GraphQL filters for ipam.Service and ipam.ServiceTemplate have changed shape: The nested ports integer lookup has been replaced by the flat port, port__gt, port__gte, port__lt, and port__lte parameters (each accepting a list of values), alongside the new port_mappings parameter. Additionally, the members of ServiceProtocolEnum have been renamed to drop a spurious ROLE_ prefix (e.g. ROLE_TCP is now TCP).
  • Config context data is now pre-rendered and cached for each device and virtual machine, and is always included in their REST API representations. The DeviceWithConfigContextSerializer and VirtualMachineWithConfigContextSerializer classes have been removed (merged into the base serializers), and the ?exclude=config_context query parameter is now silently ignored.
  • Failed bulk create and update operations via the REST API now return a structured response of the form {"detail": ..., "errors": [{"index": N, "errors": {...}}]}, correlating each error with the index of the offending object in the submitted list. (Bulk operations remain all-or-none.)
  • API token plaintexts can no longer be specified by the client when creating a token via the REST API. The token field is now read-only, and any value supplied is ignored. (This restriction was already in effect in the web UI.)
  • Executing a custom script via the REST API now requires that the calling token have its write ability enabled.
  • The username argument has been removed from extras.webhooks.send_webhook() (the value remains available to webhook templates as request.user). Any webhook jobs still enqueued when the workers are restarted will fail with a TypeError, so the background queues should be allowed to drain before upgrading.
  • Updates to the global search cache are now deferred to a background task. As a result, a newly created or modified object may not appear in search results for a brief period. (When no background worker is running, the index is updated synchronously as before.)
  • Hierarchical models are now backed by a PostgreSQL ltree column rather than django-mptt. This covers the nested group models (Region, SiteGroup, Location, DeviceRole, Platform, TenantGroup, ContactGroup, WirelessLANGroup, etc.) as well as ModuleBay, InventoryItem, and InventoryItemTemplate. The lft, rght, tree_id, and level columns have been dropped from every migrated model: level remains available as a Python property, but can no longer be used in a queryset filter or order_by() clause. NetBox's ltree implementation deliberately covers only the subset of MPTT's API which NetBox itself uses (get_ancestors(), get_descendants(), get_children(), and add_related_count()); methods such as get_root(), get_family(), is_leaf_node(), move_to(), and insert_at() are no longer available. The MPTT-backed NestedGroupModel base class is retained for backward compatibility with plugins, but is deprecated: New code should use NestedLtreeGroupModel instead.
  • django-tables2 has been upgraded to v3.0, which renames its querystring template tag to querystring_replace and removes the RelatedLinkColumn class.
  • social-auth-app-django and social-auth-core have been upgraded to v6.0 and v5.1 respectively, each a major release. Deployments which employ single sign-on should test authentication against a non-production instance before upgrading.
  • The request object passed to custom link templates is now a sanitized subset of the current request. Only the id, path, path_info, method, GET, and user attributes are available; cookies, headers, and session state are no longer accessible.
  • URL custom field values are now validated against the ALLOWED_URL_SCHEMES configuration parameter. A value entered without a scheme is assumed to use https and stored as an absolute URL.
  • Webhooks now support a configurable timeout. If you have lowered RQ_DEFAULT_TIMEOUT to 60 seconds or less, you must also set WEBHOOK_DEFAULT_TIMEOUT to a lower value; NetBox will refuse to start otherwise.
  • Specifying an email server under the EMAIL configuration parameter is now mandatory in order to send mail: A deployment which does not define EMAIL['SERVER'] will raise an InvalidMailer exception when attempting to send, rather than failing at the SMTP connection.
  • NetBox now populates Django's MAILERS setting rather than the individual EMAIL_* settings which it supersedes. EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, EMAIL_USE_SSL, EMAIL_USE_TLS, EMAIL_TIMEOUT, EMAIL_SSL_CERTFILE, and EMAIL_SSL_KEYFILE are no longer defined, and EMAIL_BACKEND is no longer consulted. Plugin code which reads any of these, or which calls django.core.mail.get_connection() with an explicit backend (now raising a RuntimeError), must be updated. The EMAIL configuration parameter itself is unchanged.
  • The upgrade script now runs the rebuild_config_context_cache management command to populate the new config context cache. This issues one UPDATE per device and virtual machine, and may extend the duration of the upgrade considerably for deployments with a large number of either. The command skips objects whose cache is already populated, so it is safe to interrupt and re-run; it may also be deferred until after NetBox is back online, as any object whose cache is empty falls back to rendering its config context on demand.
  • Creating a custom field which has a default value, and deleting a custom field, are now deferred to a background job where the field's assigned object types hold more than BULK_UPDATE_CHUNK_SIZE objects in total.
  • The obsolete populate_custom_field_defaults() method has been removed from CustomFieldsMixin.
  • CustomField.objects.get_for_model() and the custom_fields property of CustomFieldsMixin now return a list rather than a queryset, and get_for_model() returns only those fields which are active: Any whose stored data is being updated by a background job is omitted (see field status) unless selected via its statuses argument.
  • Removal of deprecated behavior
    • The housekeeping management command has been removed. (Its constituent tasks are performed by the individual management commands introduced in NetBox v4.6.)
    • NetBox's custom querystring template tag has been removed in favor of Django's built-in tag of the same name. The two are not interchangeable: Django's tag reads the current request from the template context, so the request argument must be dropped ({% querystring request page=1 %} becomes {% querystring page=1 %}; passing request raises a TemplateSyntaxError). It also returns a bare ? where NetBox's tag returned an empty string.
    • The legacy Sentry configuration parameters SENTRY_DSN, SENTRY_SAMPLE_RATE, SENTRY_SEND_DEFAULT_PII, and SENTRY_TRACES_SAMPLE_RATE have been removed. Use SENTRY_CONFIG instead.
    • The obsolete DEFAULT_ACTION_PERMISSIONS constant has been removed.
    • Support for legacy view action mappings has been dropped, and the LEGACY_ACTIONS constant has been removed.
    • Registered models are no longer populated under registry['models']. (Use ObjectType.objects.public() instead.) The registry['denormalized_fields'] store has been removed as well.
    • The backward compatibility shims for OptionalLimitOffsetPagination (now NetBoxPagination), ExpandableIPAddressField (now ExpandableIPNetworkField), and expand_ipaddress_pattern() (now expand_ipnetwork_pattern()) have been removed.
    • The request_id and username keys have been removed from the context available to outgoing webhooks. Use request.id and request.user instead.
    • The automatic reverse relationship created by OwnerMixin (e.g. site_set) has been removed.
New Features
Cooling Infrastructure Modeling (#​22447)

NetBox has long modeled power distribution end to end, but had no equivalent for cooling. This release introduces a cooling data model which deliberately mirrors the power model, so that the concepts and workflows feel familiar.

Two new top-level models parallel PowerPanel and PowerFeed: CoolingSource represents facility-level cooling plant (a chiller, cooling tower, dry cooler, or facility water system) scoped to a site or location, and CoolingFeed represents a coolant loop delivered from a source to a rack. Two new device components parallel PowerPort and PowerOutlet: CoolingIntake represents a coolant intake on a device (e.g. a server cold-plate connection or a CDU's facility water inlet), and CoolingOutflow represents a coolant outlet on a CDU or manifold which supplies downstream equipment. Each intake may reference the upstream outflow which serves it, and both components have corresponding device type templates. CDUs and manifolds are modeled as ordinary devices carrying these components.

Lightweight descriptive attributes have also been added for users who want to record cooling characteristics without modeling the full plumbing: a cooling_method field (air, liquid, hybrid, or immersion) on the Device, DeviceType, and ModuleType models, and cooling_capability (air-only, hybrid, or liquid-only) and cooling_capacity fields on the Rack and RackType models.

Channelized Subinterfaces (#​20972)

Channelized (breakout) interfaces can now be modeled natively. A new channels field on the Interface model indicates the number of physical channels into which an interface is divided, and each channel is represented by a subinterface of the new generic channel type, bound to its parent via the new channel_id field. A single cable terminates to the channelized parent interface, and NetBox traces a distinct cable path for each channel subinterface. Both fields are available on interface templates as well.

Multi-Protocol Application Services (#​20285)

Application services and service templates can now expose the same port on multiple protocols — for example, DNS listening on both tcp/53 and udp/53. The single-protocol protocol and ports fields have been replaced by a unified port_mappings field, represented in the APIs as a flat list of protocol/port strings (e.g. ["tcp/80", "udp/53"]). New port_mappings, protocol, and port filters are available in the UI and in both APIs, with the latter two correlated so that they must be satisfied by a single mapping.

Module Bay Types (#​19731)

A new ModuleBayType model has been introduced to convey which kinds of modules a module bay is able to accommodate (e.g. an SFP28 cage or a PCIe x16 slot). Bay types can be assigned to module bays, module bay templates, and module types; where both a bay and a module type declare bay types, NetBox validates that the two sets share at least one type in common before permitting installation. Bay types assigned to a module bay template propagate automatically to each instantiated module bay.

Relocating Installed Modules (#​15289)

An installed module can now be moved to a different module bay, including a bay on a different device, rather than having to be deleted and recreated. A move relocates the module's entire subtree — its components, its own module bays, and any child modules installed within them — and re-resolves any component names, labels, and positions derived from the module type's templates for the destination bay. Cross-device moves are permitted only where the moved components carry no active topology or device-scoped configuration.

Background Processing for REST API Requests (#​21992)

Bulk write operations via the REST API can now be processed as a background job rather than synchronously, avoiding proxy and gateway timeouts on large batches. Appending ?background=true to a bulk write request enqueues a job and immediately returns an HTTP 202 Accepted response containing the job's ID and URL; the job's data field records the response the synchronous request would have returned. Note that validation is deferred to the worker, so a 202 response indicates only that the request was accepted, and the job's final status must be inspected to confirm the outcome.

Per-Object Errors for Bulk Operations (#​20054)

When a bulk create or update via the REST API fails validation, the response now identifies each offending object by its index within the submitted list, along with its specific field errors, rather than reporting only the first failure. This enables clients to correct and resubmit only the objects which actually failed.

Pre-Rendered Config Context Data (#​21025)

Rather than compiling config context data on demand from the full set of applicable ConfigContext instances, NetBox now pre-renders each device's and virtual machine's merged context data and caches it on the object itself. The cache is invalidated automatically whenever an upstream change is detected — a config context being created, modified, or deleted, or a change to an attribute which determines which contexts apply — and repopulated by a non-blocking background job. During the brief window between invalidation and re-render, reads fall back to the original on-demand rendering path, so the data returned is always correct rather than stale.

Snapshot-Aware Event Rule Conditions (#​18159)

Event rule conditions can now inspect the pre-change and post-change snapshots captured at the time of an event, rather than only the object's current data. New changed and unchanged operators compare an attribute's value across the two snapshots, and the snapshots.prechange.<attr> and snapshots.postchange.<attr> dot-path syntax exposes either snapshot to any standard operator. This makes it possible to express the long-requested "fire only when status changes to active" rule, avoiding webhooks and scripts triggered by unrelated updates. A new regex operator has been added as well, and conditions which reference an attribute that cannot be resolved now fail closed and log an error rather than silently disabling the rule.

Enhancements
  • #​15165 - Re-render only the affected fieldset, rather than the entire form, when an HTMX-driven selection changes
  • #​18645 - Support the bulk import of cables having multiple terminations per side
  • #​18821 - Set or update an interface's primary MAC address in a single operation via the mac_address field
  • #​20897 - Include the label alongside the value for selection custom fields in the REST & GraphQL APIs
  • #​21367 - Add a read-only is_primary field to the MAC address REST API representation
  • #​21712 - Support description annotations for static choice fields, and permit choices to be declared as dictionaries in FIELD_CHOICES
  • #​22205 - Add an end_of_life date field to device types and module types to aid in hardware lifecycle planning
  • #​22231 - Introduce a nulls_first parameter to control the placement of empty values when ordering by a custom field
  • #​22409 - Disallow client-specified API token plaintexts via the REST API
  • #​22411 - Enforce token write ability when executing a custom script via the REST API
  • #​22441 - Record and display the execution time of each background job
  • #​22446 - Introduce breadcrumbs support for declarative layouts
  • #​22486 - Support a configurable timeout for webhooks, with a new WEBHOOK_DEFAULT_TIMEOUT configuration parameter
  • #​22563 - Preserve the scroll position of the sidebar navigation when moving between pages
  • #​22595 - Introduce the BULK_UPDATE_CHUNK_SIZE configuration parameter to bound the number of rows affected by a single bulk UPDATE statement
  • #​22604 - Document the experimental Python package installation and upgrade workflow
  • #​22607 - Sanitize the HTTP request passed to the template context when rendering custom links
  • #​22640 - Enforce ALLOWED_URL_SCHEMES when validating URL custom field values
  • #​22757 - Support arbitrary help text on inline form fields
  • #​22786 - Publish NetBox releases to the production Python Package Index (PyPI)
  • #​22851 - Unpin social-auth-core to permit the installation of newer PyJWT versions
  • #​23010 - Defer the provisioning of default and purging of stale custom field data to a background job
Performance Improvements
  • #​21326 - Defer updates to the global search cache to a background job, so that they no longer delay the response
  • #​21355 - Maintain denormalized field data using PostgreSQL triggers rather than Python signal handlers
  • #​21418 - Replace django-mptt with a PostgreSQL ltree implementation for hierarchical models
Plugins
  • #​19821 - Introduce GenericObjectChoiceField and GenericObjectFormMixin to represent a generic foreign key relation as a single form field
  • #​22351 - Enable plugins to register custom Jinja filters and to inject context variables for config template rendering
  • #​22592 - Enable plugins to add fields and filters to NetBox's existing core GraphQL types
  • #​22770 - Enable plugins to register custom Event Rule action types by subclassing EventRuleAction
Deprecations
  • #​22288 - The JINJA2_FILTERS configuration parameter has been renamed to JINJA_FILTERS. The old name remains supported, but will be removed in NetBox v5.0.
  • #​22593 - The form_factor, width, outer_width, outer_height, outer_depth, and outer_unit fields on the Rack model have been deprecated, and will be removed in NetBox v5.0. These values will instead be inferred from the rack's assigned rack type, which will become a mandatory assignment.
  • #​22935 - The custom scripts functionality in core NetBox has been deprecated in favor of a dedicated plugin, and will be removed in NetBox v5.0.
  • The protocol and ports fields on application services and service templates have been deprecated in favor of port_mappings, and will be removed from the REST & GraphQL APIs in NetBox v5.0.
  • The MPTT-backed NestedGroupModel base class has been deprecated in favor of NestedLtreeGroupModel, and will be removed in a future release.
Other Changes
  • #​19091 - Remove NetBox's custom querystring template tag in favor of Django's built-in tag
  • #​20546 - Raise the minimum required PostgreSQL version from 14 to 15
  • #​20547 - Consolidate paired uniqueness constraints on nullable fields into single constraints using PostgreSQL's NULLS NOT DISTINCT
  • #​21565 - Remove the obsolete housekeeping management command
  • #​21883 - Drop support for the deprecated Sentry configuration parameters
  • #​21886 - Remove the obsolete DEFAULT_ACTION_PERMISSIONS constant
  • #​21888 - Remove support for legacy view actions
  • #​21891 - Remove the models key from the application registry
  • #​21902 - Upgrade django-tables2 to v3.0
  • #​22052 - Remove the backward compatibility shim for OptionalLimitOffsetPagination
  • #​22053 - Remove the backward compatibility shim for ExpandableIPAddressField
  • #​22054 - Remove the backward compatibility shim for expand_ipaddress_pattern()
  • #​22161 - Rename the filterset test mixin base classes to use a *TestMixin suffix
  • #​22300 - Drop the automatic reverse relationship defined by OwnerMixin
  • #​22393 - Drop support for Redis 5.x
  • #​22438 - Omit the "2" suffix from the new Jinja plugin resources (jinja_filters, get_jinja_context(), register_jinja_filters()) for consistency with JINJA_FILTERS
  • #​22485 - Move the search subsystem's signal wiring into AppConfig.ready() and break its import cycle
  • #​22571 - Migrate from django-pglocks to django-pgware
  • #​22615 - Remove the legacy request_id and username keys from the webhook context
  • #​22942 - Upgrade to Django 6.1

v4.6.10: - 2026-09-01

Compare Source

Performance Improvements

  • #​22988 - Prefetch the related fields of nested serializers referenced by SerializedPKRelatedField
  • #​23060 - Include reverse many-to-many relationships when determining REST API prefetches

Bug Fixes

  • #​22671 - Support the selection of multiple values when filtering VLAN groups by scope (e.g. by site group)
  • #​22872 - Gracefully handle invalid values assigned to a custom script's Meta attributes
  • #​22989 - Reference brief components in the OpenAPI response schemas for nested SerializedPKRelatedField fields
  • #​23035 - Expand the active navigation menu section when resizing from a mobile to a desktop viewport
  • #​23038 - Omit the cache-busting query parameter from signed static file URLs (e.g. when using S3 storage)
  • #​23040 - Fix the validation error raised when removing the scope assigned to a VLAN group
  • #​23043 - Correct the validation of front port positions when creating front ports in bulk
  • #​23052 - Fix the duplicated owner field on the power outlet and service forms
  • #​23066 - Include the configured Redis username in the default Django cache settings
  • #​23072 - Retain cable paths when applying a cable profile via bulk edit
  • #​23078 - Normalize update_fields to avoid consuming a generator in VLANGroup.save() and CircuitTermination.save()
  • #​23090 - Fix the filtering of background jobs by user in the UI

v4.6.9: - 2026-08-25

Compare Source

Enhancements

  • #​21387 - Add InfiniBand 4X interface types
  • #​22660 - Add an interface type for HPE Synergy interconnect links
  • #​22716 - Restrict images in rendered Markdown to HTTP(S) and relative URLs
  • #​22998 - Add a 100GBase-X-SFP112 interface type

Performance Improvements

  • #​23000 - Prefetch cable terminations to avoid N+1 queries when fetching cables via the GraphQL API

Bug Fixes

  • #​22683 - Prevent a server error when bulk import validation raises an error referencing a field omitted from the import data
  • #​22812 - Avoid loading all associated jobs into memory when deleting a custom script or other job-bearing object
  • #​22889 - Restore the monospace font for text areas on the config revision form
  • #​22922 - Honor the saving database connection in the scope propagation signal handlers
  • #​22923 - Clear current_request and the query cache when an exception is raised within an event_tracking() block
  • #​22929 - Avoid initializing a second SideNav instance for the top header
  • #​22930 - Fix sidebar navigation initialization at a viewport width of exactly 1200 pixels
  • #​22934 - Discard queued events when a write performed by a UI view is rolled back
  • #​22944 - Display the complete role hierarchy in the virtual machine info panel
  • #​22953 - Restore custom script log messages in the output of the runscript management command
  • #​22954 - Display nested group and platform hierarchies in several info panels
  • #​22957 - Include ancestors in the breadcrumbs for device roles, platforms, and power panels
  • #​22963 - Honor the saving database connection in the counter cache signal handlers
  • #​22967 - Update the cached scope fields of circuit terminations when a location is moved to a different site
  • #​22978 - Discard queued events when a write performed via the REST API is rolled back
  • #​22985 - Exempt data file content from browser caching
  • #​22990 - Correct inconsistent field declarations which prevented certain fields from being edited or cleared via bulk edit
  • #​23007 - Align the sidebar navigation JavaScript breakpoint with that of the responsive layout
  • #​23013 - Avoid propagating a location's site assignment to descendant objects when the site has not changed

v4.6.8: - 2026-08-11

Compare Source

Performance Improvements

  • #​22787 - Avoid N+1 queries when resolving generic relations (e.g. assigned objects) via the GraphQL API
  • #​22835 - Improve performance when provisioning new custom fields
  • #​22837 - Omit implicit pagination when prefetching to-one relations via the GraphQL API
  • #​22877 - Improve caching logic when retrieving custom fields via get_for_model()

Bug Fixes

  • #​22694 - Clear a device's stale rack assignment when changing its site
  • #​22745 - Enforce object permissions on custom script write operations via the REST API
  • #​22805 - Avoid re-executing the LDAP configuration file on every permission check
  • #​22821 - Prevent the deletion of a tenant group from creating duplicate tenant names or slugs
  • #​22825 - Fix cable path tracing for paths which originate from a circuit termination and traverse only pass-through ports
  • #​22828 - Validate that a webhook's payload URL is a valid URL or Jinja2 template when saving
  • #​22844 - Allow a null value for base_choices when creating a custom field choice set via the REST API
  • #​22848 - Ensure deterministic ordering of duplicate IP addresses to avoid repeating an object across paginated REST API results
  • #​22852 - Honor a custom script's notifications_default setting when the script is run from an event rule
  • #​22865 - Reference the appropriate component template types on the GraphQL type for inventory item templates
  • #​22879 - Improve the contrast of unselected radio buttons and checkboxes in dark mode
  • #​22882 - Fix support for the DISTINCT filter on nested GraphQL list fields
  • #​22894 - Sanitize the error message rendered when an exception occurs in CustomLinkColumn

v4.6.7: - 2026-07-30

Compare Source

Performance Improvements
  • #​22810 - Skip cached scope rebuild for sites and locations when scope fields are unchanged
  • #​22813 - Avoid extraneous database queries when fetching custom field data via the GraphQL API
  • #​22822 - Avoid an extra database query when including rack reservation units via the GraphQL API
  • #​22823 - Avoid extraneous database queries when fetching the IP address or prefix family via the GraphQL API
Bug Fixes
  • #​22738 - Correctly evaluate IP availability for users whose permissions are constrained by a custom field on a related object
  • #​22800 - Filter circuit group assignments by member type to avoid displaying assignments belonging to a virtual circuit with the same ID

v4.6.6: - 2026-07-28

Compare Source

Enhancements
  • #​19273 - Enable the selection of VLANs scoped to a device's cluster or cluster group when assigning VLANs to interfaces
  • #​22522 - Render colored badges for custom field choices in tables
  • #​22623 - Change the default color of the DHCP IP address status from green to purple to distinguish it from "available"
  • #​22685 - Introduce an "any" lookup for the tag and tag_id filters to match objects assigned any of the specified tags
  • #​22753 - Add a header_safe Jinja2 filter for sanitizing HTTP header values
Performance Improvements
  • #​22497 - Improve the speed of bulk object deletion by avoiding per-object cascade handling and N+1 counter updates
  • #​22687 - Avoid an unnecessary queryset evaluation when rendering export templates
Bug Fixes
  • #​21988 - Ensure view permissions are enforced when referencing a related object by its attributes in the REST API
  • #​22513 - Make JournalEntry.created_by immutable after creation to prevent audit trail spoofing
  • #​22565 - Include circuit distance when calculating the total length of a cable path
  • #​22588 - Restrict the VLANs available for assignment to a prefix scoped to a site group
  • #​22644 - Record changes to front/rear port mappings in the changelog
  • #​22654 - Redact server filesystem paths from tracebacks rendered by ConfigTemplate debug mode
  • #​22656 - Pre-populate interface attributes when using "Create & Add Another"
  • #​22662 - Avoid raising a DataError exception when a cable length exceeds the maximum supported value
  • #​22675 - Validate the URL scheme of RSS feed entries to prevent DOM-based cross-site scripting
  • #​22677 - Display validation errors for form fields which lack HTML5 constraints
  • #​22682 - Prevent the deletion of a site group from cascading to prefixes scoped to its member sites
  • #​22690 - Restore the left border on the quick search field
  • #​22697 - Return to the scripts list when cancelling out of the "add script" form
  • #​22707 - Fix the resolution of port mappings when {vc_position} is used on device type component templates
  • #​22712 - Highlight relevant dropdown fields when form validation fails
  • #​22717 - Fix KeyError raised when validating a device assigned to a cluster scoped to a different location
  • #​22719 - Avoid raising a KeyError for malformed IP address and prefix values submitted via the REST API
  • #​22720 - Raise a protected-deletion error rather than a TypeError when deleting a virtual chassis with a cross-chassis LAG
  • #​22729 - Escape object names when populating the Content-Disposition header of file responses
  • #​22736 - Include the comments field of ASNs in the global search index
  • #​22737 - Clear stale connector metadata from cable endpoints when deleting a profiled cable
  • #​22748 - Ensure ContentTypeField respects its declared queryset to prevent the selection of non-public object types
  • #​22752 - Restore the rear port fields on the front port bulk import form
  • #​22766 - Fix the GraphQL length lookup for array filters
  • #​22767 - Include the comments field of several models in the global search indexes
  • #​22768 - Store a null value rather than an empty string for cable_end when removing a cable
  • #​22773 - Fix TypeError exception when bulk adding module bays to devices
  • #​22790 - Enforce saved filter visibility when applied via the filter or filter_id query parameter

v4.6.5: - 2026-07-14

Compare Source

Enhancements

  • #​18828 - Add MDC connector type for fiber ports and cables
  • #​22544 - Provide a REST API method to update or overwrite an existing custom script module
  • #​22629 - Enforce a lower maximum uploaded image size (50 megapixels) than the Pillow default
  • #​22649 - Add Korean language support

Performance Improvements

  • #​22551 - Add a prefetch hint to the GraphQL tags field to avoid N+1 queries on list endpoints
  • #​22589 - Cache serializers to avoid repeated reinstantiation on the cables list REST API endpoint

Bug Fixes

  • #​22154 - Correct the OpenAPI schema for relation counts on nested (brief) object representations
  • #​22500 - Return the configured maintenance mode message for REST API requests
  • #​22521 - Honor RAM_BASE_UNIT for the default memory of a virtual machine type
  • #​22539 - Restore the available IPs button for users with constrained permissions
  • #​22566 - Avoid name collisions when a custom script's filename matches a core app label
  • #​22568 - Fix uncaught ValueError (HTTP 500) when an invalid filter_id query parameter is provided
  • #​22573 - Remove persistent scrollbar on the navigation menu in Chrome
  • #​22578 - Ensure shared objects are treated consistently across the UI and REST API
  • #​22582 - Use a theme-aware color for interface list row separators in dark mode
  • #​22598 - Fix ValueError exception when viewing background tasks under RQ 2.10
  • #​22617 - Require the "change" permission (rather than "add") when editing objects via the bulk import form
  • #​22626 - Ensure custom link names are escaped when rendering fails
  • #​22632 - Fix ValueError raised by object-level permission checks for cross-app proxy models
  • #​22652 - Explicitly disable autoescaping for config templates rendered via SandboxedEnvironment
  • #​22657 - Escape the exception message in the render_widget template tag before marking it safe

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [docker.io/binwiederhier/ntfy](https://ntfy.sh/) ([source](https://github.com/binwiederhier/ntfy)) | | minor | `v2.26.0` → `v2.28.0` | | [docker.io/grafana/grafana](https://github.com/grafana/grafana) | | minor | `13.1.0` → `13.2.1` | | [docker.io/library/postgres](https://hub.docker.com/_/postgres) ([source](https://github.com/docker-library/postgres)) | | minor | `15.18` → `15.19` | | [docker.io/library/postgres](https://hub.docker.com/_/postgres) ([source](https://github.com/docker-library/postgres)) | | minor | `18.4` → `18.6` | | [docker.io/library/redis](https://hub.docker.com/_/redis) ([source](https://github.com/redis/docker-library-redis)) | | minor | `8.8.0` → `8.10.1` | | [docker.io/prom/alertmanager](https://github.com/prometheus/alertmanager) | | minor | `v0.33.1` → `v0.34.0` | | [docker.io/prom/prometheus](https://github.com/prometheus/prometheus) | | minor | `v3.13.1` → `v3.14.0` | | [docker.io/prompve/prometheus-pve-exporter](https://github.com/prometheus-pve/prometheus-pve-exporter) | | minor | `3.9.0` → `3.10.0` | | [https://github.com/ansible/ansible-lint](https://github.com/ansible/ansible-lint) | action | minor | `v26.6.0` → `v26.8.0` | | [netbox](https://github.com/netbox-community/netbox) | | minor | `v4.6.4` → `v4.7.0` | | [quay.io/hedgedoc/hedgedoc](https://hedgedoc.org) ([source](https://github.com/hedgedoc/container)) | | minor | `1.11.1` → `1.12.0` | --- ### Release Notes <details> <summary>binwiederhier/ntfy (docker.io/binwiederhier/ntfy)</summary> ### [`v2.28.0`](https://github.com/binwiederhier/ntfy/releases/tag/v2.28.0) [Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.27.0...v2.28.0) This is a hardening release. A single topic on ntfy.sh was polled continuously with `poll=1` and no `since` cursor, which replays a topic's entire cache on every request. The changes below bound what one replay can cost, close two fields that had no size limit at all, and fix an ordering bug found while digging into it. **Bug fixes + maintenance:** - Fix messages being returned out of publish order when polling or replaying **several topics at once** (`/topic1,topic2/json?poll=1`, [#&#8203;1297](https://github.com/binwiederhier/ntfy/issues/1297)) - Limit the message title to 1 KB and all tags combined to 512 bytes, rejecting larger requests with HTTP 400 (error codes `40057` and `40058`). Neither field had a size limit before, unlike the message body; on ntfy.sh the 99.9th percentile is 212 bytes for titles and 244 for tags - Cap a single cache replay at 10 MB of messages per topic. A poll without a `since` cursor returns a topic's entire cache, which was previously unbounded and could reach tens of megabytes on a busy topic, so one request could allocate that much on the server. The newest messages that fit are kept and a truncated response carries an `X-Messages-Truncated: 1` header - `visitor-attachment-daily-bandwidth-limit` now also covers messages replayed from the message cache by poll requests, not just attachment traffic. A poll without a `since` cursor returns a topic's entire cache, so a topic that is cheap to fill can be re-read for many times its own size; polls beyond the budget are rejected with HTTP 429 (error code 42905) before anything is written. **Note that heavy pollers now consume the same budget as attachment downloads**, so operators serving both may want to raise the limit ### [`v2.27.0`](https://github.com/binwiederhier/ntfy/releases/tag/v2.27.0) [Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.26.3...v2.27.0) This release lets you sign in with your verified email address instead of your username, which should help if you ever signed up with an email and then forgot which username you picked. It also hardens the message templating engine against a few ways a small template could eat a lot of memory, and it drops the "experimental" label from PostgreSQL support, which has been running ntfy.sh for a while now. I also did a bunch of refactoring in, mostly in preparation for being able to cluster ntfy nodes and scale the service horizontally. It'll be a while until then, ... baby steps. **Security:** - Limit message templates (`Template: yes`) to 32 KB, limit `printf` widths and precisions to below 1000, and limit `indent`/`nindent` to 100 spaces, preventing excessive memory use from a single small template - Exclude secrets from the config hash served to the web app, preventing a rather theoretical information leak **Features:** - Allow logging in with your verified primary email address (in addition to your username), so a password reset no longer leaves you unable to sign in when you only remember the email you signed up with **Bug fixes + maintenance:** - Fix Twilio phone calls and phone number verifications failing silently when Twilio rejected the request, and move the Twilio integration into its own `twilio` package - Move the Prometheus metrics into a dedicated `metrics` package - Message cache databases from ntfy older than v1.10.0 (November 2021) can no longer be migrated; upgrade via an older ntfy version first, or delete the cache database - Fix `user_phone` table in the SQLite user database referencing a dropped table after the v2.14 schema migration; repaired automatically by a new migration ### [`v2.26.3`](https://github.com/binwiederhier/ntfy/releases/tag/v2.26.3) [Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.26.0...v2.26.3) This is a hotfix release, useful pretty much only for ntfy.sh. It was adds the ability to track abusive IPs mor efficiently, reducing the load on the IP banning services and preventing them from falling behind and leaving abusers unbanned for too long. It works by tracking HTTP errors, and writing out a ban file that fail2ban can read and ban offenders instantly. See [ban-feed](https://docs.ntfy.sh/config/#ban-feed) for details. **Features:** - Add an abuse ban-feed: when enabled via `ban-file`, ntfy tracks a weighted strike budget per visitor and appends abusive IPs to a file that fail2ban can tail and ban on sight (`ban-file`, `ban-window`, `ban-threshold`, `ban-weights`; see [ban-feed](https://docs.ntfy.sh/config/#ban-feed)) </details> <details> <summary>grafana/grafana (docker.io/grafana/grafana)</summary> ### [`v13.2.1`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1321-2026-09-02) ##### Security - Security: Fix CVE-2026-12704 - Security: Fix CVE-2026-14199 ##### Bug fixes - **Dashboards:** Fix adhoc and groupby variable datasource on UI import [#&#8203;131819](https://github.com/grafana/grafana/pull/131819), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Packaging:** Fix issue with bundled plugins not being moved properly [#&#8203;131037](https://github.com/grafana/grafana/pull/131037), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **PanelEditor:** Fix options pane not resizable beyond the preview's content width [#&#8203;131608](https://github.com/grafana/grafana/pull/131608), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) <!-- 13.2.1 END --> <!-- 13.2.0 START --> ### [`v13.2.0`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1320-2026-08-18) ##### Security - CVE-2026-17183 ##### Features and enhancements - **Alerting:** Add Import tab in alerting settings page [#&#8203;129051](https://github.com/grafana/grafana/pull/129051), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Add notification template import to the import-to-GMA wizard [#&#8203;128329](https://github.com/grafana/grafana/pull/128329), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Add promote and auto sync to ImportToGMAWizard [#&#8203;126907](https://github.com/grafana/grafana/pull/126907), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Add staged configuration summary in import settings page [#&#8203;129204](https://github.com/grafana/grafana/pull/129204), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Compute staged config origin server-side [#&#8203;130727](https://github.com/grafana/grafana/pull/130727), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Migrate notifications API to v1beta1 [#&#8203;124702](https://github.com/grafana/grafana/pull/124702), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Recognize "default" and "user-defined" as the default routing tree (1/4) [#&#8203;127880](https://github.com/grafana/grafana/pull/127880), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Recognize "default" and "user-defined" as the default routing tree (2/4) [#&#8203;127881](https://github.com/grafana/grafana/pull/127881), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Recognize "default" and "user-defined" as the default routing tree (3/4) [#&#8203;127883](https://github.com/grafana/grafana/pull/127883), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Recognize "default" and "user-defined" as the default routing tree (4/4) [#&#8203;127884](https://github.com/grafana/grafana/pull/127884), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Return 403 instead of 500 on contact point provenance mismatch [#&#8203;127699](https://github.com/grafana/grafana/pull/127699), [@&#8203;rwwiv](https://github.com/rwwiv) - **Alerting:** Revert a staged import configuration [#&#8203;129243](https://github.com/grafana/grafana/pull/129243), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Show unusable time intervals as disabled in the mute timings selector [#&#8203;130323](https://github.com/grafana/grafana/pull/130323), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** Track import method analytics in import to gma [#&#8203;128142](https://github.com/grafana/grafana/pull/128142), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **Alerting:** remove AlertingCentralHistory FT [#&#8203;130164](https://github.com/grafana/grafana/pull/130164), [@&#8203;konstantinmv](https://github.com/konstantinmv) - **Analytics:** Add public dashboard UID to loki usage insights events (Enterprise) - **Auditing:** Record the user name on user deletion audit logs (Enterprise) - **Azure Monitor:** Cache subscription lookups and collapse double Unmarshal in buildQuery [#&#8203;123556](https://github.com/grafana/grafana/pull/123556), [@&#8203;adamyeats](https://github.com/adamyeats) - **Azure monitor:** Azure Metrics Batch API Implementation backend [#&#8203;123696](https://github.com/grafana/grafana/pull/123696), [@&#8203;bossinc](https://github.com/bossinc) - **CloudWatch Logs:** Add frontend support for querying by data source [#&#8203;123742](https://github.com/grafana/grafana/pull/123742), [@&#8203;kevinwcyu](https://github.com/kevinwcyu) - **ColorScale:** Remove live hoverValue, remove from HeatMap tooltip [#&#8203;128812](https://github.com/grafana/grafana/pull/128812), [@&#8203;leeoniya](https://github.com/leeoniya) - **DashList:** Show dashboard description tooltip when it's available [#&#8203;130006](https://github.com/grafana/grafana/pull/130006), [@&#8203;DeeGeeGit](https://github.com/DeeGeeGit) - **Dashboard:** redirect from dashboard settings tabs to sidebar counterparts [#&#8203;125966](https://github.com/grafana/grafana/pull/125966), [@&#8203;bfmatei](https://github.com/bfmatei) - **Dashboards:** Allow threshold interpolation [#&#8203;128451](https://github.com/grafana/grafana/pull/128451), [@&#8203;mdvictor](https://github.com/mdvictor) - **Dashboards:** Deprecate scripted dashboards and disable them by default [#&#8203;130207](https://github.com/grafana/grafana/pull/130207), [@&#8203;kristinademeshchik](https://github.com/kristinademeshchik) - **Dashboards:** Enable new view panel controls by default [#&#8203;129187](https://github.com/grafana/grafana/pull/129187), [@&#8203;torkelo](https://github.com/torkelo) - **Dashboards:** Increase nesting depth to 4 and allow nested tabs [#&#8203;129174](https://github.com/grafana/grafana/pull/129174), [@&#8203;bfmatei](https://github.com/bfmatei) - **Dashboards:** Show panel query errors and notices in one UI [#&#8203;127436](https://github.com/grafana/grafana/pull/127436), [@&#8203;mdvictor](https://github.com/mdvictor) - **Developer Guide:** Add note about requiring signed commits [#&#8203;127162](https://github.com/grafana/grafana/pull/127162), [@&#8203;gelicia](https://github.com/gelicia) - **Docs:** document the tracing file exporter [#&#8203;129339](https://github.com/grafana/grafana/pull/129339), [@&#8203;leandro-deveikis](https://github.com/leandro-deveikis) - **Explore Logs:** log line highlight color lighten in dark, update deprecated pinned color [#&#8203;130516](https://github.com/grafana/grafana/pull/130516), [@&#8203;L2D2Grafana](https://github.com/L2D2Grafana) - **Folder API:** Replace legacy access control logic with app platform API call [#&#8203;125642](https://github.com/grafana/grafana/pull/125642), [@&#8203;aocenas](https://github.com/aocenas) - **Go:** Update version to 1.26.5 [#&#8203;128011](https://github.com/grafana/grafana/pull/128011), [@&#8203;macabu](https://github.com/macabu) - **GrafanaUI:** Add real magnification effect to GrotNotFound lens [#&#8203;130118](https://github.com/grafana/grafana/pull/130118), [@&#8203;xndcn](https://github.com/xndcn) - **Home:** Enable unified homepage for all users (remove flag) [#&#8203;129054](https://github.com/grafana/grafana/pull/129054), [@&#8203;MattIPv4](https://github.com/MattIPv4) - **Live:** Support redis\:// and rediss\:// (TLS) connection URLs in ha\_engine\_address [#&#8203;129938](https://github.com/grafana/grafana/pull/129938), [@&#8203;DeeGeeGit](https://github.com/DeeGeeGit) - **Logs:** Add more suggested fields and integrate with the new Logs Table [#&#8203;128002](https://github.com/grafana/grafana/pull/128002), [@&#8203;matyax](https://github.com/matyax) - **Logs:** use gray (dimgray) for debug level color [#&#8203;129896](https://github.com/grafana/grafana/pull/129896), [@&#8203;L2D2Grafana](https://github.com/L2D2Grafana) - **Plugins:** Force TLS 1.3 feature toggle [#&#8203;130390](https://github.com/grafana/grafana/pull/130390), [@&#8203;aangelisc](https://github.com/aangelisc) - **Provisioning (enterprise):** (4/8) Add OAuth app connections for GitLab and Bitbucket (Enterprise) - **Provisioning:** Add Dashboard Previews to GitHub Enterprise [#&#8203;127614](https://github.com/grafana/grafana/pull/127614), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Add Github Enterprise frontend [#&#8203;127209](https://github.com/grafana/grafana/pull/127209), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Add filter for out-of-sync resources in Resources tab [#&#8203;128456](https://github.com/grafana/grafana/pull/128456), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Add option to author commits as the signer [#&#8203;127970](https://github.com/grafana/grafana/pull/127970), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Add resource kind icons to job summary table [#&#8203;127237](https://github.com/grafana/grafana/pull/127237), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Add webhook support for GithubEnterprise (Enterprise) - **Provisioning:** Allow overriding the Git Sync commit author [#&#8203;130547](https://github.com/grafana/grafana/pull/130547), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Attribute jobs to their author and origin [#&#8203;128819](https://github.com/grafana/grafana/pull/128819), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Attribute webhook-created jobs to the sending user (Enterprise) - **Provisioning:** Bitbucket webhook UI [#&#8203;128649](https://github.com/grafana/grafana/pull/128649), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Bitbucket webhooks (Enterprise) - **Provisioning:** Change commit message template to multi-line textarea [#&#8203;128529](https://github.com/grafana/grafana/pull/128529), [@&#8203;cursoragent](https://github.com/cursoragent) - **Provisioning:** Diff Git Sync PR previews against the merge base [#&#8203;128149](https://github.com/grafana/grafana/pull/128149), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Diff GitLab Git Sync PR previews against the merge base (Enterprise) - **Provisioning:** Enable Dashboard Previews for Github Enterprise in UI [#&#8203;127906](https://github.com/grafana/grafana/pull/127906), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Enable Git Sync conventions by default in public preview [#&#8203;130670](https://github.com/grafana/grafana/pull/130670), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Enable Git Sync user attribution by default [#&#8203;130671](https://github.com/grafana/grafana/pull/130671), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Enable Github Enterprise provider by default [#&#8203;128376](https://github.com/grafana/grafana/pull/128376), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Enable Github Enterprise provider by default for enterp… (Enterprise) - **Provisioning:** Exclude SLO-apps from UI in migrate gitops workflow [#&#8203;128961](https://github.com/grafana/grafana/pull/128961), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Exclude SLO-managed dashboards from being exported [#&#8203;128815](https://github.com/grafana/grafana/pull/128815), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** GitLab webhooks (backend) [#&#8203;127204](https://github.com/grafana/grafana/pull/127204), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Improve Git Sync pull-request comment [#&#8203;128100](https://github.com/grafana/grafana/pull/128100), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Improve form errors for github connections [#&#8203;128133](https://github.com/grafana/grafana/pull/128133), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Link folder metadata and deleted files in PR comments [#&#8203;128895](https://github.com/grafana/grafana/pull/128895), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Make Migrate to GitOps resource-agnostic for playlists [#&#8203;127028](https://github.com/grafana/grafana/pull/127028), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Make Resources tab tree foldable [#&#8203;128453](https://github.com/grafana/grafana/pull/128453), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Paginate the Migrate to GitOps resources table [#&#8203;128042](https://github.com/grafana/grafana/pull/128042), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Pretty-print generated \_folder.json [#&#8203;127947](https://github.com/grafana/grafana/pull/127947), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Show folder path in Migrate resources list [#&#8203;128454](https://github.com/grafana/grafana/pull/128454), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Show job author and origin in recent jobs [#&#8203;128820](https://github.com/grafana/grafana/pull/128820), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Show job errors in Migrate to GitOps drawer [#&#8203;127936](https://github.com/grafana/grafana/pull/127936), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Show sync status for playlists in Resources tab [#&#8203;127021](https://github.com/grafana/grafana/pull/127021), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Show who triggered repository jobs [#&#8203;127984](https://github.com/grafana/grafana/pull/127984), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Surface github error details [#&#8203;128059](https://github.com/grafana/grafana/pull/128059), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** UI to set branch when migrating grafana -> gitops [#&#8203;128562](https://github.com/grafana/grafana/pull/128562), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** adapt GitLab to the provider-agnostic webhook lifecycle (Enterprise) - **Provisioning:** add "View repository" link next to provisioned badges [#&#8203;127409](https://github.com/grafana/grafana/pull/127409), [@&#8203;ywzheng1](https://github.com/ywzheng1) - **Provisioning:** add ability to force full pull instead of incremental sync [#&#8203;128330](https://github.com/grafana/grafana/pull/128330), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** add option to disable webhook in repository and connection [#&#8203;126790](https://github.com/grafana/grafana/pull/126790), [@&#8203;Shubham19032004](https://github.com/Shubham19032004) - **Provisioning:** add provider logo to repository page title [#&#8203;127223](https://github.com/grafana/grafana/pull/127223), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** allow Git Sync option for root-level saves and new folders in folderless mode [#&#8203;127399](https://github.com/grafana/grafana/pull/127399), [@&#8203;Shubham19032004](https://github.com/Shubham19032004) - **Provisioning:** implement GitLab webhooks (Enterprise) - **Provisioning:** link Git Sync PR footer to repo admin page [#&#8203;128353](https://github.com/grafana/grafana/pull/128353), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** make sync per-resource write timeout configurable [#&#8203;127862](https://github.com/grafana/grafana/pull/127862), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** regenerate token when its secret is missing [#&#8203;127878](https://github.com/grafana/grafana/pull/127878), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** show webhook UI for GitLab repositories [#&#8203;127806](https://github.com/grafana/grafana/pull/127806), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** support migrating to a selected branch [#&#8203;128356](https://github.com/grafana/grafana/pull/128356), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **QueryVariable:** Redesign the query variable editor [#&#8203;127048](https://github.com/grafana/grafana/pull/127048), [@&#8203;grafakus](https://github.com/grafakus) - **Reports:** support template variables without a type allowlist (Enterprise) - **SQLite:** Revert the journal mode when wal is disabled [#&#8203;130695](https://github.com/grafana/grafana/pull/130695), [@&#8203;pstibrany](https://github.com/pstibrany) - **Table:** Make cell tooltips dynamic height so content is not cut off [#&#8203;127107](https://github.com/grafana/grafana/pull/127107), [@&#8203;fastfrwrd](https://github.com/fastfrwrd) - **Trace View:** Check for the existence of logs when showing the trace-to-logs button [#&#8203;128702](https://github.com/grafana/grafana/pull/128702), [@&#8203;matyax](https://github.com/matyax) - **Tracing:** add file exporter to write traces as OTLP/JSON [#&#8203;128679](https://github.com/grafana/grafana/pull/128679), [@&#8203;leandro-deveikis](https://github.com/leandro-deveikis) - **Transformations:** Keep Merge series/tables available with a single data series [#&#8203;129569](https://github.com/grafana/grafana/pull/129569), [@&#8203;nicwestvold](https://github.com/nicwestvold) - **Unified Storage:** set garbage collection dry run default to false [#&#8203;130533](https://github.com/grafana/grafana/pull/130533), [@&#8203;filewalkwithme](https://github.com/filewalkwithme) - **ViewPanel:** Url sync for fanout option [#&#8203;128270](https://github.com/grafana/grafana/pull/128270), [@&#8203;torkelo](https://github.com/torkelo) - **alerting:** allow import to gma wizard navigation for non admin users when sync is not active [#&#8203;127818](https://github.com/grafana/grafana/pull/127818), [@&#8203;rodrigopk](https://github.com/rodrigopk) - **provisioning:** allow authoring commits as the signer [#&#8203;127969](https://github.com/grafana/grafana/pull/127969), [@&#8203;amalavet](https://github.com/amalavet) ##### Bug fixes - \*\* Gauge:\*\* Fix gradient stops out of order for negative thresholds [#&#8203;128532](https://github.com/grafana/grafana/pull/128532), [@&#8203;fastfrwrd](https://github.com/fastfrwrd) - **Accessibility:** Ensure `InlineToast` contents are announced by screenreaders [#&#8203;128488](https://github.com/grafana/grafana/pull/128488), [@&#8203;ashharrison90](https://github.com/ashharrison90) - **Accessibility:** Properly announce section headings on variable edit pages [#&#8203;130706](https://github.com/grafana/grafana/pull/130706), [@&#8203;ashharrison90](https://github.com/ashharrison90) - **Alerting:** Check managed routes when deleting a time interval [#&#8203;129247](https://github.com/grafana/grafana/pull/129247), [@&#8203;JacobsonMT](https://github.com/JacobsonMT) - **Alerting:** Fix alert rule detail showing "Inhibited" when nothing is inhibited [#&#8203;130264](https://github.com/grafana/grafana/pull/130264), [@&#8203;petergreen86](https://github.com/petergreen86) - **Alerting:** Fix reset default route wiping provenance for all managed routes [#&#8203;130553](https://github.com/grafana/grafana/pull/130553), [@&#8203;JacobsonMT](https://github.com/JacobsonMT) - **Auth:** Deduplicate concurrent login pings [#&#8203;129927](https://github.com/grafana/grafana/pull/129927), [@&#8203;cipher416](https://github.com/cipher416) - **Auth:** Skip session token rotation when request is not session authenticated [#&#8203;129920](https://github.com/grafana/grafana/pull/129920), [@&#8203;thejamesgore](https://github.com/thejamesgore) - **Azure Monitor:** fix migration for dimension filters [#&#8203;128786](https://github.com/grafana/grafana/pull/128786), [@&#8203;olivierlemasle](https://github.com/olivierlemasle) - **Dashboard scene:** Activate edit pane for programmatic panel mutations [#&#8203;128433](https://github.com/grafana/grafana/pull/128433), [@&#8203;ivanortegaalba](https://github.com/ivanortegaalba) - **DashboardDS:** Fix chained dashboard datasource panels showing stale data [#&#8203;126378](https://github.com/grafana/grafana/pull/126378), [@&#8203;oscarkilhed](https://github.com/oscarkilhed) - **Dashboards:** Fix loading indicator not clipping to panel border radius [#&#8203;128040](https://github.com/grafana/grafana/pull/128040), [@&#8203;hckhanh](https://github.com/hckhanh) - **Dashboards:** Fixes panel header spacing issues [#&#8203;128910](https://github.com/grafana/grafana/pull/128910), [@&#8203;torkelo](https://github.com/torkelo) - **DataSourcePicker:** Fix selected datasource not being highlighted [#&#8203;126948](https://github.com/grafana/grafana/pull/126948), [@&#8203;mikkancso](https://github.com/mikkancso) - **Fix:** Parse epoch ms strings correctly to prevent NaN in Postgres queries [#&#8203;122693](https://github.com/grafana/grafana/pull/122693), [@&#8203;Tarasusrus](https://github.com/Tarasusrus) - **Logs Table:** Fix data export by passing the raw table frame [#&#8203;130245](https://github.com/grafana/grafana/pull/130245), [@&#8203;matyax](https://github.com/matyax) - **Logs Table:** Fix missing results when logs stream [#&#8203;128870](https://github.com/grafana/grafana/pull/128870), [@&#8203;matyax](https://github.com/matyax) - **Logs Table:** Fix mixed usage of field name and display name [#&#8203;128677](https://github.com/grafana/grafana/pull/128677), [@&#8203;matyax](https://github.com/matyax) - **Logs Table:** Fix sticky filter after closing details [#&#8203;128398](https://github.com/grafana/grafana/pull/128398), [@&#8203;matyax](https://github.com/matyax) - **Navigation:** Inject orgId into all navigations [#&#8203;120978](https://github.com/grafana/grafana/pull/120978), [@&#8203;QuentinBisson](https://github.com/QuentinBisson) - **PostgreSQL:** Fix data source init failure when maxOpenConns=0 [#&#8203;122556](https://github.com/grafana/grafana/pull/122556), [@&#8203;Tarasusrus](https://github.com/Tarasusrus) - **Provisioning:** Disable next button until a branch is selected in the Git Sync wizard [#&#8203;127973](https://github.com/grafana/grafana/pull/127973), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Export v0 dashboards as v1 so synced files load [#&#8203;128357](https://github.com/grafana/grafana/pull/128357), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Fix NPE when testing GHE repo on creation [#&#8203;127207](https://github.com/grafana/grafana/pull/127207), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Fix blank Action for deleted resources in PR comment [#&#8203;128522](https://github.com/grafana/grafana/pull/128522), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Fix customServerURL resolution for GHE [#&#8203;127113](https://github.com/grafana/grafana/pull/127113), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Fix enforced branch name template dropping ref on save [#&#8203;130163](https://github.com/grafana/grafana/pull/130163), [@&#8203;ferruvich](https://github.com/ferruvich) - **Provisioning:** Fix job user attribution in multi-tenant deployments [#&#8203;129598](https://github.com/grafana/grafana/pull/129598), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Fix multi-org usage stats [#&#8203;127465](https://github.com/grafana/grafana/pull/127465), [@&#8203;ferruvich](https://github.com/ferruvich) - **Provisioning:** Fix selective export quota counting whole namespace [#&#8203;127927](https://github.com/grafana/grafana/pull/127927), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Keep migrate reachable when connected repo can't push [#&#8203;127921](https://github.com/grafana/grafana/pull/127921), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Only regenerate folder UIDs for folder/folderless migrations [#&#8203;127925](https://github.com/grafana/grafana/pull/127925), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** Preserve the original creator on job history records [#&#8203;128712](https://github.com/grafana/grafana/pull/128712), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** Set FileToLarge error as warning instead of error [#&#8203;128822](https://github.com/grafana/grafana/pull/128822), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Strip deprecatedInternalId label for dashboards [#&#8203;128530](https://github.com/grafana/grafana/pull/128530), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** Use neutral fallback in the jobs Triggered by column [#&#8203;128238](https://github.com/grafana/grafana/pull/128238), [@&#8203;amalavet](https://github.com/amalavet) - **Provisioning:** abort in-flight worker when job lease is lost [#&#8203;127792](https://github.com/grafana/grafana/pull/127792), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** don't stamp a folder on org-scoped resources when writing [#&#8203;127142](https://github.com/grafana/grafana/pull/127142), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** drop stale and duplicate watch events in the frontend list cache [#&#8203;128766](https://github.com/grafana/grafana/pull/128766), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** fix zero-margin job lease renewal, raise claim expiry to 60s [#&#8203;127786](https://github.com/grafana/grafana/pull/127786), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** make GitHub webhook creation idempotent (fix repos stuck unhealthy with HTTP 422) [#&#8203;128068](https://github.com/grafana/grafana/pull/128068), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** normalize folder titles into safe export paths [#&#8203;127946](https://github.com/grafana/grafana/pull/127946), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** only push variable changes to git if save variables is … [#&#8203;128818](https://github.com/grafana/grafana/pull/128818), [@&#8203;floriecai](https://github.com/floriecai) - **Provisioning:** retry connection status patch conflicts [#&#8203;127754](https://github.com/grafana/grafana/pull/127754), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** tolerate NotFound in expired job cleanup for multi-pod [#&#8203;127753](https://github.com/grafana/grafana/pull/127753), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Provisioning:** treat skip-delete of resource owned by another file as a warning [#&#8203;129029](https://github.com/grafana/grafana/pull/129029), [@&#8203;ferruvich](https://github.com/ferruvich) - **Provisioning:** verify claim ownership so two pods don't run the same job [#&#8203;127783](https://github.com/grafana/grafana/pull/127783), [@&#8203;MissingRoberto](https://github.com/MissingRoberto) - **Reporting:** batch dashboard lookups when listing reports (Enterprise) - **Secrets:** Fix RBAC gate on AWS keeper creation route (Enterprise) - **SqlExpressions:** Fix parsing for Table Names with spaces [#&#8203;117615](https://github.com/grafana/grafana/pull/117615), [@&#8203;NWRichmond](https://github.com/NWRichmond) - **Table:** Fix apply to entire row when multiple columns enable it [#&#8203;128527](https://github.com/grafana/grafana/pull/128527), [@&#8203;fastfrwrd](https://github.com/fastfrwrd) - **Transformations:** Fix Filter by value regex matching null values [#&#8203;129572](https://github.com/grafana/grafana/pull/129572), [@&#8203;nicwestvold](https://github.com/nicwestvold) - **Transformations:** Fix field lookup failing for the Countries and USA States gazetteers [#&#8203;129568](https://github.com/grafana/grafana/pull/129568), [@&#8203;nicwestvold](https://github.com/nicwestvold) - **Transformations:** Fix field name deduplication in Extract fields [#&#8203;129889](https://github.com/grafana/grafana/pull/129889), [@&#8203;nicwestvold](https://github.com/nicwestvold) - **Transformations:** Fix inner join returning rows when a frame is dropped [#&#8203;129576](https://github.com/grafana/grafana/pull/129576), [@&#8203;nicwestvold](https://github.com/nicwestvold) - **fix:** fix panic for unimplemented gitlab webhook repo (Enterprise) ##### Breaking changes - **Alerting:** Remove alertingSaveStateCompressed feature flag [#&#8203;129135](https://github.com/grafana/grafana/pull/129135), [@&#8203;yuri-tceretian](https://github.com/yuri-tceretian) ##### Plugin development fixes & changes - **Combobox:** Fix duplicate async requests and stale errors overwriting fresh options [#&#8203;129788](https://github.com/grafana/grafana/pull/129788), [@&#8203;joshhunt](https://github.com/joshhunt) - **PageLoader:** Expose in [@&#8203;grafana/ui](https://github.com/grafana/ui) and apply custom branding automatically [#&#8203;124597](https://github.com/grafana/grafana/pull/124597), [@&#8203;ashharrison90](https://github.com/ashharrison90) - **Pagination:** Set `aria-current` on active page [#&#8203;128494](https://github.com/grafana/grafana/pull/128494), [@&#8203;ashharrison90](https://github.com/ashharrison90) - **Tag:** Fix crash when picking an out of bounds `colorIndex` [#&#8203;129579](https://github.com/grafana/grafana/pull/129579), [@&#8203;ashharrison90](https://github.com/ashharrison90) <!-- 13.2.0 END --> <!-- 13.1.5 START --> ### [`v13.1.5`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1315-2026-09-02) ##### Security - Security: Fix CVE-2026-12704 - Security: Fix CVE-2026-14199 - Security: Fix CVE-2026-19475 <!-- 13.1.5 END --> <!-- 13.1.4 START --> ### [`v13.1.4`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1314-2026-08-18) ##### Security - CVE-2026-17183 ##### Bug fixes - **Reporting:** batch dashboard lookups when listing reports (Enterprise) <!-- 13.1.4 END --> <!-- 13.1.3 START --> ### [`v13.1.3`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1313-2026-08-07) <!-- 13.1.3 END --> <!-- 13.1.2 START --> ### [`v13.1.2`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1312-2026-08-04) ##### Bug fixes - **Logs Table:** Fix missing results when logs stream [#&#8203;128946](https://github.com/grafana/grafana/pull/128946), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Logs Table:** Fix mixed usage of field name and display name [#&#8203;128698](https://github.com/grafana/grafana/pull/128698), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Security**: Fix CVE-2026-13438 <!-- 13.1.2 END --> <!-- 13.1.1 START --> ### [`v13.1.1`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1311-2026-07-21) ##### Features and enhancements - **Go:** Update version to 1.26.5 [#&#8203;128015](https://github.com/grafana/grafana/pull/128015), [@&#8203;macabu](https://github.com/macabu) - **Provisioning:** Improve form errors for github connections [#&#8203;128177](https://github.com/grafana/grafana/pull/128177), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Provisioning:** make sync per-resource write timeout configurable [#&#8203;127868](https://github.com/grafana/grafana/pull/127868), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) ##### Bug fixes - **Accessibility:** Ensure `InlineToast` contents are announced by screenreaders [#&#8203;128687](https://github.com/grafana/grafana/pull/128687), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **DashboardDS:** Fix chained dashboard datasource panels showing stale data [#&#8203;127248](https://github.com/grafana/grafana/pull/127248), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Provisioning:** make GitHub webhook creation idempotent (fix repos stuck unhealthy with HTTP 422) [#&#8203;128201](https://github.com/grafana/grafana/pull/128201), [@&#8203;floriecai](https://github.com/floriecai) ##### Plugin development fixes & changes - **Pagination:** Set `aria-current` on active page [#&#8203;128518](https://github.com/grafana/grafana/pull/128518), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) <!-- 13.1.1 END --> <!-- 13.1.0 START --> </details> <details> <summary>redis/docker-library-redis (docker.io/library/redis)</summary> ### [`v8.10.1`](https://github.com/redis/docker-library-redis/compare/v8.10.0...v8.10.1) [Compare Source](https://github.com/redis/docker-library-redis/compare/v8.10.0...v8.10.1) ### [`v8.10.0`](https://github.com/redis/docker-library-redis/compare/v8.8.2...v8.10.0) [Compare Source](https://github.com/redis/docker-library-redis/compare/v8.8.2...v8.10.0) ### [`v8.8.2`](https://github.com/redis/docker-library-redis/compare/v8.8.1...v8.8.2) [Compare Source](https://github.com/redis/docker-library-redis/compare/v8.8.1...v8.8.2) ### [`v8.8.1`](https://github.com/redis/docker-library-redis/compare/v8.8.0...v8.8.1) [Compare Source](https://github.com/redis/docker-library-redis/compare/v8.8.0...v8.8.1) </details> <details> <summary>prometheus/alertmanager (docker.io/prom/alertmanager)</summary> ### [`v0.34.0`](https://github.com/prometheus/alertmanager/releases/tag/v0.34.0): 0.34.0 / 2026-08-16 [Compare Source](https://github.com/prometheus/alertmanager/compare/v0.33.1...v0.34.0) - \[CHANGE] notify: The `reason` label on `alertmanager_notifications_failed_total` now distinguishes `authError` (HTTP 401/403) and `rateLimited` (HTTP 429) from the generic `clientError`. Dashboards/alerts matching `reason="clientError"` for these codes must be updated. [#&#8203;5332](https://github.com/prometheus/alertmanager/issues/5332) - \[FEATURE] Add optional templatable labels to alert routes. [#&#8203;5328](https://github.com/prometheus/alertmanager/issues/5328) - \[FEATURE] eventrecorder: Add inhibit rule names to `inhibition_muted_alert` events. [#&#8203;5315](https://github.com/prometheus/alertmanager/issues/5315) - \[FEATURE] eventrecorder: Add stdout output type. [#&#8203;5311](https://github.com/prometheus/alertmanager/issues/5311) - \[FEATURE] silences: Add active, expired, and pending boolean filter parameters to GET /api/v2/silences to allow filtering silences by state server-side. [#&#8203;5406](https://github.com/prometheus/alertmanager/issues/5406) - \[FEATURE] sns: Add aws `external_id` support in sigv4 configuration. [#&#8203;5157](https://github.com/prometheus/alertmanager/issues/5157) - \[FEATURE] template: Add `toDate` and `mustToDate` functions. [#&#8203;5327](https://github.com/prometheus/alertmanager/issues/5327) - \[ENHANCEMENT] doc: Add AlertmanagerClusterFailedPeers alertmanager-mixin. [#&#8203;5301](https://github.com/prometheus/alertmanager/issues/5301) - \[ENHANCEMENT] doc: Add description for Rocketchat parameters in global config. [#&#8203;5181](https://github.com/prometheus/alertmanager/issues/5181) - \[ENHANCEMENT] doc: Add top level tracing configuration key. [#&#8203;5314](https://github.com/prometheus/alertmanager/issues/5314) - \[ENHANCEMENT] doc: Fix Alertmanager port in amtool config routes example. [#&#8203;5312](https://github.com/prometheus/alertmanager/issues/5312) - \[ENHANCEMENT] eventrecorder: Add optional webhook batching. [#&#8203;5392](https://github.com/prometheus/alertmanager/issues/5392) - \[ENHANCEMENT] notify: The discord and webex integrations now report a failure `reason` on `alertmanager_notifications_failed_total`. [#&#8203;5332](https://github.com/prometheus/alertmanager/issues/5332) - \[ENHANCEMENT] ui: Improve responsiveness of UI when loading thousands of alerts. [#&#8203;5357](https://github.com/prometheus/alertmanager/issues/5357) - \[BUGFIX] eventrecorder: Fixed a minor performance regression when the event recorder is enabled. [#&#8203;5307](https://github.com/prometheus/alertmanager/issues/5307) - \[BUGFIX] msteamsv2: Inherit global `proxy_url` into partial `http_config`. [#&#8203;5379](https://github.com/prometheus/alertmanager/issues/5379) - \[BUGFIX] webhook: Keep custom `payload` string values verbatim instead of reinterpreting JSON leaves that look like YAML (e.g. values ending with a colon). [#&#8203;5304](https://github.com/prometheus/alertmanager/issues/5304) </details> <details> <summary>prometheus/prometheus (docker.io/prom/prometheus)</summary> ### [`v3.14.0`](https://github.com/prometheus/prometheus/releases/tag/v3.14.0): 3.14.0 / 2026-08-17 [Compare Source](https://github.com/prometheus/prometheus/compare/v3.13.2...v3.14.0) - \[CHANGE] API: Deprecate the `stats` query parameter of `/api/v1/query` and `/api/v1/query_range` for values other than `true` and `all`. Other values still enable basic statistics but now return a deprecation warning; they will be rejected in the next major release. [#&#8203;19124](https://github.com/prometheus/prometheus/issues/19124) - \[CHANGE] API: `/api/v1/status/config` now correctly shows `separator: ""` and `replacement: ""` in relabel configs when explicitly set to empty, instead of omitting them. [#&#8203;18653](https://github.com/prometheus/prometheus/issues/18653) - \[CHANGE] Discovery/Hetzner: Drop the `__meta_hetzner_datacenter` label for `hcloud` targets, following its removal from the Hetzner Cloud API. [#&#8203;19269](https://github.com/prometheus/prometheus/issues/19269) - \[CHANGE] PromQL: Enable duration expressions by default. The `promql-duration-expr` feature flag is now a no-op. [#&#8203;19033](https://github.com/prometheus/prometheus/issues/19033) - \[CHANGE] PromQL: Promote `first_over_time` to stable. It no longer requires the `promql-experimental-functions` feature flag. [#&#8203;19093](https://github.com/prometheus/prometheus/issues/19093) - \[FEATURE] Discovery: Add Oracle Cloud Infrastructure compute service discovery (`oci_sd_configs`). [#&#8203;18919](https://github.com/prometheus/prometheus/issues/18919) - \[FEATURE] PromQL: Add experimental `start_timestamp(instant-vector)` function returning the start timestamp of each sample in the given vector. Requires the `use-start-timestamps` feature flag. [#&#8203;19089](https://github.com/prometheus/prometheus/issues/19089) - \[FEATURE] PromQL: Allow `rate()` and `increase()` to use start timestamps as an alternative for rate extrapolation. Hidden behind the `use-start-timestamps` feature flag. [#&#8203;18619](https://github.com/prometheus/prometheus/issues/18619) - \[FEATURE] TSDB: Add experimental support for encoding start timestamps in histograms and float histograms. Hidden behind the `histograms-st-encoding` feature flag. [#&#8203;18609](https://github.com/prometheus/prometheus/issues/18609) - \[ENHANCEMENT] OTLP: Emit a warning when OTLP attribute names collide into the same Prometheus label after sanitization (e.g. `k8s.pod.name` and `k8s_pod_name` both become `k8s_pod_name`), and expose the `prometheus_api_otlp_translation_warnings_total` counter labelled by `category` to track such warnings. [#&#8203;18957](https://github.com/prometheus/prometheus/issues/18957) - \[ENHANCEMENT] Promtool: Add `--remote-write.path` flag to `push metrics` for backends that use a non-default remote-write endpoint. [#&#8203;19086](https://github.com/prometheus/prometheus/issues/19086) - \[ENHANCEMENT] Remote write: Forward histogram start timestamps in the remote write V2 protocol. [#&#8203;18903](https://github.com/prometheus/prometheus/issues/18903) - \[ENHANCEMENT] TSDB: Add `prometheus_tsdb_head_native_histogram_series` and `prometheus_tsdb_head_native_histogram_buckets` gauges tracking the number of native histogram series and buckets in the head. [#&#8203;19170](https://github.com/prometheus/prometheus/issues/19170) - \[ENHANCEMENT] UI: Add syntax highlighting, autocompletion, and linting for PromQL duration expressions (`step()`, `range()`, `min_of()`, `max_of()`) in range selectors and subqueries. [#&#8203;18625](https://github.com/prometheus/prometheus/issues/18625) - \[ENHANCEMENT] UI: Add copy button next to rule names on the Rules and Alerts pages. [#&#8203;18706](https://github.com/prometheus/prometheus/issues/18706) - \[ENHANCEMENT] UI: Improve rule group title contrast on the Rules page. [#&#8203;19181](https://github.com/prometheus/prometheus/issues/19181) - \[PERF] Speed up regex label matchers matching a set of literal values (e.g. `{job=~"foo|bar|baz"}`). [#&#8203;18833](https://github.com/prometheus/prometheus/issues/18833) - \[PERF] Remote read: Improve remote read throughput by removing unnecessary per-write flushing. [#&#8203;18470](https://github.com/prometheus/prometheus/issues/18470) - \[PERF] Scrape: Parse text and OpenMetrics formats without recursion, preventing stack overflow from deeply nested or malicious exposition input. [#&#8203;19143](https://github.com/prometheus/prometheus/issues/19143) - \[PERF] Scrape: Reduce native histogram scrape parsing allocations by \~49%. [#&#8203;19282](https://github.com/prometheus/prometheus/issues/19282) - \[PERF] TSDB: Speed up queries on series with many in-memory chunks. [#&#8203;18300](https://github.com/prometheus/prometheus/issues/18300) - \[BUGFIX] Alerting: Fix 100% CPU usage on shutdown that could delay graceful shutdown and trigger timeout-based kills. [#&#8203;17859](https://github.com/prometheus/prometheus/issues/17859) - \[BUGFIX] Discovery/AWS: Stop `promtool check config` from making AWS metadata service (IMDS) network calls when the `region` field is omitted in EC2, ECS, RDS, MSK, ElastiCache, and Lightsail service discovery configs. [#&#8203;19037](https://github.com/prometheus/prometheus/issues/19037) - \[BUGFIX] Discovery/Docker: Set a request timeout for `docker_sd` and `dockerswarm_sd` on `unix`, `npipe`, and `tcp` hosts. Previously an unresponsive daemon could freeze discovery indefinitely, silently pinning targets to a stale snapshot. [#&#8203;19237](https://github.com/prometheus/prometheus/issues/19237) - \[BUGFIX] Discovery/Docker: Fix panic in Docker Swarm service discovery when a service runs as a plugin or network-attachment. [#&#8203;19102](https://github.com/prometheus/prometheus/issues/19102) - \[BUGFIX] Discovery/Docker: Fix discovery of IPv6-only containers. [#&#8203;18778](https://github.com/prometheus/prometheus/issues/18778) - \[BUGFIX] PromQL: Fix case-insensitive regex label matchers silently dropping matching values. [#&#8203;19167](https://github.com/prometheus/prometheus/issues/19167) - \[BUGFIX] PromQL: Fix `mad_over_time` returning 0 instead of `NaN` when the range contains a `NaN` sample. [#&#8203;19040](https://github.com/prometheus/prometheus/issues/19040) - \[BUGFIX] Promtool: Accept `--enable-feature=promql-binop-fill-modifiers` in `check rules`, which previously rejected valid `fill()`/`fill_left()`/`fill_right()` expressions. [#&#8203;19153](https://github.com/prometheus/prometheus/issues/19153) - \[BUGFIX] Remote write: Respect the `AZURE_FEDERATED_TOKEN_FILE` environment variable for workload identity authentication instead of hardcoding the token file path. [#&#8203;18973](https://github.com/prometheus/prometheus/issues/18973) - \[BUGFIX] Rules: Clean up stale `rule_group_last_rule_duration_sum_seconds` and `rule_group_last_restore_duration_seconds` series when a rule group is removed or renamed on reload. Previously each reload leaked two series per dropped group, growing `/metrics` cardinality over time. [#&#8203;19107](https://github.com/prometheus/prometheus/issues/19107) - \[BUGFIX] Scrape: Fix scrape manager spinning at 100% CPU on shutdown. [#&#8203;19149](https://github.com/prometheus/prometheus/issues/19149) - \[BUGFIX] TSDB: Fix silent data loss and potential crash loop when `stale_series_compaction_threshold` is used in the config file. [#&#8203;19016](https://github.com/prometheus/prometheus/issues/19016) - \[BUGFIX] TSDB: Fix potential data loss on restart when out-of-order ingestion is enabled and blocks are compacted. [#&#8203;19016](https://github.com/prometheus/prometheus/issues/19016) - \[BUGFIX] TSDB: Fix `prometheus_tsdb_head_stale_series` over-counting and early eviction of series that change between float, integer histogram, and float histogram sample types. [#&#8203;19183](https://github.com/prometheus/prometheus/issues/19183) - \[BUGFIX] TSDB: Fix goroutine and file handle leaks when Prometheus fails to open a corrupt TSDB. On Windows, the leaked directory handle also prevented TSDB directory removal. [#&#8203;18291](https://github.com/prometheus/prometheus/issues/18291) - \[BUGFIX] TSDB: Fix out-of-order queries blocking compaction for hours, causing memory usage to grow. [#&#8203;19013](https://github.com/prometheus/prometheus/issues/19013) - \[BUGFIX] TSDB: Fix deleted series causing missing samples and errors after restart. [#&#8203;19140](https://github.com/prometheus/prometheus/issues/19140) - \[BUGFIX] TSDB: Fix native histogram data becoming incorrect after restart. [#&#8203;19202](https://github.com/prometheus/prometheus/issues/19202) - \[BUGFIX] TSDB: Surface query errors that were previously silently discarded. [#&#8203;19120](https://github.com/prometheus/prometheus/issues/19120) - \[BUGFIX] TSDB: Honour the configured float chunk encoding when compaction rewrites chunks; previously chunks encoded with `--enable-feature=xor2-encoding` could silently revert to XOR after compaction. [#&#8203;19145](https://github.com/prometheus/prometheus/issues/19145) - \[BUGFIX] UI: Show the delete-series form on the TSDB Status page when `--web.enable-admin-api` is enabled. [#&#8203;19025](https://github.com/prometheus/prometheus/issues/19025) ### [`v3.13.2`](https://github.com/prometheus/prometheus/releases/tag/v3.13.2): 3.13.2 / 2026-07-29 [Compare Source](https://github.com/prometheus/prometheus/compare/v3.13.1...v3.13.2) #### What's Changed - \[SECURITY] Bump golang.org/x/text to v0.39.0 (CVE-2026-56852) and google.golang.org/grpc to v1.82.1 (GHSA-hrxh-6v49-42gf). [#&#8203;19290](https://github.com/prometheus/prometheus/issues/19290) by [@&#8203;krajorama](https://github.com/krajorama) - \[BUGFIX] PromQL: Preallocate the active query tracker file to avoid SIGBUS crashes when the data disk is full. [#&#8203;19289](https://github.com/prometheus/prometheus/issues/19289) by [@&#8203;akshajrawat](https://github.com/akshajrawat) **Full Changelog**: <https://github.com/prometheus/prometheus/compare/v3.13.1...v3.13.2> </details> <details> <summary>prometheus-pve/prometheus-pve-exporter (docker.io/prompve/prometheus-pve-exporter)</summary> ### [`v3.10.0`](https://github.com/prometheus-pve/prometheus-pve-exporter/blob/HEAD/CHANGELOG.rst#3100---2026-08-10) [Compare Source](https://github.com/prometheus-pve/prometheus-pve-exporter/compare/v3.9.0...v3.10.0) Added ``` - Bump minimum python version to 3.11 (#&#8203;458) Changed ``` - Bump cryptography from 49.0.0 to 50.0.0 ([#&#8203;491](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/491)) - Bump wrapt from 2.2.2 to 2.3.0 ([#&#8203;490](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/490)) - Bump prometheus-client from 0.25.0 to 0.26.0 ([#&#8203;489](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/489)) - Bump certifi from 2026.6.17 to 2026.7.22 ([#&#8203;486](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/486)) - Bump charset-normalizer from 3.4.7 to 3.4.9 ([#&#8203;484](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/484)) - Bump cffi from 2.0.0 to 2.1.0 ([#&#8203;483](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/483)) - Bump docker/login-action from 4.2.0 to 4.4.0 ([#&#8203;482](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/482)) - Bump docker/build-push-action from 7.2.0 to 7.3.0 ([#&#8203;481](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/481)) - Bump docker/metadata-action from 6.1.0 to 6.2.0 ([#&#8203;480](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/480)) - Bump actions/attest from 4.1.0 to 4.1.1 ([#&#8203;478](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/478)) - Bump docker/setup-qemu-action from 4.1.0 to 4.2.0 ([#&#8203;477](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/477)) - Switch from actions/attest-build-provenance to actions/attest ([#&#8203;473](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/473)) - Bump actions/checkout from 6.0.3 to 7.0.0 ([#&#8203;475](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/475)) - Bump wrapt from 2.2.1 to 2.2.2 ([#&#8203;476](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/476)) - Bump actions/setup-python from 6.2.0 to 6.3.0 ([#&#8203;474](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/474)) - Disable gunicorn control socket ([#&#8203;472](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/472)) - Bump cryptography from 48.0.1 to 49.0.0 ([#&#8203;470](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/470)) - Bump certifi from 2026.5.20 to 2026.6.17 ([#&#8203;469](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/469)) - Bump alpine from 3.24.0 to 3.24.1 ([#&#8203;468](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/468)) - Bump alpine from 3.23.4 to 3.24.0 ([#&#8203;465](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/465)) - Bump cryptography from 46.0.7 to 48.0.1 ([#&#8203;466](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/466)) - Bump gunicorn from 23.0.0 to 26.0.0 ([#&#8203;462](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/462)) - Bump requests from 2.33.1 to 2.34.2 ([#&#8203;463](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/463)) - Bump charset-normalizer from 3.3.2 to 3.4.7 ([#&#8203;464](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/464)) - Bump idna from 3.17 to 3.18 ([#&#8203;461](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/461)) - Bump certifi from 2024.7.4 to 2026.5.20 ([#&#8203;460](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/460)) - Bump actions/checkout from 6.0.2 to 6.0.3 ([#&#8203;459](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/459)) - Bump bcrypt from 4.1.2 to 5.0.0 ([#&#8203;457](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/457)) - Bump pycparser from 2.21 to 3.0 ([#&#8203;456](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/456)) - Bump invoke from 2.2.0 to 3.0.3 ([#&#8203;455](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/455)) - Bump markupsafe from 2.1.3 to 3.0.3 ([#&#8203;454](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/454)) - Bump packaging from 23.2 to 26.2 ([#&#8203;453](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/453)) - Bump docker/setup-qemu-action from 4.0.0 to 4.1.0 ([#&#8203;452](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/452)) - Allow dependabot to update all pip dependencies ([#&#8203;451](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/451)) - Bump idna from 3.7 to 3.17 ([#&#8203;450](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/450)) - fixup! Bump wrapt from 2.1.2 to 2.2.1 ([#&#8203;449](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/449)) - Revert "Bump wrapt from 2.1.2 to 2.2.1 ([#&#8203;449](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/449))" - Bump wrapt from 2.1.2 to 2.2.1 ([#&#8203;449](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/449)) - Bump docker/metadata-action from 6.0.0 to 6.1.0 ([#&#8203;448](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/448)) - Bump docker/setup-buildx-action from 4.0.0 to 4.1.0 ([#&#8203;447](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/447)) - Bump docker/login-action from 4.1.0 to 4.2.0 ([#&#8203;446](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/446)) - Bump docker/build-push-action from 7.1.0 to 7.2.0 ([#&#8203;445](https://github.com/prometheus-pve/prometheus-pve-exporter/issues/445)) </details> <details> <summary>ansible/ansible-lint (https://github.com/ansible/ansible-lint)</summary> ### [`v26.8.0`](https://github.com/ansible/ansible-lint/releases/tag/v26.8.0) [Compare Source](https://github.com/ansible/ansible-lint/compare/v26.6.0...v26.8.0) #### What's Changed - Fix/sonarcloud unbounded recursion complexity by [@&#8203;sathyapramod](https://github.com/sathyapramod) in [#&#8203;5098](https://github.com/ansible/ansible-lint/pull/5098) - feat: honor ANSIBLE\_VAULT\_PASSWORD\_FILE for vault decryption by [@&#8203;JohnLahr](https://github.com/JohnLahr) in [#&#8203;5019](https://github.com/ansible/ansible-lint/pull/5019) - fix: jinja\[spacing] rule creating invalid syntax for minus modifiers by [@&#8203;Dotify71](https://github.com/Dotify71) in [#&#8203;5102](https://github.com/ansible/ansible-lint/pull/5102) - chore(deps): update all dependencies by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5081](https://github.com/ansible/ansible-lint/pull/5081) - chore(deps): update all dependencies pep621 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5082](https://github.com/ansible/ansible-lint/pull/5082) - fix: remove stale words from cspell dictionary by [@&#8203;rockygeekz](https://github.com/rockygeekz) in [#&#8203;5109](https://github.com/ansible/ansible-lint/pull/5109) - chore(deps): bump schemas npm packages for Dependabot CVEs by [@&#8203;sudhirverma](https://github.com/sudhirverma) in [#&#8203;5114](https://github.com/ansible/ansible-lint/pull/5114) - fix(security): update dependencies \[SECURITY] by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5111](https://github.com/ansible/ansible-lint/pull/5111) - fix: address SonarCloud new code violations by [@&#8203;sudhirverma](https://github.com/sudhirverma) in [#&#8203;5116](https://github.com/ansible/ansible-lint/pull/5116) - chore(deps): update all dependencies by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5121](https://github.com/ansible/ansible-lint/pull/5121) - chore(deps): update all dependencies pep621 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5122](https://github.com/ansible/ansible-lint/pull/5122) - fix(deps): exclude ansible-core 2.17.x (CVE-2026-11332) by [@&#8203;rockygeekz](https://github.com/rockygeekz) in [#&#8203;5123](https://github.com/ansible/ansible-lint/pull/5123) - fix: expose ansible-galaxy on the uv tool-install path by [@&#8203;jeffcpullen](https://github.com/jeffcpullen) in [#&#8203;5124](https://github.com/ansible/ansible-lint/pull/5124) - fix: var-naming for register projections by [@&#8203;0xTaoZ](https://github.com/0xTaoZ) in [#&#8203;5110](https://github.com/ansible/ansible-lint/pull/5110) - chore: Adding OpenWrt 25.12 as platform by [@&#8203;sscheib](https://github.com/sscheib) in [#&#8203;5132](https://github.com/ansible/ansible-lint/pull/5132) - chore(deps): update all dependencies pep621 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5134](https://github.com/ansible/ansible-lint/pull/5134) - chore(deps): update all dependencies by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5133](https://github.com/ansible/ansible-lint/pull/5133) - fix: add timeout to release-check urlopen() call by [@&#8203;cooperlees](https://github.com/cooperlees) in [#&#8203;5128](https://github.com/ansible/ansible-lint/pull/5128) - fix: respect ANSIBLE\_HOME env var for cache dir selection ([#&#8203;5806](https://github.com/ansible/ansible-lint/issues/5806)) by [@&#8203;Jkhall81](https://github.com/Jkhall81) in [#&#8203;5105](https://github.com/ansible/ansible-lint/pull/5105) - fix: deduplicate ANSIBLE\_HOME isolation check by [@&#8203;rockygeekz](https://github.com/rockygeekz) in [#&#8203;5140](https://github.com/ansible/ansible-lint/pull/5140) - fix(security): update dependencies \[SECURITY] by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5141](https://github.com/ansible/ansible-lint/pull/5141) - fix: do not require role prefix for ansible\_ connection variables by [@&#8203;Sanjays2402](https://github.com/Sanjays2402) in [#&#8203;5130](https://github.com/ansible/ansible-lint/pull/5130) - Adding missing FreeBSD versions. by [@&#8203;jmpalacios](https://github.com/jmpalacios) in [#&#8203;5143](https://github.com/ansible/ansible-lint/pull/5143) - chore(deps): update all dependencies pep621 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5139](https://github.com/ansible/ansible-lint/pull/5139) - fix: prepend runtime cache dir to collections paths ([#&#8203;5137](https://github.com/ansible/ansible-lint/issues/5137)) by [@&#8203;rockygeekz](https://github.com/rockygeekz) in [#&#8203;5145](https://github.com/ansible/ansible-lint/pull/5145) #### New Contributors - [@&#8203;sathyapramod](https://github.com/sathyapramod) made their first contribution in [#&#8203;5098](https://github.com/ansible/ansible-lint/pull/5098) - [@&#8203;JohnLahr](https://github.com/JohnLahr) made their first contribution in [#&#8203;5019](https://github.com/ansible/ansible-lint/pull/5019) - [@&#8203;jeffcpullen](https://github.com/jeffcpullen) made their first contribution in [#&#8203;5124](https://github.com/ansible/ansible-lint/pull/5124) - [@&#8203;0xTaoZ](https://github.com/0xTaoZ) made their first contribution in [#&#8203;5110](https://github.com/ansible/ansible-lint/pull/5110) - [@&#8203;cooperlees](https://github.com/cooperlees) made their first contribution in [#&#8203;5128](https://github.com/ansible/ansible-lint/pull/5128) - [@&#8203;Sanjays2402](https://github.com/Sanjays2402) made their first contribution in [#&#8203;5130](https://github.com/ansible/ansible-lint/pull/5130) - [@&#8203;jmpalacios](https://github.com/jmpalacios) made their first contribution in [#&#8203;5143](https://github.com/ansible/ansible-lint/pull/5143) **Full Changelog**: <https://github.com/ansible/ansible-lint/compare/v26.6.0...v26.8.0> </details> <details> <summary>netbox-community/netbox (netbox)</summary> ### [`v4.7.0`](https://github.com/netbox-community/netbox/releases/tag/v4.7.0): - 2026-09-02 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.6.10...v4.7.0) > \[!WARNING] > This release of NetBox drops support for PostgreSQL 14. > \[!WARNING] > The PostgreSQL database must support the [ltree extension](https://www.postgresql.org/docs/current/ltree.html). This is a trusted module which ships with PostgreSQL and does not require superuser permission to activate. It will be installed automatically upon upgrade. > \[!WARNING] > This release of NetBox drops support for Redis 5.x. ##### Breaking Changes - PostgreSQL 14 is no longer supported. NetBox now requires PostgreSQL 15 or later: The upgrade script will abort when connected to an earlier release. (NetBox v4.6 reported this as a warning.) - Redis 5.x is no longer supported. NetBox now requires Redis 6.0 or later. - Selection and multiple selection custom field values are now returned as objects specifying both the raw value and its human-friendly label (e.g. `{"value": "datacenter", "label": "Data Center"}`) in both the REST and GraphQL APIs. These fields continue to accept the raw value on write. - The `protocol` and `ports` fields on the `ipam.Service` and `ipam.ServiceTemplate` models have been replaced by a unified `port_mappings` field, which supports multiple protocols per service. The legacy fields are retained (as deprecated) in the REST and GraphQL APIs, but at the ORM level they are now read-only properties derived from `port_mappings`: Passing `protocol` or `ports` to the model raises a `TypeError`, and assigning to `service.ports` raises an `AttributeError`. This restriction applies only at the ORM level: The REST API continues to accept the legacy pair on write, translating it into `port_mappings`. - Because `protocol` is now filtered against the `port_mappings` array rather than a dedicated model field, the character-based REST filter lookups previously generated for it (`protocol__ic`, `protocol__isw`, `protocol__empty`, etc.) are no longer available. The `port__empty` lookup has been removed as well. - The GraphQL filters for `ipam.Service` and `ipam.ServiceTemplate` have changed shape: The nested `ports` integer lookup has been replaced by the flat `port`, `port__gt`, `port__gte`, `port__lt`, and `port__lte` parameters (each accepting a list of values), alongside the new `port_mappings` parameter. Additionally, the members of `ServiceProtocolEnum` have been renamed to drop a spurious `ROLE_` prefix (e.g. `ROLE_TCP` is now `TCP`). - Config context data is now pre-rendered and cached for each device and virtual machine, and is always included in their REST API representations. The `DeviceWithConfigContextSerializer` and `VirtualMachineWithConfigContextSerializer` classes have been removed (merged into the base serializers), and the `?exclude=config_context` query parameter is now silently ignored. - Failed bulk create and update operations via the REST API now return a structured response of the form `{"detail": ..., "errors": [{"index": N, "errors": {...}}]}`, correlating each error with the index of the offending object in the submitted list. (Bulk operations remain all-or-none.) - API token plaintexts can no longer be specified by the client when creating a token via the REST API. The `token` field is now read-only, and any value supplied is ignored. (This restriction was already in effect in the web UI.) - Executing a custom script via the REST API now requires that the calling token have its write ability enabled. - The `username` argument has been removed from `extras.webhooks.send_webhook()` (the value remains available to webhook templates as `request.user`). Any webhook jobs still enqueued when the workers are restarted will fail with a `TypeError`, so the background queues should be allowed to drain before upgrading. - Updates to the global search cache are now deferred to a background task. As a result, a newly created or modified object may not appear in search results for a brief period. (When no background worker is running, the index is updated synchronously as before.) - Hierarchical models are now backed by a PostgreSQL `ltree` column rather than django-mptt. This covers the nested group models (Region, SiteGroup, Location, DeviceRole, Platform, TenantGroup, ContactGroup, WirelessLANGroup, etc.) as well as ModuleBay, InventoryItem, and InventoryItemTemplate. The `lft`, `rght`, `tree_id`, and `level` columns have been dropped from every migrated model: `level` remains available as a Python property, but can no longer be used in a queryset filter or `order_by()` clause. NetBox's `ltree` implementation deliberately covers only the subset of MPTT's API which NetBox itself uses (`get_ancestors()`, `get_descendants()`, `get_children()`, and `add_related_count()`); methods such as `get_root()`, `get_family()`, `is_leaf_node()`, `move_to()`, and `insert_at()` are no longer available. The MPTT-backed `NestedGroupModel` base class is retained for backward compatibility with plugins, but is deprecated: New code should use `NestedLtreeGroupModel` instead. - django-tables2 has been upgraded to v3.0, which renames its `querystring` template tag to `querystring_replace` and removes the `RelatedLinkColumn` class. - `social-auth-app-django` and `social-auth-core` have been upgraded to v6.0 and v5.1 respectively, each a major release. Deployments which employ single sign-on should test authentication against a non-production instance before upgrading. - The `request` object passed to custom link templates is now a sanitized subset of the current request. Only the `id`, `path`, `path_info`, `method`, `GET`, and `user` attributes are available; cookies, headers, and session state are no longer accessible. - URL custom field values are now validated against the [`ALLOWED_URL_SCHEMES`](../configuration/security.md#allowed_url_schemes) configuration parameter. A value entered without a scheme is assumed to use `https` and stored as an absolute URL. - Webhooks now support a configurable timeout. If you have lowered `RQ_DEFAULT_TIMEOUT` to 60 seconds or less, you must also set [`WEBHOOK_DEFAULT_TIMEOUT`](../configuration/miscellaneous.md#webhook_default_timeout) to a lower value; NetBox will refuse to start otherwise. - Specifying an email server under the [`EMAIL`](../configuration/system.md#email) configuration parameter is now mandatory in order to send mail: A deployment which does not define `EMAIL['SERVER']` will raise an `InvalidMailer` exception when attempting to send, rather than failing at the SMTP connection. - NetBox now populates Django's `MAILERS` setting rather than the individual `EMAIL_*` settings which it supersedes. `EMAIL_HOST`, `EMAIL_PORT`, `EMAIL_HOST_USER`, `EMAIL_HOST_PASSWORD`, `EMAIL_USE_SSL`, `EMAIL_USE_TLS`, `EMAIL_TIMEOUT`, `EMAIL_SSL_CERTFILE`, and `EMAIL_SSL_KEYFILE` are no longer defined, and `EMAIL_BACKEND` is no longer consulted. Plugin code which reads any of these, or which calls `django.core.mail.get_connection()` with an explicit backend (now raising a `RuntimeError`), must be updated. The `EMAIL` configuration parameter itself is unchanged. - The upgrade script now runs the `rebuild_config_context_cache` management command to populate the new config context cache. This issues one `UPDATE` per device and virtual machine, and may extend the duration of the upgrade considerably for deployments with a large number of either. The command skips objects whose cache is already populated, so it is safe to interrupt and re-run; it may also be deferred until after NetBox is back online, as any object whose cache is empty falls back to rendering its config context on demand. - Creating a custom field which has a default value, and deleting a custom field, are now deferred to a background job where the field's assigned object types hold more than [`BULK_UPDATE_CHUNK_SIZE`](../configuration/system.md#bulk_update_chunk_size) objects in total. - The obsolete `populate_custom_field_defaults()` method has been removed from `CustomFieldsMixin`. - `CustomField.objects.get_for_model()` and the `custom_fields` property of `CustomFieldsMixin` now return a list rather than a queryset, and `get_for_model()` returns only those fields which are active: Any whose stored data is being updated by a background job is omitted (see [field status](../customization/custom-fields.md#field-status)) unless selected via its `statuses` argument. - Removal of deprecated behavior - The `housekeeping` management command has been removed. (Its constituent tasks are performed by the individual management commands introduced in NetBox v4.6.) - NetBox's custom `querystring` template tag has been removed in favor of Django's built-in tag of the same name. The two are not interchangeable: Django's tag reads the current request from the template context, so the `request` argument must be dropped (`{% querystring request page=1 %}` becomes `{% querystring page=1 %}`; passing `request` raises a `TemplateSyntaxError`). It also returns a bare `?` where NetBox's tag returned an empty string. - The legacy Sentry configuration parameters `SENTRY_DSN`, `SENTRY_SAMPLE_RATE`, `SENTRY_SEND_DEFAULT_PII`, and `SENTRY_TRACES_SAMPLE_RATE` have been removed. Use `SENTRY_CONFIG` instead. - The obsolete `DEFAULT_ACTION_PERMISSIONS` constant has been removed. - Support for legacy view action mappings has been dropped, and the `LEGACY_ACTIONS` constant has been removed. - Registered models are no longer populated under `registry['models']`. (Use `ObjectType.objects.public()` instead.) The `registry['denormalized_fields']` store has been removed as well. - The backward compatibility shims for `OptionalLimitOffsetPagination` (now `NetBoxPagination`), `ExpandableIPAddressField` (now `ExpandableIPNetworkField`), and `expand_ipaddress_pattern()` (now `expand_ipnetwork_pattern()`) have been removed. - The `request_id` and `username` keys have been removed from the context available to outgoing webhooks. Use `request.id` and `request.user` instead. - The automatic reverse relationship created by `OwnerMixin` (e.g. `site_set`) has been removed. ##### New Features ##### Cooling Infrastructure Modeling ([#&#8203;22447](https://github.com/netbox-community/netbox/issues/22447)) NetBox has long modeled power distribution end to end, but had no equivalent for cooling. This release introduces a cooling data model which deliberately mirrors the power model, so that the concepts and workflows feel familiar. Two new top-level models parallel PowerPanel and PowerFeed: **CoolingSource** represents facility-level cooling plant (a chiller, cooling tower, dry cooler, or facility water system) scoped to a site or location, and **CoolingFeed** represents a coolant loop delivered from a source to a rack. Two new device components parallel PowerPort and PowerOutlet: **CoolingIntake** represents a coolant intake on a device (e.g. a server cold-plate connection or a CDU's facility water inlet), and **CoolingOutflow** represents a coolant outlet on a CDU or manifold which supplies downstream equipment. Each intake may reference the upstream outflow which serves it, and both components have corresponding device type templates. CDUs and manifolds are modeled as ordinary devices carrying these components. Lightweight descriptive attributes have also been added for users who want to record cooling characteristics without modeling the full plumbing: a `cooling_method` field (air, liquid, hybrid, or immersion) on the Device, DeviceType, and ModuleType models, and `cooling_capability` (air-only, hybrid, or liquid-only) and `cooling_capacity` fields on the Rack and RackType models. ##### Channelized Subinterfaces ([#&#8203;20972](https://github.com/netbox-community/netbox/issues/20972)) Channelized (breakout) interfaces can now be modeled natively. A new `channels` field on the Interface model indicates the number of physical channels into which an interface is divided, and each channel is represented by a subinterface of the new generic `channel` type, bound to its parent via the new `channel_id` field. A single cable terminates to the channelized parent interface, and NetBox traces a distinct cable path for each channel subinterface. Both fields are available on interface templates as well. ##### Multi-Protocol Application Services ([#&#8203;20285](https://github.com/netbox-community/netbox/issues/20285)) Application services and service templates can now expose the same port on multiple protocols — for example, DNS listening on both `tcp/53` and `udp/53`. The single-protocol `protocol` and `ports` fields have been replaced by a unified `port_mappings` field, represented in the APIs as a flat list of `protocol/port` strings (e.g. `["tcp/80", "udp/53"]`). New `port_mappings`, `protocol`, and `port` filters are available in the UI and in both APIs, with the latter two correlated so that they must be satisfied by a single mapping. ##### Module Bay Types ([#&#8203;19731](https://github.com/netbox-community/netbox/issues/19731)) A new ModuleBayType model has been introduced to convey which kinds of modules a module bay is able to accommodate (e.g. an SFP28 cage or a PCIe x16 slot). Bay types can be assigned to module bays, module bay templates, and module types; where both a bay and a module type declare bay types, NetBox validates that the two sets share at least one type in common before permitting installation. Bay types assigned to a module bay template propagate automatically to each instantiated module bay. ##### Relocating Installed Modules ([#&#8203;15289](https://github.com/netbox-community/netbox/issues/15289)) An installed module can now be moved to a different module bay, including a bay on a different device, rather than having to be deleted and recreated. A move relocates the module's entire subtree — its components, its own module bays, and any child modules installed within them — and re-resolves any component names, labels, and positions derived from the module type's templates for the destination bay. Cross-device moves are permitted only where the moved components carry no active topology or device-scoped configuration. ##### Background Processing for REST API Requests ([#&#8203;21992](https://github.com/netbox-community/netbox/issues/21992)) Bulk write operations via the REST API can now be processed as a background job rather than synchronously, avoiding proxy and gateway timeouts on large batches. Appending `?background=true` to a bulk write request enqueues a job and immediately returns an `HTTP 202 Accepted` response containing the job's ID and URL; the job's `data` field records the response the synchronous request would have returned. Note that validation is deferred to the worker, so a `202` response indicates only that the request was accepted, and the job's final status must be inspected to confirm the outcome. ##### Per-Object Errors for Bulk Operations ([#&#8203;20054](https://github.com/netbox-community/netbox/issues/20054)) When a bulk create or update via the REST API fails validation, the response now identifies each offending object by its index within the submitted list, along with its specific field errors, rather than reporting only the first failure. This enables clients to correct and resubmit only the objects which actually failed. ##### Pre-Rendered Config Context Data ([#&#8203;21025](https://github.com/netbox-community/netbox/issues/21025)) Rather than compiling config context data on demand from the full set of applicable ConfigContext instances, NetBox now pre-renders each device's and virtual machine's merged context data and caches it on the object itself. The cache is invalidated automatically whenever an upstream change is detected — a config context being created, modified, or deleted, or a change to an attribute which determines which contexts apply — and repopulated by a non-blocking background job. During the brief window between invalidation and re-render, reads fall back to the original on-demand rendering path, so the data returned is always correct rather than stale. ##### Snapshot-Aware Event Rule Conditions ([#&#8203;18159](https://github.com/netbox-community/netbox/issues/18159)) Event rule conditions can now inspect the pre-change and post-change snapshots captured at the time of an event, rather than only the object's current data. New `changed` and `unchanged` operators compare an attribute's value across the two snapshots, and the `snapshots.prechange.<attr>` and `snapshots.postchange.<attr>` dot-path syntax exposes either snapshot to any standard operator. This makes it possible to express the long-requested "fire only when status changes *to* active" rule, avoiding webhooks and scripts triggered by unrelated updates. A new `regex` operator has been added as well, and conditions which reference an attribute that cannot be resolved now fail closed and log an error rather than silently disabling the rule. ##### Enhancements - [#&#8203;15165](https://github.com/netbox-community/netbox/issues/15165) - Re-render only the affected fieldset, rather than the entire form, when an HTMX-driven selection changes - [#&#8203;18645](https://github.com/netbox-community/netbox/issues/18645) - Support the bulk import of cables having multiple terminations per side - [#&#8203;18821](https://github.com/netbox-community/netbox/issues/18821) - Set or update an interface's primary MAC address in a single operation via the `mac_address` field - [#&#8203;20897](https://github.com/netbox-community/netbox/issues/20897) - Include the label alongside the value for selection custom fields in the REST & GraphQL APIs - [#&#8203;21367](https://github.com/netbox-community/netbox/issues/21367) - Add a read-only `is_primary` field to the MAC address REST API representation - [#&#8203;21712](https://github.com/netbox-community/netbox/issues/21712) - Support description annotations for static choice fields, and permit choices to be declared as dictionaries in `FIELD_CHOICES` - [#&#8203;22205](https://github.com/netbox-community/netbox/issues/22205) - Add an `end_of_life` date field to device types and module types to aid in hardware lifecycle planning - [#&#8203;22231](https://github.com/netbox-community/netbox/issues/22231) - Introduce a `nulls_first` parameter to control the placement of empty values when ordering by a custom field - [#&#8203;22409](https://github.com/netbox-community/netbox/issues/22409) - Disallow client-specified API token plaintexts via the REST API - [#&#8203;22411](https://github.com/netbox-community/netbox/issues/22411) - Enforce token write ability when executing a custom script via the REST API - [#&#8203;22441](https://github.com/netbox-community/netbox/issues/22441) - Record and display the execution time of each background job - [#&#8203;22446](https://github.com/netbox-community/netbox/issues/22446) - Introduce breadcrumbs support for declarative layouts - [#&#8203;22486](https://github.com/netbox-community/netbox/issues/22486) - Support a configurable timeout for webhooks, with a new `WEBHOOK_DEFAULT_TIMEOUT` configuration parameter - [#&#8203;22563](https://github.com/netbox-community/netbox/issues/22563) - Preserve the scroll position of the sidebar navigation when moving between pages - [#&#8203;22595](https://github.com/netbox-community/netbox/issues/22595) - Introduce the [`BULK_UPDATE_CHUNK_SIZE`](../configuration/system.md#bulk_update_chunk_size) configuration parameter to bound the number of rows affected by a single bulk `UPDATE` statement - [#&#8203;22604](https://github.com/netbox-community/netbox/issues/22604) - Document the experimental Python package installation and upgrade workflow - [#&#8203;22607](https://github.com/netbox-community/netbox/issues/22607) - Sanitize the HTTP request passed to the template context when rendering custom links - [#&#8203;22640](https://github.com/netbox-community/netbox/issues/22640) - Enforce `ALLOWED_URL_SCHEMES` when validating URL custom field values - [#&#8203;22757](https://github.com/netbox-community/netbox/issues/22757) - Support arbitrary help text on inline form fields - [#&#8203;22786](https://github.com/netbox-community/netbox/issues/22786) - Publish NetBox releases to the production Python Package Index (PyPI) - [#&#8203;22851](https://github.com/netbox-community/netbox/issues/22851) - Unpin `social-auth-core` to permit the installation of newer PyJWT versions - [#&#8203;23010](https://github.com/netbox-community/netbox/issues/23010) - Defer the provisioning of default and purging of stale custom field data to a background job ##### Performance Improvements - [#&#8203;21326](https://github.com/netbox-community/netbox/issues/21326) - Defer updates to the global search cache to a background job, so that they no longer delay the response - [#&#8203;21355](https://github.com/netbox-community/netbox/issues/21355) - Maintain denormalized field data using PostgreSQL triggers rather than Python signal handlers - [#&#8203;21418](https://github.com/netbox-community/netbox/issues/21418) - Replace django-mptt with a PostgreSQL `ltree` implementation for hierarchical models ##### Plugins - [#&#8203;19821](https://github.com/netbox-community/netbox/issues/19821) - Introduce `GenericObjectChoiceField` and `GenericObjectFormMixin` to represent a generic foreign key relation as a single form field - [#&#8203;22351](https://github.com/netbox-community/netbox/issues/22351) - Enable plugins to register custom Jinja filters and to inject context variables for config template rendering - [#&#8203;22592](https://github.com/netbox-community/netbox/issues/22592) - Enable plugins to add fields and filters to NetBox's existing core GraphQL types - [#&#8203;22770](https://github.com/netbox-community/netbox/issues/22770) - Enable plugins to register custom Event Rule action types by subclassing `EventRuleAction` ##### Deprecations - [#&#8203;22288](https://github.com/netbox-community/netbox/issues/22288) - The `JINJA2_FILTERS` configuration parameter has been renamed to `JINJA_FILTERS`. The old name remains supported, but will be removed in NetBox v5.0. - [#&#8203;22593](https://github.com/netbox-community/netbox/issues/22593) - The `form_factor`, `width`, `outer_width`, `outer_height`, `outer_depth`, and `outer_unit` fields on the Rack model have been deprecated, and will be removed in NetBox v5.0. These values will instead be inferred from the rack's assigned rack type, which will become a mandatory assignment. - [#&#8203;22935](https://github.com/netbox-community/netbox/issues/22935) - The custom scripts functionality in core NetBox has been deprecated in favor of a dedicated plugin, and will be removed in NetBox v5.0. - The `protocol` and `ports` fields on application services and service templates have been deprecated in favor of `port_mappings`, and will be removed from the REST & GraphQL APIs in NetBox v5.0. - The MPTT-backed `NestedGroupModel` base class has been deprecated in favor of `NestedLtreeGroupModel`, and will be removed in a future release. ##### Other Changes - [#&#8203;19091](https://github.com/netbox-community/netbox/issues/19091) - Remove NetBox's custom `querystring` template tag in favor of Django's built-in tag - [#&#8203;20546](https://github.com/netbox-community/netbox/issues/20546) - Raise the minimum required PostgreSQL version from 14 to 15 - [#&#8203;20547](https://github.com/netbox-community/netbox/issues/20547) - Consolidate paired uniqueness constraints on nullable fields into single constraints using PostgreSQL's `NULLS NOT DISTINCT` - [#&#8203;21565](https://github.com/netbox-community/netbox/issues/21565) - Remove the obsolete `housekeeping` management command - [#&#8203;21883](https://github.com/netbox-community/netbox/issues/21883) - Drop support for the deprecated Sentry configuration parameters - [#&#8203;21886](https://github.com/netbox-community/netbox/issues/21886) - Remove the obsolete `DEFAULT_ACTION_PERMISSIONS` constant - [#&#8203;21888](https://github.com/netbox-community/netbox/issues/21888) - Remove support for legacy view actions - [#&#8203;21891](https://github.com/netbox-community/netbox/issues/21891) - Remove the `models` key from the application registry - [#&#8203;21902](https://github.com/netbox-community/netbox/issues/21902) - Upgrade django-tables2 to v3.0 - [#&#8203;22052](https://github.com/netbox-community/netbox/issues/22052) - Remove the backward compatibility shim for `OptionalLimitOffsetPagination` - [#&#8203;22053](https://github.com/netbox-community/netbox/issues/22053) - Remove the backward compatibility shim for `ExpandableIPAddressField` - [#&#8203;22054](https://github.com/netbox-community/netbox/issues/22054) - Remove the backward compatibility shim for `expand_ipaddress_pattern()` - [#&#8203;22161](https://github.com/netbox-community/netbox/issues/22161) - Rename the filterset test mixin base classes to use a `*TestMixin` suffix - [#&#8203;22300](https://github.com/netbox-community/netbox/issues/22300) - Drop the automatic reverse relationship defined by `OwnerMixin` - [#&#8203;22393](https://github.com/netbox-community/netbox/issues/22393) - Drop support for Redis 5.x - [#&#8203;22438](https://github.com/netbox-community/netbox/issues/22438) - Omit the "2" suffix from the new Jinja plugin resources (`jinja_filters`, `get_jinja_context()`, `register_jinja_filters()`) for consistency with `JINJA_FILTERS` - [#&#8203;22485](https://github.com/netbox-community/netbox/issues/22485) - Move the search subsystem's signal wiring into `AppConfig.ready()` and break its import cycle - [#&#8203;22571](https://github.com/netbox-community/netbox/issues/22571) - Migrate from django-pglocks to django-pgware - [#&#8203;22615](https://github.com/netbox-community/netbox/issues/22615) - Remove the legacy `request_id` and `username` keys from the webhook context - [#&#8203;22942](https://github.com/netbox-community/netbox/issues/22942) - Upgrade to Django 6.1 ### [`v4.6.10`](https://github.com/netbox-community/netbox/releases/tag/v4.6.10): - 2026-09-01 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.6.9...v4.6.10) #### Performance Improvements - [#&#8203;22988](https://github.com/netbox-community/netbox/issues/22988) - Prefetch the related fields of nested serializers referenced by `SerializedPKRelatedField` - [#&#8203;23060](https://github.com/netbox-community/netbox/issues/23060) - Include reverse many-to-many relationships when determining REST API prefetches #### Bug Fixes - [#&#8203;22671](https://github.com/netbox-community/netbox/issues/22671) - Support the selection of multiple values when filtering VLAN groups by scope (e.g. by site group) - [#&#8203;22872](https://github.com/netbox-community/netbox/issues/22872) - Gracefully handle invalid values assigned to a custom script's `Meta` attributes - [#&#8203;22989](https://github.com/netbox-community/netbox/issues/22989) - Reference brief components in the OpenAPI response schemas for nested `SerializedPKRelatedField` fields - [#&#8203;23035](https://github.com/netbox-community/netbox/issues/23035) - Expand the active navigation menu section when resizing from a mobile to a desktop viewport - [#&#8203;23038](https://github.com/netbox-community/netbox/issues/23038) - Omit the cache-busting query parameter from signed static file URLs (e.g. when using S3 storage) - [#&#8203;23040](https://github.com/netbox-community/netbox/issues/23040) - Fix the validation error raised when removing the scope assigned to a VLAN group - [#&#8203;23043](https://github.com/netbox-community/netbox/issues/23043) - Correct the validation of front port positions when creating front ports in bulk - [#&#8203;23052](https://github.com/netbox-community/netbox/issues/23052) - Fix the duplicated `owner` field on the power outlet and service forms - [#&#8203;23066](https://github.com/netbox-community/netbox/issues/23066) - Include the configured Redis username in the default Django cache settings - [#&#8203;23072](https://github.com/netbox-community/netbox/issues/23072) - Retain cable paths when applying a cable profile via bulk edit - [#&#8203;23078](https://github.com/netbox-community/netbox/issues/23078) - Normalize `update_fields` to avoid consuming a generator in `VLANGroup.save()` and `CircuitTermination.save()` - [#&#8203;23090](https://github.com/netbox-community/netbox/issues/23090) - Fix the filtering of background jobs by user in the UI ### [`v4.6.9`](https://github.com/netbox-community/netbox/releases/tag/v4.6.9): - 2026-08-25 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.6.8...v4.6.9) #### Enhancements - [#&#8203;21387](https://github.com/netbox-community/netbox/issues/21387) - Add InfiniBand 4X interface types - [#&#8203;22660](https://github.com/netbox-community/netbox/issues/22660) - Add an interface type for HPE Synergy interconnect links - [#&#8203;22716](https://github.com/netbox-community/netbox/issues/22716) - Restrict images in rendered Markdown to HTTP(S) and relative URLs - [#&#8203;22998](https://github.com/netbox-community/netbox/issues/22998) - Add a 100GBase-X-SFP112 interface type #### Performance Improvements - [#&#8203;23000](https://github.com/netbox-community/netbox/issues/23000) - Prefetch cable terminations to avoid N+1 queries when fetching cables via the GraphQL API #### Bug Fixes - [#&#8203;22683](https://github.com/netbox-community/netbox/issues/22683) - Prevent a server error when bulk import validation raises an error referencing a field omitted from the import data - [#&#8203;22812](https://github.com/netbox-community/netbox/issues/22812) - Avoid loading all associated jobs into memory when deleting a custom script or other job-bearing object - [#&#8203;22889](https://github.com/netbox-community/netbox/issues/22889) - Restore the monospace font for text areas on the config revision form - [#&#8203;22922](https://github.com/netbox-community/netbox/issues/22922) - Honor the saving database connection in the scope propagation signal handlers - [#&#8203;22923](https://github.com/netbox-community/netbox/issues/22923) - Clear `current_request` and the query cache when an exception is raised within an `event_tracking()` block - [#&#8203;22929](https://github.com/netbox-community/netbox/issues/22929) - Avoid initializing a second `SideNav` instance for the top header - [#&#8203;22930](https://github.com/netbox-community/netbox/issues/22930) - Fix sidebar navigation initialization at a viewport width of exactly 1200 pixels - [#&#8203;22934](https://github.com/netbox-community/netbox/issues/22934) - Discard queued events when a write performed by a UI view is rolled back - [#&#8203;22944](https://github.com/netbox-community/netbox/issues/22944) - Display the complete role hierarchy in the virtual machine info panel - [#&#8203;22953](https://github.com/netbox-community/netbox/issues/22953) - Restore custom script log messages in the output of the `runscript` management command - [#&#8203;22954](https://github.com/netbox-community/netbox/issues/22954) - Display nested group and platform hierarchies in several info panels - [#&#8203;22957](https://github.com/netbox-community/netbox/issues/22957) - Include ancestors in the breadcrumbs for device roles, platforms, and power panels - [#&#8203;22963](https://github.com/netbox-community/netbox/issues/22963) - Honor the saving database connection in the counter cache signal handlers - [#&#8203;22967](https://github.com/netbox-community/netbox/issues/22967) - Update the cached scope fields of circuit terminations when a location is moved to a different site - [#&#8203;22978](https://github.com/netbox-community/netbox/issues/22978) - Discard queued events when a write performed via the REST API is rolled back - [#&#8203;22985](https://github.com/netbox-community/netbox/issues/22985) - Exempt data file content from browser caching - [#&#8203;22990](https://github.com/netbox-community/netbox/issues/22990) - Correct inconsistent field declarations which prevented certain fields from being edited or cleared via bulk edit - [#&#8203;23007](https://github.com/netbox-community/netbox/issues/23007) - Align the sidebar navigation JavaScript breakpoint with that of the responsive layout - [#&#8203;23013](https://github.com/netbox-community/netbox/issues/23013) - Avoid propagating a location's site assignment to descendant objects when the site has not changed ### [`v4.6.8`](https://github.com/netbox-community/netbox/releases/tag/v4.6.8): - 2026-08-11 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.6.7...v4.6.8) #### Performance Improvements - [#&#8203;22787](https://github.com/netbox-community/netbox/issues/22787) - Avoid N+1 queries when resolving generic relations (e.g. assigned objects) via the GraphQL API - [#&#8203;22835](https://github.com/netbox-community/netbox/issues/22835) - Improve performance when provisioning new custom fields - [#&#8203;22837](https://github.com/netbox-community/netbox/issues/22837) - Omit implicit pagination when prefetching to-one relations via the GraphQL API - [#&#8203;22877](https://github.com/netbox-community/netbox/issues/22877) - Improve caching logic when retrieving custom fields via `get_for_model()` #### Bug Fixes - [#&#8203;22694](https://github.com/netbox-community/netbox/issues/22694) - Clear a device's stale rack assignment when changing its site - [#&#8203;22745](https://github.com/netbox-community/netbox/issues/22745) - Enforce object permissions on custom script write operations via the REST API - [#&#8203;22805](https://github.com/netbox-community/netbox/issues/22805) - Avoid re-executing the LDAP configuration file on every permission check - [#&#8203;22821](https://github.com/netbox-community/netbox/issues/22821) - Prevent the deletion of a tenant group from creating duplicate tenant names or slugs - [#&#8203;22825](https://github.com/netbox-community/netbox/issues/22825) - Fix cable path tracing for paths which originate from a circuit termination and traverse only pass-through ports - [#&#8203;22828](https://github.com/netbox-community/netbox/issues/22828) - Validate that a webhook's payload URL is a valid URL or Jinja2 template when saving - [#&#8203;22844](https://github.com/netbox-community/netbox/issues/22844) - Allow a null value for `base_choices` when creating a custom field choice set via the REST API - [#&#8203;22848](https://github.com/netbox-community/netbox/issues/22848) - Ensure deterministic ordering of duplicate IP addresses to avoid repeating an object across paginated REST API results - [#&#8203;22852](https://github.com/netbox-community/netbox/issues/22852) - Honor a custom script's `notifications_default` setting when the script is run from an event rule - [#&#8203;22865](https://github.com/netbox-community/netbox/issues/22865) - Reference the appropriate component template types on the GraphQL type for inventory item templates - [#&#8203;22879](https://github.com/netbox-community/netbox/issues/22879) - Improve the contrast of unselected radio buttons and checkboxes in dark mode - [#&#8203;22882](https://github.com/netbox-community/netbox/issues/22882) - Fix support for the `DISTINCT` filter on nested GraphQL list fields - [#&#8203;22894](https://github.com/netbox-community/netbox/issues/22894) - Sanitize the error message rendered when an exception occurs in `CustomLinkColumn` ### [`v4.6.7`](https://github.com/netbox-community/netbox/releases/tag/v4.6.7): - 2026-07-30 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.6.6...v4.6.7) ##### Performance Improvements - [#&#8203;22810](https://github.com/netbox-community/netbox/issues/22810) - Skip cached scope rebuild for sites and locations when scope fields are unchanged - [#&#8203;22813](https://github.com/netbox-community/netbox/issues/22813) - Avoid extraneous database queries when fetching custom field data via the GraphQL API - [#&#8203;22822](https://github.com/netbox-community/netbox/issues/22822) - Avoid an extra database query when including rack reservation units via the GraphQL API - [#&#8203;22823](https://github.com/netbox-community/netbox/issues/22823) - Avoid extraneous database queries when fetching the IP address or prefix family via the GraphQL API ##### Bug Fixes - [#&#8203;22738](https://github.com/netbox-community/netbox/issues/22738) - Correctly evaluate IP availability for users whose permissions are constrained by a custom field on a related object - [#&#8203;22800](https://github.com/netbox-community/netbox/issues/22800) - Filter circuit group assignments by member type to avoid displaying assignments belonging to a virtual circuit with the same ID ### [`v4.6.6`](https://github.com/netbox-community/netbox/releases/tag/v4.6.6): - 2026-07-28 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.6.5...v4.6.6) ##### Enhancements - [#&#8203;19273](https://github.com/netbox-community/netbox/issues/19273) - Enable the selection of VLANs scoped to a device's cluster or cluster group when assigning VLANs to interfaces - [#&#8203;22522](https://github.com/netbox-community/netbox/issues/22522) - Render colored badges for custom field choices in tables - [#&#8203;22623](https://github.com/netbox-community/netbox/issues/22623) - Change the default color of the DHCP IP address status from green to purple to distinguish it from "available" - [#&#8203;22685](https://github.com/netbox-community/netbox/issues/22685) - Introduce an "any" lookup for the `tag` and `tag_id` filters to match objects assigned any of the specified tags - [#&#8203;22753](https://github.com/netbox-community/netbox/issues/22753) - Add a `header_safe` Jinja2 filter for sanitizing HTTP header values ##### Performance Improvements - [#&#8203;22497](https://github.com/netbox-community/netbox/issues/22497) - Improve the speed of bulk object deletion by avoiding per-object cascade handling and N+1 counter updates - [#&#8203;22687](https://github.com/netbox-community/netbox/issues/22687) - Avoid an unnecessary queryset evaluation when rendering export templates ##### Bug Fixes - [#&#8203;21988](https://github.com/netbox-community/netbox/issues/21988) - Ensure view permissions are enforced when referencing a related object by its attributes in the REST API - [#&#8203;22513](https://github.com/netbox-community/netbox/issues/22513) - Make `JournalEntry.created_by` immutable after creation to prevent audit trail spoofing - [#&#8203;22565](https://github.com/netbox-community/netbox/issues/22565) - Include circuit distance when calculating the total length of a cable path - [#&#8203;22588](https://github.com/netbox-community/netbox/issues/22588) - Restrict the VLANs available for assignment to a prefix scoped to a site group - [#&#8203;22644](https://github.com/netbox-community/netbox/issues/22644) - Record changes to front/rear port mappings in the changelog - [#&#8203;22654](https://github.com/netbox-community/netbox/issues/22654) - Redact server filesystem paths from tracebacks rendered by ConfigTemplate debug mode - [#&#8203;22656](https://github.com/netbox-community/netbox/issues/22656) - Pre-populate interface attributes when using "Create & Add Another" - [#&#8203;22662](https://github.com/netbox-community/netbox/issues/22662) - Avoid raising a `DataError` exception when a cable length exceeds the maximum supported value - [#&#8203;22675](https://github.com/netbox-community/netbox/issues/22675) - Validate the URL scheme of RSS feed entries to prevent DOM-based cross-site scripting - [#&#8203;22677](https://github.com/netbox-community/netbox/issues/22677) - Display validation errors for form fields which lack HTML5 constraints - [#&#8203;22682](https://github.com/netbox-community/netbox/issues/22682) - Prevent the deletion of a site group from cascading to prefixes scoped to its member sites - [#&#8203;22690](https://github.com/netbox-community/netbox/issues/22690) - Restore the left border on the quick search field - [#&#8203;22697](https://github.com/netbox-community/netbox/issues/22697) - Return to the scripts list when cancelling out of the "add script" form - [#&#8203;22707](https://github.com/netbox-community/netbox/issues/22707) - Fix the resolution of port mappings when `{vc_position}` is used on device type component templates - [#&#8203;22712](https://github.com/netbox-community/netbox/issues/22712) - Highlight relevant dropdown fields when form validation fails - [#&#8203;22717](https://github.com/netbox-community/netbox/issues/22717) - Fix `KeyError` raised when validating a device assigned to a cluster scoped to a different location - [#&#8203;22719](https://github.com/netbox-community/netbox/issues/22719) - Avoid raising a `KeyError` for malformed IP address and prefix values submitted via the REST API - [#&#8203;22720](https://github.com/netbox-community/netbox/issues/22720) - Raise a protected-deletion error rather than a `TypeError` when deleting a virtual chassis with a cross-chassis LAG - [#&#8203;22729](https://github.com/netbox-community/netbox/issues/22729) - Escape object names when populating the `Content-Disposition` header of file responses - [#&#8203;22736](https://github.com/netbox-community/netbox/issues/22736) - Include the `comments` field of ASNs in the global search index - [#&#8203;22737](https://github.com/netbox-community/netbox/issues/22737) - Clear stale connector metadata from cable endpoints when deleting a profiled cable - [#&#8203;22748](https://github.com/netbox-community/netbox/issues/22748) - Ensure `ContentTypeField` respects its declared queryset to prevent the selection of non-public object types - [#&#8203;22752](https://github.com/netbox-community/netbox/issues/22752) - Restore the rear port fields on the front port bulk import form - [#&#8203;22766](https://github.com/netbox-community/netbox/issues/22766) - Fix the GraphQL `length` lookup for array filters - [#&#8203;22767](https://github.com/netbox-community/netbox/issues/22767) - Include the `comments` field of several models in the global search indexes - [#&#8203;22768](https://github.com/netbox-community/netbox/issues/22768) - Store a null value rather than an empty string for `cable_end` when removing a cable - [#&#8203;22773](https://github.com/netbox-community/netbox/issues/22773) - Fix `TypeError` exception when bulk adding module bays to devices - [#&#8203;22790](https://github.com/netbox-community/netbox/issues/22790) - Enforce saved filter visibility when applied via the `filter` or `filter_id` query parameter ### [`v4.6.5`](https://github.com/netbox-community/netbox/releases/tag/v4.6.5): - 2026-07-14 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.6.4...v4.6.5) #### Enhancements - [#&#8203;18828](https://github.com/netbox-community/netbox/issues/18828) - Add MDC connector type for fiber ports and cables - [#&#8203;22544](https://github.com/netbox-community/netbox/issues/22544) - Provide a REST API method to update or overwrite an existing custom script module - [#&#8203;22629](https://github.com/netbox-community/netbox/issues/22629) - Enforce a lower maximum uploaded image size (50 megapixels) than the Pillow default - [#&#8203;22649](https://github.com/netbox-community/netbox/issues/22649) - Add Korean language support #### Performance Improvements - [#&#8203;22551](https://github.com/netbox-community/netbox/issues/22551) - Add a prefetch hint to the GraphQL `tags` field to avoid N+1 queries on list endpoints - [#&#8203;22589](https://github.com/netbox-community/netbox/issues/22589) - Cache serializers to avoid repeated reinstantiation on the cables list REST API endpoint #### Bug Fixes - [#&#8203;22154](https://github.com/netbox-community/netbox/issues/22154) - Correct the OpenAPI schema for relation counts on nested (brief) object representations - [#&#8203;22500](https://github.com/netbox-community/netbox/issues/22500) - Return the configured maintenance mode message for REST API requests - [#&#8203;22521](https://github.com/netbox-community/netbox/issues/22521) - Honor `RAM_BASE_UNIT` for the default memory of a virtual machine type - [#&#8203;22539](https://github.com/netbox-community/netbox/issues/22539) - Restore the available IPs button for users with constrained permissions - [#&#8203;22566](https://github.com/netbox-community/netbox/issues/22566) - Avoid name collisions when a custom script's filename matches a core app label - [#&#8203;22568](https://github.com/netbox-community/netbox/issues/22568) - Fix uncaught `ValueError` (HTTP 500) when an invalid `filter_id` query parameter is provided - [#&#8203;22573](https://github.com/netbox-community/netbox/issues/22573) - Remove persistent scrollbar on the navigation menu in Chrome - [#&#8203;22578](https://github.com/netbox-community/netbox/issues/22578) - Ensure shared objects are treated consistently across the UI and REST API - [#&#8203;22582](https://github.com/netbox-community/netbox/issues/22582) - Use a theme-aware color for interface list row separators in dark mode - [#&#8203;22598](https://github.com/netbox-community/netbox/issues/22598) - Fix `ValueError` exception when viewing background tasks under RQ 2.10 - [#&#8203;22617](https://github.com/netbox-community/netbox/issues/22617) - Require the "change" permission (rather than "add") when editing objects via the bulk import form - [#&#8203;22626](https://github.com/netbox-community/netbox/issues/22626) - Ensure custom link names are escaped when rendering fails - [#&#8203;22632](https://github.com/netbox-community/netbox/issues/22632) - Fix `ValueError` raised by object-level permission checks for cross-app proxy models - [#&#8203;22652](https://github.com/netbox-community/netbox/issues/22652) - Explicitly disable autoescaping for config templates rendered via `SandboxedEnvironment` - [#&#8203;22657](https://github.com/netbox-community/netbox/issues/22657) - Escape the exception message in the `render_widget` template tag before marking it safe </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC42MS42IiwidXBkYXRlZEluVmVyIjoiNDQuNjEuNiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->
Update all stable non-major dependencies
Some checks failed
/ build (pull_request) Successful in 28s
/ Ansible Lint (push) Failing after 3m4s
/ Ansible Lint (pull_request) Failing after 3m15s
c155e3e756
You can view your changes at https://staging.infra-docs.hamburg.ccc.de/pr158/
renovate force-pushed renovate/all-stable-minor from c155e3e756
Some checks failed
/ build (pull_request) Successful in 28s
/ Ansible Lint (push) Failing after 3m4s
/ Ansible Lint (pull_request) Failing after 3m15s
to b0bbe97a27
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 3m15s
/ Ansible Lint (pull_request) Failing after 2m58s
2026-09-05 02:16:49 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from b0bbe97a27
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 3m15s
/ Ansible Lint (pull_request) Failing after 2m58s
to 4ad8444cbf
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 2m39s
/ Ansible Lint (pull_request) Failing after 2m46s
2026-09-05 12:31:13 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 4ad8444cbf
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 2m39s
/ Ansible Lint (pull_request) Failing after 2m46s
to 6f136110a1
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 2m41s
/ Ansible Lint (pull_request) Failing after 2m31s
2026-09-05 23:31:09 +02:00
Compare
Some checks failed
/ build (pull_request) Successful in 29s
Required
Details
/ Ansible Lint (push) Failing after 2m41s
Required
Details
/ Ansible Lint (pull_request) Failing after 2m31s
Required
Details
This pull request doesn't have enough approvals yet. 0 of 1 approvals granted.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/all-stable-minor:renovate/all-stable-minor
git switch renovate/all-stable-minor
Sign in to join this conversation.
No description provided.