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.0 → v2.32.0
docker.io/grafana/grafana minor 13.1.0 → 13.2.4
docker.io/library/postgres (source) minor 15.18 → 15.19
docker.io/library/postgres (source) minor 18.4 → 18.6
docker.io/library/python (source) container minor 3.14-trixie → 3.15-trixie
docker.io/library/redis (source) minor 8.8.0 → 8.10.2
docker.io/prom/alertmanager minor v0.33.1 → v0.34.1
docker.io/prom/prometheus minor v3.13.1 → v3.15.1
docker.io/prompve/prometheus-pve-exporter minor 3.9.0 → 3.10.1
ghcr.io/the-draupnir-project/draupnir minor v3.1.0 → v3.2.0
ghcr.io/twin/gatus minor v5.36.0 → v5.37.0
https://github.com/ansible/ansible-lint action minor v26.6.0 → v26.10.1
netbox minor v4.6.4 → v4.7.3
quay.io/hedgedoc/hedgedoc (source) minor 1.11.1 → 1.12.0

Release Notes

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

v2.32.0

Compare Source

This release prepares ntfy.sh for a passive cluster node: jobs that write to the shared database run only on the cluster leader, and each database store now records the oldest schema version it works with. Streaming subscriptions also tell proxies not to buffer them.

Features:

  • Set the Incremental: ?1 header (RFC 10036) on streaming subscriptions, so proxies that support it forward messages without buffering (#​2056, thanks to @​bt90 for the suggestion)

Bug fixes + maintenance:

  • Fix template files (?tpl=<name>) ignoring the priority sent with the request when the file has no priority key (#​2045, thanks to @​6801318d8d for reporting)
  • Return HTTP 409 instead of 500 when deleting or changing the password of a user provisioned via auth-users through the admin API (#​2062, thanks to @​daniloamiranda for reporting)
  • Run the shared-database housekeeping (pruning expired messages, attachments and tokens, web push expiry warnings, writing the published-messages total) on the cluster leader only, so a passive node no longer overwrites the total with its own count (experimental clustering)
  • Record the oldest schema version each database store still works with, so an older ntfy refuses to start on a database that a newer version migrated in a breaking way, instead of misreading it; none of today's migrations are breaking (#​2060)

v2.31.1

Compare Source

This release fixes the database load that made us roll back ntfy.sh from v2.31.0: reconnecting with since=<message ID> read every message of the topic from the database. A new index makes these reconnects cheap, cheaper than in v2.30.0. It also lets ntfy start with a warning on a newer database schema, so later rollbacks need no manual step.

Bug fixes + maintenance:

  • Fix reconnects with since=<message ID> reading every message of the topic from the database, which overloaded ntfy.sh's database right after the v2.31.0 upgrade; the message cache gets a new index: (topic, published, id) on PostgreSQL, (topic, published, time) on SQLite (#​2058)
  • Start with a warning instead of failing when the database schema is newer than this version of ntfy supports, so a rollback or a rolling cluster upgrade needs no manual schema change (#​2059)
  • Web app: Fix the wrong topic opening when subscribed to the same topic on two different servers (#​858)
  • Web app: Fix the "Upgrade to ntfy Pro" banner covering the bottom of a long topic list (#​1007)
  • Web app: The "Notifications are disabled" and "Notifications are blocked" warnings can now be closed (#​1220)
  • Web app: Fix a crash when opening the subscribe dialog before the topic list has loaded, e.g. while another tab holds the browser database (#​2014, #​1881)

Upgrade notes:

  • This release changes the message database schema (version 16 to 17: an index for since=<message ID> reconnects). Downgrading to v2.31.0 or earlier afterwards requires setting the version back by hand first: UPDATE schema_version SET version = 16 WHERE store = 'message' on PostgreSQL, or UPDATE schemaVersion SET version = 16 WHERE id = 1 in the SQLite cache-file. From this release on, a newer schema only logs a warning (#​2059)

v2.31.0

Compare Source

This release fixes messages that could be lost when a client reconnects, e.g. a phone switching networks, right when messages are published: every server now reads newly written messages from its message cache once a second and sends them to the subscribers that missed them. In load tests with server restarts and crashes, this brought lost messages down from 465 to 2 out of about 615,000. It also adds a /v1/ready endpoint for load balancers, and continues the experimental clustering work with node roles.

Features:

  • Add /v1/ready for load balancers, and the node's role to /v1/health; with clustering, a node with no other active node leads right away instead of after a one-minute hold-off (#​2050)
  • Experimental clustering: add experimental-cluster-role to run a passive node that never leads and never takes over another node's subscribers, e.g. one that is not behind the load balancer (#​2049)

Bug fixes + maintenance:

  • Fix messages lost when a client reconnects before they are written to the message cache, or when a cluster node's fan-out is lost: every node now reads newly written messages once a second and sends them to the subscribers that missed them (#​2040)
  • Write user stats (messages, emails, calls) as increments, so servers sharing one database add up instead of overwriting each other's counts (#​1989)
  • Don't add a visitor's anonymous usage to an account's stats when the account takes over that visitor, e.g. right after upgrading (#​2041)

Upgrade notes:

  • A reconnect with since=<message ID> now also returns the messages published in the same second as that message, so none are skipped when several servers write out of order. The ntfy apps and web app drop these by ID; your own scripts may see a few duplicates (#​2040)
  • Experimental clustering only: this release changes the cluster's node registry schema (version 1 to 2). Downgrading a clustered server to v2.30.0 afterwards requires setting the version back by hand first: UPDATE schema_version SET version = 1 WHERE store = 'node_registry' (#​2049)

v2.30.0

Compare Source

This release links attachments in email notifications, adds SMTP LOGIN auth (e.g. for OVH and Outlook), and fixes the PostgreSQL memory growth that came with v2.29.0. It also ships the first experimental version of clustering: several ntfy servers sharing one PostgreSQL database. Clustering is not ready for production yet.

Features:

  • Link attachments in email notifications, including the file name and when the link expires (#​672, thanks to @​merspieler for suggesting)
  • Support SMTP servers that only offer LOGIN auth (e.g. OVH, Outlook) for sending emails (#​930/#​1530, thanks to @​wunter8 for reporting and @​santanoce for the initial implementation)
  • Experimental: run several ntfy servers as one cluster that shares a PostgreSQL database, enabled with experimental-cluster-listen; this is not ready for production yet (#​2005, #​2008, #​2012, #​2013)

Bug fixes + maintenance:

  • Fix Dockerfile-build failing to build: use Go 1.26 and add the cluster package (#​1962, thanks to @​ElectricTea for reporting)
  • Set the org.opencontainers.image.version label on release Docker images (#​1921/#​1936, thanks to @​Plazzmex for reporting and @​w1977-0 for the fix)
  • Warn at startup if attachment-expiry-duration is longer than cache-duration, since attachments never outlive their message (#​1053, thanks to @​ctschach for reporting)
  • Fix PostgreSQL memory growth after v2.29.0: write message batches with one fixed INSERT for any batch size (#​2011)
  • CLI: fix ntfy publish failing with "invalid header field value" when sending a multi-line message or title along with a file (#​1808, thanks to @​quantenzitrone for reporting)
  • Web app: fix an updated message showing next to its old version when the update arrived via the background poll instead of live (#​2010)

Documentation:

  • Document recommended PostgreSQL pool settings for busy servers (#​2011)

v2.29.0

Compare Source

This release fixes cache writes under load. On ntfy.sh, hourly cron bursts overwhelmed the batch writer: messages took up to 40s to reach the database (so poll=1 and since= missed them) and publishes stalled. Batches are now written in one statement, publishes no longer wait on the writer, and PostgreSQL connections stay idle instead of reconnecting.

Features:

  • Timezone support for delayed notifications via X-Timezone header, timezone query param or JSON field; the web app sends the browser's timezone (#​1967/#​1924, thanks @​beemines)
  • RFC 3339 timestamps for delayed notifications, e.g. At: 2026-12-10T11:00:00-05:00 (#​1931, thanks @​ALPHACOM-Brehmer)

Bug fixes + maintenance:

  • Fix delayed message visibility and stalled publishes under bursts: multi-row INSERT per batch, non-blocking publishes (100-batch buffer), and no scheduled-message lookup unless a sequence ID is set (#​2006)
  • Fix a panic in the account token-update endpoint caused by a concurrent anonymous request racing on the shared visitor; now returns HTTP 401
  • Fix messages lost on shutdown: the write queue is flushed and ntfy serve handles SIGTERM/SIGINT gracefully
  • pool_max_idle_conns now defaults to pool_max_conns, so PostgreSQL connections are reused instead of re-opened
  • Fix since=<message-id> replaying a topic's full history when the ID wasn't on the read replica yet; it's now resolved on the primary
  • Use the PostgreSQL row estimate for messages_cached instead of a COUNT(*) every minute
  • Detect Markdown when Content-Type has parameters or is uppercase (#​1995, thanks @​cipherprofessor)
  • Fix the Alertmanager template's bogus 0001-01-01 end time and merged start/end lines (#​1946/#​1940, thanks @​justadityaraj and @​deferred)
  • Embed the time zone database (time/tzdata) so named time zones work on ARM Docker images and minimal runtimes
  • Build with Go 1.27; minimum Go version to build is now 1.26
  • Groundwork for clustering (node registry, util primitives, reserved config options); not usable yet (#​1991, #​1997, #​2001, #​2003)

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.4

Security
  • Security: Fix CVE-2026-15577
  • Security: Fix CVE-2026-33374
  • Security: Fix CVE-2026-93294
  • Security: Fix CVE-2026-95502
Features and enhancements
Bug fixes
  • CVE-2026-92539: IAM: Fix: SCIM (Enterprise)

v13.2.3

Security
  • Security: Fix CVE-2026-13719
  • Security: Fix CVE-2026-13720
  • Security: Fix CVE-2026-81841

v13.2.2

Security
  • Security: Fix CVE-2026-15815
  • Security: Fix CVE-2026-76154
  • Security: Fix CVE-2026-79656
Bug fixes

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.8

Security
  • Security: Fix CVE-2026-15577
  • Security: Fix CVE-2026-33374
  • Security: Fix CVE-2026-93294
  • Security: Fix CVE-2026-95502
Features and enhancements
Bug fixes
  • CVE-2026-92539: IAM: Fix: SCIM (Enterprise)

v13.1.7

Security
  • Security: Fix CVE-2026-13719
  • Security: Fix CVE-2026-13720
  • Security: Fix CVE-2026-81841

v13.1.6

Security
  • Security: Fix CVE-2026-15815
  • Security: Fix CVE-2026-76154
  • Security: Fix CVE-2026-79656
Bug fixes

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.2

Compare Source

v8.10.1

Compare Source

v8.10.0

Compare Source

v8.8.3

Compare Source

v8.8.2

Compare Source

v8.8.1

Compare Source

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

v0.34.1: 0.34.1 / 2026-09-17

Compare Source

  • [BUGFIX] inhibit: Fix several issues related to inhibitions that caused alerts to be improperly un-muted in some cases. #​5542, #​5449, #​5559

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.15.1: 3.15.1 / 2026-10-21

Compare Source

  • [SECURITY] Container images: Update CA certificates to distrust "emSign ECC Root CA - G3" and "Comodo AAA Services root" following the compromise of eMudhra intermediate CA private keys.
  • [SECURITY] Build with Go 1.27.3 to fix vulnerabilities in net/http, net/textproto, crypto/tls and html/template.
  • [SECURITY] Bump golang.org/x/net to v0.60.0 to fix HTTP/2 vulnerabilities (GO-2026-6603, GO-2026-6610, GO-2026-6611, GO-2026-6612, GO-2026-6617).

v3.15.0: 3.15.0 / 2026-09-24

Compare Source

  • [CHANGE] PromQL: A range query whose end was not aligned to step caused subqueries inside it to evaluate past the parent's last actual step, inflating peakSamples in the query stats and against the query.max-samples limit, and wasting storage I/O reading samples that were never used in the result. Add tests to prevent regression of the fix made in #​18081. #​18598
  • [CHANGE] PromQL: Do not register a start timestamp reset if the start timestamp hasn't changed between subsequent samples. #​19454
  • [CHANGE] Logging: Deprecate --log.level; use runtime.log_level configuration to supply the default level. #​19511
  • [FEATURE] Configuration: Allow changing the process log level through runtime.log_level on configuration reload. #​19511
  • [FEATURE] Prometheus: Add --auto-gomemlimit.refresh-interval flag to periodically re-detect the container or system memory limit and update GOMEMLIMIT at runtime. #​18843
  • [FEATURE] Scraping: Add support for scraping targets via Unix Domain Sockets. #​12024. #​18091
  • [FEATURE] scrape: Implement OM2.0 scrape format. #​18606
  • [ENHANCEMENT] Reduce TSDB head CPU utilization when initializing. #​18001
  • [ENHANCEMENT] Docker SD: Add labels __meta_docker_container_image and __meta_docker_container_image_id. #​19386
  • [ENHANCEMENT] Mixin: Add a p95/p99 remote-write send-batch latency panel to the remote-write dashboard. #​19500
  • [ENHANCEMENT] Mixin: Support native histograms in the remote-write send-batch latency panel. #​19522
  • [ENHANCEMENT] PromQL/TSDB: The --enable-feature=st-storage flag now automatically enables XOR2 float chunk encoding and ST-capable histogram chunk encoding, so you no longer need to pass xor2-encoding and histograms-st-encoding alongside it. #​19518
  • [ENHANCEMENT] Remote write / Alertmanager: upgrade sigv4 to v0.5.0, adding session_name and tags fields for STS AssumeRole sessions. The previously undocumented service_name field is now also documented. #​19569
  • [ENHANCEMENT] Scraping: Support zstd-compressed scrape responses, enabled via feature flag zstd-scrape. #​19502
  • [ENHANCEMENT] TSDB: Stabilize the XOR2 float chunk encoding. --enable-feature=xor2-encoding is deprecated; use storage.tsdb.chunk_encoding.floats: xor2 instead. Check that other software reading the TSDB directly (e.g. Thanos sidecar) supports XOR2 before enabling. #​19461
  • [ENHANCEMENT] TSDB: add prometheus_tsdb_head_appenders_created_total metric. #​19411
  • [ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations. #​19410
  • [ENHANCEMENT] UI: Show the effective configuration for each scrape pool on the Targets and Service Discovery pages. #​19384
  • [ENHANCEMENT] scrape: Enable start time synthesis for summary _count and _sum series in scrape appender v2. #​19323
  • [ENHANCEMENT] scrape: stop all pools in parallel for faster shutdowns. #​19295
  • [ENHANCEMENT] storage/remote: Add undocumented failed_request_logging config field to debug log remote write V2 requests on send errors. #​19249
  • [ENHANCEMENT] TSDB: Add fast path for XOR chunk decompression to speed up queries. #​18049
  • [ENHANCEMENT] UI: Improve native histogram table formatting and add a background bar indicating the bucket count. #​19332
  • [ENHANCEMENT] TSDB: Add prometheus_tsdb_head_series_pending_commit_underflow_total to report pending-sample reservation underflows. #​19470
  • [PERF] AWS SD: Build RDS cluster labels once per cluster instead of once per instance. #​19504
  • [PERF] AWS SD: Describe RDS instances of different clusters concurrently, bounded by request_concurrency. #​19506
  • [PERF] AWS SD: Describe each ElastiCache resource once per refresh instead of twice. #​19585
  • [PERF] Remote read: Avoid cloning labels for sampled reads when no external labels are configured. #​19503
  • [PERF] Remote write: Reuse OTLP converter scratch state between requests. #​19388
  • [PERF] scrape: conversion from classic to native histograms should only parse start times when enabled. #​19446
  • [BUGFIX] PromQL: Fix info() enrichment for composite expressions with mixed @/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp. #​19387
  • [BUGFIX] PromQL: Fix info() enrichment when input series use different subsets of identifying labels. #​19557
  • [BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. #​19413
  • [BUGFIX] TSDB: Don't silently drop samples when head garbage collection removes a series while it is being appended to. #​19272
  • [BUGFIX] TSDB: Keep series with uncommitted samples during selected- and stale-series compaction, including when appenders overlap. #​19470
  • [BUGFIX] TSDB: Do not retain head series after a synthetic start-timestamp zero sample is rejected. #​19470
  • [BUGFIX] TSDB: Prevent query panics during series eviction after WAL replay. #​19664
  • [BUGFIX] TSDB: fix potential deadlock between mmapSeriesChunks and gcSeries. #​19460
  • [BUGFIX] TSDB: fix default block reload interval for custom options. #​19368
  • [BUGFIX] AWS SD: Do not crash on serverless MSK clusters or MSK clusters without Open Monitoring. #​19194
  • [BUGFIX] AWS SD: Do not panic when the ElastiCache API omits optional fields of a serverless cache or cache cluster. #​19435
  • [BUGFIX] AWS SD: Reject non-positive request_concurrency instead of hanging service discovery indefinitely. #​19524
  • [BUGFIX] Discovery/AWS: Avoid a panic when discovering standalone ECS tasks with custom task groups. #​19302
  • [BUGFIX] Discovery: Do not panic in AWS Lightsail service discovery when an instance is missing optional fields such as availability zone, blueprint, bundle, name, state or support code. #​19324
  • [BUGFIX] Discovery: delete the stale prometheus_sd_last_update_timestamp_seconds series for a config that is removed on reload. #​19131
  • [BUGFIX] HTTP: Avoid truncating compressed responses when handlers set Content-Length. #​19661
  • [BUGFIX] IONOS SD: Do not panic when the API response omits the server, NIC or volume collections, or a server's properties. #​19438
  • [BUGFIX] Metadata will not affect the number of Remote Write v2 shards. #​19218
  • [BUGFIX] Mixins: Fix label mismatches that prevented PrometheusHAGroupNotIngestingSamples and PrometheusHAGroupCrashlooping from firing. #​19444
  • [BUGFIX] Native histograms: DetectReset no longer misses a counter reset when a populated bucket behind an empty one disappears, which could make histogram rate()/increase() undercount. #​19367
  • [BUGFIX] Never skip histogram buckets for histogram_stddev and histogram_stdvar functions. #​19521
  • [BUGFIX] OTLP: Do not abort an entire OTLP payload ingestion if one metric has no datapoints. #​19343
  • [BUGFIX] PromQL: Fix FastRegexMatcher false-positive match when a capturing group is directly adjacent to a literal (e.g. .*\|(foo)\|.*). #​19516
  • [BUGFIX] PromQL: Fix a panic in range selectors using the experimental anchored or smoothed modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. #​19431
  • [BUGFIX] PromQL: Fix empty results when a subquery with @ is used as the matrix argument of a call that is not step-invariant (for example quantile_over_time(scalar(x), metric[...:...] @ T)). #​19187
  • [BUGFIX] PromQL: Make the "found duplicate series for the match group" many-to-many matching error message deterministic by sorting the two duplicate labels. #​18810
  • [BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. #​19403
  • [BUGFIX] PromQL: Reject duration-expression offsets and @ start() / @ end() before range selectors, matching the existing rejection of literal offsets and @ <timestamp>. #​19406
  • [BUGFIX] PromQL: Report the position of the histogram argument rather than of a scalar argument in the native histogram NaN observation annotations of histogram_quantile and histogram_fraction. #​19330
  • [BUGFIX] PromQL: info() now applies the @​ modifier/offset when evaluating the info series, so info(v @​ T) enriches as of T consistently instead of depending on the query start/eval time. #​19266
  • [BUGFIX] Rules: Fix a panic when a rule manager created without a logger loads a rule file containing multiple YAML documents. #​19433
  • [BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. #​19328
  • [BUGFIX] Scrape: JSON log formatter correctly format scrape target info. #​19472
  • [BUGFIX] TSDB: Fix in-order chunk ID overflow by wrapping head chunk IDs modulo 2^23 so they never collide with the out-of-order flag bit. #​19450
  • [BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping firstOOOChunkID modulo 2^23 instead of growing unbounded. #​19216
  • [BUGFIX] UI: Remove an extraneous X-axis tick mark in the native histogram chart when using the "linear" display mode. #​19326
  • [BUGFIX] discovery/aws: Avoid a panic when an ElastiCache ARN is missing its resource ID. #​19333
  • [BUGFIX] discovery/aws: Do not panic on MSK clusters whose optional API fields are absent. #​19584
  • [BUGFIX] discovery/aws: Do not panic when the EC2 API omits optional instance fields. #​19512
  • [BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. #​19396
  • [BUGFIX] discovery/aws: MSK Optional Custom Configuration Fields #​19422. #​19422
  • [BUGFIX] discovery/ionos: Fix panic when the IONOS API omits optional server fields. #​19418
  • [BUGFIX] discovery/kubernetes: Populate __meta_kubernetes_service_loadbalancer_ip from status.loadBalancer.ingress, falling back to deprecated spec.loadBalancerIP. #​19404
  • [BUGFIX] histogram: Fix Compact moving buckets to wrong indices, and producing negative bucket counts for integer histograms, when more than one span is merged in the same pass. #​19312
  • [BUGFIX] promtool: Fixed tsdb dump silently dropping native histogram samples. #​18051
  • [BUGFIX] scrape: fix data race in Manager.TargetsDroppedCounts to avoid miscounting dropped targets. #​19304
  • [BUGFIX] scrape: fix nil histogram when native and classic histograms are mixed in one metric family. #​19452
  • [BUGFIX] TSDB: Fix WAL and GC log messages to emit human-readable duration strings instead of nanosecond integers. #​19307
  • [BUGFIX] TSDB: Avoid WAL corruption after a failed WAL write in Agent mode. #​19700
  • [BUGFIX] Agent: Ignore unknown WAL record types, to help users rolling back. #​19814

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.5: 3.13.5 / 2026-10-21

Compare Source

  • [SECURITY] Container images: Update CA certificates to distrust "emSign ECC Root CA - G3" and "Comodo AAA Services root" following the compromise of eMudhra intermediate CA private keys.
  • [SECURITY] Build with Go 1.26.10 to fix vulnerabilities in net/http, net/textproto, crypto/tls and html/template.
  • [SECURITY] Bump golang.org/x/net to v0.60.0 to fix HTTP/2 vulnerabilities (GO-2026-6603, GO-2026-6610, GO-2026-6611, GO-2026-6612, GO-2026-6617).
  • [SECURITY] Bump OpenTelemetry to v1.45.0 to fix exporter endpoint URLs leaking into info logs (GO-2026-6505).
  • [CHANGE] Building Prometheus now requires Go 1.26 or later.

v3.13.4: 3.13.4 / 2026-09-29

Compare Source

  • [SECURITY] Bump google.golang.org/grpc to v1.83.1 to fix HTTP/2 DATA frame fragmentation memory exhaustion (GO-2026-6348). #​19834
  • [SECURITY] UI: Update vulnerable npm dependencies. #​19834
  • [BUGFIX] Agent: Ignore unknown WAL record types to allow rolling back from newer versions. #​19814
  • [BUGFIX] Federation: Fix corruption of float native histograms. #​19679
  • [BUGFIX] Scrape: Fix failing scrapes of protobuf float histograms with zero sample, zero and bucket counts, such as the result of recording rate(x[1m]) over a constant histogram. #​19682

v3.13.3: 3.13.3 / 2026-09-07

Compare Source

  • [SECURITY] Bump github.com/klauspost/compress to v1.18.7 (GO-2026-5841) and golang.org/x/crypto to v0.55.0 (GO-2026-6303).
  • [BUGFIX] Docker SD: Fix panic in Docker Swarm service discovery when a service runs as a plugin or network-attachment. #​19102
  • [BUGFIX] PromQL: Fix case-insensitive regex label matchers silently dropping matching values. #​19167
  • [BUGFIX] Scrape: Fix scrape manager spinning at 100% CPU on shutdown. #​19149
  • [BUGFIX] Alerting: Fix 100% CPU usage on shutdown that could delay graceful shutdown and trigger timeout-based kills. #​17859
  • [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 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

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.1

Compare Source

Changed


- Bump idna from 3.19 to 3.20 (#&#8203;520)
- Bump urllib3 from 2.7.0 to 2.8.0 (#&#8203;519)
- Bump cryptography from 50.0.0 to 50.0.1 (#&#8203;511)
- Bump gunicorn from 26.1.0 to 26.2.0 (#&#8203;509)
- Bump alpine from 3.24.1 to 3.24.2 (#&#8203;517)
- Bump docker/build-push-action from 7.3.0 to 7.4.0 (#&#8203;518)
- Bump docker/setup-qemu-action from 4.2.0 to 4.4.0 (#&#8203;516)
- Bump docker/setup-buildx-action from 4.3.0 to 4.4.1 (#&#8203;515)
- Bump wrapt from 2.3.0 to 2.4.1 (#&#8203;514)
- Bump actions/attest from 4.1.1 to 4.2.2 (#&#8203;506)
- Bump docker/setup-buildx-action from 4.1.0 to 4.3.0 (#&#8203;507)
- Bump idna from 3.18 to 3.19 (#&#8203;504)
- Bump gunicorn from 26.0.0 to 26.1.0 (#&#8203;505)
- Bump charset-normalizer from 3.4.9 to 3.5.1 (#&#8203;502)
- Bump cffi from 2.1.0 to 2.1.1 (#&#8203;501)
- Bump docker/login-action from 4.4.0 to 4.6.0 (#&#8203;500)
- Bump packaging from 26.2 to 26.3 (#&#8203;499)
- Bump actions/setup-python from 6.3.0 to 7.0.0 (#&#8203;498)
- Bump actions/checkout from 7.0.0 to 7.0.1 (#&#8203;497)
- Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.2 (#&#8203;495)

`3.10.0`_ - 2026-08-10
----------------------

Added
~~~~~

- Bump minimum python version to 3.11 (#&#8203;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)

v3.10.0

Compare Source

What's Changed

Full Changelog: https://github.com/prometheus-pve/prometheus-pve-exporter/compare/v3.9.0...v3.10.0

the-draupnir-project/Draupnir (ghcr.io/the-draupnir-project/draupnir)

v3.2.0

Compare Source

[3.2.0] - 2026-10-14

Minor Changes
  • Draupnir now supports systems using libmusl in addition to glibc.
  • The docker image is now based on Alpine instead of Debian slim.
  • Developer Experience: New CI workflows implementing the "CI in a box" concept. The purpose of CI in a box is to reproduce the development environment on all platforms.
Patch Changes
  • a0ddfc0: Fix overly strict client capabilities check. Reported and fixed by @​bones-was-here in #​1102. This makes Draupnir bot mode deployable again on Conduit and Dendrite based homeserver deployments.
  • 4e949dd: Fix an issue where Draupnir would sometimes not redact events left by a user who left the room. Reported by @​ll-SKY-ll in #​1184.
  • 2a39b21: Make initialManager the uncommented option in the default.yaml config file instead of managementRoom. This means that Draupnir will create the management room for new deployments.
TwiN/gatus (ghcr.io/twin/gatus)

v5.37.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/TwiN/gatus/compare/v5.36.0...v5.37.0

ansible/ansible-lint (https://github.com/ansible/ansible-lint)

v26.10.1

Compare Source

What's Changed

Full Changelog: https://github.com/ansible/ansible-lint/compare/v26.10.0...v26.10.1

v26.10.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/ansible/ansible-lint/compare/v26.9.0...v26.10.0

v26.9.0

Compare Source

Features

Fixes

Performance

Maintenance

What's Changed

New Contributors

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

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.3: - 2026-10-13

Compare Source

Enhancements

  • #​23230 - Add a location filter to the power feeds list view

Performance Improvements

  • #​23288 - Skip the loading of config context data when the field is excluded from a REST API response
  • #​23290 - Reuse nested serializer instances when rendering REST API list responses
  • #​23291 - Avoid loading unused virtual machines when serializing clusters via the REST API
  • #​23292 - Skip static prefetches for fields which have been excluded from a REST API response
  • #​23311 - Defer building the GraphQL schema until it is needed, rather than during the initialization of every management command
  • #​23350 - Extend automatic table prefetching to reverse many-to-many relations

Bug Fixes

  • #​22802 - Correct the OpenAPI request body schema for the available prefixes REST API endpoint
  • #​23094 - Fix the detection of changes to a cable's terminations
  • #​23099 - Persist the status change of cable paths deactivated during a partial cable save
  • #​23121 - Remove stale cable paths when a cable's terminations are changed
  • #​23134 - Record a change log entry when a circuit's termination pointer is updated
  • #​23172 - Permit the selection of a numeric enum value for a module type profile attribute via the UI
  • #​23198 - Restrict the rack elevation highlight parameter to prevent the disclosure of data the user is not permitted to view
  • #​23227 - Display date & time custom field values in the user's local time zone within object tables
  • #​23233 - Synchronizing a data source should not require the add permission
  • #​23240 - Hide the bulk actions container on list views which have no bulk actions available
  • #​23247 - Preserve request headers and query parameters for REST API bulk writes processed in the background
  • #​23274 - Prevent the assignment of a primary or OOB IP address belonging to another device when creating a device
  • #​23275 - Fix exception when setting a primary IP on a virtual device context with no assigned device
  • #​23278 - Fix exception when creating a virtual machine with a primary IP address
  • #​23280 - Fix exception when retrieving change log entries for port mappings via the REST API
  • #​23281 - Ensure that modifying a new user's preferences does not alter the default preferences for other users
  • #​23283 - Fix exception when logging in as a user with no preferences record
  • #​23307 - Ensure that changing a cable's profile does not remove its connection from cable traces
  • #​23310 - Fix exception when listing jobs or tagged objects assigned to objects which have no REST API serializer
  • #​23321 - Fix TypeError exception when creating a device type with a front or rear image via the REST API
  • #​23322 - Fix the q search filter for tunnel terminations
  • #​23323 - Fix exception when specifying installed_module while creating a module bay via the REST API
  • #​23324 - Include a circuit's group assignments in its REST API representation, and fix exception when specifying them on creation
  • #​23325 - Fix FieldError exception when filtering circuits and virtual circuits by provider account
  • #​23326 - Fix FieldError exception when filtering front & rear ports (and their templates) by rear_port_id or front_port_id
  • #​23327 - Fix FieldError exception when searching circuit group assignments
  • #​23328 - Return empty results or a 400 response, rather than raising an exception, when passing malformed values to certain filters
  • #​23332 - Fix AttributeError exception when executing a bulk edit as a background job
  • #​23340 - Fix exception when applying the __empty lookup to numeric and date/time filters
  • #​23342 - Fix the display of circuit group assignments in the circuits list
  • #​23345 - Validate the IDs passed to the installed module and data file filters against the correct models
  • #​23367 - Fix the rollback of failed REST API bulk operations when writes are routed to a non-default database
  • #​23369 - Add custom fields support to the circuit group assignment REST API serializer

v4.7.2: - 2026-09-29

Compare Source

[!WARNING]
NetBox v4.7.0 and v4.7.1 recorded the plaintext of API tokens created via background bulk requests in the job results, where they were readable by any user permitted to view jobs. This release rejects such requests; any tokens created this way should be considered exposed and replaced. See #​23196 for details.

Enhancements
  • #​21879 - Introduce the Cable.update_dependent_objects() hook to rebuild cable paths and related attributes after writes which bypass save()
  • #​22886 - Include VLANs assigned via VLAN groups scoped to a site (or its site group) among the site's related objects
  • #​22949 - Focus and scroll to the first field with a validation error when a form fails validation
  • #​23095 - Display the compatible module types for a module bay type in a dedicated, sortable, and paginated table
Bug Fixes
  • #​23122 - Prevent the failure to automatically sync one object from skipping the sync of subsequent objects
  • #​23150 - Preserve the parent device type assignment when using "Create & Add Another" to add component templates
  • #​23160 - Record a change log entry for each terminating object when a cable is deleted
  • #​23181 - Restore the display of the cluster group in the virtual machine detail view
  • #​23187 - Permit the assignment of a data file when creating an export template via the REST API
  • #​23195 - Validate the return_url parameter used for the cancel button on the IP address assignment view
  • #​23196 - Ensure plaintext API tokens are never recorded in background job results (see the warning above)
  • #​23197 - Enforce object permission constraints on the REST API sync action for synced data models
  • #​23203 - Fix the population of the related objects panel for owners

v4.7.1: - 2026-09-15

Compare Source

[!WARNING]
The triggers which cascade a hierarchical object's path to its descendants could not be recreated when restoring a pg_dump of a v4.7.0 database, so such a restore reported success while leaving the database without those triggers. Renaming or moving a region, site group, location, device role, platform, tenant group, contact group, wireless LAN group, module bay, inventory item, or inventory item template then did not update its descendants. Upgrading reinstalls the triggers so that all subsequent changes cascade correctly, but does not repair values which have already gone stale. See Repairing Hierarchical Paths for how to detect and correct them, and for the steps plugins maintaining their own ltree models must take.

Enhancements
  • #​22999 - Add a default module type profile for transceivers
  • #​23041 - Add InfiniBand 2X interface types for HDR and later generations (HDR100, NDR200, and XDR400)
Bug Fixes
  • #​22750 - Resolve object IDs to model instances and validate the submitted data when executing a custom script via the REST API
  • #​23012 - Apply a field's collation to both sides of a case-insensitive comparison, so that names containing characters such as ß can be matched
  • #​23096 - Persist a cable's normalized length when saving only its length or length_unit field
  • #​23112 - Initiate SSO logins via script-driven navigation, so that they are not blocked by a restrictive form-action content security policy
  • #​23117 - Fix the negation (__n) filter lookup for multiple selection custom fields
  • #​23120 - Include tags in the REST API representation of a data source, and honor them on write
  • #​23125 - Add the missing standard fields to the VLAN translation policy & rule REST API serializers
  • #​23130 - Ensure that the cascade triggers for hierarchical models can be restored from a pg_dump (see the warning above)
  • #​23154 - Correct the optional/required mismatch on the L2VPN type and rack type form_factor fields
  • #​23166 - Apply a zero-valued minimum or maximum bound from a module type profile attribute to its form field
  • #​23167 - Sanitize the JSON schema property descriptions used as form help text for module type profile attributes

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.32.0` | | [docker.io/grafana/grafana](https://github.com/grafana/grafana) | | minor | `13.1.0` → `13.2.4` | | [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/python](https://hub.docker.com/_/python) ([source](https://github.com/docker-library/python)) | container | minor | `3.14-trixie` → `3.15-trixie` | | [docker.io/library/redis](https://hub.docker.com/_/redis) ([source](https://github.com/redis/docker-library-redis)) | | minor | `8.8.0` → `8.10.2` | | [docker.io/prom/alertmanager](https://github.com/prometheus/alertmanager) | | minor | `v0.33.1` → `v0.34.1` | | [docker.io/prom/prometheus](https://github.com/prometheus/prometheus) | | minor | `v3.13.1` → `v3.15.1` | | [docker.io/prompve/prometheus-pve-exporter](https://github.com/prometheus-pve/prometheus-pve-exporter) | | minor | `3.9.0` → `3.10.1` | | [ghcr.io/the-draupnir-project/draupnir](https://github.com/the-draupnir-project/Draupnir) | | minor | `v3.1.0` → `v3.2.0` | | [ghcr.io/twin/gatus](https://github.com/TwiN/gatus) | | minor | `v5.36.0` → `v5.37.0` | | [https://github.com/ansible/ansible-lint](https://github.com/ansible/ansible-lint) | action | minor | `v26.6.0` → `v26.10.1` | | [netbox](https://github.com/netbox-community/netbox) | | minor | `v4.6.4` → `v4.7.3` | | [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.32.0`](https://github.com/binwiederhier/ntfy/releases/tag/v2.32.0) [Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.31.1...v2.32.0) This release prepares ntfy.sh for a passive cluster node: jobs that write to the shared database run only on the cluster leader, and each database store now records the oldest schema version it works with. Streaming subscriptions also tell proxies not to buffer them. **Features:** - Set the `Incremental: ?1` header ([RFC 10036](https://www.rfc-editor.org/info/rfc10036/)) on streaming subscriptions, so proxies that support it forward messages without buffering ([#&#8203;2056](https://github.com/binwiederhier/ntfy/issues/2056), thanks to [@&#8203;bt90](https://github.com/bt90) for the suggestion) **Bug fixes + maintenance:** - Fix template files (`?tpl=<name>`) ignoring the priority sent with the request when the file has no `priority` key ([#&#8203;2045](https://github.com/binwiederhier/ntfy/issues/2045), thanks to [@&#8203;6801318d8d](https://github.com/6801318d8d) for reporting) - Return HTTP 409 instead of 500 when deleting or changing the password of a user provisioned via `auth-users` through the admin API ([#&#8203;2062](https://github.com/binwiederhier/ntfy/issues/2062), thanks to [@&#8203;daniloamiranda](https://github.com/daniloamiranda) for reporting) - Run the shared-database housekeeping (pruning expired messages, attachments and tokens, web push expiry warnings, writing the published-messages total) on the cluster leader only, so a passive node no longer overwrites the total with its own count (experimental clustering) - Record the oldest schema version each database store still works with, so an older ntfy refuses to start on a database that a newer version migrated in a breaking way, instead of misreading it; none of today's migrations are breaking ([#&#8203;2060](https://github.com/binwiederhier/ntfy/pull/2060)) ### [`v2.31.1`](https://github.com/binwiederhier/ntfy/releases/tag/v2.31.1) [Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.31.0...v2.31.1) This release fixes the database load that made us roll back ntfy.sh from v2.31.0: reconnecting with `since=<message ID>` read every message of the topic from the database. A new index makes these reconnects cheap, cheaper than in v2.30.0. It also lets ntfy start with a warning on a newer database schema, so later rollbacks need no manual step. **Bug fixes + maintenance:** - Fix reconnects with `since=<message ID>` reading every message of the topic from the database, which overloaded ntfy.sh's database right after the v2.31.0 upgrade; the message cache gets a new index: (topic, published, id) on PostgreSQL, (topic, published, time) on SQLite ([#&#8203;2058](https://github.com/binwiederhier/ntfy/pull/2058)) - Start with a warning instead of failing when the database schema is newer than this version of ntfy supports, so a rollback or a rolling cluster upgrade needs no manual schema change ([#&#8203;2059](https://github.com/binwiederhier/ntfy/pull/2059)) - Web app: Fix the wrong topic opening when subscribed to the same topic on two different servers ([#&#8203;858](https://github.com/binwiederhier/ntfy/issues/858)) - Web app: Fix the "Upgrade to ntfy Pro" banner covering the bottom of a long topic list ([#&#8203;1007](https://github.com/binwiederhier/ntfy/issues/1007)) - Web app: The "Notifications are disabled" and "Notifications are blocked" warnings can now be closed ([#&#8203;1220](https://github.com/binwiederhier/ntfy/issues/1220)) - Web app: Fix a crash when opening the subscribe dialog before the topic list has loaded, e.g. while another tab holds the browser database ([#&#8203;2014](https://github.com/binwiederhier/ntfy/issues/2014), [#&#8203;1881](https://github.com/binwiederhier/ntfy/issues/1881)) **Upgrade notes:** - This release changes the message database schema (version 16 to 17: an index for `since=<message ID>` reconnects). Downgrading to v2.31.0 or earlier afterwards requires setting the version back by hand first: `UPDATE schema_version SET version = 16 WHERE store = 'message'` on PostgreSQL, or `UPDATE schemaVersion SET version = 16 WHERE id = 1` in the SQLite `cache-file`. From this release on, a newer schema only logs a warning ([#&#8203;2059](https://github.com/binwiederhier/ntfy/pull/2059)) ### [`v2.31.0`](https://github.com/binwiederhier/ntfy/releases/tag/v2.31.0) [Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.30.0...v2.31.0) This release fixes messages that could be lost when a client reconnects, e.g. a phone switching networks, right when messages are published: every server now reads newly written messages from its message cache once a second and sends them to the subscribers that missed them. In load tests with server restarts and crashes, this brought lost messages down from 465 to 2 out of about 615,000. It also adds a `/v1/ready` endpoint for load balancers, and continues the experimental clustering work with node roles. **Features:** - Add `/v1/ready` for load balancers, and the node's role to `/v1/health`; with clustering, a node with no other active node leads right away instead of after a one-minute hold-off ([#&#8203;2050](https://github.com/binwiederhier/ntfy/pull/2050)) - Experimental clustering: add `experimental-cluster-role` to run a `passive` node that never leads and never takes over another node's subscribers, e.g. one that is not behind the load balancer ([#&#8203;2049](https://github.com/binwiederhier/ntfy/pull/2049)) **Bug fixes + maintenance:** - Fix messages lost when a client reconnects before they are written to the message cache, or when a cluster node's fan-out is lost: every node now reads newly written messages once a second and sends them to the subscribers that missed them ([#&#8203;2040](https://github.com/binwiederhier/ntfy/pull/2040)) - Write user stats (messages, emails, calls) as increments, so servers sharing one database add up instead of overwriting each other's counts ([#&#8203;1989](https://github.com/binwiederhier/ntfy/pull/1989)) - Don't add a visitor's anonymous usage to an account's stats when the account takes over that visitor, e.g. right after upgrading ([#&#8203;2041](https://github.com/binwiederhier/ntfy/pull/2041)) **Upgrade notes:** - A reconnect with `since=<message ID>` now also returns the messages published in the same second as that message, so none are skipped when several servers write out of order. The ntfy apps and web app drop these by ID; your own scripts may see a few duplicates ([#&#8203;2040](https://github.com/binwiederhier/ntfy/pull/2040)) - Experimental clustering only: this release changes the cluster's node registry schema (version 1 to 2). Downgrading a clustered server to v2.30.0 afterwards requires setting the version back by hand first: `UPDATE schema_version SET version = 1 WHERE store = 'node_registry'` ([#&#8203;2049](https://github.com/binwiederhier/ntfy/pull/2049)) ### [`v2.30.0`](https://github.com/binwiederhier/ntfy/releases/tag/v2.30.0) [Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.29.0...v2.30.0) This release links attachments in email notifications, adds SMTP LOGIN auth (e.g. for OVH and Outlook), and fixes the PostgreSQL memory growth that came with v2.29.0. It also ships the first experimental version of clustering: several ntfy servers sharing one PostgreSQL database. Clustering is not ready for production yet. **Features:** - Link attachments in email notifications, including the file name and when the link expires ([#&#8203;672](https://github.com/binwiederhier/ntfy/issues/672), thanks to [@&#8203;merspieler](https://github.com/merspieler) for suggesting) - Support SMTP servers that only offer LOGIN auth (e.g. OVH, Outlook) for sending emails ([#&#8203;930](https://github.com/binwiederhier/ntfy/issues/930)/[#&#8203;1530](https://github.com/binwiederhier/ntfy/pull/1530), thanks to [@&#8203;wunter8](https://github.com/wunter8) for reporting and [@&#8203;santanoce](https://github.com/santanoce) for the initial implementation) - Experimental: run several ntfy servers as one cluster that shares a PostgreSQL database, enabled with `experimental-cluster-listen`; this is not ready for production yet ([#&#8203;2005](https://github.com/binwiederhier/ntfy/pull/2005), [#&#8203;2008](https://github.com/binwiederhier/ntfy/pull/2008), [#&#8203;2012](https://github.com/binwiederhier/ntfy/pull/2012), [#&#8203;2013](https://github.com/binwiederhier/ntfy/pull/2013)) **Bug fixes + maintenance:** - Fix `Dockerfile-build` failing to build: use Go 1.26 and add the `cluster` package ([#&#8203;1962](https://github.com/binwiederhier/ntfy/issues/1962), thanks to [@&#8203;ElectricTea](https://github.com/ElectricTea) for reporting) - Set the `org.opencontainers.image.version` label on release Docker images ([#&#8203;1921](https://github.com/binwiederhier/ntfy/issues/1921)/[#&#8203;1936](https://github.com/binwiederhier/ntfy/pull/1936), thanks to [@&#8203;Plazzmex](https://github.com/Plazzmex) for reporting and [@&#8203;w1977-0](https://github.com/w1977-0) for the fix) - Warn at startup if `attachment-expiry-duration` is longer than `cache-duration`, since attachments never outlive their message ([#&#8203;1053](https://github.com/binwiederhier/ntfy/issues/1053), thanks to [@&#8203;ctschach](https://github.com/ctschach) for reporting) - Fix PostgreSQL memory growth after v2.29.0: write message batches with one fixed `INSERT` for any batch size ([#&#8203;2011](https://github.com/binwiederhier/ntfy/pull/2011)) - CLI: fix `ntfy publish` failing with "invalid header field value" when sending a multi-line message or title along with a file ([#&#8203;1808](https://github.com/binwiederhier/ntfy/issues/1808), thanks to [@&#8203;quantenzitrone](https://github.com/quantenzitrone) for reporting) - Web app: fix an updated message showing next to its old version when the update arrived via the background poll instead of live ([#&#8203;2010](https://github.com/binwiederhier/ntfy/pull/2010)) **Documentation:** - Document recommended PostgreSQL pool settings for busy servers ([#&#8203;2011](https://github.com/binwiederhier/ntfy/pull/2011)) ### [`v2.29.0`](https://github.com/binwiederhier/ntfy/releases/tag/v2.29.0) [Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.28.0...v2.29.0) This release fixes cache writes under load. On ntfy.sh, hourly cron bursts overwhelmed the batch writer: messages took up to 40s to reach the database (so `poll=1` and `since=` missed them) and publishes stalled. Batches are now written in one statement, publishes no longer wait on the writer, and PostgreSQL connections stay idle instead of reconnecting. **Features:** - Timezone support for delayed notifications via `X-Timezone` header, `timezone` query param or JSON field; the web app sends the browser's timezone ([#&#8203;1967](https://github.com/binwiederhier/ntfy/pull/1967)/[#&#8203;1924](https://github.com/binwiederhier/ntfy/issues/1924), thanks [@&#8203;beemines](https://github.com/beemines)) - RFC 3339 timestamps for delayed notifications, e.g. `At: 2026-12-10T11:00:00-05:00` ([#&#8203;1931](https://github.com/binwiederhier/ntfy/pull/1931), thanks [@&#8203;ALPHACOM-Brehmer](https://github.com/ALPHACOM-Brehmer)) **Bug fixes + maintenance:** - Fix delayed message visibility and stalled publishes under bursts: multi-row `INSERT` per batch, non-blocking publishes (100-batch buffer), and no scheduled-message lookup unless a sequence ID is set ([#&#8203;2006](https://github.com/binwiederhier/ntfy/pull/2006)) - Fix a panic in the account token-update endpoint caused by a concurrent anonymous request racing on the shared visitor; now returns HTTP 401 - Fix messages lost on shutdown: the write queue is flushed and `ntfy serve` handles `SIGTERM`/`SIGINT` gracefully - `pool_max_idle_conns` now defaults to `pool_max_conns`, so PostgreSQL connections are reused instead of re-opened - Fix `since=<message-id>` replaying a topic's full history when the ID wasn't on the read replica yet; it's now resolved on the primary - Use the PostgreSQL row estimate for `messages_cached` instead of a `COUNT(*)` every minute - Detect Markdown when `Content-Type` has parameters or is uppercase ([#&#8203;1995](https://github.com/binwiederhier/ntfy/pull/1995), thanks [@&#8203;cipherprofessor](https://github.com/cipherprofessor)) - Fix the Alertmanager template's bogus `0001-01-01` end time and merged start/end lines ([#&#8203;1946](https://github.com/binwiederhier/ntfy/pull/1946)/[#&#8203;1940](https://github.com/binwiederhier/ntfy/issues/1940), thanks [@&#8203;justadityaraj](https://github.com/justadityaraj) and [@&#8203;deferred](https://github.com/deferred)) - Embed the time zone database (`time/tzdata`) so named time zones work on ARM Docker images and minimal runtimes - Build with Go 1.27; minimum Go version to build is now 1.26 - Groundwork for clustering (node registry, util primitives, reserved config options); not usable yet ([#&#8203;1991](https://github.com/binwiederhier/ntfy/pull/1991), [#&#8203;1997](https://github.com/binwiederhier/ntfy/pull/1997), [#&#8203;2001](https://github.com/binwiederhier/ntfy/pull/2001), [#&#8203;2003](https://github.com/binwiederhier/ntfy/pull/2003)) ### [`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.4`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1324-2026-10-13) ##### Security - Security: Fix CVE-2026-15577 - Security: Fix CVE-2026-33374 - Security: Fix CVE-2026-93294 - Security: Fix CVE-2026-95502 ##### Features and enhancements - **Alerting:** Strip sensitive headers from oauth2 cross-host redirects [#&#8203;134433](https://github.com/grafana/grafana/pull/134433), [@&#8203;JacobsonMT](https://github.com/JacobsonMT) - **Dashboard:** Fall back when collection deletion is unsupported [#&#8203;134224](https://github.com/grafana/grafana/pull/134224), [@&#8203;bestend](https://github.com/bestend) - **Git Sync:** Clarify repository links for pure Git [#&#8203;134253](https://github.com/grafana/grafana/pull/134253), [@&#8203;ferruvich](https://github.com/ferruvich) - **Provisioning:** Allow resource previews in unsynced folders [#&#8203;134391](https://github.com/grafana/grafana/pull/134391), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Provisioning:** Reject invalid resource names before API calls [#&#8203;133776](https://github.com/grafana/grafana/pull/133776), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Provisioning:** Show last checked time in Pull status [#&#8203;134483](https://github.com/grafana/grafana/pull/134483), [@&#8203;ferruvich](https://github.com/ferruvich) - **Provisioning:** Skip previews for pull requests from forks [#&#8203;133799](https://github.com/grafana/grafana/pull/133799), [@&#8203;ferruvich](https://github.com/ferruvich) - **Provisioning:** Stop PR previews when refs disappear [#&#8203;133855](https://github.com/grafana/grafana/pull/133855), [@&#8203;ferruvich](https://github.com/ferruvich) - **Provisioning:** Support legacy paths and diagnose missing source annotations [#&#8203;133779](https://github.com/grafana/grafana/pull/133779), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Provisioning:** write terminal sync status back to repository on early sync-job failures and Respect Git Sync polling intervals after unchanged refs [#&#8203;134478](https://github.com/grafana/grafana/pull/134478), [@&#8203;mustafasencer](https://github.com/mustafasencer) ##### Bug fixes - **CVE-2026-92539:** IAM: Fix: SCIM (Enterprise) <!-- 13.2.4 END --> <!-- 13.2.3 START --> ### [`v13.2.3`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1323-2026-09-29) ##### Security - Security: Fix CVE-2026-13719 - Security: Fix CVE-2026-13720 - Security: Fix CVE-2026-81841 <!-- 13.2.3 END --> <!-- 13.2.2 START --> ### [`v13.2.2`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1322-2026-09-15) ##### Security - Security: Fix CVE-2026-15815 - Security: Fix CVE-2026-76154 - Security: Fix CVE-2026-79656 ##### Bug fixes - **Dashboards:** Preserve query variable refresh setting on v2 dashboard import [#&#8203;132089](https://github.com/grafana/grafana/pull/132089), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Provisioning:** Fix folder rename UID collision during full sync [#&#8203;132157](https://github.com/grafana/grafana/pull/132157), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) <!-- 13.2.2 END --> <!-- 13.2.1 START --> ### [`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.8 START --> ### [`v13.1.8`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1318-2026-10-13) ##### Security - Security: Fix CVE-2026-15577 - Security: Fix CVE-2026-33374 - Security: Fix CVE-2026-93294 - Security: Fix CVE-2026-95502 ##### Features and enhancements - **Alerting:** Strip sensitive headers from oauth2 cross-host redirects [#&#8203;134428](https://github.com/grafana/grafana/pull/134428), [@&#8203;JacobsonMT](https://github.com/JacobsonMT) - **Dashboard:** Fall back when collection deletion is unsupported [#&#8203;134225](https://github.com/grafana/grafana/pull/134225), [@&#8203;bestend](https://github.com/bestend) ##### Bug fixes - **CVE-2026-92539:** IAM: Fix: SCIM (Enterprise) <!-- 13.1.8 END --> <!-- 13.1.7 START --> ### [`v13.1.7`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1317-2026-09-29) ##### Security - Security: Fix CVE-2026-13719 - Security: Fix CVE-2026-13720 - Security: Fix CVE-2026-81841 <!-- 13.1.7 END --> <!-- 13.1.6 START --> ### [`v13.1.6`](https://github.com/grafana/grafana/blob/HEAD/CHANGELOG.md#1316-2026-09-15) ##### Security - Security: Fix CVE-2026-15815 - Security: Fix CVE-2026-76154 - Security: Fix CVE-2026-79656 ##### Bug fixes - **Dashboards:** Preserve query variable refresh setting on v2 dashboard import [#&#8203;132090](https://github.com/grafana/grafana/pull/132090), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) - **Provisioning:** Fix folder rename UID collision during full sync [#&#8203;132164](https://github.com/grafana/grafana/pull/132164), [@&#8203;grafana-writer\[bot\]](https://github.com/grafana-writer\[bot]) <!-- 13.1.6 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.2`](https://github.com/redis/docker-library-redis/compare/v8.10.1...v8.10.2) [Compare Source](https://github.com/redis/docker-library-redis/compare/v8.10.1...v8.10.2) ### [`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.3...v8.10.0) [Compare Source](https://github.com/redis/docker-library-redis/compare/v8.8.3...v8.10.0) ### [`v8.8.3`](https://github.com/redis/docker-library-redis/compare/v8.8.2...v8.8.3) [Compare Source](https://github.com/redis/docker-library-redis/compare/v8.8.2...v8.8.3) ### [`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.1`](https://github.com/prometheus/alertmanager/releases/tag/v0.34.1): 0.34.1 / 2026-09-17 [Compare Source](https://github.com/prometheus/alertmanager/compare/v0.34.0...v0.34.1) - \[BUGFIX] inhibit: Fix several issues related to inhibitions that caused alerts to be improperly un-muted in some cases. [#&#8203;5542](https://github.com/prometheus/alertmanager/issues/5542), [#&#8203;5449](https://github.com/prometheus/alertmanager/issues/5449), [#&#8203;5559](https://github.com/prometheus/alertmanager/issues/5559) ### [`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.15.1`](https://github.com/prometheus/prometheus/releases/tag/v3.15.1): 3.15.1 / 2026-10-21 [Compare Source](https://github.com/prometheus/prometheus/compare/v3.15.0...v3.15.1) - \[SECURITY] Container images: Update CA certificates to distrust "emSign ECC Root CA - G3" and "Comodo AAA Services root" following the compromise of eMudhra intermediate CA private keys. - \[SECURITY] Build with Go 1.27.3 to fix vulnerabilities in `net/http`, `net/textproto`, `crypto/tls` and `html/template`. - \[SECURITY] Bump golang.org/x/net to v0.60.0 to fix HTTP/2 vulnerabilities (GO-2026-6603, GO-2026-6610, GO-2026-6611, GO-2026-6612, GO-2026-6617). ### [`v3.15.0`](https://github.com/prometheus/prometheus/releases/tag/v3.15.0): 3.15.0 / 2026-09-24 [Compare Source](https://github.com/prometheus/prometheus/compare/v3.14.0...v3.15.0) - \[CHANGE] PromQL: A range query whose `end` was not aligned to `step` caused subqueries inside it to evaluate past the parent's last actual step, inflating `peakSamples` in the query stats and against the `query.max-samples` limit, and wasting storage I/O reading samples that were never used in the result. Add tests to prevent regression of the fix made in [#&#8203;18081](https://github.com/prometheus/prometheus/issues/18081). [#&#8203;18598](https://github.com/prometheus/prometheus/issues/18598) - \[CHANGE] PromQL: Do not register a start timestamp reset if the start timestamp hasn't changed between subsequent samples. [#&#8203;19454](https://github.com/prometheus/prometheus/issues/19454) - \[CHANGE] Logging: Deprecate `--log.level`; use `runtime.log_level` configuration to supply the default level. [#&#8203;19511](https://github.com/prometheus/prometheus/issues/19511) - \[FEATURE] Configuration: Allow changing the process log level through `runtime.log_level` on configuration reload. [#&#8203;19511](https://github.com/prometheus/prometheus/issues/19511) - \[FEATURE] Prometheus: Add `--auto-gomemlimit.refresh-interval` flag to periodically re-detect the container or system memory limit and update `GOMEMLIMIT` at runtime. [#&#8203;18843](https://github.com/prometheus/prometheus/issues/18843) - \[FEATURE] Scraping: Add support for scraping targets via Unix Domain Sockets. [#&#8203;12024](https://github.com/prometheus/prometheus/issues/12024). [#&#8203;18091](https://github.com/prometheus/prometheus/issues/18091) - \[FEATURE] scrape: Implement OM2.0 scrape format. [#&#8203;18606](https://github.com/prometheus/prometheus/issues/18606) - \[ENHANCEMENT] Reduce TSDB head CPU utilization when initializing. [#&#8203;18001](https://github.com/prometheus/prometheus/issues/18001) - \[ENHANCEMENT] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id`. [#&#8203;19386](https://github.com/prometheus/prometheus/issues/19386) - \[ENHANCEMENT] Mixin: Add a p95/p99 remote-write send-batch latency panel to the remote-write dashboard. [#&#8203;19500](https://github.com/prometheus/prometheus/issues/19500) - \[ENHANCEMENT] Mixin: Support native histograms in the remote-write send-batch latency panel. [#&#8203;19522](https://github.com/prometheus/prometheus/issues/19522) - \[ENHANCEMENT] PromQL/TSDB: The `--enable-feature=st-storage` flag now automatically enables XOR2 float chunk encoding and ST-capable histogram chunk encoding, so you no longer need to pass `xor2-encoding` and `histograms-st-encoding` alongside it. [#&#8203;19518](https://github.com/prometheus/prometheus/issues/19518) - \[ENHANCEMENT] Remote write / Alertmanager: upgrade sigv4 to v0.5.0, adding `session_name` and `tags` fields for STS AssumeRole sessions. The previously undocumented `service_name` field is now also documented. [#&#8203;19569](https://github.com/prometheus/prometheus/issues/19569) - \[ENHANCEMENT] Scraping: Support zstd-compressed scrape responses, enabled via feature flag `zstd-scrape`. [#&#8203;19502](https://github.com/prometheus/prometheus/issues/19502) - \[ENHANCEMENT] TSDB: Stabilize the XOR2 float chunk encoding. `--enable-feature=xor2-encoding` is deprecated; use `storage.tsdb.chunk_encoding.floats: xor2` instead. Check that other software reading the TSDB directly (e.g. Thanos sidecar) supports XOR2 before enabling. [#&#8203;19461](https://github.com/prometheus/prometheus/issues/19461) - \[ENHANCEMENT] TSDB: add `prometheus_tsdb_head_appenders_created_total` metric. [#&#8203;19411](https://github.com/prometheus/prometheus/issues/19411) - \[ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations. [#&#8203;19410](https://github.com/prometheus/prometheus/issues/19410) - \[ENHANCEMENT] UI: Show the effective configuration for each scrape pool on the Targets and Service Discovery pages. [#&#8203;19384](https://github.com/prometheus/prometheus/issues/19384) - \[ENHANCEMENT] scrape: Enable start time synthesis for summary `_count` and `_sum` series in scrape appender v2. [#&#8203;19323](https://github.com/prometheus/prometheus/issues/19323) - \[ENHANCEMENT] scrape: stop all pools in parallel for faster shutdowns. [#&#8203;19295](https://github.com/prometheus/prometheus/issues/19295) - \[ENHANCEMENT] storage/remote: Add undocumented failed_request_logging config field to debug log remote write V2 requests on send errors. [#&#8203;19249](https://github.com/prometheus/prometheus/issues/19249) - \[ENHANCEMENT] TSDB: Add fast path for XOR chunk decompression to speed up queries. [#&#8203;18049](https://github.com/prometheus/prometheus/issues/18049) - \[ENHANCEMENT] UI: Improve native histogram table formatting and add a background bar indicating the bucket count. [#&#8203;19332](https://github.com/prometheus/prometheus/issues/19332) - \[ENHANCEMENT] TSDB: Add `prometheus_tsdb_head_series_pending_commit_underflow_total` to report pending-sample reservation underflows. [#&#8203;19470](https://github.com/prometheus/prometheus/issues/19470) - \[PERF] AWS SD: Build RDS cluster labels once per cluster instead of once per instance. [#&#8203;19504](https://github.com/prometheus/prometheus/issues/19504) - \[PERF] AWS SD: Describe RDS instances of different clusters concurrently, bounded by `request_concurrency`. [#&#8203;19506](https://github.com/prometheus/prometheus/issues/19506) - \[PERF] AWS SD: Describe each ElastiCache resource once per refresh instead of twice. [#&#8203;19585](https://github.com/prometheus/prometheus/issues/19585) - \[PERF] Remote read: Avoid cloning labels for sampled reads when no external labels are configured. [#&#8203;19503](https://github.com/prometheus/prometheus/issues/19503) - \[PERF] Remote write: Reuse OTLP converter scratch state between requests. [#&#8203;19388](https://github.com/prometheus/prometheus/issues/19388) - \[PERF] scrape: conversion from classic to native histograms should only parse start times when enabled. [#&#8203;19446](https://github.com/prometheus/prometheus/issues/19446) - \[BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp. [#&#8203;19387](https://github.com/prometheus/prometheus/issues/19387) - \[BUGFIX] PromQL: Fix info() enrichment when input series use different subsets of identifying labels. [#&#8203;19557](https://github.com/prometheus/prometheus/issues/19557) - \[BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. [#&#8203;19413](https://github.com/prometheus/prometheus/issues/19413) - \[BUGFIX] TSDB: Don't silently drop samples when head garbage collection removes a series while it is being appended to. [#&#8203;19272](https://github.com/prometheus/prometheus/issues/19272) - \[BUGFIX] TSDB: Keep series with uncommitted samples during selected- and stale-series compaction, including when appenders overlap. [#&#8203;19470](https://github.com/prometheus/prometheus/issues/19470) - \[BUGFIX] TSDB: Do not retain head series after a synthetic start-timestamp zero sample is rejected. [#&#8203;19470](https://github.com/prometheus/prometheus/issues/19470) - \[BUGFIX] TSDB: Prevent query panics during series eviction after WAL replay. [#&#8203;19664](https://github.com/prometheus/prometheus/issues/19664) - \[BUGFIX] TSDB: fix potential deadlock between mmapSeriesChunks and gcSeries. [#&#8203;19460](https://github.com/prometheus/prometheus/issues/19460) - \[BUGFIX] TSDB: fix default block reload interval for custom options. [#&#8203;19368](https://github.com/prometheus/prometheus/issues/19368) - \[BUGFIX] AWS SD: Do not crash on serverless MSK clusters or MSK clusters without Open Monitoring. [#&#8203;19194](https://github.com/prometheus/prometheus/issues/19194) - \[BUGFIX] AWS SD: Do not panic when the ElastiCache API omits optional fields of a serverless cache or cache cluster. [#&#8203;19435](https://github.com/prometheus/prometheus/issues/19435) - \[BUGFIX] AWS SD: Reject non-positive `request_concurrency` instead of hanging service discovery indefinitely. [#&#8203;19524](https://github.com/prometheus/prometheus/issues/19524) - \[BUGFIX] Discovery/AWS: Avoid a panic when discovering standalone ECS tasks with custom task groups. [#&#8203;19302](https://github.com/prometheus/prometheus/issues/19302) - \[BUGFIX] Discovery: Do not panic in AWS Lightsail service discovery when an instance is missing optional fields such as availability zone, blueprint, bundle, name, state or support code. [#&#8203;19324](https://github.com/prometheus/prometheus/issues/19324) - \[BUGFIX] Discovery: delete the stale `prometheus_sd_last_update_timestamp_seconds` series for a config that is removed on reload. [#&#8203;19131](https://github.com/prometheus/prometheus/issues/19131) - \[BUGFIX] HTTP: Avoid truncating compressed responses when handlers set Content-Length. [#&#8203;19661](https://github.com/prometheus/prometheus/issues/19661) - \[BUGFIX] IONOS SD: Do not panic when the API response omits the server, NIC or volume collections, or a server's properties. [#&#8203;19438](https://github.com/prometheus/prometheus/issues/19438) - \[BUGFIX] Metadata will not affect the number of Remote Write v2 shards. [#&#8203;19218](https://github.com/prometheus/prometheus/issues/19218) - \[BUGFIX] Mixins: Fix label mismatches that prevented PrometheusHAGroupNotIngestingSamples and PrometheusHAGroupCrashlooping from firing. [#&#8203;19444](https://github.com/prometheus/prometheus/issues/19444) - \[BUGFIX] Native histograms: `DetectReset` no longer misses a counter reset when a populated bucket behind an empty one disappears, which could make histogram `rate()`/`increase()` undercount. [#&#8203;19367](https://github.com/prometheus/prometheus/issues/19367) - \[BUGFIX] Never skip histogram buckets for histogram_stddev and histogram_stdvar functions. [#&#8203;19521](https://github.com/prometheus/prometheus/issues/19521) - \[BUGFIX] OTLP: Do not abort an entire OTLP payload ingestion if one metric has no datapoints. [#&#8203;19343](https://github.com/prometheus/prometheus/issues/19343) - \[BUGFIX] PromQL: Fix FastRegexMatcher false-positive match when a capturing group is directly adjacent to a literal (e.g. `.*\|(foo)\|.*`). [#&#8203;19516](https://github.com/prometheus/prometheus/issues/19516) - \[BUGFIX] PromQL: Fix a panic in range selectors using the experimental `anchored` or `smoothed` modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. [#&#8203;19431](https://github.com/prometheus/prometheus/issues/19431) - \[BUGFIX] PromQL: Fix empty results when a subquery with `@` is used as the matrix argument of a call that is not step-invariant (for example `quantile_over_time(scalar(x), metric[...:...] @ T)`). [#&#8203;19187](https://github.com/prometheus/prometheus/issues/19187) - \[BUGFIX] PromQL: Make the "found duplicate series for the match group" many-to-many matching error message deterministic by sorting the two duplicate labels. [#&#8203;18810](https://github.com/prometheus/prometheus/issues/18810) - \[BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. [#&#8203;19403](https://github.com/prometheus/prometheus/issues/19403) - \[BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. [#&#8203;19406](https://github.com/prometheus/prometheus/issues/19406) - \[BUGFIX] PromQL: Report the position of the histogram argument rather than of a scalar argument in the native histogram NaN observation annotations of `histogram_quantile` and `histogram_fraction`. [#&#8203;19330](https://github.com/prometheus/prometheus/issues/19330) - \[BUGFIX] PromQL: info() now applies the @&#8203; modifier/offset when evaluating the info series, so info(v @&#8203; T) enriches as of T consistently instead of depending on the query start/eval time. [#&#8203;19266](https://github.com/prometheus/prometheus/issues/19266) - \[BUGFIX] Rules: Fix a panic when a rule manager created without a logger loads a rule file containing multiple YAML documents. [#&#8203;19433](https://github.com/prometheus/prometheus/issues/19433) - \[BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. [#&#8203;19328](https://github.com/prometheus/prometheus/issues/19328) - \[BUGFIX] Scrape: JSON log formatter correctly format scrape target info. [#&#8203;19472](https://github.com/prometheus/prometheus/issues/19472) - \[BUGFIX] TSDB: Fix in-order chunk ID overflow by wrapping head chunk IDs modulo 2^23 so they never collide with the out-of-order flag bit. [#&#8203;19450](https://github.com/prometheus/prometheus/issues/19450) - \[BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping `firstOOOChunkID` modulo 2^23 instead of growing unbounded. [#&#8203;19216](https://github.com/prometheus/prometheus/issues/19216) - \[BUGFIX] UI: Remove an extraneous X-axis tick mark in the native histogram chart when using the "linear" display mode. [#&#8203;19326](https://github.com/prometheus/prometheus/issues/19326) - \[BUGFIX] discovery/aws: Avoid a panic when an ElastiCache ARN is missing its resource ID. [#&#8203;19333](https://github.com/prometheus/prometheus/issues/19333) - \[BUGFIX] discovery/aws: Do not panic on MSK clusters whose optional API fields are absent. [#&#8203;19584](https://github.com/prometheus/prometheus/issues/19584) - \[BUGFIX] discovery/aws: Do not panic when the EC2 API omits optional instance fields. [#&#8203;19512](https://github.com/prometheus/prometheus/issues/19512) - \[BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. [#&#8203;19396](https://github.com/prometheus/prometheus/issues/19396) - \[BUGFIX] discovery/aws: MSK Optional Custom Configuration Fields [#&#8203;19422](https://github.com/prometheus/prometheus/issues/19422). [#&#8203;19422](https://github.com/prometheus/prometheus/issues/19422) - \[BUGFIX] discovery/ionos: Fix panic when the IONOS API omits optional server fields. [#&#8203;19418](https://github.com/prometheus/prometheus/issues/19418) - \[BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. [#&#8203;19404](https://github.com/prometheus/prometheus/issues/19404) - \[BUGFIX] histogram: Fix Compact moving buckets to wrong indices, and producing negative bucket counts for integer histograms, when more than one span is merged in the same pass. [#&#8203;19312](https://github.com/prometheus/prometheus/issues/19312) - \[BUGFIX] promtool: Fixed `tsdb dump` silently dropping native histogram samples. [#&#8203;18051](https://github.com/prometheus/prometheus/issues/18051) - \[BUGFIX] scrape: fix data race in `Manager.TargetsDroppedCounts` to avoid miscounting dropped targets. [#&#8203;19304](https://github.com/prometheus/prometheus/issues/19304) - \[BUGFIX] scrape: fix nil histogram when native and classic histograms are mixed in one metric family. [#&#8203;19452](https://github.com/prometheus/prometheus/issues/19452) - \[BUGFIX] TSDB: Fix WAL and GC log messages to emit human-readable duration strings instead of nanosecond integers. [#&#8203;19307](https://github.com/prometheus/prometheus/issues/19307) - \[BUGFIX] TSDB: Avoid WAL corruption after a failed WAL write in Agent mode. [#&#8203;19700](https://github.com/prometheus/prometheus/issues/19700) - \[BUGFIX] Agent: Ignore unknown WAL record types, to help users rolling back. [#&#8203;19814](https://github.com/prometheus/prometheus/issues/19814) ### [`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.5...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.5`](https://github.com/prometheus/prometheus/releases/tag/v3.13.5): 3.13.5 / 2026-10-21 [Compare Source](https://github.com/prometheus/prometheus/compare/v3.13.4...v3.13.5) - \[SECURITY] Container images: Update CA certificates to distrust "emSign ECC Root CA - G3" and "Comodo AAA Services root" following the compromise of eMudhra intermediate CA private keys. - \[SECURITY] Build with Go 1.26.10 to fix vulnerabilities in `net/http`, `net/textproto`, `crypto/tls` and `html/template`. - \[SECURITY] Bump golang.org/x/net to v0.60.0 to fix HTTP/2 vulnerabilities (GO-2026-6603, GO-2026-6610, GO-2026-6611, GO-2026-6612, GO-2026-6617). - \[SECURITY] Bump OpenTelemetry to v1.45.0 to fix exporter endpoint URLs leaking into info logs (GO-2026-6505). - \[CHANGE] Building Prometheus now requires Go 1.26 or later. ### [`v3.13.4`](https://github.com/prometheus/prometheus/releases/tag/v3.13.4): 3.13.4 / 2026-09-29 [Compare Source](https://github.com/prometheus/prometheus/compare/v3.13.3...v3.13.4) - \[SECURITY] Bump google.golang.org/grpc to v1.83.1 to fix HTTP/2 DATA frame fragmentation memory exhaustion (GO-2026-6348). [#&#8203;19834](https://github.com/prometheus/prometheus/issues/19834) - \[SECURITY] UI: Update vulnerable npm dependencies. [#&#8203;19834](https://github.com/prometheus/prometheus/issues/19834) - \[BUGFIX] Agent: Ignore unknown WAL record types to allow rolling back from newer versions. [#&#8203;19814](https://github.com/prometheus/prometheus/issues/19814) - \[BUGFIX] Federation: Fix corruption of float native histograms. [#&#8203;19679](https://github.com/prometheus/prometheus/issues/19679) - \[BUGFIX] Scrape: Fix failing scrapes of protobuf float histograms with zero sample, zero and bucket counts, such as the result of recording `rate(x[1m])` over a constant histogram. [#&#8203;19682](https://github.com/prometheus/prometheus/issues/19682) ### [`v3.13.3`](https://github.com/prometheus/prometheus/releases/tag/v3.13.3): 3.13.3 / 2026-09-07 [Compare Source](https://github.com/prometheus/prometheus/compare/v3.13.2...v3.13.3) - \[SECURITY] Bump github.com/klauspost/compress to v1.18.7 (GO-2026-5841) and golang.org/x/crypto to v0.55.0 (GO-2026-6303). - \[BUGFIX] Docker SD: 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] PromQL: Fix case-insensitive regex label matchers silently dropping matching values. [#&#8203;19167](https://github.com/prometheus/prometheus/issues/19167) - \[BUGFIX] Scrape: Fix scrape manager spinning at 100% CPU on shutdown. [#&#8203;19149](https://github.com/prometheus/prometheus/issues/19149) - \[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] 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 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) ### [`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.1`](https://github.com/prometheus-pve/prometheus-pve-exporter/blob/HEAD/CHANGELOG.rst#3101---2026-10-03) [Compare Source](https://github.com/prometheus-pve/prometheus-pve-exporter/compare/v3.10.0...v3.10.1) Changed ``` - Bump idna from 3.19 to 3.20 (#&#8203;520) - Bump urllib3 from 2.7.0 to 2.8.0 (#&#8203;519) - Bump cryptography from 50.0.0 to 50.0.1 (#&#8203;511) - Bump gunicorn from 26.1.0 to 26.2.0 (#&#8203;509) - Bump alpine from 3.24.1 to 3.24.2 (#&#8203;517) - Bump docker/build-push-action from 7.3.0 to 7.4.0 (#&#8203;518) - Bump docker/setup-qemu-action from 4.2.0 to 4.4.0 (#&#8203;516) - Bump docker/setup-buildx-action from 4.3.0 to 4.4.1 (#&#8203;515) - Bump wrapt from 2.3.0 to 2.4.1 (#&#8203;514) - Bump actions/attest from 4.1.1 to 4.2.2 (#&#8203;506) - Bump docker/setup-buildx-action from 4.1.0 to 4.3.0 (#&#8203;507) - Bump idna from 3.18 to 3.19 (#&#8203;504) - Bump gunicorn from 26.0.0 to 26.1.0 (#&#8203;505) - Bump charset-normalizer from 3.4.9 to 3.5.1 (#&#8203;502) - Bump cffi from 2.1.0 to 2.1.1 (#&#8203;501) - Bump docker/login-action from 4.4.0 to 4.6.0 (#&#8203;500) - Bump packaging from 26.2 to 26.3 (#&#8203;499) - Bump actions/setup-python from 6.3.0 to 7.0.0 (#&#8203;498) - Bump actions/checkout from 7.0.0 to 7.0.1 (#&#8203;497) - Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.2 (#&#8203;495) `3.10.0`_ - 2026-08-10 ---------------------- 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)) ### [`v3.10.0`](https://github.com/prometheus-pve/prometheus-pve-exporter/releases/tag/v3.10.0) [Compare Source](https://github.com/prometheus-pve/prometheus-pve-exporter/compare/v3.9.0...v3.10.0) #### What's Changed - Bump docker/build-push-action from 7.1.0 to 7.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;445](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/445) - Bump docker/login-action from 4.1.0 to 4.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;446](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/446) - Bump docker/setup-buildx-action from 4.0.0 to 4.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;447](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/447) - Bump docker/metadata-action from 6.0.0 to 6.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;448](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/448) - Bump wrapt from 2.1.2 to 2.2.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;449](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/449) - Bump idna from 3.7 to 3.17 by [@&#8203;znerol](https://github.com/znerol) in [#&#8203;450](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/450) - Allow dependabot to update all pip dependencies by [@&#8203;znerol](https://github.com/znerol) in [#&#8203;451](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/451) - Bump docker/setup-qemu-action from 4.0.0 to 4.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;452](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/452) - Bump minimum python version to 3.11 by [@&#8203;znerol](https://github.com/znerol) in [#&#8203;458](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/458) - Bump packaging from 23.2 to 26.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;453](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/453) - Bump markupsafe from 2.1.3 to 3.0.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;454](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/454) - Bump invoke from 2.2.0 to 3.0.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;455](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/455) - Bump pycparser from 2.21 to 3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;456](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/456) - Bump bcrypt from 4.1.2 to 5.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;457](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/457) - Bump actions/checkout from 6.0.2 to 6.0.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;459](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/459) - Bump certifi from 2024.7.4 to 2026.5.20 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;460](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/460) - Bump idna from 3.17 to 3.18 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;461](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/461) - Bump charset-normalizer from 3.3.2 to 3.4.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;464](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/464) - Bump requests from 2.33.1 to 2.34.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;463](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/463) - Bump gunicorn from 23.0.0 to 26.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;462](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/462) - Bump cryptography from 46.0.7 to 48.0.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;466](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/466) - Bump alpine from 3.23.4 to 3.24.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;465](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/465) - Bump alpine from 3.24.0 to 3.24.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;468](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/468) - Bump certifi from 2026.5.20 to 2026.6.17 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;469](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/469) - Bump cryptography from 48.0.1 to 49.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;470](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/470) - Disable gunicorn control socket by [@&#8203;znerol](https://github.com/znerol) in [#&#8203;472](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/472) - Bump actions/setup-python from 6.2.0 to 6.3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;474](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/474) - Bump wrapt from 2.2.1 to 2.2.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;476](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/476) - Bump actions/checkout from 6.0.3 to 7.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;475](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/475) - Switch from actions/attest-build-provenance to actions/attest by [@&#8203;znerol](https://github.com/znerol) in [#&#8203;473](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/473) - Bump docker/setup-qemu-action from 4.1.0 to 4.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;477](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/477) - Bump actions/attest from 4.1.0 to 4.1.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;478](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/478) - Bump docker/metadata-action from 6.1.0 to 6.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;480](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/480) - Bump docker/build-push-action from 7.2.0 to 7.3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;481](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/481) - Bump docker/login-action from 4.2.0 to 4.4.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;482](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/482) - Bump cffi from 2.0.0 to 2.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;483](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/483) - Bump charset-normalizer from 3.4.7 to 3.4.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;484](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/484) - Bump certifi from 2026.6.17 to 2026.7.22 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;486](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/486) - Bump prometheus-client from 0.25.0 to 0.26.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;489](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/489) - Bump wrapt from 2.2.2 to 2.3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;490](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/490) - Bump cryptography from 49.0.0 to 50.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;491](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/491) - Prepare release 3.10.0 by [@&#8203;znerol](https://github.com/znerol) in [#&#8203;493](https://github.com/prometheus-pve/prometheus-pve-exporter/pull/493) **Full Changelog**: <https://github.com/prometheus-pve/prometheus-pve-exporter/compare/v3.9.0...v3.10.0> </details> <details> <summary>the-draupnir-project/Draupnir (ghcr.io/the-draupnir-project/draupnir)</summary> ### [`v3.2.0`](https://github.com/the-draupnir-project/Draupnir/releases/tag/v3.2.0) [Compare Source](https://github.com/the-draupnir-project/Draupnir/compare/v3.1.0...v3.2.0) #### \[3.2.0] - 2026-10-14 ##### Minor Changes - Draupnir now supports systems using libmusl in addition to glibc. - The docker image is now based on Alpine instead of Debian slim. - Developer Experience: New CI workflows implementing the ["CI in a box"](https://github.com/the-draupnir-project/Draupnir/tree/main/ci-in-a-box) concept. The purpose of CI in a box is to reproduce the development environment on all platforms. ##### Patch Changes - [`a0ddfc0`](https://github.com/the-draupnir-project/Draupnir/commit/a0ddfc0): Fix overly strict client capabilities check. Reported and fixed by [@&#8203;bones-was-here](https://github.com/bones-was-here) in [#&#8203;1102](https://github.com/the-draupnir-project/Draupnir/issues/1102). This makes Draupnir bot mode deployable again on Conduit and Dendrite based homeserver deployments. - [`4e949dd`](https://github.com/the-draupnir-project/Draupnir/commit/4e949dd): Fix an issue where Draupnir would sometimes not redact events left by a user who left the room. Reported by [@&#8203;ll-SKY-ll](https://github.com/ll-SKY-ll) in [#&#8203;1184](https://github.com/the-draupnir-project/Draupnir/issues/1184). - [`2a39b21`](https://github.com/the-draupnir-project/Draupnir/commit/2a39b21): Make `initialManager` the uncommented option in the `default.yaml` config file instead of `managementRoom`. This means that Draupnir will create the management room for new deployments. </details> <details> <summary>TwiN/gatus (ghcr.io/twin/gatus)</summary> ### [`v5.37.0`](https://github.com/TwiN/gatus/releases/tag/v5.37.0) [Compare Source](https://github.com/TwiN/gatus/compare/v5.36.0...v5.37.0) #### What's Changed - feat(alerting): allow configuring the topic for Zulip alerts by [@&#8203;ChrisJr404](https://github.com/ChrisJr404) in [#&#8203;1764](https://github.com/TwiN/gatus/pull/1764) - feat(client): Allow configuration of client cookie storage by [@&#8203;AaronLionsheep](https://github.com/AaronLionsheep) in [#&#8203;1716](https://github.com/TwiN/gatus/pull/1716) - feat(dns): Support TXT query type by [@&#8203;hernil](https://github.com/hernil) in [#&#8203;1679](https://github.com/TwiN/gatus/pull/1679) - ci: Remove codecov from repository by [@&#8203;TwiN](https://github.com/TwiN) with [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;1684](https://github.com/TwiN/gatus/pull/1684) - fix(jsonpath): prevent panic on negative array index by [@&#8203;nikolauspschuetz](https://github.com/nikolauspschuetz) in [#&#8203;1703](https://github.com/TwiN/gatus/pull/1703) - docs(alerting): Revise HomeAssistant alerts and add Home Assistant integration info by [@&#8203;TN-1](https://github.com/TN-1) in [#&#8203;1723](https://github.com/TwiN/gatus/pull/1723) - docs: update the postgres bind mount in the compose example by [@&#8203;vshulcz](https://github.com/vshulcz) in [#&#8203;1761](https://github.com/TwiN/gatus/pull/1761) - test(config): make HasLoadedConfigurationBeenModified deterministic by [@&#8203;nikolauspschuetz](https://github.com/nikolauspschuetz) in [#&#8203;1786](https://github.com/TwiN/gatus/pull/1786) #### New Contributors - [@&#8203;hernil](https://github.com/hernil) made their first contribution in [#&#8203;1679](https://github.com/TwiN/gatus/pull/1679) - [@&#8203;nikolauspschuetz](https://github.com/nikolauspschuetz) made their first contribution in [#&#8203;1703](https://github.com/TwiN/gatus/pull/1703) - [@&#8203;AaronLionsheep](https://github.com/AaronLionsheep) made their first contribution in [#&#8203;1716](https://github.com/TwiN/gatus/pull/1716) - [@&#8203;TN-1](https://github.com/TN-1) made their first contribution in [#&#8203;1723](https://github.com/TwiN/gatus/pull/1723) - [@&#8203;vshulcz](https://github.com/vshulcz) made their first contribution in [#&#8203;1761](https://github.com/TwiN/gatus/pull/1761) - [@&#8203;GRbit](https://github.com/GRbit) made their first contribution in [#&#8203;1787](https://github.com/TwiN/gatus/pull/1787) - [@&#8203;ChrisJr404](https://github.com/ChrisJr404) made their first contribution in [#&#8203;1764](https://github.com/TwiN/gatus/pull/1764) - [@&#8203;pujitha24](https://github.com/pujitha24) made their first contribution in [#&#8203;1813](https://github.com/TwiN/gatus/pull/1813) **Full Changelog**: <https://github.com/TwiN/gatus/compare/v5.36.0...v5.37.0> </details> <details> <summary>ansible/ansible-lint (https://github.com/ansible/ansible-lint)</summary> ### [`v26.10.1`](https://github.com/ansible/ansible-lint/releases/tag/v26.10.1) [Compare Source](https://github.com/ansible/ansible-lint/compare/v26.10.0...v26.10.1) #### What's Changed - fix: lower cryptography minimum version to 46.0.7 by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5212](https://github.com/ansible/ansible-lint/pull/5212) **Full Changelog**: <https://github.com/ansible/ansible-lint/compare/v26.10.0...v26.10.1> ### [`v26.10.0`](https://github.com/ansible/ansible-lint/releases/tag/v26.10.0) [Compare Source](https://github.com/ansible/ansible-lint/compare/v26.9.0...v26.10.0) #### What's Changed - fix: respect skip_list for yaml\[comments] during --fix by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5177](https://github.com/ansible/ansible-lint/pull/5177) - Fix/scorecard security improvements v2 by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5194](https://github.com/ansible/ansible-lint/pull/5194) - fix: correctly match symlinked PATH entries in path_inject() by [@&#8203;sushmithainjeti](https://github.com/sushmithainjeti) in [#&#8203;5205](https://github.com/ansible/ansible-lint/pull/5205) - fix(security): update dependencies \[SECURITY] by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5206](https://github.com/ansible/ansible-lint/pull/5206) #### New Contributors - [@&#8203;sushmithainjeti](https://github.com/sushmithainjeti) made their first contribution in [#&#8203;5205](https://github.com/ansible/ansible-lint/pull/5205) **Full Changelog**: <https://github.com/ansible/ansible-lint/compare/v26.9.0...v26.10.0> ### [`v26.9.0`](https://github.com/ansible/ansible-lint/releases/tag/v26.9.0) [Compare Source](https://github.com/ansible/ansible-lint/compare/v26.8.0...v26.9.0) #### Features - feat: support `example` section in file `meta/argument_specs.yml` ([#&#8203;5164](https://github.com/ansible/ansible-lint/issues/5164)) [@&#8203;berndfinger](https://github.com/berndfinger) #### Fixes - fix: resolve short mock modules during syntax check ([#&#8203;5149](https://github.com/ansible/ansible-lint/issues/5149)) [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) - fix: propagate `extra_vars` to `import_playbook` syntax check ([#&#8203;5148](https://github.com/ansible/ansible-lint/issues/5148)) [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) - fix: resolve nested `include_tasks` relative paths ([#&#8203;5159](https://github.com/ansible/ansible-lint/issues/5159)) [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) - fix: resolve `include_tasks` paths from playbook dir ([#&#8203;5184](https://github.com/ansible/ansible-lint/issues/5184)) [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) - fix: apply profile-level skip list during linting ([#&#8203;5151](https://github.com/ansible/ansible-lint/issues/5151)) [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) - fix: honor `warn_list` after `--fix` rewrites task names ([#&#8203;5085](https://github.com/ansible/ansible-lint/issues/5085)) [@&#8203;santosh7676](https://github.com/santosh7676) - fix: mock_modules clobbering collections and args false positives ([#&#8203;5157](https://github.com/ansible/ansible-lint/issues/5157)) [@&#8203;djdanielsson](https://github.com/djdanielsson) - fix: inject plain-name mock roles path regardless of `--offline` ([#&#8203;5183](https://github.com/ansible/ansible-lint/issues/5183)) [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) - fix: warn users when directory expansion discovers new files ([#&#8203;5158](https://github.com/ansible/ansible-lint/issues/5158)) [@&#8203;rockygeekz](https://github.com/rockygeekz) - fix: skip auto-fix `no-jinja-when` on string-embedded jinja ([#&#8203;5103](https://github.com/ansible/ansible-lint/issues/5103)) [@&#8203;f1047](https://github.com/f1047) - fix: do not warn when Jinja block indent is only trim-marker noise ([#&#8203;5153](https://github.com/ansible/ansible-lint/issues/5153)) [@&#8203;DSeaStar](https://github.com/DSeaStar) - fix: preserve blank lines after flow collections ([#&#8203;5178](https://github.com/ansible/ansible-lint/issues/5178)) [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) - fix: add `validate_argspec` to play schema ([#&#8203;5187](https://github.com/ansible/ansible-lint/issues/5187)) [@&#8203;sameeralam3127](https://github.com/sameeralam3127) - fix: use ThreadPoolExecutor for syntax check workers ([#&#8203;5173](https://github.com/ansible/ansible-lint/issues/5173)) [@&#8203;rockygeekz](https://github.com/rockygeekz) - fix: drop ruamel.yaml.clib ([#&#8203;5163](https://github.com/ansible/ansible-lint/issues/5163)) [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) - fix(deps): upgrade gitpython 3.1.57 to 3.1.59 ([#&#8203;5152](https://github.com/ansible/ansible-lint/issues/5152)) [@&#8203;rockygeekz](https://github.com/rockygeekz) - fix: upgrade black to >=25.2.0 to address CVE-2026-32274 ([#&#8203;5166](https://github.com/ansible/ansible-lint/issues/5166)) [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) - fix: raise cryptography floor and bump js-yaml for Guardian prod vulns ([#&#8203;5174](https://github.com/ansible/ansible-lint/issues/5174)) [@&#8203;rockygeekz](https://github.com/rockygeekz) #### Performance - perf: cache `get_deps_versions()` result ([#&#8203;5113](https://github.com/ansible/ansible-lint/issues/5113)) [@&#8203;BlackDark](https://github.com/BlackDark) #### Maintenance - chore: Add `.github/SECURITY.md` ([#&#8203;5165](https://github.com/ansible/ansible-lint/issues/5165)) [@&#8203;gundalow](https://github.com/gundalow) - chore(deps): update all dependencies and pep621 ([#&#8203;5138](https://github.com/ansible/ansible-lint/issues/5138), [#&#8203;5154](https://github.com/ansible/ansible-lint/issues/5154), [#&#8203;5155](https://github.com/ansible/ansible-lint/issues/5155), [#&#8203;5160](https://github.com/ansible/ansible-lint/issues/5160), [#&#8203;5161](https://github.com/ansible/ansible-lint/issues/5161), [#&#8203;5172](https://github.com/ansible/ansible-lint/issues/5172), [#&#8203;5175](https://github.com/ansible/ansible-lint/issues/5175), [#&#8203;5176](https://github.com/ansible/ansible-lint/issues/5176)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate) #### What's Changed - chore(deps): update all dependencies by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5138](https://github.com/ansible/ansible-lint/pull/5138) - fix: resolve short mock modules during syntax check by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5149](https://github.com/ansible/ansible-lint/pull/5149) - fix(deps): upgrade gitpython 3.1.57 to 3.1.59 by [@&#8203;rockygeekz](https://github.com/rockygeekz) in [#&#8203;5152](https://github.com/ansible/ansible-lint/pull/5152) - chore(deps): update all dependencies pep621 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5155](https://github.com/ansible/ansible-lint/pull/5155) - fix: propagate extra_vars to import_playbook syntax check by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5148](https://github.com/ansible/ansible-lint/pull/5148) - fix: warn users when directory expansion discovers new files by [@&#8203;rockygeekz](https://github.com/rockygeekz) in [#&#8203;5158](https://github.com/ansible/ansible-lint/pull/5158) - fix: resolve nested include_tasks relative paths by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5159](https://github.com/ansible/ansible-lint/pull/5159) - fix: apply profile-level skip list during linting by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5151](https://github.com/ansible/ansible-lint/pull/5151) - chore(deps): update all dependencies by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5154](https://github.com/ansible/ansible-lint/pull/5154) - chore(deps): update all dependencies by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5160](https://github.com/ansible/ansible-lint/pull/5160) - fix: skip auto-fix no-jinja-when on string-embedded jinja by [@&#8203;f1047](https://github.com/f1047) in [#&#8203;5103](https://github.com/ansible/ansible-lint/pull/5103) - chore(deps): update all dependencies pep621 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5161](https://github.com/ansible/ansible-lint/pull/5161) - fix: do not warn when Jinja block indent is only trim-marker noise by [@&#8203;DSeaStar](https://github.com/DSeaStar) in [#&#8203;5153](https://github.com/ansible/ansible-lint/pull/5153) - chore: Add .github/SECURITY.md by [@&#8203;gundalow](https://github.com/gundalow) in [#&#8203;5165](https://github.com/ansible/ansible-lint/pull/5165) - fix: upgrade black to >=25.2.0 to address CVE-2026-32274 by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5166](https://github.com/ansible/ansible-lint/pull/5166) - Fix/drop ruamel yaml clib fresh by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5163](https://github.com/ansible/ansible-lint/pull/5163) - chore(deps): update all dependencies pep621 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5172](https://github.com/ansible/ansible-lint/pull/5172) - fix: honor warn_list after --fix rewrites task names by [@&#8203;santosh7676](https://github.com/santosh7676) in [#&#8203;5085](https://github.com/ansible/ansible-lint/pull/5085) - feat: support 'example' section in file meta/argument_specs.yml by [@&#8203;berndfinger](https://github.com/berndfinger) in [#&#8203;5164](https://github.com/ansible/ansible-lint/pull/5164) - fix: use ThreadPoolExecutor for syntax check workers by [@&#8203;rockygeekz](https://github.com/rockygeekz) in [#&#8203;5173](https://github.com/ansible/ansible-lint/pull/5173) - fix: mock_modules clobbering collections and args false positives by [@&#8203;djdanielsson](https://github.com/djdanielsson) in [#&#8203;5157](https://github.com/ansible/ansible-lint/pull/5157) - fix: raise cryptography floor and bump js-yaml for Guardian prod vulns by [@&#8203;rockygeekz](https://github.com/rockygeekz) in [#&#8203;5174](https://github.com/ansible/ansible-lint/pull/5174) - chore(deps): update all dependencies pep621 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5176](https://github.com/ansible/ansible-lint/pull/5176) - chore(deps): update all dependencies by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;5175](https://github.com/ansible/ansible-lint/pull/5175) - fix: preserve blank lines after flow collections by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5178](https://github.com/ansible/ansible-lint/pull/5178) - perf: cache get_deps_versions() result by [@&#8203;BlackDark](https://github.com/BlackDark) in [#&#8203;5113](https://github.com/ansible/ansible-lint/pull/5113) - fix: inject plain-name mock roles path regardless of --offline by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5183](https://github.com/ansible/ansible-lint/pull/5183) - fix: resolve include_tasks paths from playbook dir by [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) in [#&#8203;5184](https://github.com/ansible/ansible-lint/pull/5184) - fix: add validate_argspec to play schema by [@&#8203;sameeralam3127](https://github.com/sameeralam3127) in [#&#8203;5187](https://github.com/ansible/ansible-lint/pull/5187) #### New Contributors - [@&#8203;shvenkat-rh](https://github.com/shvenkat-rh) made their first contribution in [#&#8203;5149](https://github.com/ansible/ansible-lint/pull/5149) - [@&#8203;f1047](https://github.com/f1047) made their first contribution in [#&#8203;5103](https://github.com/ansible/ansible-lint/pull/5103) - [@&#8203;DSeaStar](https://github.com/DSeaStar) made their first contribution in [#&#8203;5153](https://github.com/ansible/ansible-lint/pull/5153) - [@&#8203;berndfinger](https://github.com/berndfinger) made their first contribution in [#&#8203;5164](https://github.com/ansible/ansible-lint/pull/5164) - [@&#8203;BlackDark](https://github.com/BlackDark) made their first contribution in [#&#8203;5113](https://github.com/ansible/ansible-lint/pull/5113) - [@&#8203;sameeralam3127](https://github.com/sameeralam3127) made their first contribution in [#&#8203;5187](https://github.com/ansible/ansible-lint/pull/5187) **Full Changelog**: <https://github.com/ansible/ansible-lint/compare/v26.8.0...v26.9.0> ### [`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.3`](https://github.com/netbox-community/netbox/releases/tag/v4.7.3): - 2026-10-13 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.7.2...v4.7.3) #### Enhancements - [#&#8203;23230](https://github.com/netbox-community/netbox/issues/23230) - Add a location filter to the power feeds list view #### Performance Improvements - [#&#8203;23288](https://github.com/netbox-community/netbox/issues/23288) - Skip the loading of config context data when the field is excluded from a REST API response - [#&#8203;23290](https://github.com/netbox-community/netbox/issues/23290) - Reuse nested serializer instances when rendering REST API list responses - [#&#8203;23291](https://github.com/netbox-community/netbox/issues/23291) - Avoid loading unused virtual machines when serializing clusters via the REST API - [#&#8203;23292](https://github.com/netbox-community/netbox/issues/23292) - Skip static prefetches for fields which have been excluded from a REST API response - [#&#8203;23311](https://github.com/netbox-community/netbox/issues/23311) - Defer building the GraphQL schema until it is needed, rather than during the initialization of every management command - [#&#8203;23350](https://github.com/netbox-community/netbox/issues/23350) - Extend automatic table prefetching to reverse many-to-many relations #### Bug Fixes - [#&#8203;22802](https://github.com/netbox-community/netbox/issues/22802) - Correct the OpenAPI request body schema for the available prefixes REST API endpoint - [#&#8203;23094](https://github.com/netbox-community/netbox/issues/23094) - Fix the detection of changes to a cable's terminations - [#&#8203;23099](https://github.com/netbox-community/netbox/issues/23099) - Persist the status change of cable paths deactivated during a partial cable save - [#&#8203;23121](https://github.com/netbox-community/netbox/issues/23121) - Remove stale cable paths when a cable's terminations are changed - [#&#8203;23134](https://github.com/netbox-community/netbox/issues/23134) - Record a change log entry when a circuit's termination pointer is updated - [#&#8203;23172](https://github.com/netbox-community/netbox/issues/23172) - Permit the selection of a numeric enum value for a module type profile attribute via the UI - [#&#8203;23198](https://github.com/netbox-community/netbox/issues/23198) - Restrict the rack elevation `highlight` parameter to prevent the disclosure of data the user is not permitted to view - [#&#8203;23227](https://github.com/netbox-community/netbox/issues/23227) - Display date & time custom field values in the user's local time zone within object tables - [#&#8203;23233](https://github.com/netbox-community/netbox/issues/23233) - Synchronizing a data source should not require the `add` permission - [#&#8203;23240](https://github.com/netbox-community/netbox/issues/23240) - Hide the bulk actions container on list views which have no bulk actions available - [#&#8203;23247](https://github.com/netbox-community/netbox/issues/23247) - Preserve request headers and query parameters for REST API bulk writes processed in the background - [#&#8203;23274](https://github.com/netbox-community/netbox/issues/23274) - Prevent the assignment of a primary or OOB IP address belonging to another device when creating a device - [#&#8203;23275](https://github.com/netbox-community/netbox/issues/23275) - Fix exception when setting a primary IP on a virtual device context with no assigned device - [#&#8203;23278](https://github.com/netbox-community/netbox/issues/23278) - Fix exception when creating a virtual machine with a primary IP address - [#&#8203;23280](https://github.com/netbox-community/netbox/issues/23280) - Fix exception when retrieving change log entries for port mappings via the REST API - [#&#8203;23281](https://github.com/netbox-community/netbox/issues/23281) - Ensure that modifying a new user's preferences does not alter the default preferences for other users - [#&#8203;23283](https://github.com/netbox-community/netbox/issues/23283) - Fix exception when logging in as a user with no preferences record - [#&#8203;23307](https://github.com/netbox-community/netbox/issues/23307) - Ensure that changing a cable's profile does not remove its connection from cable traces - [#&#8203;23310](https://github.com/netbox-community/netbox/issues/23310) - Fix exception when listing jobs or tagged objects assigned to objects which have no REST API serializer - [#&#8203;23321](https://github.com/netbox-community/netbox/issues/23321) - Fix `TypeError` exception when creating a device type with a front or rear image via the REST API - [#&#8203;23322](https://github.com/netbox-community/netbox/issues/23322) - Fix the `q` search filter for tunnel terminations - [#&#8203;23323](https://github.com/netbox-community/netbox/issues/23323) - Fix exception when specifying `installed_module` while creating a module bay via the REST API - [#&#8203;23324](https://github.com/netbox-community/netbox/issues/23324) - Include a circuit's group assignments in its REST API representation, and fix exception when specifying them on creation - [#&#8203;23325](https://github.com/netbox-community/netbox/issues/23325) - Fix `FieldError` exception when filtering circuits and virtual circuits by provider account - [#&#8203;23326](https://github.com/netbox-community/netbox/issues/23326) - Fix `FieldError` exception when filtering front & rear ports (and their templates) by `rear_port_id` or `front_port_id` - [#&#8203;23327](https://github.com/netbox-community/netbox/issues/23327) - Fix `FieldError` exception when searching circuit group assignments - [#&#8203;23328](https://github.com/netbox-community/netbox/issues/23328) - Return empty results or a 400 response, rather than raising an exception, when passing malformed values to certain filters - [#&#8203;23332](https://github.com/netbox-community/netbox/issues/23332) - Fix `AttributeError` exception when executing a bulk edit as a background job - [#&#8203;23340](https://github.com/netbox-community/netbox/issues/23340) - Fix exception when applying the `__empty` lookup to numeric and date/time filters - [#&#8203;23342](https://github.com/netbox-community/netbox/issues/23342) - Fix the display of circuit group assignments in the circuits list - [#&#8203;23345](https://github.com/netbox-community/netbox/issues/23345) - Validate the IDs passed to the installed module and data file filters against the correct models - [#&#8203;23367](https://github.com/netbox-community/netbox/issues/23367) - Fix the rollback of failed REST API bulk operations when writes are routed to a non-default database - [#&#8203;23369](https://github.com/netbox-community/netbox/issues/23369) - Add custom fields support to the circuit group assignment REST API serializer ### [`v4.7.2`](https://github.com/netbox-community/netbox/releases/tag/v4.7.2): - 2026-09-29 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.7.1...v4.7.2) > \[!WARNING] > NetBox v4.7.0 and v4.7.1 recorded the plaintext of API tokens created via background bulk requests in the job results, where they were readable by any user permitted to view jobs. This release rejects such requests; any tokens created this way should be considered exposed and replaced. See [#&#8203;23196](https://github.com/netbox-community/netbox/issues/23196) for details. ##### Enhancements - [#&#8203;21879](https://github.com/netbox-community/netbox/issues/21879) - Introduce the `Cable.update_dependent_objects()` hook to rebuild cable paths and related attributes after writes which bypass `save()` - [#&#8203;22886](https://github.com/netbox-community/netbox/issues/22886) - Include VLANs assigned via VLAN groups scoped to a site (or its site group) among the site's related objects - [#&#8203;22949](https://github.com/netbox-community/netbox/issues/22949) - Focus and scroll to the first field with a validation error when a form fails validation - [#&#8203;23095](https://github.com/netbox-community/netbox/issues/23095) - Display the compatible module types for a module bay type in a dedicated, sortable, and paginated table ##### Bug Fixes - [#&#8203;23122](https://github.com/netbox-community/netbox/issues/23122) - Prevent the failure to automatically sync one object from skipping the sync of subsequent objects - [#&#8203;23150](https://github.com/netbox-community/netbox/issues/23150) - Preserve the parent device type assignment when using "Create & Add Another" to add component templates - [#&#8203;23160](https://github.com/netbox-community/netbox/issues/23160) - Record a change log entry for each terminating object when a cable is deleted - [#&#8203;23181](https://github.com/netbox-community/netbox/issues/23181) - Restore the display of the cluster group in the virtual machine detail view - [#&#8203;23187](https://github.com/netbox-community/netbox/issues/23187) - Permit the assignment of a data file when creating an export template via the REST API - [#&#8203;23195](https://github.com/netbox-community/netbox/issues/23195) - Validate the `return_url` parameter used for the cancel button on the IP address assignment view - [#&#8203;23196](https://github.com/netbox-community/netbox/issues/23196) - Ensure plaintext API tokens are never recorded in background job results (see the warning above) - [#&#8203;23197](https://github.com/netbox-community/netbox/issues/23197) - Enforce object permission constraints on the REST API `sync` action for synced data models - [#&#8203;23203](https://github.com/netbox-community/netbox/issues/23203) - Fix the population of the related objects panel for owners ### [`v4.7.1`](https://github.com/netbox-community/netbox/releases/tag/v4.7.1): - 2026-09-15 [Compare Source](https://github.com/netbox-community/netbox/compare/v4.7.0...v4.7.1) > \[!WARNING] > The triggers which cascade a hierarchical object's path to its descendants could not be recreated when restoring a `pg_dump` of a v4.7.0 database, so such a restore reported success while leaving the database without those triggers. Renaming or moving a region, site group, location, device role, platform, tenant group, contact group, wireless LAN group, module bay, inventory item, or inventory item template then did not update its descendants. Upgrading reinstalls the triggers so that all subsequent changes cascade correctly, but does **not** repair values which have already gone stale. See [Repairing Hierarchical Paths](../administration/repairing-hierarchical-paths.md) for how to detect and correct them, and for the steps plugins maintaining their own `ltree` models must take. ##### Enhancements - [#&#8203;22999](https://github.com/netbox-community/netbox/issues/22999) - Add a default module type profile for transceivers - [#&#8203;23041](https://github.com/netbox-community/netbox/issues/23041) - Add InfiniBand 2X interface types for HDR and later generations (HDR100, NDR200, and XDR400) ##### Bug Fixes - [#&#8203;22750](https://github.com/netbox-community/netbox/issues/22750) - Resolve object IDs to model instances and validate the submitted data when executing a custom script via the REST API - [#&#8203;23012](https://github.com/netbox-community/netbox/issues/23012) - Apply a field's collation to both sides of a case-insensitive comparison, so that names containing characters such as `ß` can be matched - [#&#8203;23096](https://github.com/netbox-community/netbox/issues/23096) - Persist a cable's normalized length when saving only its `length` or `length_unit` field - [#&#8203;23112](https://github.com/netbox-community/netbox/issues/23112) - Initiate SSO logins via script-driven navigation, so that they are not blocked by a restrictive `form-action` content security policy - [#&#8203;23117](https://github.com/netbox-community/netbox/issues/23117) - Fix the negation (`__n`) filter lookup for multiple selection custom fields - [#&#8203;23120](https://github.com/netbox-community/netbox/issues/23120) - Include tags in the REST API representation of a data source, and honor them on write - [#&#8203;23125](https://github.com/netbox-community/netbox/issues/23125) - Add the missing standard fields to the VLAN translation policy & rule REST API serializers - [#&#8203;23130](https://github.com/netbox-community/netbox/issues/23130) - Ensure that the cascade triggers for hierarchical models can be restored from a `pg_dump` (see the warning above) - [#&#8203;23154](https://github.com/netbox-community/netbox/issues/23154) - Correct the optional/required mismatch on the L2VPN `type` and rack type `form_factor` fields - [#&#8203;23166](https://github.com/netbox-community/netbox/issues/23166) - Apply a zero-valued minimum or maximum bound from a module type profile attribute to its form field - [#&#8203;23167](https://github.com/netbox-community/netbox/issues/23167) - Sanitize the JSON schema property descriptions used as form help text for module type profile attributes ### [`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:eyJjcmVhdGVkSW5WZXIiOiI0NC42MS42IiwidXBkYXRlZEluVmVyIjoiNDQuMTc2LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbInJlbm92YXRlIl19-->
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
renovate force-pushed renovate/all-stable-minor from 6f136110a1
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 2m41s
/ Ansible Lint (pull_request) Failing after 2m31s
to 5a70f4bada
Some checks failed
/ build (pull_request) Successful in 28s
/ Ansible Lint (push) Failing after 3m5s
/ Ansible Lint (pull_request) Failing after 3m18s
2026-09-08 02:16:49 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 5a70f4bada
Some checks failed
/ build (pull_request) Successful in 28s
/ Ansible Lint (push) Failing after 3m5s
/ Ansible Lint (pull_request) Failing after 3m18s
to 294de3c583
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 3m13s
/ Ansible Lint (pull_request) Failing after 3m43s
2026-09-08 15:46:03 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 294de3c583
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 3m13s
/ Ansible Lint (pull_request) Failing after 3m43s
to 2db68efcd7
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 6m1s
/ Ansible Lint (pull_request) Failing after 6m8s
2026-09-11 11:01:10 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 2db68efcd7
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 6m1s
/ Ansible Lint (pull_request) Failing after 6m8s
to e69f644095
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (push) Failing after 12m2s
/ Ansible Lint (pull_request) Failing after 12m16s
2026-09-15 11:46:02 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from e69f644095
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (push) Failing after 12m2s
/ Ansible Lint (pull_request) Failing after 12m16s
to 9d57a5ac58
Some checks failed
/ build (pull_request) Successful in 2m5s
/ Ansible Lint (push) Failing after 6m37s
/ Ansible Lint (pull_request) Failing after 6m57s
2026-09-16 02:16:49 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 9d57a5ac58
Some checks failed
/ build (pull_request) Successful in 2m5s
/ Ansible Lint (push) Failing after 6m37s
/ Ansible Lint (pull_request) Failing after 6m57s
to 319502a5dc
Some checks failed
/ build (pull_request) Successful in 27s
/ Ansible Lint (push) Failing after 13m26s
/ Ansible Lint (pull_request) Failing after 15m29s
2026-09-16 13:46:21 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 319502a5dc
Some checks failed
/ build (pull_request) Successful in 27s
/ Ansible Lint (push) Failing after 13m26s
/ Ansible Lint (pull_request) Failing after 15m29s
to b0620fbfd1
Some checks failed
/ build (pull_request) Successful in 1m0s
/ Ansible Lint (push) Failing after 3m16s
/ Ansible Lint (pull_request) Failing after 3m18s
2026-09-17 10:31:37 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from b0620fbfd1
Some checks failed
/ build (pull_request) Successful in 1m0s
/ Ansible Lint (push) Failing after 3m16s
/ Ansible Lint (pull_request) Failing after 3m18s
to 6b4e455cc3
Some checks failed
/ build (pull_request) Successful in 28s
/ Ansible Lint (push) Failing after 3m18s
/ Ansible Lint (pull_request) Failing after 3m2s
2026-09-19 02:16:51 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 6b4e455cc3
Some checks failed
/ build (pull_request) Successful in 28s
/ Ansible Lint (push) Failing after 3m18s
/ Ansible Lint (pull_request) Failing after 3m2s
to c77934ca6f
Some checks failed
/ build (pull_request) Successful in 27s
/ Ansible Lint (push) Failing after 3m15s
/ Ansible Lint (pull_request) Failing after 3m37s
2026-09-22 02:16:54 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from c77934ca6f
Some checks failed
/ build (pull_request) Successful in 27s
/ Ansible Lint (push) Failing after 3m15s
/ Ansible Lint (pull_request) Failing after 3m37s
to e7ac450d7b
Some checks failed
/ build (pull_request) Successful in 27s
/ Ansible Lint (push) Failing after 2m41s
/ Ansible Lint (pull_request) Failing after 2m35s
2026-09-22 02:47:28 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from e7ac450d7b
Some checks failed
/ build (pull_request) Successful in 27s
/ Ansible Lint (push) Failing after 2m41s
/ Ansible Lint (pull_request) Failing after 2m35s
to cd7a64f46c
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 3m12s
/ Ansible Lint (pull_request) Failing after 4m0s
2026-09-22 16:16:02 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from cd7a64f46c
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 3m12s
/ Ansible Lint (pull_request) Failing after 4m0s
to 4f89064133
Some checks failed
/ build (pull_request) Successful in 28s
/ Ansible Lint (push) Failing after 3m2s
/ Ansible Lint (pull_request) Failing after 3m16s
2026-09-22 19:16:00 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 4f89064133
Some checks failed
/ build (pull_request) Successful in 28s
/ Ansible Lint (push) Failing after 3m2s
/ Ansible Lint (pull_request) Failing after 3m16s
to 24ffc0f8e0
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 3m19s
/ Ansible Lint (pull_request) Failing after 3m20s
2026-09-24 02:17:13 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 24ffc0f8e0
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 3m19s
/ Ansible Lint (pull_request) Failing after 3m20s
to 7b10ee2dea
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 3m5s
/ Ansible Lint (pull_request) Failing after 2m47s
2026-09-24 02:32:02 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 7b10ee2dea
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 3m5s
/ Ansible Lint (pull_request) Failing after 2m47s
to 2280194c9c
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 3m51s
/ Ansible Lint (pull_request) Failing after 3m37s
2026-09-25 02:17:06 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 2280194c9c
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 3m51s
/ Ansible Lint (pull_request) Failing after 3m37s
to bfeef72160
Some checks failed
/ build (pull_request) Successful in 57s
/ Ansible Lint (pull_request) Failing after 3m31s
/ Ansible Lint (push) Failing after 3m52s
2026-09-25 10:30:58 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from bfeef72160
Some checks failed
/ build (pull_request) Successful in 57s
/ Ansible Lint (pull_request) Failing after 3m31s
/ Ansible Lint (push) Failing after 3m52s
to b030340bc8
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 4m10s
/ Ansible Lint (pull_request) Failing after 5m7s
2026-09-25 12:15:49 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from b030340bc8
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 4m10s
/ Ansible Lint (pull_request) Failing after 5m7s
to 9173f157b5
Some checks failed
/ build (pull_request) Successful in 58s
/ Ansible Lint (push) Failing after 4m46s
/ Ansible Lint (pull_request) Failing after 5m9s
2026-09-26 04:02:03 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 9173f157b5
Some checks failed
/ build (pull_request) Successful in 58s
/ Ansible Lint (push) Failing after 4m46s
/ Ansible Lint (pull_request) Failing after 5m9s
to 2851c4dc22
Some checks failed
/ build (pull_request) Successful in 58s
/ Ansible Lint (pull_request) Failing after 3m24s
/ Ansible Lint (push) Failing after 3m56s
2026-09-28 04:16:58 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 2851c4dc22
Some checks failed
/ build (pull_request) Successful in 58s
/ Ansible Lint (pull_request) Failing after 3m24s
/ Ansible Lint (push) Failing after 3m56s
to 9afdedeb62
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (pull_request) Failing after 5m45s
/ Ansible Lint (push) Failing after 8m11s
2026-09-28 16:16:26 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 9afdedeb62
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (pull_request) Failing after 5m45s
/ Ansible Lint (push) Failing after 8m11s
to 84eaa6b231
Some checks failed
/ build (pull_request) Successful in 31s
/ Ansible Lint (pull_request) Failing after 3m59s
/ Ansible Lint (push) Failing after 4m15s
2026-09-29 04:16:54 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 84eaa6b231
Some checks failed
/ build (pull_request) Successful in 31s
/ Ansible Lint (pull_request) Failing after 3m59s
/ Ansible Lint (push) Failing after 4m15s
to 72c6c81d5f
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 5m31s
/ Ansible Lint (pull_request) Failing after 5m46s
2026-09-29 10:16:48 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 72c6c81d5f
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 5m31s
/ Ansible Lint (pull_request) Failing after 5m46s
to b4bd9d9932
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (pull_request) Failing after 3m51s
/ Ansible Lint (push) Failing after 4m57s
2026-09-30 04:16:58 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from b4bd9d9932
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (pull_request) Failing after 3m51s
/ Ansible Lint (push) Failing after 4m57s
to 2788f8c39d
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 4m4s
/ Ansible Lint (pull_request) Failing after 3m29s
2026-10-01 04:46:26 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 2788f8c39d
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 4m4s
/ Ansible Lint (pull_request) Failing after 3m29s
to 250cda919c
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 2m53s
/ Ansible Lint (pull_request) Failing after 3m7s
2026-10-01 16:17:00 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 250cda919c
Some checks failed
/ build (pull_request) Successful in 29s
/ Ansible Lint (push) Failing after 2m53s
/ Ansible Lint (pull_request) Failing after 3m7s
to d54c5ef459
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 3m11s
/ Ansible Lint (pull_request) Failing after 3m11s
2026-10-02 16:46:04 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from d54c5ef459
Some checks failed
/ build (pull_request) Successful in 30s
/ Ansible Lint (push) Failing after 3m11s
/ Ansible Lint (pull_request) Failing after 3m11s
to 4fdbb89747
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (pull_request) Failing after 2m54s
/ Ansible Lint (push) Failing after 2m56s
2026-10-03 10:16:07 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 4fdbb89747
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (pull_request) Failing after 2m54s
/ Ansible Lint (push) Failing after 2m56s
to 9b9f56ea50
Some checks failed
/ build (pull_request) Successful in 32s
/ Ansible Lint (pull_request) Failing after 2m39s
/ Ansible Lint (push) Failing after 2m41s
2026-10-04 16:16:09 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 9b9f56ea50
Some checks failed
/ build (pull_request) Successful in 32s
/ Ansible Lint (pull_request) Failing after 2m39s
/ Ansible Lint (push) Failing after 2m41s
to 27cc1dda10
Some checks failed
/ build (pull_request) Successful in 58s
/ Ansible Lint (pull_request) Failing after 3m49s
/ Ansible Lint (push) Failing after 4m3s
2026-10-07 22:16:59 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 27cc1dda10
Some checks failed
/ build (pull_request) Successful in 58s
/ Ansible Lint (pull_request) Failing after 3m49s
/ Ansible Lint (push) Failing after 4m3s
to e16d684c79
Some checks failed
/ build (pull_request) Successful in 31s
/ Ansible Lint (pull_request) Failing after 5m46s
/ Ansible Lint (push) Failing after 7m3s
2026-10-08 16:16:59 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from e16d684c79
Some checks failed
/ build (pull_request) Successful in 31s
/ Ansible Lint (pull_request) Failing after 5m46s
/ Ansible Lint (push) Failing after 7m3s
to c2ffb5b7a8
Some checks failed
/ build (pull_request) Successful in 57s
/ Ansible Lint (push) Failing after 3m56s
/ Ansible Lint (pull_request) Failing after 4m24s
2026-10-11 04:17:12 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from c2ffb5b7a8
Some checks failed
/ build (pull_request) Successful in 57s
/ Ansible Lint (push) Failing after 3m56s
/ Ansible Lint (pull_request) Failing after 4m24s
to f98f5bc888
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (push) Failing after 16m49s
/ Ansible Lint (pull_request) Failing after 17m23s
2026-10-12 16:16:31 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from f98f5bc888
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (push) Failing after 16m49s
/ Ansible Lint (pull_request) Failing after 17m23s
to d4a512a8d1
Some checks failed
/ build (pull_request) Successful in 1m14s
/ Ansible Lint (pull_request) Failing after 6m16s
/ Ansible Lint (push) Failing after 6m37s
2026-10-13 04:16:56 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from d4a512a8d1
Some checks failed
/ build (pull_request) Successful in 1m14s
/ Ansible Lint (pull_request) Failing after 6m16s
/ Ansible Lint (push) Failing after 6m37s
to 48c42ed7ea
Some checks failed
/ build (pull_request) Successful in 49s
/ Ansible Lint (pull_request) Failing after 9m54s
/ Ansible Lint (push) Failing after 10m5s
2026-10-13 16:16:36 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 48c42ed7ea
Some checks failed
/ build (pull_request) Successful in 49s
/ Ansible Lint (pull_request) Failing after 9m54s
/ Ansible Lint (push) Failing after 10m5s
to 212a889a33
Some checks failed
/ build (pull_request) Successful in 52s
/ Ansible Lint (pull_request) Failing after 2m58s
/ Ansible Lint (push) Failing after 3m12s
2026-10-13 22:16:34 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 212a889a33
Some checks failed
/ build (pull_request) Successful in 52s
/ Ansible Lint (pull_request) Failing after 2m58s
/ Ansible Lint (push) Failing after 3m12s
to 9871ecb0d9
Some checks failed
/ build (pull_request) Successful in 52s
/ Ansible Lint (push) Failing after 2m57s
/ Ansible Lint (pull_request) Failing after 2m45s
2026-10-15 16:17:17 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 9871ecb0d9
Some checks failed
/ build (pull_request) Successful in 52s
/ Ansible Lint (push) Failing after 2m57s
/ Ansible Lint (pull_request) Failing after 2m45s
to 6df8a15a26
Some checks failed
/ build (pull_request) Successful in 48s
/ Ansible Lint (push) Failing after 3m17s
/ Ansible Lint (pull_request) Failing after 3m44s
2026-10-15 22:16:22 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 6df8a15a26
Some checks failed
/ build (pull_request) Successful in 48s
/ Ansible Lint (push) Failing after 3m17s
/ Ansible Lint (pull_request) Failing after 3m44s
to ff7d01fcda
Some checks failed
/ build (pull_request) Successful in 1m20s
/ Ansible Lint (push) Failing after 3m23s
/ Ansible Lint (pull_request) Failing after 3m25s
2026-10-17 04:17:08 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from ff7d01fcda
Some checks failed
/ build (pull_request) Successful in 1m20s
/ Ansible Lint (push) Failing after 3m23s
/ Ansible Lint (pull_request) Failing after 3m25s
to a1af8184b2
Some checks failed
/ build (pull_request) Successful in 1m18s
/ Ansible Lint (pull_request) Failing after 3m3s
/ Ansible Lint (push) Failing after 3m5s
2026-10-18 16:16:32 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from a1af8184b2
Some checks failed
/ build (pull_request) Successful in 1m18s
/ Ansible Lint (pull_request) Failing after 3m3s
/ Ansible Lint (push) Failing after 3m5s
to a9a1e58163
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (pull_request) Failing after 3m19s
/ Ansible Lint (push) Failing after 3m43s
2026-10-19 16:17:02 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from a9a1e58163
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (pull_request) Failing after 3m19s
/ Ansible Lint (push) Failing after 3m43s
to 0ec52411e4
Some checks failed
/ build (pull_request) Successful in 53s
/ Ansible Lint (pull_request) Failing after 2m58s
/ Ansible Lint (push) Failing after 3m12s
2026-10-20 16:16:59 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 0ec52411e4
Some checks failed
/ build (pull_request) Successful in 53s
/ Ansible Lint (pull_request) Failing after 2m58s
/ Ansible Lint (push) Failing after 3m12s
to 5e351a09d9
Some checks failed
/ build (pull_request) Successful in 1m1s
/ Ansible Lint (push) Failing after 3m9s
/ Ansible Lint (pull_request) Failing after 3m10s
2026-10-20 22:17:23 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 5e351a09d9
Some checks failed
/ build (pull_request) Successful in 1m1s
/ Ansible Lint (push) Failing after 3m9s
/ Ansible Lint (pull_request) Failing after 3m10s
to 77e2474bc7
Some checks failed
/ build (pull_request) Successful in 53s
/ Ansible Lint (push) Failing after 3m5s
/ Ansible Lint (pull_request) Failing after 2m50s
2026-10-21 04:18:01 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 77e2474bc7
Some checks failed
/ build (pull_request) Successful in 53s
/ Ansible Lint (push) Failing after 3m5s
/ Ansible Lint (pull_request) Failing after 2m50s
to fa87bb41b5
Some checks failed
/ build (pull_request) Successful in 1m23s
/ Ansible Lint (push) Failing after 4m11s
/ Ansible Lint (pull_request) Failing after 4m13s
2026-10-21 16:17:55 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from fa87bb41b5
Some checks failed
/ build (pull_request) Successful in 1m23s
/ Ansible Lint (push) Failing after 4m11s
/ Ansible Lint (pull_request) Failing after 4m13s
to 253a3f87ef
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (push) Failing after 2m58s
/ Ansible Lint (pull_request) Failing after 3m3s
2026-10-21 16:46:23 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 253a3f87ef
Some checks failed
/ build (pull_request) Successful in 54s
/ Ansible Lint (push) Failing after 2m58s
/ Ansible Lint (pull_request) Failing after 3m3s
to 23d998911e
Some checks failed
/ build (pull_request) Successful in 53s
/ Ansible Lint (pull_request) Failing after 2m53s
/ Ansible Lint (push) Failing after 2m57s
2026-10-21 22:17:58 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from 23d998911e
Some checks failed
/ build (pull_request) Successful in 53s
/ Ansible Lint (pull_request) Failing after 2m53s
/ Ansible Lint (push) Failing after 2m57s
to e3b6ea7b1f
Some checks failed
/ build (pull_request) Successful in 55s
/ Ansible Lint (push) Failing after 2m49s
/ Ansible Lint (pull_request) Failing after 2m49s
2026-10-22 04:17:38 +02:00
Compare
renovate force-pushed renovate/all-stable-minor from e3b6ea7b1f
Some checks failed
/ build (pull_request) Successful in 55s
/ Ansible Lint (push) Failing after 2m49s
/ Ansible Lint (pull_request) Failing after 2m49s
to 2d1cc8bc90
Some checks failed
/ build (pull_request) Successful in 52s
/ Ansible Lint (pull_request) Failing after 3m24s
/ Ansible Lint (push) Failing after 3m47s
2026-10-22 22:16:47 +02:00
Compare
Some checks failed
/ build (pull_request) Successful in 52s
Required
Details
/ Ansible Lint (pull_request) Failing after 3m24s
Required
Details
/ Ansible Lint (push) Failing after 3m47s
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.