Commit Graph

57383 Commits

Author SHA1 Message Date
TrueCharts Bot dd771e2bc2 feat(local-ai): update image docker.io/localai/localai v4.4.3 → v4.5.0 (#49427)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/localai/localai](https://redirect.github.com/mudler/LocalAI)
| minor | `1aeb407` → `5e25cb8` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>mudler/LocalAI (docker.io/localai/localai)</summary>

###
[`v4.5.0`](https://redirect.github.com/mudler/LocalAI/releases/tag/v4.5.0)

[Compare
Source](https://redirect.github.com/mudler/LocalAI/compare/v4.4.3...v4.5.0)

### 🎉 LocalAI 4.5.0 Release! 🚀

<h1 align="center">
  <br>
<img height="300"
src="https://raw.githubusercontent.com/mudler/LocalAI/refs/heads/master/core/http/static/logo.png">
  <br>
  <br>
</h1>

LocalAI 4.5.0 is out!

This release widens what LocalAI can perceive, sharpens the realtime
voice API, and makes multi-user serving fast with zero configuration.
Four new backends land, the React UI redesign ships in full, and
distributed mode gets a robustness pass.

**Highlights:**

- 👁️ **See depth** - new `depth-anything` backend (Depth Anything 3):
monocular metric depth + camera pose, with a typed `Depth` RPC and `POST
/v1/depth`.
- 🔊 **Hear events** - new `ced` backend tags 527 AudioSet sound classes
(baby cry, glass breaking, alarms) over REST and a VAD-decoupled
realtime stream.
- 🗣️ **Speak on-device** - new `supertonic` ONNX TTS backend:
multilingual, espeak-free, fast cold start.
- 🛡️ **Filter PII with NER** - new `privacy-filter.cpp` engine adds
named-entity token classification alongside a regex secret detector.
- 🎙️ **Smarter realtime** - sessions become speaker-aware (identity
surfaced to the client *and* the LLM) and stay cheap on long calls
through summarize-then-drop compaction.
- ⚙️ **Concurrent by default** - prefix caching, Blackwell-tuned batch
sizes, and VRAM-scaled concurrency turn continuous batching on without
any config.
- 🖼️ **A redesigned UI** - the UX overhaul lands end to end, while we
keep improving user experience release after release.

Plus model aliases, word-level ASR timestamps, self-contained Vulkan
backends, ds4 SSD streaming for 128 GB-class models, hardened
distributed staging, and a broad set of fixes.

<p align="center">
<img width="2880" height="1800" alt="ui-home"
src="https://github.com/user-attachments/assets/7ef1eedc-bb2e-4a8f-8e45-81bd94e8c393"
/>
  <br>
<em>The redesigned Home: console with a built-in assistant and
chat.</em>
</p>

***

#### 📌 TL;DR

| Area | Summary |
| ------------------------------------ |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 👁️ **Depth perception** | New `depth-anything` C++/ggml backend (Depth
Anything 3) - metric depth + camera pose, typed `Depth` RPC + `POST
/v1/depth`, 8 GGUFs. Plus Depth Anything **V2** gallery models. |
| 🔊 **Sound-event tagging** | New `ced` backend (CED AudioSet tagger,
527 classes) - `POST /v1/audio/classification` + **VAD-decoupled
realtime** sound detection. |
| 🗣️ **On-device TTS** | New `supertonic` ONNX backend - multilingual,
**no espeak/G2P**, 10 voices, fast cold start (CPU). |
| 🛡️ **PII gets a NER tier** | New `privacy-filter.cpp` backend -
encoder/NER token classification scanning whole conversations, alongside
a restricted-regex secret detector; NER-centric PII editor in the UI. |
| 🎙️ **Smarter realtime** | **Speaker-aware** conversations (identity →
client *and* LLM), **conversation compaction** (summarize-then-drop),
and OpenAI `item.delete` / `item.truncate` / `input_audio_buffer.clear`.
|
| ⚙️ **Multi-user serving by default** | **Prefix caching on by
default**, **Blackwell batch** (2048), **VRAM-scaled `n_parallel`**
(continuous batching on out of the box) - concurrent throughput with no
KV blow-up. |
| 🔀 **Model aliases** | Redirect/rename a model name to another
configured model, swappable live, no client reconfig. |
| ⏱️ **Word-level ASR timestamps** | NeMo + CrispASR word timestamps,
plumbed through the gRPC transcription path. |
| 🖼️ **The UI, redesigned** | A calmer, sharper interface lands end to
end: new design language, shell/nav, ops/admin data-viz, sortable/mobile
tables, unsaved-changes guards, restructured Cluster Nodes. |
| 🛰️ **Distributed staging hardened** | Cold-load staging detached from
the request context (large models actually finish), staging progress
broadcast across replicas, resumable downloader. |

***

#### 🚀 New Features & Major Enhancements

##### 👁️ Depth Perception: `depth-anything`

A new native Go gRPC backend
([#&#8203;10352](https://redirect.github.com/mudler/LocalAI/issues/10352))
dlopens
[depth-anything.cpp](https://redirect.github.com/mudler/depth-anything.cpp)
(a ggml port of **Depth Anything 3**) via **purego** - **no Python at
inference** - for monocular **metric depth + camera pose** estimation on
CPU. Depth has no native OpenAI endpoint, so the model is exposed three
ways:

- A typed **`Depth` gRPC RPC + `POST /v1/depth`** that returns the full
output surface (depth map, stats, camera extrinsics 3×4 / intrinsics
3×3).
- **`GenerateImage(src, dst)`** writes a min-max-normalized grayscale
depth PNG.
- **`Predict`** returns the depth + pose JSON blob.

Eight **Depth Anything 3** GGUFs ship at
[`mudler/depth-anything.cpp-gguf`](https://huggingface.co/mudler/depth-anything.cpp-gguf)
(base/small/large/giant + a monocular `mono-large`,
q4\_k/q8\_0/f16/f32), with per-CPU-variant self-contained `.so` builds
and the full hardware matrix (cpu, cuda12/13, intel-sycl, vulkan,
l4t-arm64). This cycle also adds **Depth Anything V2** gallery models
([#&#8203;10413](https://redirect.github.com/mudler/LocalAI/issues/10413),
native version bump) and **metric-large + nested metric** entries
([#&#8203;10363](https://redirect.github.com/mudler/LocalAI/issues/10363)).

> 🔗 PRs:
[#&#8203;10352](https://redirect.github.com/mudler/LocalAI/issues/10352),
[#&#8203;10413](https://redirect.github.com/mudler/LocalAI/issues/10413),
[#&#8203;10363](https://redirect.github.com/mudler/LocalAI/issues/10363).

***

##### 🔊 Sound-Event Classification: `ced`

A new backend
([#&#8203;10425](https://redirect.github.com/mudler/LocalAI/issues/10425))
backed by [ced.cpp](https://redirect.github.com/mudler/ced.cpp) - a
C++/ggml port of **CED** (Xiaomi), a 527-class
[AudioSet](https://research.google.com/audioset/) tagger (baby cry,
footsteps, glass breaking, alarms, dog bark...) with **full PyTorch
parity** (f32 e2e 1.7e-7) and Apache-2.0 weights. CPU perf: f16 is
\~1.55× faster than the PyTorch reference (\~100× realtime), q8\_0 uses
6.5× less memory.

- **REST**: `POST /v1/audio/classification` (fully
capability-registered: swagger, `/api/instructions`, auth feature, React
`capabilities.js`, docs).
- **Realtime**: opt-in `pipeline.sound_detection` emits
`conversation.item.sound_detection` events, **decoupled from VAD** (a
sound-only session runs with `turn_detection: none`, activating on
sounds not speech), with client-driven or server-side windowing.
- **Gallery**: 8 entries (`ced-{base,tiny,mini,small}-{f16,q8}`, 6 MB →
86 MB) at [`mudler/ced-gguf`](https://huggingface.co/mudler/ced-gguf).

> 🔗 PR:
[#&#8203;10425](https://redirect.github.com/mudler/LocalAI/issues/10425).

***

##### 🗣️ On-Device TTS: `supertonic`

A new native Go gRPC TTS backend
([#&#8203;10342](https://redirect.github.com/mudler/LocalAI/issues/10342))
runs [Supertone's](https://redirect.github.com/supertone-inc/supertonic)
`supertonic-3` flow-matching model (4 ONNX graphs) via ONNX Runtime -
**no Python, no espeak-ng / G2P** (text preprocessing is NFKD + a
Unicode-codepoint→token-id lookup). Upstream's MIT Go pipeline is
vendored at a pinned commit and driven from a LocalAI gRPC server,
mirroring `sherpa-onnx`'s ONNX-runtime bundling - small image, fast cold
start. Ships a `supertonic-3` gallery entry (4 ONNX + 10 voice styles
F1-F5/M1-M5, SHA256-pinned), with `voice` / `language` request mapping
and `steps`/`speed`/`silence` knobs. CPU-only in this release; CUDA
wiring is scaffolded for a follow-up.

> 🔗 PR:
[#&#8203;10342](https://redirect.github.com/mudler/LocalAI/issues/10342).

***

##### 🛡️ PII Filtering Gets a NER Tier: `privacy-filter.cpp`

PII filtering moves off the patched llama.cpp `TokenClassify` path onto
a new standalone GGML backend, **`privacy-filter.cpp`**
([#&#8203;10360](https://redirect.github.com/mudler/LocalAI/issues/10360)),
serving OpenAI Privacy Filter NER token-classification models
(CPU/CUDA/Vulkan). The filter is reworked to be **NER-centric** - an
encoder/NER detection tier scans whole conversations as a single
document - **alongside** a bounded restricted-regex secret-matching
detector tier. Detections are labelled by source (`ner` vs `pattern`)
with backend trace / confidence / debug observability,
`analyze`/`redact` exposed as a synchronous API, and request filtering
extended to **completions, embeddings, edits and Ollama**. The React UI
gains a NER-centric PII editor, detector-models table, and middleware
default-policy controls; the gallery gets a
`privacy-filter-multilingual` token-classify model + an `/import-model`
auto-detect importer. A post-merge pass
([#&#8203;10401](https://redirect.github.com/mudler/LocalAI/issues/10401))
added live NER e2e coverage and review fixes.

> 🔗 PRs:
[#&#8203;10360](https://redirect.github.com/mudler/LocalAI/issues/10360),
[#&#8203;10401](https://redirect.github.com/mudler/LocalAI/issues/10401).

***

##### 🎙️ Realtime Voice: Speaker-Aware and Self-Compacting

**Speaker-aware conversations
([#&#8203;10424](https://redirect.github.com/mudler/LocalAI/issues/10424)).**
The realtime voice-recognition gate now **surfaces the recognized
speaker** to the client (a new `conversation.item.speaker` event - a
non-breaking LocalAI extension) **and feeds identity to the LLM** for
personalized replies (per-message OpenAI `name` field and/or a `The
current speaker is <Name>.` system note). New
`pipeline.voice_recognition` keys decouple surfacing from authorization:
`enforce: false` resolves and surfaces a speaker **without ever dropping
a turn**, while the gate still fails closed when enforcing.
Multi-speaker histories stay correctly attributed (each user item
carries its own speaker).

**Conversation compaction - summarize-then-drop
([#&#8203;10446](https://redirect.github.com/mudler/LocalAI/issues/10446)).**
Long realtime sessions used to either feed the whole growing buffer to
the LLM (expensive on CPU as it grows) or silently forget old turns. Now
the server can fold aged-out turns into a **rolling summary** instead,
via an async, post-turn **snapshot → summarize → commit** compactor that
never holds the conversation lock across the summarizer call and never
evicts items without a summary replacing them. Plus the OpenAI-parity
history events that were missing: **`conversation.item.delete`**,
**`conversation.item.truncate`**, **`input_audio_buffer.clear`**.

```yaml
pipeline:
  max_history_items: 6          # live window - recent turns kept verbatim
  compaction:
    enabled: true
    trigger_items: 12           # high-water mark; summarize overflow back down
    summary_model: ""           # optional small/cheap CPU model; default = pipeline LLM
    max_summary_tokens: 512
```

Also: configurable `pipeline.max_history_items`
([#&#8203;10331](https://redirect.github.com/mudler/LocalAI/issues/10331))
and a WebRTC data-channel max-message-size raise + keep-alive fix
([#&#8203;10407](https://redirect.github.com/mudler/LocalAI/issues/10407)).

> 🔗 PRs:
[#&#8203;10424](https://redirect.github.com/mudler/LocalAI/issues/10424),
[#&#8203;10446](https://redirect.github.com/mudler/LocalAI/issues/10446),
[#&#8203;10331](https://redirect.github.com/mudler/LocalAI/issues/10331),
[#&#8203;10407](https://redirect.github.com/mudler/LocalAI/issues/10407).

***

##### ⚙️ Multi-User Serving, On by Default

Two related, **config-only (no kernel)** changes make concurrent serving
fast without any tuning. Both **only fill values the user left unset** -
explicit config always wins.

**Hardware-tuned defaults
([#&#8203;10411](https://redirect.github.com/mudler/LocalAI/issues/10411)).**
When `batch:` is unset, default `n_batch`/`n_ubatch` to **2048** on
NVIDIA Blackwell consumer GPUs (sm\_120/121, incl. **GB10 / DGX Spark**)
for a higher prefill ceiling. More importantly, the llama.cpp backend
ships `n_parallel = 1`, which **serializes concurrent requests and
leaves continuous batching off** - so multi-user serving was effectively
disabled. This folds in a **VRAM-scaled parallel-slot default**:

| VRAM              | parallel slots |
| ----------------- | -------------- |
| ≥ 32 GiB          | 8              |
| ≥ 8 GiB           | 4              |
| ≥ 4 GiB           | 2              |
| < 4 GiB / unknown | 1 (unchanged)  |

Because the unified KV cache makes slots **share** the context budget,
this is concurrency **without multiplying KV memory**. Works for both
single-host (`LocalGPU()`) and distributed (the worker reports compute
capability + VRAM on registration, and the router re-applies the
heuristics for the selected node).

**Prefix caching on by default
([#&#8203;10415](https://redirect.github.com/mudler/LocalAI/issues/10415)).**
The backend ships `n_cache_reuse = 0` (cross-request KV prefix reuse
disabled). This enables it by default (256), so **system prompts, RAG
context, agent scaffolds and multi-turn chat** aren't recomputed every
request - a TTFT + throughput win for shared-prefix workloads, no-op for
unique prompts. Same PR consolidates `SetDefaults` into clean
domain-grouped tiers (`ApplyInferenceDefaults` / `ApplyHardwareDefaults`
/ `ApplyServingDefaults` / `ApplyGenericDefaults`), completed by a
single-source-of-truth defaults refactor
([#&#8203;10418](https://redirect.github.com/mudler/LocalAI/issues/10418)).

> 🔗 PRs:
[#&#8203;10411](https://redirect.github.com/mudler/LocalAI/issues/10411),
[#&#8203;10415](https://redirect.github.com/mudler/LocalAI/issues/10415),
[#&#8203;10418](https://redirect.github.com/mudler/LocalAI/issues/10418).

***

##### 🔀 Model Aliases

A new `alias:` field
([#&#8203;10414](https://redirect.github.com/mudler/LocalAI/issues/10414))
makes a model config transparently route all its traffic to **another
configured model**, so operators can rename or redirect a model
**without reconfiguring any clients** - and swap the target live.

```yaml
name: gpt-4
alias: my-llama-3
```

1:1 and runtime-swappable; strict (target must be an existing, enabled,
non-alias model; alias→alias chains are rejected at load, request and
create/swap time). Both names appear in `GET /v1/models`, usage
accounting records `requested=alias` / `served=target`, and resolution
lives in the universal request middleware so **all modalities** (chat,
completions, embeddings, audio, images) inherit it - including
composition with the Router.

> 🔗 PR:
[#&#8203;10414](https://redirect.github.com/mudler/LocalAI/issues/10414).

***

##### ⏱️ Word-Level ASR Timestamps, Everywhere

- **NeMo word-level timestamps
([#&#8203;10297](https://redirect.github.com/mudler/LocalAI/issues/10297))**
for ASR models.
- **CrispASR word-level timestamps
([#&#8203;10403](https://redirect.github.com/mudler/LocalAI/issues/10403))**,
with the gRPC `AudioTranscription` wrapper now **forwarding word
timestamps** end to end
([#&#8203;10402](https://redirect.github.com/mudler/LocalAI/issues/10402))
and a filter for garbage words on the parakeet path
([#&#8203;10421](https://redirect.github.com/mudler/LocalAI/issues/10421)).

> 🔗 PRs:
[#&#8203;10297](https://redirect.github.com/mudler/LocalAI/issues/10297),
[#&#8203;10403](https://redirect.github.com/mudler/LocalAI/issues/10403),
[#&#8203;10402](https://redirect.github.com/mudler/LocalAI/issues/10402),
[#&#8203;10421](https://redirect.github.com/mudler/LocalAI/issues/10421).

***

##### 🧰 vLLM, ds4, Vulkan & Watchdog

- **vLLM progressive tool-call streaming
([#&#8203;10351](https://redirect.github.com/mudler/LocalAI/issues/10351))**
via `parser.extract_tool_calls_streaming` (follow-up to
[#&#8203;10346](https://redirect.github.com/mudler/LocalAI/issues/10346)),
plus a fix for **structured outputs silently ignored on vLLM ≥ 0.23**
(`GuidedDecodingParams` removed upstream)
([#&#8203;10343](https://redirect.github.com/mudler/LocalAI/issues/10343)).
- **ds4 SSD streaming + quality knobs
([#&#8203;10374](https://redirect.github.com/mudler/LocalAI/issues/10374)).**
ds4's engine options are now reachable from model YAML through a
declarative table - including **SSD streaming** (run a model larger than
RAM by streaming routed MoE experts off the GGUF), so the 153 GB
DeepSeek Flash quant runs on a 128 GB machine. Adds 128 GB-class
DeepSeek gallery models.
- **Self-contained Vulkan backends
([#&#8203;10404](https://redirect.github.com/mudler/LocalAI/issues/10404)).**
Vulkan backends now bundle their Mesa ICD driver `.so` + deps (rewriting
`library_path` to bare sonames), so you can mix a CPU/native/Intel core
image with a Vulkan backend and actually get the GPU instead of a silent
CPU fallback.
- **Size-aware watchdog eviction
([#&#8203;9527](https://redirect.github.com/mudler/LocalAI/issues/9527)).**
Opt-in mode evicts the **largest** resident model first (LRU as
tiebreaker) instead of strict LRU, so a tiny embedding model isn't
dropped while a 13 GB chat model stays put. `--size-aware-eviction` /
`LOCALAI_SIZE_AWARE_EVICTION`, live-reloadable via `POST /api/settings`.

> 🔗 PRs:
[#&#8203;10351](https://redirect.github.com/mudler/LocalAI/issues/10351),
[#&#8203;10343](https://redirect.github.com/mudler/LocalAI/issues/10343),
[#&#8203;10374](https://redirect.github.com/mudler/LocalAI/issues/10374),
[#&#8203;10404](https://redirect.github.com/mudler/LocalAI/issues/10404),
[#&#8203;9527](https://redirect.github.com/mudler/LocalAI/issues/9527).

***

##### 🖼️ A Calmer, Sharper Interface

The React UI (`core/http/react-ui`) gets a top-to-bottom redesign this
cycle - a calmer, more editorial look with the rough edges sanded off:

- **Design language + shell/nav + conversation/canvas
([#&#8203;10390](https://redirect.github.com/mudler/LocalAI/issues/10390)).**
Keeps the Nord identity with a calmer, editorial, all-sans point of
view: typography v2 (Geist), un-overloaded accent semantics (tint-only
active nav, single AA focus ring), orchestrated page-reveal motion
(reduced-motion safe), reusable primitives (`PageHeader`,
`SectionHeading`, `EmptyState`, `Skeleton`, `StatusPill`), a rebuilt
Home landing page, and `PageHeader` rolled across all \~29 pages with a
navigation scroll-reset fix.
- **Ops/admin data-viz + tables
([#&#8203;10398](https://redirect.github.com/mudler/LocalAI/issues/10398)).**
Distinct hues for prompt vs completion in usage charts, sortable
accessible admin tables (users/traces), a `ResponsiveTable` that reflows
into label/value cards on mobile, and an `UnsavedChangesGuard`
protecting Settings / Agent / Fine-Tuning forms. 195/195 Playwright
specs green.
- **Restructured Cluster Nodes
([#&#8203;10447](https://redirect.github.com/mudler/LocalAI/issues/10447)).**
A calm one-line `ClusterPulse` header + conditional attention callout
replace the metric-card grid; a `NodePanel` roster shows per-node models
**without a click** (new `GET /api/nodes/models`); a deep-linkable
`/app/nodes/:id` detail page replaces nested table drawers; Scheduling
moves to its own `/app/scheduling` page. `Nodes.jsx` drops from \~1743
to \~360 lines.

<p align="center">
<img width="2880" height="1800" alt="ui-chat"
src="https://github.com/user-attachments/assets/da1038a4-4417-49b5-b7aa-e7c9cc26a767"
/>
<img width="2880" height="1800" alt="ui-system"
src="https://github.com/user-attachments/assets/24c06123-341a-488f-a6d1-01b910dd9c60"
/>
  <br>
<em>Left: the conversation canvas. Right: the Operate console (system
resources, sortable model tables).</em>
</p>
- **More:** localized model strings + "Import" typo fix (#&#8203;10341),
paste images from the clipboard into chat (#&#8203;10428), and
console-based navigation + a drop-in API endpoint section
(#&#8203;10377).

> 🔗 PRs:
[#&#8203;10390](https://redirect.github.com/mudler/LocalAI/issues/10390),
[#&#8203;10398](https://redirect.github.com/mudler/LocalAI/issues/10398),
[#&#8203;10447](https://redirect.github.com/mudler/LocalAI/issues/10447),
[#&#8203;10341](https://redirect.github.com/mudler/LocalAI/issues/10341),
[#&#8203;10428](https://redirect.github.com/mudler/LocalAI/issues/10428),
[#&#8203;10377](https://redirect.github.com/mudler/LocalAI/issues/10377).

***

##### 🛰️ Distributed Staging Robustness

- **Detach cold-load staging from the request context
([#&#8203;10438](https://redirect.github.com/mudler/LocalAI/issues/10438)).**
A model staged lazily on the inference path was bound to the triggering
request's context, so a browser refresh, LB idle-timeout, or
round-robined retry **cancelled multi-GB uploads mid-transfer** - large
models never finished staging. Cold loads now run on
`context.WithoutCancel(ctx)` (keeping request values, dropping
cancellation), each long step keeping its own bound.
- **Broadcast staging progress across replicas
([#&#8203;10440](https://redirect.github.com/mudler/LocalAI/issues/10440)).**
Staging progress lived only in the originating replica's in-memory
tracker, so the progress line **flickered** as `/api/operations` polls
rotated between frontends. Now mirrored over NATS
(`staging.<model>.progress`) with leading-edge debounce, TTL'd remote
ops, and locally-owned ops staying authoritative - the same pattern as
gallery-install progress.
- **Persist cancellable ops
([#&#8203;10454](https://redirect.github.com/mudler/LocalAI/issues/10454))**
so restarted in-flight gallery operations stay cancellable (with the e2e
`UpdateProgress` signature updated in
[#&#8203;10460](https://redirect.github.com/mudler/LocalAI/issues/10460)),
plus staging of **backend companion assets** to remote nodes
([#&#8203;10330](https://redirect.github.com/mudler/LocalAI/issues/10330)).
- **Resumable, self-healing downloader
([#&#8203;10406](https://redirect.github.com/mudler/LocalAI/issues/10406)).**
Big GGUF installs on slow/flaky links no longer hang forever or leak
disk: a **stall timeout** (`DownloadStallTimeout`, 60s) turns an
indefinite hang into a fast retryable error, cancellation **keeps the
`.partial`** so the next attempt resumes via `Range`, and stale partials
older than 24h are reaped on startup.

> 🔗 PRs:
[#&#8203;10438](https://redirect.github.com/mudler/LocalAI/issues/10438),
[#&#8203;10440](https://redirect.github.com/mudler/LocalAI/issues/10440),
[#&#8203;10454](https://redirect.github.com/mudler/LocalAI/issues/10454),
[#&#8203;10460](https://redirect.github.com/mudler/LocalAI/issues/10460),
[#&#8203;10330](https://redirect.github.com/mudler/LocalAI/issues/10330),
[#&#8203;10406](https://redirect.github.com/mudler/LocalAI/issues/10406).

***

##### 🧩 Other Enhancements

- **Generic `chat_template_kwargs`
([#&#8203;10359](https://redirect.github.com/mudler/LocalAI/issues/10359)).**
Pass arbitrary jinja chat-template variables (e.g. Qwen3's
`preserve_thinking`) from model YAML (`chat_template_kwargs:`) or
per-request via the OpenAI `metadata` field - no more hardcoded template
levers in `grpc-server.cpp`. (Closes
[#&#8203;10329](https://redirect.github.com/mudler/LocalAI/issues/10329).)
- **LocalAI User-Agent on registry pulls
([#&#8203;10434](https://redirect.github.com/mudler/LocalAI/issues/10434)).**
OCI registry, Ollama registry and OCI blob pulls now identify themselves
as `LocalAI/<version>` (via a new `oci.UserAgent()` helper) so operators
can attribute traffic. (Implements
[#&#8203;6258](https://redirect.github.com/mudler/LocalAI/issues/6258).)
- **More gallery voices
([#&#8203;10332](https://redirect.github.com/mudler/LocalAI/issues/10332)):**
all Italian + all UK English sherpa-onnx Piper voices, and a fresh run
of gallery-agent model additions + checksum refreshes.

***

#### 🐛 Bug Fixes (recap)

- 🛰️ `fix(distributed): detach cold-load staging from the request
context` -
[#&#8203;10438](https://redirect.github.com/mudler/LocalAI/issues/10438)
- 🛰️ `fix(distributed): broadcast file-staging progress across replicas`
-
[#&#8203;10440](https://redirect.github.com/mudler/LocalAI/issues/10440)
- 🛰️ `fix(distributed): stage backend companion assets to remote nodes`
-
[#&#8203;10330](https://redirect.github.com/mudler/LocalAI/issues/10330)
- 📦 `fix(galleryop): persist cancellable so restarted in-flight ops stay
cancellable` -
[#&#8203;10454](https://redirect.github.com/mudler/LocalAI/issues/10454)
- ⬇️ `fix(downloader): stall timeout, resume-safe cancel, and
stale-partial reaping` -
[#&#8203;10406](https://redirect.github.com/mudler/LocalAI/issues/10406)
- 🧰 `fix(vllm): structured outputs silently ignored on vLLM >= 0.23
(GuidedDecodingParams removed)` -
[#&#8203;10343](https://redirect.github.com/mudler/LocalAI/issues/10343)
- ⏱️ `fix(grpc): forward word-level timestamps in AudioTranscription
wrapper` -
[#&#8203;10402](https://redirect.github.com/mudler/LocalAI/issues/10402)
- 🎙️ `fix(crispasr): filter garbage words from parakeet word-level
timestamps` -
[#&#8203;10421](https://redirect.github.com/mudler/LocalAI/issues/10421)
- 🎙️ `fix(whisperx): use whisperx.diarize.DiarizationPipeline with token
kwarg` -
[#&#8203;10389](https://redirect.github.com/mudler/LocalAI/issues/10389)
- 🧮 `fix(diffusers): pin diffusers and transformers to a known-good
pair` -
[#&#8203;10442](https://redirect.github.com/mudler/LocalAI/issues/10442)
- 🏋️ `fix: the trl backend's _do_training method directly initializes
the trainer` -
[#&#8203;10422](https://redirect.github.com/mudler/LocalAI/issues/10422)
- 🔊 `fix(realtime): raise WebRTC data-channel max-message-size + keep
sendLoop alive` -
[#&#8203;10407](https://redirect.github.com/mudler/LocalAI/issues/10407)
- ⚙️ `fix(settings): merge partial /api/settings updates instead of
overwriting` -
[#&#8203;10463](https://redirect.github.com/mudler/LocalAI/issues/10463)
- 🐕 `fix(settings): start watchdog on cold-enable from the React UI` -
[#&#8203;10287](https://redirect.github.com/mudler/LocalAI/issues/10287)
- 🪟 `fix(ui): keep row action menu anchored and stop scroll snap on
/app/manage` -
[#&#8203;10419](https://redirect.github.com/mudler/LocalAI/issues/10419)
- 🪟 `fix(react-ui): restore sidebar collapse in dev + stop Talk page
auto-scroll` -
[#&#8203;10383](https://redirect.github.com/mudler/LocalAI/issues/10383)
- 🚀 `fix(launcher): truncate download status labels to stop progress
dialog blowout` -
[#&#8203;10357](https://redirect.github.com/mudler/LocalAI/issues/10357)
- 🧊 `fix(backend): call vram.EstimateModelMultiContext (master build
broken)` -
[#&#8203;10426](https://redirect.github.com/mudler/LocalAI/issues/10426)
- ❄️ `fix(nix flake): ensure nix flake builds successfully` -
[#&#8203;10399](https://redirect.github.com/mudler/LocalAI/issues/10399)
- 🧠 `fix(gallery): hide broken Gemma 4 QAT MTP entries` -
[#&#8203;10348](https://redirect.github.com/mudler/LocalAI/issues/10348)

***

#### 👒 Dependencies

Another steady bump cycle across submodules and Go/Python deps:

- **`ggml-org/llama.cpp`**: 7 bumps · **`ikawrakow/ik_llama.cpp`**: 7
bumps
- **`ggml-org/whisper.cpp`**: 5 bumps ·
**`leejet/stable-diffusion.cpp`**: 5 bumps
- **`antirez/ds4`**: 3 bumps · **`mudler/parakeet.cpp`**: 2 bumps ·
**`CrispStrobe/CrispASR`**: 2 bumps · **`ServeurpersoCom/qwentts.cpp`**:
2 bumps
- **`ServeurpersoCom/omnivoice.cpp`**: 1 bump ·
**`localai-org/privacy-filter.cpp`**: 1 bump
- **Python**: `grpcio` 1.81.0→1.81.1 (vllm)
- **CI actions**: `actions/checkout` 6→7
- **LocalRecall** bump (fixes PostgreSQL collection name with `:`)
- **Model gallery**: 11 gallery-agent model additions + checksum
refreshes

***

#### 📖 Documentation

- `docs: document all available backends and add "built by us" list` -
[#&#8203;10376](https://redirect.github.com/mudler/LocalAI/issues/10376)
- `docs: document the privacy-filter.cpp backend` -
[#&#8203;10386](https://redirect.github.com/mudler/LocalAI/issues/10386)
- `docs: mention apex-quant in the README` -
[#&#8203;10412](https://redirect.github.com/mudler/LocalAI/issues/10412)
- `docs: add translated README links` -
[#&#8203;10353](https://redirect.github.com/mudler/LocalAI/issues/10353)
- `fix(docs): use relearn notice shortcode instead of unsupported alert`
-
[#&#8203;10364](https://redirect.github.com/mudler/LocalAI/issues/10364)
- `docs: update docs version` -
[#&#8203;10333](https://redirect.github.com/mudler/LocalAI/issues/10333)
- Inline docs folded into the feature PRs above (depth, ced, supertonic,
PII NER, realtime speaker/compaction, serving defaults, model aliases).

***

#### 🙌 New Contributors

- [@&#8203;vjsai](https://redirect.github.com/vjsai) made their first
contribution in
[#&#8203;10434](https://redirect.github.com/mudler/LocalAI/pull/10434)
- [@&#8203;SuperMarioYL](https://redirect.github.com/SuperMarioYL) made
their first contribution in
[#&#8203;9527](https://redirect.github.com/mudler/LocalAI/pull/9527)
- [@&#8203;Souheab](https://redirect.github.com/Souheab) made their
first contribution in
[#&#8203;10399](https://redirect.github.com/mudler/LocalAI/pull/10399)
- [@&#8203;dowithless](https://redirect.github.com/dowithless) made
their first contribution in
[#&#8203;10353](https://redirect.github.com/mudler/LocalAI/pull/10353)

Enjoy!

***

**Full Changelog**:
<https://github.com/mudler/LocalAI/compare/v4.4.3...v4.5.0>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9sb2NhbC1haSIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->
2026-06-24 05:01:40 +02:00
TrueCharts Bot 6a202c77f4 fix(helm-deps): update chart mongodb 17.4.3 → 17.4.4 (#49423)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [mongodb](https://truecharts.org/charts/stable/mongodb)
([source](https://redirect.github.com/bitnami/bitnami-docker-mongodb)) |
patch | `17.4.3` → `17.4.4` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC95b3V0dWJlZGwtbWF0ZXJpYWwiLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->
2026-06-24 05:01:23 +02:00
TrueCharts Bot ebe090fdf4 fix(fluidd): update image ghcr.io/fluidd-core/fluidd v1.37.1 → v1.37.2 (#49421)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/fluidd-core/fluidd](https://redirect.github.com/fluidd-core/fluidd)
| patch | `5e3c6af` → `b31307e` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>fluidd-core/fluidd (ghcr.io/fluidd-core/fluidd)</summary>

###
[`v1.37.2`](https://redirect.github.com/fluidd-core/fluidd/releases/tag/v1.37.2)

[Compare
Source](https://redirect.github.com/fluidd-core/fluidd/compare/v1.37.1...v1.37.2)

##### Features

- adds Moonraker sensor charts
([#&#8203;1885](https://redirect.github.com/fluidd-core/fluidd/issues/1885))
([c199394](https://redirect.github.com/fluidd-core/fluidd/commit/c1993948043461d3bb323e89fd7dffcf6bef63fd))
- adds support for Moonraker file roots details
([#&#8203;1881](https://redirect.github.com/fluidd-core/fluidd/issues/1881))
([ea60d78](https://redirect.github.com/fluidd-core/fluidd/commit/ea60d782b326f5bd0477e6394de7f259f30ebe32))
- **afc:** Enhance Spoolman integration
([#&#8203;1860](https://redirect.github.com/fluidd-core/fluidd/issues/1860))
([85e105f](https://redirect.github.com/fluidd-core/fluidd/commit/85e105f08ddcab28c7a25f811eb81d5b2d003640))
- **i18n-en:** Update English translations
([e6c59ff](https://redirect.github.com/fluidd-core/fluidd/commit/e6c59ffa7fdfac0f015ab352d3f49d2e34ca94e9))
- **i18n-pl:** Update Polish translations
([4d58074](https://redirect.github.com/fluidd-core/fluidd/commit/4d580743d256c9da926fac58ff6cfff2f956d6e9))
- linkExternalUrls to use GFM-style detection
([#&#8203;1879](https://redirect.github.com/fluidd-core/fluidd/issues/1879))
([7c6e164](https://redirect.github.com/fluidd-core/fluidd/commit/7c6e164332da58b2994b7f2580543975485b8a5c))
- **Thermals:** customizable sensor colors
([#&#8203;1871](https://redirect.github.com/fluidd-core/fluidd/issues/1871))
([065d728](https://redirect.github.com/fluidd-core/fluidd/commit/065d728e070c9a4551cf4973db74b30d472ca479))
- warn of very old Moonraker
([#&#8203;1870](https://redirect.github.com/fluidd-core/fluidd/issues/1870))
([efdcdc5](https://redirect.github.com/fluidd-core/fluidd/commit/efdcdc59a4206f7601c3481f302e2ef7916d0826))

##### Bug Fixes

- add rel=noopener to target=\_blank links
([#&#8203;1880](https://redirect.github.com/fluidd-core/fluidd/issues/1880))
([f80d943](https://redirect.github.com/fluidd-core/fluidd/commit/f80d943e8db6f2db5d4552310e2ac8a54ffe61ab))
- correct color for selected tool
([#&#8203;1865](https://redirect.github.com/fluidd-core/fluidd/issues/1865))
([fe41a43](https://redirect.github.com/fluidd-core/fluidd/commit/fe41a43353d06b73b984e08784ae563f3bba857c))
- split update check from notifications
([#&#8203;1887](https://redirect.github.com/fluidd-core/fluidd/issues/1887))
([a9da915](https://redirect.github.com/fluidd-core/fluidd/commit/a9da9152fce6395ba0b66d7a924b8812bad3ba9f))
- **Thermals:** sensor sort order anomalies
([#&#8203;1868](https://redirect.github.com/fluidd-core/fluidd/issues/1868))
([95f26a3](https://redirect.github.com/fluidd-core/fluidd/commit/95f26a31162f25b0abdfdb11622dac2a7fbd8f22))

##### Code Refactorings

- add AppInlineChart component
([#&#8203;1889](https://redirect.github.com/fluidd-core/fluidd/issues/1889))
([1f87be8](https://redirect.github.com/fluidd-core/fluidd/commit/1f87be86c3236f35671f651f0af9a3cb13bb4c5b))
- adds SocketError type guard
([166ca96](https://redirect.github.com/fluidd-core/fluidd/commit/166ca96efd219dc1236fb51475e4c5d874d71f5d))
- drop redundant console sanitize
([#&#8203;1890](https://redirect.github.com/fluidd-core/fluidd/issues/1890))
([40f9932](https://redirect.github.com/fluidd-core/fluidd/commit/40f9932159d7d511cc443449807ebef3350cf250))
- e-charts imperative model
([#&#8203;1888](https://redirect.github.com/fluidd-core/fluidd/issues/1888))
([0678636](https://redirect.github.com/fluidd-core/fluidd/commit/06786362805ad440891517aa7b3c9af1330b1235))
- enforce printer state immutability
([#&#8203;1874](https://redirect.github.com/fluidd-core/fluidd/issues/1874))
([d978cac](https://redirect.github.com/fluidd-core/fluidd/commit/d978cacfea2a2bdd02fb2267e7767d14881290b7))
- freeze immutable entries
([#&#8203;1875](https://redirect.github.com/fluidd-core/fluidd/issues/1875))
([f2c6c8b](https://redirect.github.com/fluidd-core/fluidd/commit/f2c6c8bc121a8a37e85287b1e89525f3ae27ad6c))
- **GcodePreview:** auto-zoom without cropping
([#&#8203;1867](https://redirect.github.com/fluidd-core/fluidd/issues/1867))
([85fee0a](https://redirect.github.com/fluidd-core/fluidd/commit/85fee0afe269b1c6118b586f04c22965104f1333))
- improve default options handling
([c0f5967](https://redirect.github.com/fluidd-core/fluidd/commit/c0f596718f2d5634cabf9def4c7bc1131673b61c))
- logout notification handling
([#&#8203;1882](https://redirect.github.com/fluidd-core/fluidd/issues/1882))
([6f4d60a](https://redirect.github.com/fluidd-core/fluidd/commit/6f4d60a54fc8e6e4a1d0eec2b7a1e12b0146799a))
- replace requests array with Map
([0a23099](https://redirect.github.com/fluidd-core/fluidd/commit/0a23099a40e4255e056c4eedd8d0f7b8a548db82))
- sandboxedEval context support
([#&#8203;1873](https://redirect.github.com/fluidd-core/fluidd/issues/1873))
([804d1a8](https://redirect.github.com/fluidd-core/fluidd/commit/804d1a8162cbedf30c7da5c8a68ff01be539a5b3))
- type store action/mutation payloads
([#&#8203;1877](https://redirect.github.com/fluidd-core/fluidd/issues/1877))
([9719797](https://redirect.github.com/fluidd-core/fluidd/commit/9719797342fcc1369f77e0d322ffd36450a2dee7))
- typing improvements
([5c4ec6e](https://redirect.github.com/fluidd-core/fluidd/commit/5c4ec6ecc683632080a8d28ea4541017fd6aecca))
- typing improvements
([d7c08e1](https://redirect.github.com/fluidd-core/fluidd/commit/d7c08e148925dbec0b88ef435b65581b7d583847))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9mbHVpZGQiLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->
2026-06-24 05:00:40 +02:00
TrueCharts Bot d4bc034c7d fix(ghostfolio): update image docker.io/ghostfolio/ghostfolio 3.15.0 → 3.15.1 (#49422)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/ghostfolio/ghostfolio](https://redirect.github.com/ghostfolio/ghostfolio)
| patch | `63cef1c` → `b26215f` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>ghostfolio/ghostfolio
(docker.io/ghostfolio/ghostfolio)</summary>

###
[`v3.15.1`](https://redirect.github.com/ghostfolio/ghostfolio/blob/HEAD/CHANGELOG.md#3151---2026-06-23)

[Compare
Source](https://redirect.github.com/ghostfolio/ghostfolio/compare/3.15.0...3.15.1)

##### Changed

- Improved the dynamic numerical precision for various values in the
account detail dialog on mobile
- Improved the dynamic numerical precision for various values in the
holding detail dialog on mobile
- Upgraded `@internationalized/number` from version `3.6.6` to `3.6.7`

##### Fixed

- Fixed an issue where symbols with special characters caused API
request failures by URL encoding the symbol
- Fixed the disabled state of the delete action in the asset profiles
actions menu of the historical market data table in the admin control
panel
- Fixed the persistence of an empty `locale` string in the scraper
configuration
- Fixed a transaction timeout that prevented gathering historical market
data for symbols with a long history
- Fixed an exception in various portfolio endpoints when historical
exchange rate data is missing

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9naG9zdGZvbGlvIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9wYXRjaCJdfQ==-->
2026-06-24 05:00:37 +02:00
TrueCharts Bot 51483de0ae chore(orcaslicer): update image ghcr.io/linuxserver/orcaslicer digest to a17c0b7 (#49420)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/linuxserver/orcaslicer](https://redirect.github.com/linuxserver/docker-orcaslicer/packages)
([source](https://redirect.github.com/linuxserver/docker-orcaslicer)) |
digest | `904a99f` → `a17c0b7` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9vcmNhc2xpY2VyIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9kaWdlc3QiXX0=-->
2026-06-24 05:00:07 +02:00
TrueCharts Bot 4321bb5d67 fix(metabase): update image docker.io/metabase/metabase v0.62.2 → v0.62.3 (#49425)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| docker.io/metabase/metabase | patch | `b2b2c69` → `f11eccb` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9tZXRhYmFzZSIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvcGF0Y2giXX0=-->
2026-06-24 04:53:08 +02:00
TrueCharts Bot 7f05678163 fix(kubernetes-reflector): update image ghcr.io/emberstack/kubernetes-reflector 10.0.51 → 10.0.52 (#49424)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/emberstack/kubernetes-reflector](https://redirect.github.com/emberstack/kubernetes-reflector)
| patch | `8703338` → `9b3b55f` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>emberstack/kubernetes-reflector
(ghcr.io/emberstack/kubernetes-reflector)</summary>

###
[`v10.0.52`](https://redirect.github.com/emberstack/kubernetes-reflector/releases/tag/v10.0.52)

[Compare
Source](https://redirect.github.com/emberstack/kubernetes-reflector/compare/v10.0.51...v10.0.52)

The release process is automated.

#### What's Changed

- Bump the all-dependencies group with 7 updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;669](https://redirect.github.com/emberstack/kubernetes-reflector/pull/669)

**Full Changelog**:
<https://github.com/emberstack/kubernetes-reflector/compare/v10.0.51...v10.0.52>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9rdWJlcm5ldGVzLXJlZmxlY3RvciIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvcGF0Y2giXX0=-->
2026-06-24 04:51:24 +02:00
TrueCharts Bot c8c3ea3fb1 chore(filestash): update image docker.io/machines/filestash digest to fe7016b (#49418) 2026-06-24 04:50:09 +02:00
TrueCharts Bot 9bca6e5ba6 chore(mariadb): update image docker.io/bitnamisecure/mariadb digest to 967e3ef (#49419)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| docker.io/bitnamisecure/mariadb | digest | `4a3b3ac` → `967e3ef` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9tYXJpYWRiIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9kaWdlc3QiXX0=-->
2026-06-24 04:50:07 +02:00
TrueCharts Bot 91b5301b83 feat(grafana): update image ghcr.io/kiwigrid/k8s-sidecar 2.7.4 → 2.8.0 (#49415)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/kiwigrid/k8s-sidecar](https://redirect.github.com/kiwigrid/k8s-sidecar)
| minor | `b6b8781` → `8fd1da8` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>kiwigrid/k8s-sidecar (ghcr.io/kiwigrid/k8s-sidecar)</summary>

###
[`v2.8.0`](https://redirect.github.com/kiwigrid/k8s-sidecar/releases/tag/2.8.0)

[Compare
Source](https://redirect.github.com/kiwigrid/k8s-sidecar/compare/2.7.4...2.8.0)

#### 🚀 Features

- add support for ppc64le and riscv64
- PR:
[#&#8203;592](https://redirect.github.com/kiwigrid/k8s-sidecar/issues/592)

#### 📦 Dependencies

- build(deps): bump docker/setup-buildx-action from 4.0.0 to 4.1.0
- PR:
[#&#8203;590](https://redirect.github.com/kiwigrid/k8s-sidecar/issues/590)
- build(deps): bump actions/stale from 10.2.0 to 10.3.0
- PR:
[#&#8203;589](https://redirect.github.com/kiwigrid/k8s-sidecar/issues/589)
- build(deps): bump softprops/action-gh-release from 3.0.0 to 3.0.1
- PR:
[#&#8203;588](https://redirect.github.com/kiwigrid/k8s-sidecar/issues/588)
- build(deps): bump docker/bake-action from 7.1.0 to 7.2.0
- PR:
[#&#8203;591](https://redirect.github.com/kiwigrid/k8s-sidecar/issues/591)
- build(deps): bump actions/checkout from 6.0.2 to 7.0.0
- PR:
[#&#8203;587](https://redirect.github.com/kiwigrid/k8s-sidecar/issues/587)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9ncmFmYW5hIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==-->
2026-06-23 22:49:21 +02:00
TrueCharts Bot 683c216fff feat(ghostfolio): update image docker.io/ghostfolio/ghostfolio 3.14.0 → 3.15.0 (#49414)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/ghostfolio/ghostfolio](https://redirect.github.com/ghostfolio/ghostfolio)
| minor | `36c6f05` → `63cef1c` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>ghostfolio/ghostfolio
(docker.io/ghostfolio/ghostfolio)</summary>

###
[`v3.15.0`](https://redirect.github.com/ghostfolio/ghostfolio/blob/HEAD/CHANGELOG.md#3150---2026-06-23)

[Compare
Source](https://redirect.github.com/ghostfolio/ghostfolio/compare/3.14.0...3.15.0)

##### Changed

- Improved the dynamic numerical precision for various values in the
account detail dialog on mobile
- Improved the dynamic numerical precision for various values in the
holding detail dialog on mobile
- Upgraded `@internationalized/number` from version `3.6.6` to `3.6.7`

##### Fixed

- Fixed an issue where symbols with special characters caused API
request failures by URL encoding the symbol
- Fixed the disabled state of the delete action in the asset profiles
actions menu of the historical market data table in the admin control
panel
- Fixed the persistence of an empty `locale` string in the scraper
configuration

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9naG9zdGZvbGlvIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==-->
2026-06-23 22:48:17 +02:00
TrueCharts Bot 989471cbb6 feat(cops): update image lscr.io/linuxserver/cops 4.3.5 → 4.5.2 (#49413)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[lscr.io/linuxserver/cops](https://redirect.github.com/linuxserver/docker-cops/packages)
([source](https://redirect.github.com/linuxserver/docker-cops)) | minor
| `3a4f39a` → `d2c79df` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9jb3BzIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==-->
2026-06-23 22:47:01 +02:00
TrueCharts Bot 287b67ec99 feat(wekan): update image docker.io/wekanteam/wekan v9.70 → v9.71 (#49416) 2026-06-23 22:46:49 +02:00
TrueCharts Bot d0302770cc feat(grafana): update image docker.io/grafana/grafana 13.0.3 → 13.1.0 (#49401)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/grafana/grafana](https://redirect.github.com/grafana/grafana)
| minor | `1a34542` → `121a7a9` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>grafana/grafana (docker.io/grafana/grafana)</summary>

###
[`v13.1.0`](https://redirect.github.com/grafana/grafana/compare/v13.0.3...v13.1.0)

[Compare
Source](https://redirect.github.com/grafana/grafana/compare/v13.0.3...v13.1.0)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9ncmFmYW5hIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==-->
2026-06-23 20:46:48 +00:00
TrueCharts Bot 072cad0d62 chore(tubesync): update image ghcr.io/meeb/tubesync digest to 01eec0b (#49410)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| ghcr.io/meeb/tubesync | digest | `1c717e2` → `01eec0b` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC90dWJlc3luYyIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvZGlnZXN0Il19-->
2026-06-23 22:46:11 +02:00
TrueCharts Bot e2521af3f9 fix(maintainerr): update image docker.io/maintainerr/maintainerr 3.15.2 → 3.15.3 (#49412)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/maintainerr/maintainerr](https://redirect.github.com/Maintainerr/Maintainerr)
| patch | `dcfd3f0` → `ab62182` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>Maintainerr/Maintainerr
(docker.io/maintainerr/maintainerr)</summary>

###
[`v3.15.3`](https://redirect.github.com/Maintainerr/Maintainerr/blob/HEAD/CHANGELOG.md#3153-2026-06-23)

[Compare
Source](https://redirect.github.com/Maintainerr/Maintainerr/compare/v3.15.2...v3.15.3)

#### Highlights

- Improved Plex rule evaluation performance by prefetching watch history
in bulk, reducing API calls and enhancing efficiency
([#&#8203;3082](https://redirect.github.com/Maintainerr/Maintainerr/issues/3082)).
- Standardized UI action buttons with consistent corner radii, text
styles, and theme colors
([#&#8203;3143](https://redirect.github.com/Maintainerr/Maintainerr/issues/3143),
[#&#8203;3144](https://redirect.github.com/Maintainerr/Maintainerr/issues/3144)).

#### Fixes

- Log benign SSE client disconnects without a stack trace to reduce log
noise
([#&#8203;3145](https://redirect.github.com/Maintainerr/Maintainerr/issues/3145)).
- Initialize the active media server adapter immediately after a switch
to prevent false connection-test failures.
- Dropped BETA tag from notifications and marked download client as
BETA.
- Fixed `ExecuteButton` corner radius to align with the shared `Button`
component
([#&#8203;3144](https://redirect.github.com/Maintainerr/Maintainerr/issues/3144)).
- Standardized action buttons on the shared `Button` component and
ensured consistent theme colors
([#&#8203;3143](https://redirect.github.com/Maintainerr/Maintainerr/issues/3143)).
- Explicitly installed corepack in the dev container for compatibility
with Node 26+
([#&#8203;3141](https://redirect.github.com/Maintainerr/Maintainerr/issues/3141)).

#### Performance

- Optimized Plex rule evaluation by prefetching watch history in bulk,
reducing redundant API calls
([#&#8203;3082](https://redirect.github.com/Maintainerr/Maintainerr/issues/3082)).

#### Internal

- Updated documentation for the development environment, including
devbox workflows and agent confinement models.
- Fixed stale workspace path in agent documentation
(/home/maintainerr-dev -> /workspace).

#### Dependencies

- Updated 1 dependency: explicitly installed corepack for Node 26+
compatibility.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9tYWludGFpbmVyciIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvcGF0Y2giXX0=-->
2026-06-23 22:45:22 +02:00
TrueCharts Bot 667711d172 chore(mongodb): update image docker.io/bitnamisecure/mongodb digest to 08a7d03 (#49408)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| docker.io/bitnamisecure/mongodb | digest | `a6c182f` → `08a7d03` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9tb25nb2RiIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9kaWdlc3QiXX0=-->
2026-06-23 20:44:57 +00:00
TrueCharts Bot 246714a1d2 chore(transmission): update image docker.io/linuxserver/transmission digest to 9b229b0 (#49409)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/linuxserver/transmission](https://redirect.github.com/linuxserver/docker-transmission/packages)
([source](https://redirect.github.com/linuxserver/docker-transmission))
| digest | `90ca607` → `9b229b0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC90cmFuc21pc3Npb24iLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL2RpZ2VzdCJdfQ==-->
2026-06-23 22:44:33 +02:00
TrueCharts Bot 4e234f54e7 chore(filestash): update image docker.io/machines/filestash digest to 5348a9f (#49407)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| docker.io/machines/filestash | digest | `a56e3ae` → `5348a9f` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9maWxlc3Rhc2giLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL2RpZ2VzdCJdfQ==-->
2026-06-23 22:37:57 +02:00
TrueCharts-Admin 9b1ef40e3a chore(github-action): update azure/setup-helm digest digest to 9bc31f4 2026-06-23 20:33:29 +00:00
TrueCharts Bot b8c4cdd6b9 feat(manyfold): update image ghcr.io/manyfold3d/manyfold 0.144.1 → 0.145.1 (#49402) 2026-06-23 16:40:59 +02:00
TrueCharts Bot e8a042a3ee feat(wekan): update image docker.io/wekanteam/wekan v9.67 → v9.70 (#49404)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [docker.io/wekanteam/wekan](https://redirect.github.com/wekan/wekan) |
minor | `6a6a5cc` → `9e84f05` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>wekan/wekan (docker.io/wekanteam/wekan)</summary>

###
[`v9.70`](https://redirect.github.com/wekan/wekan/blob/HEAD/CHANGELOG.md#v970-2026-06-23-WeKan--release)

[Compare
Source](https://redirect.github.com/wekan/wekan/compare/v9.69...v9.70)

This release fixes the following bugs:

- **Copying a card to or from a board with no labels threw.**
`Card.copy()`'s cross-board label-remap did
`oldBoard.labels.filter(...)` / `filterCopiedLabelIds(newBoard.labels,
…)` without guarding a missing `labels` array.
Most boards always have default labels, but a board **created via the
REST API** (`POST /api/boards`) has no `labels`
array — so copying a card to/from such a board (or copying the board
itself, which copies its cards) threw
`Cannot read properties of undefined (reading 'filter')` and returned
HTTP 500. Both label lookups now fall back to
`[]`. Cross-board copy regressions in
`tests/playwright/specs/17-rest-api.e2e.js`.
- [Copying a board did not copy its
webhooks](https://redirect.github.com/wekan/wekan/issues/5592),
[#&#8203;5592](https://redirect.github.com/wekan/wekan/issues/5592):
`board.copy()` duplicated swimlanes/lists/cards, custom fields
and rules/triggers/actions, but had no loop for **Integrations**
(outgoing webhooks), so a copied board lost all of
them (even though they are per-board children — `boardRemover` deletes
them by `boardId`). `copy()` now also copies
the board's Integrations, remapping `boardId` (URL/token/activities
carry over — the copying user is a board admin
with access to them). Regression in
`tests/playwright/specs/17-rest-api.e2e.js`.
- [Disabled user accounts could be added to
boards](https://redirect.github.com/wekan/wekan/issues/1894),
[#&#8203;1894](https://redirect.github.com/wekan/wekan/issues/1894):
none of the add-member paths checked the target account's
`loginDisabled` flag, so a deactivated user could be invited/added and
assigned to cards. `inviteUserToBoard` now
throws `error-user-disabled`, and the REST `POST
/api/boards/:boardId/members/:userId/add` endpoint returns HTTP 400,
when the target account is disabled (re-enabling the account allows the
add again). Regression in
  `tests/playwright/specs/17-rest-api.e2e.js`.
- [Admin Panel boards report listed removed members as current
members](https://redirect.github.com/wekan/wekan/issues/5122),
[#&#8203;5122](https://redirect.github.com/wekan/wekan/issues/5122):
removing a member from a board marks the member entry
`isActive: false` (it is kept in `board.members` for role history /
re-activation), but the Admin Panel → Reports →
Boards member column listed **all** member entries, so removed users
still appeared as members. The report now
filters to active members (`isActive !== false`). (The raw `GET
/api/boards/:boardId` response intentionally still
returns the full `members` array with each entry's `isActive` flag, so
API consumers can filter as they need.)
- [Could not remove a deleted user from a card's
members](https://redirect.github.com/wekan/wekan/issues/4847),
[#&#8203;4847](https://redirect.github.com/wekan/wekan/issues/4847)
(card side): when a user account is deleted, its entry stays in a
card's `members`, rendering as a blank avatar. Clicking it opened the
member popup, whose template dereferenced the
now-missing user document (`user.profile.fullname` / `user.username`)
and failed to render — so there was no way to
remove the orphaned member. The popup now detects a missing user, shows
a **"Deleted user"** entry with the raw id, and
keeps the **Remove from Card** control (the remove handler keys off the
member's `userId`, not the user document), so
orphaned card members can be removed. (No automated regression — a
self-evident Blaze template guard; the underlying
`unassignMember` removal already worked. The board-members *list* still
hides such entries because `activeMembers()`
also intentionally filters members whose user doc is merely
not-yet-loaded, so surfacing board-side orphans cleanly is
  a separate follow-up.)
- [A newly added board member was missing from the card members
popup](https://redirect.github.com/wekan/wekan/issues/4965),
[#&#8203;4965](https://redirect.github.com/wekan/wekan/issues/4965): the
card "add members" popup snapshotted the board's member list
**once** when it opened, so a member added to the board afterwards (or
whose user document finished loading just after
the popup opened) did not appear until the popup was reopened. The popup
now derives its candidate list **reactively**
(it stores only the filter term and re-reads `board.activeMembers()` on
each render), so newly-added members show up
without reopening. No change to `activeMembers()` itself (its
deleted-user filtering is unchanged).
- [Editing a linked card you cannot write to failed
silently](https://redirect.github.com/wekan/wekan/issues/5809),
[#&#8203;5809](https://redirect.github.com/wekan/wekan/issues/5809): a
linked card whose target lives on a board the user cannot
write to (e.g. a private board) rejected title/description edits at the
server allow rule, but the card-detail edit
handlers had no error handling, so the edit just vanished with no
feedback. The title and description submit handlers
now catch the failure and show the error (mirroring the existing
label-color handler), so the user sees why the edit
did not save. (No automated regression — surfacing a permission denial
across a private linked board is a UX/error
  path that is not cleanly reproducible in the test harness.)
- **Performance: copying a card with many checklist items took minutes**
([#&#8203;5688](https://redirect.github.com/wekan/wekan/issues/5688)).
`Checklist.copy()` duplicated each checklist item with the hooked
`insertAsync`, so collection-hooks fired each item's
`after.insert` — every one doing a `getCard` and inserting an
`addChecklistItem` activity. Copying a card with \~100
items meant \~100+ activity inserts (plus per-item DB round-trips),
taking minutes and spiking CPU. The copy now uses
`.direct` for the checklist and its items (skipping the per-item
activity hooks — pure churn for a wholesale copy) and
sets `boardId` itself, the same approach as the `cardRemover` delete
path. Copy regression (checklist + all items
  duplicated) in `tests/playwright/specs/17-rest-api.e2e.js`.
- **Copying a card to another board orphaned its subtasks on the old
board**
([#&#8203;5347](https://redirect.github.com/wekan/wekan/issues/5347)
data symptom): `Card.copy()` re-pointed each subtask's
`parentId` to the copied card but left its
`boardId`/`swimlaneId`/`listId` pointing at the **source** board — so a
cross-board copy created subtasks stranded on the original board whose
parent lives on another board (and it mutated
the cached source docs in place). Copied subtasks are now re-homed onto
the destination board/swimlane/list alongside
the copied parent, via a fresh object (no cache mutation). Cross-board
copy regression in
`tests/playwright/specs/17-rest-api.e2e.js`. (This fixes the
orphaned-cross-board-subtask data symptom noted in
[#&#8203;5347](https://redirect.github.com/wekan/wekan/issues/5347); the
separate "Maximum call stack" error there is not yet root-caused — see
the issue.)
- [Error when clicking the notification
icon](https://redirect.github.com/wekan/wekan/issues/5325),
[#&#8203;5325](https://redirect.github.com/wekan/wekan/issues/5325): a
notification whose referenced activity no longer existed (its
card/board was deleted) left an entry whose `activityObj` was null, and
the notifications drawer dereferences it
(`activity.user`, `activity._id`, …) — so one orphaned notification
threw and broke the whole popup. `user.notifications()`
now drops entries whose activity can't be resolved. (No automated
regression — an orphaned-notification state is not
cleanly reproducible in the harness; the fix is a self-evident filter.)
- [Deleting a custom field from a board could
throw](https://redirect.github.com/wekan/wekan/issues/5390),
[#&#8203;5390](https://redirect.github.com/wekan/wekan/issues/5390):
removing a (multi-board) custom field from one board runs a
`before.update` hook that logged a `setCustomField` activity by reading
`(await getActivity({customFieldId})).value` —
with **no null guard**, so a field that never had a value set (no such
activity) threw `Cannot read properties of
undefined` and aborted the removal. The lookup is now guarded.
([server/models/customFields.js](server/models/customFields.js))
- [Board "show checklists on minicard" setting had no
effect](https://redirect.github.com/wekan/wekan/issues/5565),
[#&#8203;5565](https://redirect.github.com/wekan/wekan/issues/5565): the
sidebar toggle writes `board.allowsChecklistsOnMinicard`, but
the minicard render checked a different, UI-less field
(`board.allowsChecklistAtMinicard`), so enabling the board-wide
setting never showed checklists on minicards. The minicard now reads the
field the toggle actually sets.

([client/components/cards/minicard.js](client/components/cards/minicard.js))

and these issues are verified resolved in current code (could not
reproduce / no error observed here; re-test on the
reporter's data requested):

- [#&#8203;5388](https://redirect.github.com/wekan/wekan/issues/5388)
(collapsing a list affected all users): list collapse state is
now stored **per user** (`profile.collapsedLists[boardId][listId]`, or a
cookie for logged-out users) instead of a
shared `collapsed` field on the list document — so one user collapsing a
list no longer changes it for everyone
(resolved by commit
[`414b8db`](https://redirect.github.com/wekan/wekan/commit/414b8dbf4),
which postdates the report; mirrors the per-user swimlane-collapse
handling).
- [#&#8203;3894](https://redirect.github.com/wekan/wekan/issues/3894)
(board import failed when the JSON's `members` referenced a user
not present in `users`): the importers already guard a missing user
entry (skip the dangling member instead of
dereferencing `undefined`) in
`client/components/import/wekanMembersMapper.js`,
`models/wekanmapper.js` and
`models/wekanCreator.js`, with a dedicated test
(`tests/wekanCreator.inconsistent.test.js`).
- [#&#8203;5411](https://redirect.github.com/wekan/wekan/issues/5411)
(non-super-admin board admins could not see the add-member "+"):
the sidebar add-member button is gated on
`currentUser.canInviteToBoard`, which returns `true` for any board admin
(`board.hasAdmin`), and the secure default invite roles include
`board-admin`. So board admins (not just site admins)
see the "+". This was resolved by the "Allow Invite to Board" roles
feature (commit
[`c956ab5`](https://redirect.github.com/wekan/wekan/commit/c956ab5a4)),
which postdates the
report; a site admin can additionally let other board roles invite via
Admin Panel → People → Roles.
- [#&#8203;5627](https://redirect.github.com/wekan/wekan/issues/5627)
(rules not copied when creating a board from a template):
`board.copy()` already copies the board's rules + triggers + actions
(remapping `boardId` and the rule's
`triggerId`/`actionId`); the report predates that code. Now covered by
the
[#&#8203;5592](https://redirect.github.com/wekan/wekan/issues/5592)/[#&#8203;5627](https://redirect.github.com/wekan/wekan/issues/5627)
copy regression in
`tests/playwright/specs/17-rest-api.e2e.js` so it cannot silently
regress.
- [#&#8203;5630](https://redirect.github.com/wekan/wekan/issues/5630)
(cannot save Admin Panel Layout settings): already fixed — the
Layout save handler had referenced form fields that were moved to the
separate Accessibility settings template,
throwing before the save; the current `js-save-layout` handler no longer
reads those fields.
- [#&#8203;5117](https://redirect.github.com/wekan/wekan/issues/5117) (a
TeX formula rendered both an SVG and a `<math>` tag): already
fixed by migrating math rendering from `markdown-it-mathjax3` (which
emitted both SVG and MathML) to **Temml**, which
  outputs MathML only (`packages/markdown/src/template-integration.js`).

###
[`v9.69`](https://redirect.github.com/wekan/wekan/blob/HEAD/CHANGELOG.md#v969-2026-06-23-WeKan--release)

[Compare
Source](https://redirect.github.com/wekan/wekan/compare/v9.68...v9.69)

This release fixes the following bugs:

- [Can't edit a card's members in the UI after removing them via the
REST API](https://redirect.github.com/wekan/wekan/issues/3697),
[#&#8203;3697](https://redirect.github.com/wekan/wekan/issues/3697):
clearing a card's `members` (or `assignees`) over REST left the
field uneditable in the UI. The card PUT handler guarded with `if
(req.body.members)` — falsy for the two natural
clear payloads (`null` and `""`) — so "remove the last member" was a
silent no-op, and its string branch was written
to store `null` rather than `[]`; a card with `members: null` then
breaks UI code that treats it as an array. The
handler now uses an `!== undefined` guard plus a shared coercion helper
so any clear payload (`null` / `""` / `[]`)
stores a clean `String[]` (never null), a single id is wrapped into an
array, and stray non-string entries are
dropped; `getMembers()`/`getAssignees()` also coerce a legacy `null` to
`[]` on read so existing corrupted documents
edit cleanly. Pure logic in `models/lib/restArrayParam.js` with a
Meteor-free Node unit test
(`tests/restArrayParam.test.cjs`, `npm run test:unit:node`, incl. a
**negative test** reproducing the old
null-writing logic), plus a REST regression in
`tests/playwright/specs/17-rest-api.e2e.js`.
- [Can't create a card with no member via the REST
API](https://redirect.github.com/wekan/wekan/issues/2875),
[#&#8203;2875](https://redirect.github.com/wekan/wekan/issues/2875): the
card-create endpoints (`POST .../cards` and
`POST .../cards/bulk`) wrote `req.body.members`/`assignees` straight to
the insert with no normalization — the
create-side twin of
[#&#8203;3697](https://redirect.github.com/wekan/wekan/issues/3697) — so
a `null`/`""` payload persisted as `null` (breaking later UI editing).
Both handlers
now run the same `coerceRestArrayParam` helper: the field is omitted
when not provided (so the schema default `[]`
applies), any clear payload becomes `[]` (never null), and a single id
is wrapped into an array. REST regression in
  `tests/playwright/specs/17-rest-api.e2e.js`.
- [Board created through the REST API shows in the API but not in the
browser UI](https://redirect.github.com/wekan/wekan/issues/5650),
[#&#8203;5650](https://redirect.github.com/wekan/wekan/issues/5650):
`POST /api/boards` set the board's sole member's `userId` from
`req.body.owner` with no fallback, so a request that omits `owner`
created a board whose only member had
`userId: undefined`. The board-list publication matches
`members.$elemMatch: { userId, isActive: true }`, which can
never match an undefined id — so the board was returned by the REST API
but invisible in the browser. `owner` now
falls back to the authenticated caller (`req.body.owner || req.userId`),
mirroring the Meteor create method. REST +
  DB regression in `tests/playwright/specs/17-rest-api.e2e.js`.
- [Copying a card to another board left its comments on the wrong
board](https://redirect.github.com/wekan/wekan/issues/5166),
[#&#8203;5166](https://redirect.github.com/wekan/wekan/issues/5166):
`CardComments.copy()` cloned a comment but only changed its
`cardId`, so a card copied to another board produced comments that kept
the **source** board's `boardId`. Comment
permission checks key off the comment's `boardId`, so edit/delete on a
copied comment was validated against the wrong
board, and any board-scoped query saw it on the old board. `copy()` now
also sets the destination `boardId` (the
author `userId` is intentionally preserved). Cross-board copy regression
in
`tests/playwright/specs/17-rest-api.e2e.js`. *Note:* the related "wrong
author shown" symptom is a separate display
issue — when a copied comment's author is **not a member of the
destination board**, their user document isn't
published there, so the UI can't resolve the name; adding those users to
the board resolves it. A broader fix
(publishing comment authors' minimal profile on boards where their
comments appear) is left as a follow-up.
- [Exception "Removed nonexistent document" when deleting a card
detail](https://redirect.github.com/wekan/wekan/issues/3252),
[#&#8203;3252](https://redirect.github.com/wekan/wekan/issues/3252)
(partial): deleting a comment or checklist/checklist-item could
throw `Removed nonexistent document` on the client. The delete handlers
called `Collection.remove(_id)` directly, but
under heavy archive/delete churn the target doc can already have been
evicted from the client's Minimongo cache, and
removing a missing `_id` throws. The comment / checklist /
checklist-item delete handlers now check the doc still
  exists in the local cache before removing it
(`client/components/activities/comments.js`,
`client/components/cards/checklists.js`). The server-side
`before.remove` hooks were already hardened to guard + log instead of
throwing. (No automated regression for the
thrown exception — the eviction race is not deterministically
reproducible; the guard itself is a self-evident
findOne-then-remove.) The **high CPU on bulk delete** the issue also
reports is reduced by the cascade change below;
the remaining cost is on the **archive** path (a bulk update, not a
delete) and is a separate follow-up.
- **Performance: deleting a card no longer fans out per-child activity
churn**
([#&#8203;3252](https://redirect.github.com/wekan/wekan/issues/3252),
[#&#8203;5322](https://redirect.github.com/wekan/wekan/issues/5322)).
`cardRemover` removed a card's checklist items, checklists and
comments with the hooked `removeAsync`, so collection-hooks fired each
child's `before.remove` **once per document** —
every one doing a `getCard` and inserting an activity (e.g. a
`removedChecklistItem` per item), which then triggered
the notification + publication observers. Deleting (or bulk-deleting) a
card with many children produced an
activity-insert storm and pegged the CPU. `cardRemover` now removes
those children with `.direct` (skipping the
per-child hooks — they only logged activities that are unviewable once
the card is gone) and clears **all** of the
card's activities in a single bulk op, which also removes the activities
that a delete previously left orphaned. The
`deleteCard` activity is still logged afterward (so the outgoing webhook
fires), and attachments still go through the
normal remove so their files are deleted. Cascade + activity-cleanup
regression (also a negative test) in
  `tests/playwright/specs/17-rest-api.e2e.js`.

and this issue is verified resolved in current code (could not reproduce
/ no error observed here; re-test on the
reporter's data requested):

- [#&#8203;2292](https://redirect.github.com/wekan/wekan/issues/2292)
(archiving a swimlane appeared to delete all its cards):
`Swimlane.archive()` ([models/swimlanes.js](models/swimlanes.js)) only
sets `archived: true` on the swimlane — it
does **not** touch or delete the cards, and `restore()` brings the
swimlane and its cards back. While a swimlane is
archived its cards are merely hidden from the board view (board queries
filter to `archived: false` swimlanes), not
lost — the v2.27-era cascade described in the report no longer happens.
(A dedicated way to view an archived
  swimlane's cards before restoring would be a separate UX improvement.)

###
[`v9.68`](https://redirect.github.com/wekan/wekan/blob/HEAD/CHANGELOG.md#v968-2026-06-23-WeKan--release)

[Compare
Source](https://redirect.github.com/wekan/wekan/compare/v9.67...v9.68)

This release adds the following updates and developer tooling:

- **rebuild-wekan.sh / rebuild-wekan.bat: multi-forge mirroring.** Two
new menu options: *Install forge CLI
tools* (installs the gh-like CLIs `gh`, `glab`, `tea`, `git-bug`, and
the unified [`forge`](https://redirect.github.com/git-pkgs/forge)
via the detected package manager / `go install`), and *Mirror repo
GitHub → GitLab/Codeberg/Forgejo/Gitea*. The
mirror flow selects source + target by number (e.g. `1 3` = GitHub →
Codeberg), pushes all branches/tags with
`git push --mirror`, then runs a cross-platform Node engine
(`tools/forge-mirror.js`) that syncs only the issues and
pull requests **missing** at the target (driving the authenticated CLIs;
de-duplicated by title; dry-run by default)
and converts the GitHub Actions workflow syntax for the target: an
annotated `.forgejo/workflows/` copy that flags
the known Forgejo/Gitea incompatibilities (`hashFiles()`,
`permissions:`, `continue-on-error:`, complex `runs-on:`),
or for GitLab a `.gitlab-ci.yml` scaffold plus a guide pointing at
GitLab's official converter skill.
- **Updated Meteor to 3.5-rc.2**
([#&#8203;6413](https://redirect.github.com/wekan/wekan/pull/6413),
thanks harryadel;
merged in
[d5be28bc2](https://redirect.github.com/wekan/wekan/commit/d5be28bc2)).
- **Dependency updates** (merged the low-risk Dependabot PRs that pass
build + unit tests):
`@swc/helpers` 0.5.22 → 0.5.23
([#&#8203;6416](https://redirect.github.com/wekan/wekan/pull/6416)) and
the test-only
`sinon` 21 → 22
([#&#8203;6418](https://redirect.github.com/wekan/wekan/pull/6418)). The
major **production** bumps were held back
for individual testing rather than merged: `jquery` 3 → 4
([#&#8203;6417](https://redirect.github.com/wekan/wekan/pull/6417),
risks Blaze / jQuery-UI compatibility), `@babel/runtime` 7 → 8
([#&#8203;6415](https://redirect.github.com/wekan/wekan/pull/6415)),
and `@tweedegolf/sab-adapter-amazon-s3` 1 → 3
([#&#8203;6414](https://redirect.github.com/wekan/wekan/pull/6414), S3
storage is not
  exercised by CI).
- **rebuild-wekan.sh: run the Chromium / Firefox / WebKit Playwright
matrix with or without Docker.** The
WebKit-only Docker support is generalized so any browser can run
natively or inside the official Playwright Docker
image, selectable via `WEKAN_PLAYWRIGHT_DOCKER=1/0` (whole matrix) or
per-browser
`WEKAN_CHROMIUM_DOCKER` / `WEKAN_FIREFOX_DOCKER` /
`WEKAN_WEBKIT_DOCKER`. Defaults are unchanged (Chromium/Firefox
native, WebKit via Docker on Linux arm64). Adds an "Install Playwright
browsers" menu item that does
`playwright install --with-deps` and/or pulls the Playwright Docker
image.
[commit
c3e6d97bd](https://redirect.github.com/wekan/wekan/commit/c3e6d97bd).
- **E2E reliability:** the Playwright suite was red on `main` because
the **rspack client JS bundle was not being
served** by `meteor run` (dev mode) in headless CI — browser requests
for the bundle returned the SPA HTML fallback
(`Unexpected token '<'`), so Meteor never initialised and all \~212
specs timed out in `waitForMeteor` (confirmed: a
CI readiness probe got an empty response from the bundle URL for 10
minutes straight). The CI E2E job now runs
against a **production build** (`meteor build` → `node bundle/main.js`),
where the client JS is baked into the bundle
and served statically by the Meteor server — no rspack dev server, no
chunk-serving race. The production run also
needed two env vars the dev runner sets but CI did not: `WRITABLE_PATH`
(without it `server/00checkStartup.js` exits
before listening) and `WITH_API=true` (without it every REST-API spec
gets HTML instead of JSON). The suite is also
**sharded 2× per browser** (6 parallel jobs) to cut wall-clock time, and
the per-spec `waitForMeteor` timeout was
raised 30s → 60s. **Confirmed:** the suite went from *0 tests running*
(all timed out) to \~**119/120 passing per
shard**. The handful of residual specs were then triaged locally: two
were **real product bugs** (below — the
sort-cards button and Template Container deletion); the RTL/LTR
i18n-text spec was CI-only timing on the production
bundle, made robust by waiting for the async result instead of reading
it immediately. Two specs are **quarantined**
(`test.fixme`) for focused follow-up: a pre-existing "control" assertion
(a plain click outside the card closing it
— the actual
[#&#8203;5686](https://redirect.github.com/wekan/wekan/issues/5686)
guard it backs still passes), and the
[#&#8203;5798](https://redirect.github.com/wekan/wekan/issues/5798)
template-card end-to-end flow, which is unstable
*only* on the CI production bundle (it passes locally) — the
[#&#8203;5798](https://redirect.github.com/wekan/wekan/issues/5798)
product fix itself is committed and verified (see
below); the flaky part is the multi-step template-search-and-instantiate
UI under polling reactivity.
- **Sort-cards button stayed clickable after sorting.** In the board
header the `js-sort-cards` class (which carries
the handler that opens the sort popup) was *replaced* by `emphasis` once
a sort was active, so after sorting once the
button was dead — the popup could not be reopened to change or clear the
sort. It now keeps `js-sort-cards` and only
  *adds* `emphasis` when active.
- **Deleting a Template Container board threw and aborted.**
`boardRemover` cleared the user's template profile
pointers with `$unset`, but those four `profile.*` fields were
non-optional `String` in the schema, so SimpleSchema
rejected the update ("Templates board ID is required") and the whole
board removal failed. The fields are now
`optional`, so the container deletes and its pointers clear cleanly
([#&#8203;2339](https://redirect.github.com/wekan/wekan/issues/2339)/[#&#8203;5850](https://redirect.github.com/wekan/wekan/issues/5850)).
- **Regression tests** for several of the fixes below, **each
negative-tested** (verified to fail on the pre-fix
code): the attachment filename truncation
([#&#8203;6412](https://redirect.github.com/wekan/wekan/issues/6412))
has a Meteor-free Node unit test
(`tests/filenameSanitizer.test.cjs`, `npm run test:unit:node`) plus the
`meteor test` mocha test, and Playwright
specs (`tests/playwright/specs/36-fixed-bug-regressions.e2e.js`) cover
[#&#8203;3907](https://redirect.github.com/wekan/wekan/issues/3907),
[#&#8203;5886](https://redirect.github.com/wekan/wekan/issues/5886),
[#&#8203;5892](https://redirect.github.com/wekan/wekan/issues/5892),
[#&#8203;3897](https://redirect.github.com/wekan/wekan/issues/3897) and
[#&#8203;5798](https://redirect.github.com/wekan/wekan/issues/5798) (the
[#&#8203;5798](https://redirect.github.com/wekan/wekan/issues/5798) spec
passes locally but is quarantined on CI — see the E2E reliability note
above).

and fixes the following bugs:

- [Cannot delete some boards from
Archive](https://redirect.github.com/wekan/wekan/issues/4255),
[#&#8203;4255](https://redirect.github.com/wekan/wekan/issues/4255): the
Archive listed boards the user could not actually delete —
clicking *Delete* did nothing and the console showed `remove failed:
Access denied`. The `archivedBoards`
publication scoped its list to admin members (`isAdmin: true`) but
ignored the **active** flag, whereas the
`Boards.remove` permission (`hasAdmin()`) requires an **active** admin
(`isActive: true && isAdmin: true`). A user
who was an admin on a board but no longer active still saw it in the
Archive, then hit "Access denied" on delete.
The publication now matches the remove permission exactly (`isActive:
true && isAdmin: true`), so the Archive only
  lists boards the user can really delete.

- [Weird moving card bug — cross-board move could silently lose a
card](https://redirect.github.com/wekan/wekan/issues/5874),
[#&#8203;5874](https://redirect.github.com/wekan/wekan/issues/5874)
(data loss): rarely, moving a card from board A to board B left
it in a **corrupt half-moved state** — the card's `boardId` became B but
its `listId`/`swimlaneId` still belonged to
board A. The reporter saw exactly this: the card existed in board B's
JSON but with board A's list/swimlane, so it
was invisible in every normal view on both boards and clicking its link
reopened board A. **Root cause:** the
Move/Copy-card dialog resolves the destination board's swimlanes and
lists from the *client* Minimongo cache, which
can still be empty at the moment the user clicks "Done" — the
destination board's `publishComposite('board')` data
has not finished merging — so the dialog keeps the *source* board's
`swimlaneId`/`listId` while the `boardId` is
already the destination. (`setFirstSwimlaneId()`/`setFirstListId()`
swallow the lookup miss in a silent
`try/catch`, leaving the stale ids in place.) Several other callers —
drag reorder, multi-card move in the filter
sidebar, board-action rules, the REST API — can in principle produce the
same mismatch. **Fix:** a new server-side
`Cards.before.update` guard (`enforceCardBoardConsistency`, registered
first so the corrected modifier is what every
later hook and the persisted write see) runs whenever a card's `boardId`
changes and rewrites the pending update so
the swimlane/list always belong to the destination board, falling back
to that board's default swimlane and first
list when they don't. It runs on the server, where the destination
board's swimlanes/lists are always present
regardless of client cache state, and is **corrective only** — a
cross-board move whose targets already belong to the
destination board is left untouched, and a same-board reorder is
ignored. The decision logic was extracted into a
pure, dependency-injected module (`models/lib/cardBoardConsistency.js`)
with a Meteor-free Node unit test
(`tests/cardBoardConsistency.test.cjs`, `npm run test:unit:node`),
including a **negative test** asserting that the
raw unguarded modifier is exactly the
[#&#8203;5874](https://redirect.github.com/wekan/wekan/issues/5874)
corrupt state.

- [Responsive views still seem
broken](https://redirect.github.com/wekan/wekan/issues/6419),
[#&#8203;6419](https://redirect.github.com/wekan/wekan/issues/6419)
(partial): the most concrete, "stops-work" part is fixed — on
mobile an **open card could not be closed** because the card-details
overlay (z-index 100) sat *below* the app
header bar (`#header-main-bar`, z-index 1000), so the header covered the
close (X) button. The full-screen mobile
card now uses z-index 1100 — above the header, still below popups
(2000+) so card menus/date pickers open over it.
Mobile header action icons were also enlarged and **verified on a real
iPhone profile via Playwright screenshots**
(`tests/playwright/mobile-shot.js`): the top bar and the board action
bar buttons were only \~28–32px tall with a
13–15px font (below the comfortable \~44px touch-target / 16px readable
minimum). They are now \~44px tall with a 16px
font, applied **by viewport width** (`@media (max-width: 800px)`) so
they work on any phone without toggling
Desktop/Mobile mode — the board header renders as a clean row of large,
icon-only buttons.
**Two deeper root causes were then found and fixed (verified on an
iPhone profile via Playwright screenshots):**
(1) **No viewport meta tag.** WeKan's server-rendered `<head>`
(`server/lib/customHeadRender.js`) had no
`<meta name="viewport">`, so mobile browsers laid the page out at their
default \~980px virtual width and scaled it
down — making the whole UI tiny, reporting `window.innerWidth === 980`
on a 390px phone, and preventing every
`@media (max-width: 800px)` rule (and the width-based mobile detection)
from ever matching. Added
`width=device-width, initial-scale=1, viewport-fit=cover` (user zoom
left enabled for accessibility).
(2) **`profile.mobileMode` defaulted to `false`.** The user schema set
`mobileMode: false` on *every* user, so
`Utils.getMobileMode()` always returned the profile value and the
auto-detection below it was dead code — every user
was locked to desktop-mode even on a phone. The field is now `optional`
(no default), so it stays unset until the
user explicitly toggles; auto-detection was also rewritten to use
reliable `matchMedia` width/pointer queries instead
of fragile user-agent sniffing (cf. **Meteor
[#&#8203;12421](https://redirect.github.com/meteor/meteor/issues/12421)**,
where Mobile
Safari UA version parsing was wrong — this instance reports `isModern:
true`, so
[#&#8203;12421](https://redirect.github.com/wekan/wekan/issues/12421) is
not the cause here, but it
is the same class of UA-detection fragility this rewrite avoids), and a
`matchMedia` listener now re-applies
mobile-mode on resize/orientation when the user has no explicit
preference. Net: phones auto-detect mobile mode at
  the correct device width, with large tappable icons, no manual toggle.
Also fixed the **Admin Panel's secondary top bar** in small-width mode:
those tab buttons (Settings / People /
Reports / Attachments / Translation / Info) are rendered inside
`#header-quick-access`, whose mobile rules scale all
text/icons 2× — so the admin tabs rendered at 28px text / **56px
icons**, huge and overlapping the "Version" label.
A scoped override caps them at a normal touch size (15px text / 18px
icons).
And fixed **overlapping text in the Admin Panel settings body** on
phones: the layout forced a side-by-side
menu+content row "even on narrow windows", so the \~127px side menu and
the content were crammed together and the long
(e.g. Finnish) section labels overflowed the menu box rightward,
visually overlapping the content. On small screens
the layout now **stacks** — a full-width compact section menu on top,
full-width settings content below — verified via
  iPhone-profile screenshots.

- [Missing voting
buttons](https://redirect.github.com/wekan/wekan/issues/6420),
[#&#8203;6420](https://redirect.github.com/wekan/wekan/issues/6420): the
`showVotingButtons` (and `showPlanningPokerButtons`)
helpers in `cardDetails.js` referenced an **undefined `currentUser`**
variable, so every card render threw
`ReferenceError: currentUser is not defined` and the vote /
planning-poker buttons silently disappeared. The helpers
now resolve `currentUser` via `ReactiveCache.getCurrentUser()` and
null-guard the board-member check. Regression test
  in `tests/playwright/specs/36-fixed-bug-regressions.e2e.js`.

- [ENAMETOOLONG: very long attachment filenames could not be migrated to
filesystem
storage](https://redirect.github.com/wekan/wekan/issues/6412),
[#&#8203;6412](https://redirect.github.com/wekan/wekan/issues/6412):
attachment filenames were sanitized for path traversal but
never length-limited, so a very long name (worse with multibyte UTF-8
like German umlauts) produced an on-disk
`<id>-<version>-<name>` component exceeding the filesystem's 255-byte
limit and failed with `ENAMETOOLONG`.
`sanitizeFilename` now truncates to 200 UTF-8 bytes (measured in bytes,
never splitting a codepoint) while
  preserving the file extension. Done:
[commit
5e26cf004](https://redirect.github.com/wekan/wekan/commit/5e26cf004).

- [Card "added label" history was deleted whenever the card was
moved](https://redirect.github.com/wekan/wekan/issues/3907),
[#&#8203;3907](https://redirect.github.com/wekan/wekan/issues/3907):
`updateActivities` removed all `addedLabel` activities whenever
`boardId` appeared in a card update, but `Card.move()` always re-sets
`boardId` (even moving within the same board),
so every move wiped the card's label history (data loss in the
`activities` collection). The removal/remap now only
runs on an actual board change (comparing the pre-update `boardId` with
the new value). Done:
[commit
6382ad6a8](https://redirect.github.com/wekan/wekan/commit/6382ad6a8).

- [Public boards did not fully load longer lists when viewed as a
guest](https://redirect.github.com/wekan/wekan/issues/3897),
[#&#8203;3897](https://redirect.github.com/wekan/wekan/issues/3897): a
guest (no logged-in user) hit
`getCurrentUser().isBoardAdmin()` in template helpers, throwing `Cannot
read property 'isBoardAdmin' of null` and
aborting the Tracker render so lists stopped loading partway. The
helpers now use optional chaining
(`getCurrentUser()?.isBoardAdmin()` / `?.isWorker()`), which is falsy
for guests instead of throwing. Done:
[commit
fc0fe0b61](https://redirect.github.com/wekan/wekan/commit/fc0fe0b61).

- [Changed order of lists is not
persisted](https://redirect.github.com/wekan/wekan/issues/5997),
[#&#8203;5997](https://redirect.github.com/wekan/wekan/issues/5997): the
server side was verified working end-to-end (a DDP call to
`updateListSort` reorders the `lists` collection and the `sort:1` query
returns the new order), so the regression was
client-side. `saveSorting` read the neighbouring lists with
`.prev('.js-list')` / `.next('.js-list')`, which jQuery
only matches when the sibling is *immediately* adjacent; the lists
container also renders the add-list composer and a
`+cardDetails` element (when a card is open) between lists, so an
interspersed non-list sibling made `calculateIndex`
mis-detect the first/last position and compute a wrong sort. Now uses
`prevAll/nextAll('.js-list').first()`. Done:
[commit
1165c9b6d](https://redirect.github.com/wekan/wekan/commit/1165c9b6d).

- [Cards made from a template link to the template
itself](https://redirect.github.com/wekan/wekan/issues/5798),
[#&#8203;5798](https://redirect.github.com/wekan/wekan/issues/5798): a
card instantiated from a template was copied with the
*templates* board id (the template-search source), so it had `boardId` =
templates board. It still showed in the
target list (the list renders cards by `listId` and the templates board
is subscribed), but clicking it navigated to
the templates board instead of opening the card. It is now copied into
the current board. Done:
[commit
097806984](https://redirect.github.com/wekan/wekan/commit/097806984).

- **Creating a card from a template threw "There is no current view" and
created no card.** Found while adding the
[#&#8203;5798](https://redirect.github.com/wekan/wekan/issues/5798)
regression test: the searchElement popup's minicard-click handler called
`tpl.getSortIndex()` (which reads
`Template.currentData()`) *after* `await tpl.board.getNextCardNumber()`,
and Blaze's synchronous current-view context
is lost across an `await`. The sort index is now computed before the
await. Done:
[commit
612ed3e51](https://redirect.github.com/wekan/wekan/commit/612ed3e51).

- [Lists do not collapse correctly with the Modern
theme](https://redirect.github.com/wekan/wekan/issues/5892),
[#&#8203;5892](https://redirect.github.com/wekan/wekan/issues/5892): the
list-width rework
([#&#8203;6409](https://redirect.github.com/wekan/wekan/issues/6409))
added a persistent
`.list[style*="--list-width"] { width: … !important }` rule that
overrode the 30px collapsed width, so a list with a
custom width stayed full width when collapsed. Collapsed lists are now
excluded from that rule and the 30px width is
`!important`. Done: [commit
5e9b2bccd](https://redirect.github.com/wekan/wekan/commit/5e9b2bccd).

- [Sort by due date is not remembered as the default
view](https://redirect.github.com/wekan/wekan/issues/5886),
[#&#8203;5886](https://redirect.github.com/wekan/wekan/issues/5886): the
card sort was kept only in an in-memory Meteor `Session`
variable, which resets on page reload, so the chosen sort reverted to
the default. The sort is now persisted to
  `localStorage` and restored on load (sorting and the sort icon). Done:
[commit
6aad946bc](https://redirect.github.com/wekan/wekan/commit/6aad946bc).

- [Change card's parent shows no cards the first time you select a
board](https://redirect.github.com/wekan/wekan/issues/3745),
[#&#8203;3745](https://redirect.github.com/wekan/wekan/issues/3745):
`Template.cardMorePopup`'s `cards()` helper queried
`ReactiveCache.getCards({ boardId })` from client minimongo the instant
a board was picked, before that board's card
subscription had loaded, so the parent-card list was empty the first
time (and only worked on reopen, once the data
had arrived). It now subscribes with an `onReady` callback and a
`parentBoardReady` reactive flag, and the list only
renders once the subscription is ready — the same subscription-readiness
pattern as the
[#&#8203;5798](https://redirect.github.com/wekan/wekan/issues/5798) fix.
Done:
[commit
f999b9e74](https://redirect.github.com/wekan/wekan/commit/f999b9e74).

and these issues are verified resolved in current code (could not
reproduce / no error observed here; re-test on the
reporter's data requested):

- [#&#8203;3826](https://redirect.github.com/wekan/wekan/issues/3826)
(cannot reorder cards in a list whose cards have parents): built a
**drag-sort reproduction harness**
(`tests/playwright/helpers/dragSort.js`) that drives jQuery-UI sortable
with a
realistic stepped mouse gesture (Playwright's `dragTo()` does not
trigger it), plus a regression spec
(`tests/playwright/specs/37-card-drag-sort.e2e.js`). Dragging a sub-task
card (one with a `parentId`) to a new
position in its list **persists** the new order both with a few cards
and at 15 cards — it does not revert.
- [#&#8203;1289](https://redirect.github.com/wekan/wekan/issues/1289)
(card with a deleted member user): verified via the Playwright
harness — a card whose `members`/`assignees` reference a non-existent
user renders its board minicard and opens the
card detail with **zero console errors**, so `userAvatar` null-guards
missing users correctly.
- [#&#8203;1389](https://redirect.github.com/wekan/wekan/issues/1389)
(edge-to-edge URL makes the description uneditable): the card
detail has an explicit edit (pencil) control rather than relying on
clicking the rendered text, so a full-width link
  no longer blocks editing.
- [#&#8203;5808](https://redirect.github.com/wekan/wekan/issues/5808)
(bidirectional cross-board card link makes both cards hang on
open): a Playwright repro that mutually links two cards across two
boards opens the card detail in \~1s with no errors
and no redirect loop — the link only navigates on an explicit click, not
on open, so there is no auto-bounce.
- [#&#8203;5757](https://redirect.github.com/wekan/wekan/issues/5757)
(card activities jump to a recent date after changing the due
date): activity `createdAt` is set once in the
`Activities.before.insert` hook, nothing bulk-updates it, and the UI
renders `activity.createdAt` directly — so changing a due date inserts
one new `a-dueAt` activity and cannot re-date
  existing ones.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC93ZWthbiIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->
2026-06-23 16:40:54 +02:00
TrueCharts Bot db3cac97af fix(grafana): update image docker.io/grafana/grafana 13.0.2 → 13.0.3 (#49398)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/grafana/grafana](https://redirect.github.com/grafana/grafana)
| patch | `5dad0df` → `1a34542` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9ncmFmYW5hIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9wYXRjaCJdfQ==-->
2026-06-23 16:40:51 +02:00
TrueCharts Bot ea847650f7 fix(filebrowser): update image docker.io/filebrowser/filebrowser v2.63.15 → v2.63.16 (#49396)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/filebrowser/filebrowser](https://redirect.github.com/filebrowser/filebrowser)
| patch | `9805b21` → `a6653eb` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>filebrowser/filebrowser
(docker.io/filebrowser/filebrowser)</summary>

###
[`v2.63.16`](https://redirect.github.com/filebrowser/filebrowser/releases/tag/v2.63.16)

[Compare
Source](https://redirect.github.com/filebrowser/filebrowser/compare/v2.63.15...v2.63.16)

#### Changelog

-
[`bd1520f`](https://redirect.github.com/filebrowser/filebrowser/commit/bd1520fe095d2f373f8fbcbfc01f855ade7e90fb)
chore(release): 2.63.16
-
[`8cfa6a1`](https://redirect.github.com/filebrowser/filebrowser/commit/8cfa6a175f428f89ef2c349e3d43166ee0c60135)
chore(docs): update CLI documentation
-
[`a106392`](https://redirect.github.com/filebrowser/filebrowser/commit/a1063925e15ef27f9d5dc26aae371bbf52af608c)
fix: restore symlink behavior as opt-in followExternalSymlinks
-
[`64511ce`](https://redirect.github.com/filebrowser/filebrowser/commit/64511ce45e3be379e965f7f4fb0929a068d5bb81)
fix: dangling symlink, write, delete scope bugs

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9maWxlYnJvd3NlciIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvcGF0Y2giXX0=-->
2026-06-23 14:40:42 +00:00
TrueCharts Bot 1bc2b036cc fix(strapi): update image docker.io/vshadbolt/strapi 5.48.0 → 5.48.1 (#49400) 2026-06-23 16:40:39 +02:00
TrueCharts Bot caf12eb7d6 chore(wordpress): update image docker.io/bitnamisecure/wordpress digest to 9db722f (#49395) 2026-06-23 16:40:28 +02:00
TrueCharts Bot a1664dd70f chore(webtop): update webtop (#49394)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| lscr.io/linuxserver/webtop | digest | `2b28b63` → `12a8db6` |
| lscr.io/linuxserver/webtop | digest | `e4cb336` → `e610161` |
| lscr.io/linuxserver/webtop | digest | `5c96055` → `a7d334c` |
| lscr.io/linuxserver/webtop | digest | `fe38510` → `fdd1160` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.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 [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC93ZWJ0b3AiLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL2RpZ2VzdCJdfQ==-->
2026-06-23 16:40:27 +02:00
TrueCharts Bot 88ffb70839 fix(flexget): update image docker.io/wiserain/flexget 3.19.24 → 3.19.25 (#49397)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/wiserain/flexget](https://redirect.github.com/linuxserver/docker-baseimage-alpine/packages)
([source](https://redirect.github.com/wiserain/docker-flexget)) | patch
| `3036996` → `c48712d` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9mbGV4Z2V0IiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9wYXRjaCJdfQ==-->
2026-06-23 16:40:11 +02:00
TrueCharts Bot 5ccdaa02e1 feat(n8n): update image ghcr.io/n8n-io/n8n 2.27.3 → 2.28.0 (#49403)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/n8n-io/n8n](https://n8n.io)
([source](https://redirect.github.com/n8n-io/n8n)) | minor | `a772d24` →
`ddd2afb` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>n8n-io/n8n (ghcr.io/n8n-io/n8n)</summary>

###
[`v2.28.0`](https://redirect.github.com/n8n-io/n8n/blob/HEAD/CHANGELOG.md#2280-2026-06-23)

##### Bug Fixes

- **API:** Return 409 when deleting a published workflow
([#&#8203;32600](https://redirect.github.com/n8n-io/n8n/issues/32600))
([1f774c8](https://redirect.github.com/n8n-io/n8n/commit/1f774c8ea1a5550d6ba680cdc60190e2f7b210c9))
- **Bitbucket Trigger Node:** Use account\_id to validate credentials
instead of username
([#&#8203;30172](https://redirect.github.com/n8n-io/n8n/issues/30172))
([5dc9c45](https://redirect.github.com/n8n-io/n8n/commit/5dc9c45adc4a82f74300a305a4240949e03a807a))
- Bump form-data, tmp, protobufjs to patched versions
([#&#8203;32436](https://redirect.github.com/n8n-io/n8n/issues/32436))
([a1cfd14](https://redirect.github.com/n8n-io/n8n/commit/a1cfd14de29540efa4386b10c2cccdb1439b9bba))
- Bump protobufjs, js-yaml,
[@&#8203;opentelemetry/core](https://redirect.github.com/opentelemetry/core)
for nightly Trivy
([#&#8203;32542](https://redirect.github.com/n8n-io/n8n/issues/32542))
([2dac96d](https://redirect.github.com/n8n-io/n8n/commit/2dac96d6edc3d2a1f841e5506858b810180318c4))
- Cap ci-filter deepen value and fall back to --unshallow
([#&#8203;32581](https://redirect.github.com/n8n-io/n8n/issues/32581))
([af563c6](https://redirect.github.com/n8n-io/n8n/commit/af563c69b2b02598a52caef52a3de36f1e9a2cc0))
- **Compression Node:** Decompress only the archive members
([#&#8203;32486](https://redirect.github.com/n8n-io/n8n/issues/32486))
([cafc64c](https://redirect.github.com/n8n-io/n8n/commit/cafc64cc082de2092681c27a9d3f91eaf735e9dd))
- **core:** Account for pending CSV uploads in data-table size budget
([#&#8203;31394](https://redirect.github.com/n8n-io/n8n/issues/31394))
([e4757d2](https://redirect.github.com/n8n-io/n8n/commit/e4757d25843e4d27727e7c19576605100315abf0))
- **core:** Change default value of the COOP header
([#&#8203;32377](https://redirect.github.com/n8n-io/n8n/issues/32377))
([b94ff9b](https://redirect.github.com/n8n-io/n8n/commit/b94ff9b47a953ea25542cecc4867873ca6ae0a51))
- **core:** Clean up workflow publication outbox records
([#&#8203;32795](https://redirect.github.com/n8n-io/n8n/issues/32795))
([900c0ea](https://redirect.github.com/n8n-io/n8n/commit/900c0eae4f88294ab7a0d4bd66d8d4ba46ca68c3))
- **core:** Coalesce outbox drains and wait for in-flight processing on
shutdown
([#&#8203;32548](https://redirect.github.com/n8n-io/n8n/issues/32548))
([7230fa3](https://redirect.github.com/n8n-io/n8n/commit/7230fa38406af446d19a5a478369c95384d77f21))
- **core:** Drive workflow folder placement through validated
parentFolderId
([#&#8203;31364](https://redirect.github.com/n8n-io/n8n/issues/31364))
([0f1c1a8](https://redirect.github.com/n8n-io/n8n/commit/0f1c1a82a431d6e4e460018370fa5ebcc9935660))
- **core:** Evaluate expressions in AI tool description for node-as-to…
([#&#8203;31495](https://redirect.github.com/n8n-io/n8n/issues/31495))
([beba723](https://redirect.github.com/n8n-io/n8n/commit/beba723a8888a761fe349a54cc63d6131cd12b86))
- **core:** Exclude error workflow executions from billable execution
count
([#&#8203;32315](https://redirect.github.com/n8n-io/n8n/issues/32315))
([f6c2bcc](https://redirect.github.com/n8n-io/n8n/commit/f6c2bcc6ecd623c3c39eef8b43d388ab6d353a51))
- **core:** Fix error path schema mismatch in mcp tools
([#&#8203;32560](https://redirect.github.com/n8n-io/n8n/issues/32560))
([c91250f](https://redirect.github.com/n8n-io/n8n/commit/c91250f2a733b83dc16fbc05f452e4f8f962d6d1))
- **core:** Handle malformed agent tool calls
([#&#8203;32276](https://redirect.github.com/n8n-io/n8n/issues/32276))
([285e4a9](https://redirect.github.com/n8n-io/n8n/commit/285e4a983a80b00e3b53f7e7d71f166102921ac1))
- **core:** Implement workflow-folder-conflict handling in import
process
([#&#8203;32391](https://redirect.github.com/n8n-io/n8n/issues/32391))
([97f45cc](https://redirect.github.com/n8n-io/n8n/commit/97f45ccc7f7d3c5f41db06abd32d38526d3d57b7))
- **core:** Keep $fromAI placeholders intact on fields with expressions
disabled
([#&#8203;31681](https://redirect.github.com/n8n-io/n8n/issues/31681))
([43eec00](https://redirect.github.com/n8n-io/n8n/commit/43eec00e6bf6e971737e082ec21a42402f6596c3))
- **core:** Keep thread history when observation cursor lacks
observations
([#&#8203;32773](https://redirect.github.com/n8n-io/n8n/issues/32773))
([0197817](https://redirect.github.com/n8n-io/n8n/commit/01978171efbc3bed64bd91255446e4575de7cb71))
- **core:** Let allowlisted Python packages import their own submodules
via relative imports
([#&#8203;32772](https://redirect.github.com/n8n-io/n8n/issues/32772))
([46aa8e4](https://redirect.github.com/n8n-io/n8n/commit/46aa8e4af77615f682fc619e3fe6e80eabbec814))
- **core:** Limit execution data size for display reads
([#&#8203;32508](https://redirect.github.com/n8n-io/n8n/issues/32508))
([524d4e8](https://redirect.github.com/n8n-io/n8n/commit/524d4e8fb8443da5d8f996b625be31ebd97f54db))
- **core:** Make workflow evaluations work alongside config evals
([#&#8203;32384](https://redirect.github.com/n8n-io/n8n/issues/32384))
([19eeb5e](https://redirect.github.com/n8n-io/n8n/commit/19eeb5edbd67239a27ab781ce109eb607ff1dc13))
- **core:** Negotiate token\_endpoint\_auth\_method during MCP OAuth2
DCR
([#&#8203;32289](https://redirect.github.com/n8n-io/n8n/issues/32289))
([734af04](https://redirect.github.com/n8n-io/n8n/commit/734af045c58fd1bd8e537930d69aca071a11e5ce))
- **core:** Persist run data for Instance AI trigger executions in queue
mode
([#&#8203;32498](https://redirect.github.com/n8n-io/n8n/issues/32498))
([db1e21f](https://redirect.github.com/n8n-io/n8n/commit/db1e21fecf089e3027790104934c7efebec4f51d))
- **core:** Prevent assigning unusable credentials in mcp
([#&#8203;32353](https://redirect.github.com/n8n-io/n8n/issues/32353))
([7ddde95](https://redirect.github.com/n8n-io/n8n/commit/7ddde951cc15907b6ac8fc0b9fe046e9d8de66a8))
- **core:** Propagate execution context to sub-workflow tools
([#&#8203;32577](https://redirect.github.com/n8n-io/n8n/issues/32577))
([09f5888](https://redirect.github.com/n8n-io/n8n/commit/09f588857a7e6ace41e179604fab16dc11d8c380))
- **core:** Propagate stop signal to sub-workflow executions on workers
in queue mode
([#&#8203;32206](https://redirect.github.com/n8n-io/n8n/issues/32206))
([ae7f699](https://redirect.github.com/n8n-io/n8n/commit/ae7f699d7814b25cf0a15de53045194d4c391e9d))
- **core:** Request protected-resource scopes during MCP OAuth2 DCR
([#&#8203;32300](https://redirect.github.com/n8n-io/n8n/issues/32300))
([e8ee370](https://redirect.github.com/n8n-io/n8n/commit/e8ee370d7085ba94fd2e2eba6ab6cb254daa351f))
- **core:** Resolve duplicate generated schema fields
([#&#8203;32275](https://redirect.github.com/n8n-io/n8n/issues/32275))
([94594e3](https://redirect.github.com/n8n-io/n8n/commit/94594e3e42b760eb3bb24745f8af087dedf11f7f))
- **core:** Save Instance AI workflow edits through workspace files
([#&#8203;32545](https://redirect.github.com/n8n-io/n8n/issues/32545))
([1e80d41](https://redirect.github.com/n8n-io/n8n/commit/1e80d41e7e19ab0b57a913406fcaaa4127643856))
- **core:** Shorten private-credential OAuth authorization links
([#&#8203;32584](https://redirect.github.com/n8n-io/n8n/issues/32584))
([c1582a6](https://redirect.github.com/n8n-io/n8n/commit/c1582a62a038f7f404cc57907b3afe9ca811f9d6))
- **core:** Stop re-asking answered or skipped clarifying questions
([#&#8203;32755](https://redirect.github.com/n8n-io/n8n/issues/32755))
([9ce241b](https://redirect.github.com/n8n-io/n8n/commit/9ce241b8bf94f3453ab0334f1977382f3b28b441))
- **core:** Support v4 and v5 schemas for strapi consumers
([#&#8203;32559](https://redirect.github.com/n8n-io/n8n/issues/32559))
([d6758db](https://redirect.github.com/n8n-io/n8n/commit/d6758db95b7040f9009728d116235dd3964604be))
- **core:** Surface form submission errors instead of failing silently
([#&#8203;32305](https://redirect.github.com/n8n-io/n8n/issues/32305))
([60ac614](https://redirect.github.com/n8n-io/n8n/commit/60ac61402afef4a168d910086626b0a1f8ed597d))
- **core:** Suspend query acquisition during database connection
recovery
([#&#8203;32394](https://redirect.github.com/n8n-io/n8n/issues/32394))
([7440fca](https://redirect.github.com/n8n-io/n8n/commit/7440fca5a3e447648a1cd6c3035377c822dee661))
- **core:** Time out stalled HTTP response body reads
([#&#8203;32411](https://redirect.github.com/n8n-io/n8n/issues/32411))
([50887bf](https://redirect.github.com/n8n-io/n8n/commit/50887bf77e04df1c0da57cfab8c50cde5a737851))
- **core:** Upgrade
[@&#8203;n8n](https://redirect.github.com/n8n)\_io/license-sdk to v3 and
resolve node-rsa to v2
([#&#8203;32552](https://redirect.github.com/n8n-io/n8n/issues/32552))
([ebbd629](https://redirect.github.com/n8n-io/n8n/commit/ebbd629a6a7a8ef7e5e5b0bf498ccb224cccf283))
- **editor:** Clamp and truncate long workflow descriptions in MCP
settings
([#&#8203;32104](https://redirect.github.com/n8n-io/n8n/issues/32104))
([b953709](https://redirect.github.com/n8n-io/n8n/commit/b953709db074535ec7eefcb4c47921bb851d79ef))
- **editor:** Hide function info-box tooltip while typing arguments
([#&#8203;32371](https://redirect.github.com/n8n-io/n8n/issues/32371))
([59971c8](https://redirect.github.com/n8n-io/n8n/commit/59971c86c4154c3343a6fb578661394ecbc96f8f))
- **editor:** Hide template setup button when only disabled nodes lack
credentials
([#&#8203;32625](https://redirect.github.com/n8n-io/n8n/issues/32625))
([801bd5f](https://redirect.github.com/n8n-io/n8n/commit/801bd5f417220c3f417889bf734a6e6a3dde5f1b))
- **editor:** Polish API key scope picker radio alignment, contrast and
form spacing
([#&#8203;32420](https://redirect.github.com/n8n-io/n8n/issues/32420))
([229560e](https://redirect.github.com/n8n-io/n8n/commit/229560e3bc1e1cf3ebe4eae5ef65c9e89dc48e35))
- **editor:** Preserve existing node IDs when AI edits a workflow
([#&#8203;32593](https://redirect.github.com/n8n-io/n8n/issues/32593))
([cbb9ae5](https://redirect.github.com/n8n-io/n8n/commit/cbb9ae5bda20b922f352be893ee1f3930bb38a1e))
- **editor:** Prevent autosave failure loop after AI builder modifies a
workflow
([#&#8203;32558](https://redirect.github.com/n8n-io/n8n/issues/32558))
([4821bed](https://redirect.github.com/n8n-io/n8n/commit/4821bede64075fd19fd682e7a777e481b9aa3b3d))
- **editor:** Prevent drag and drop of a folder onto itself
([#&#8203;31510](https://redirect.github.com/n8n-io/n8n/issues/31510))
([4f8af4d](https://redirect.github.com/n8n-io/n8n/commit/4f8af4dd5f7207b4cac922010f2069b8bc67bb89))
- **editor:** Show a rejection screen when the OAuth consent target is
unavailable
([#&#8203;32594](https://redirect.github.com/n8n-io/n8n/issues/32594))
([2c3c67f](https://redirect.github.com/n8n-io/n8n/commit/2c3c67f3da478958748ca1071f3bc88ec74902f6))
- **editor:** Show rotated API keys in the create modal and outline the
read-only Close button
([#&#8203;32480](https://redirect.github.com/n8n-io/n8n/issues/32480))
([31e8ddc](https://redirect.github.com/n8n-io/n8n/commit/31e8ddc01696e94548103499615b33af1fd4f492))
- **editor:** Widen callable subworkflow list using callerPolicy in
workflow picker
([#&#8203;32522](https://redirect.github.com/n8n-io/n8n/issues/32522))
([f105b34](https://redirect.github.com/n8n-io/n8n/commit/f105b34281a664cbf3d19a87bfe1645a27992201))
- **editor:** Wrap long unbroken strings in tooltip
([#&#8203;32345](https://redirect.github.com/n8n-io/n8n/issues/32345))
([a0b35d5](https://redirect.github.com/n8n-io/n8n/commit/a0b35d553a81d26b425e198cf414d5faaa303f59))
- Extract inline run-report attachments before aggregating sizing
([#&#8203;32799](https://redirect.github.com/n8n-io/n8n/issues/32799))
([c8a3a3c](https://redirect.github.com/n8n-io/n8n/commit/c8a3a3ce3d1b366f3d68f37f536d56bd25f4eb41))
- Fix 26 security issues in electron, axios, undici and 5 more
([#&#8203;32688](https://redirect.github.com/n8n-io/n8n/issues/32688))
([c7fcbb7](https://redirect.github.com/n8n-io/n8n/commit/c7fcbb7a721867c05291466690e44ccfb04ebce0))
- **Form Node:** Evaluate expressions in form fields on subsequent pages
([#&#8203;32352](https://redirect.github.com/n8n-io/n8n/issues/32352))
([35adffa](https://redirect.github.com/n8n-io/n8n/commit/35adffad4b54405041376c1437d94bd1b96db742))
- **Form Trigger Node:** Add default value for authentication parameter
to prevent crash on old workflows
([#&#8203;32627](https://redirect.github.com/n8n-io/n8n/issues/32627))
([940f389](https://redirect.github.com/n8n-io/n8n/commit/940f389c6fe8cd2e12942a3ebcaa753e5497900e))
- Handle HTTP raw body validation loops
([#&#8203;32277](https://redirect.github.com/n8n-io/n8n/issues/32277))
([d5dd492](https://redirect.github.com/n8n-io/n8n/commit/d5dd4923a5f2544def3ed2886b60343bbd5b5155))
- Hides preview suggestions on smaller screens due to lack of space
([#&#8203;32444](https://redirect.github.com/n8n-io/n8n/issues/32444))
([ad298e7](https://redirect.github.com/n8n-io/n8n/commit/ad298e7c90d1148b19d6ce8dd28ea9664b57c763))
- **HTTP Request Node:** Preserve all repeated query parameters in cURL
import
([#&#8203;32253](https://redirect.github.com/n8n-io/n8n/issues/32253))
([8b01aac](https://redirect.github.com/n8n-io/n8n/commit/8b01aac65c386fb7f1ee956623ae0ff33a501913))
- **Kafka Node:** Route Schema Registry client through configurable
egress protection
([#&#8203;32370](https://redirect.github.com/n8n-io/n8n/issues/32370))
([f19d744](https://redirect.github.com/n8n-io/n8n/commit/f19d7448b1a527c4743a114e6d8953e686028f3b))
- **Kafka Trigger Node:** Surface consumer errors instead of waiting
indefinitely
([#&#8203;32642](https://redirect.github.com/n8n-io/n8n/issues/32642))
([30b2127](https://redirect.github.com/n8n-io/n8n/commit/30b21277312f844eaa9fd46eead8db53a85ab976))
- Make QA metrics telemetry truly fire-and-forget
([#&#8203;32597](https://redirect.github.com/n8n-io/n8n/issues/32597))
([6e8a7fc](https://redirect.github.com/n8n-io/n8n/commit/6e8a7fcd2d13660f1e3570b28aedef962ef1af88))
- **Microsoft OneDrive Node:** Validate upload file name to replace
misleading Graph error
([#&#8203;32470](https://redirect.github.com/n8n-io/n8n/issues/32470))
([f998a1f](https://redirect.github.com/n8n-io/n8n/commit/f998a1f3869d679f9c26ab2108aa1ff4907c79f8))
- **Nextcloud Node:** Fix broken user actions and folder sharing, add
internal link share type
([#&#8203;32002](https://redirect.github.com/n8n-io/n8n/issues/32002))
([3767449](https://redirect.github.com/n8n-io/n8n/commit/37674499b0a12211e5221f97601fa434a7451276))
- Prompt to save before manual run with autosave disabled
([#&#8203;32513](https://redirect.github.com/n8n-io/n8n/issues/32513))
([2124c08](https://redirect.github.com/n8n-io/n8n/commit/2124c08c050ac0c4adf996c9e7f128debd3dc2e1))
- RedactValues throws TypeError on null-valued credential fields
([#&#8203;32804](https://redirect.github.com/n8n-io/n8n/issues/32804))
([7ebd0cf](https://redirect.github.com/n8n-io/n8n/commit/7ebd0cf2c5866d95d16a30d86a3c18557a29b233))
- Removes phantom telemetry profile caused by missing user id fallback
([#&#8203;32344](https://redirect.github.com/n8n-io/n8n/issues/32344))
([ef148c6](https://redirect.github.com/n8n-io/n8n/commit/ef148c6cabaf2f4df1f78fa17c31ae5efa148b4c))
- **Salesforce Node:** Reuse JWT session token across requests
([#&#8203;32325](https://redirect.github.com/n8n-io/n8n/issues/32325))
([0e4d2c3](https://redirect.github.com/n8n-io/n8n/commit/0e4d2c3bdbac6cccdb776c6cb324b29ba3f44924))
- **Slack Node:** Handle missing response property in pagination
([#&#8203;32328](https://redirect.github.com/n8n-io/n8n/issues/32328))
([d673064](https://redirect.github.com/n8n-io/n8n/commit/d6730644fa789f7b76780053036bf67973472d03))
- Stop a timed-out background AI builder from respawning itself
([#&#8203;32630](https://redirect.github.com/n8n-io/n8n/issues/32630))
([8c96484](https://redirect.github.com/n8n-io/n8n/commit/8c9648496d1616e16cc32fde06b3e54ccfa082fd))
- Suggest the configured AI provider's chat model when building
workflows
([#&#8203;32634](https://redirect.github.com/n8n-io/n8n/issues/32634))
([b294e3d](https://redirect.github.com/n8n-io/n8n/commit/b294e3d51a04d8d8f84565fad1a23b064c3023be))

##### Features

- Add concurrency field to sizing-matrix Topology
([#&#8203;32767](https://redirect.github.com/n8n-io/n8n/issues/32767))
([1c75eb6](https://redirect.github.com/n8n-io/n8n/commit/1c75eb6c25ea88ad32b35a9106e1fcc66a2e33a7))
- Add successful executions to evaluation dataset
([#&#8203;32308](https://redirect.github.com/n8n-io/n8n/issues/32308))
([713094c](https://redirect.github.com/n8n-io/n8n/commit/713094c7ebd41ad7238d84becc581938aeb44a7a))
- **AI Agent Node:** Add binary PDF passthrough for models with native
PDF support
([#&#8203;28038](https://redirect.github.com/n8n-io/n8n/issues/28038))
([64c337b](https://redirect.github.com/n8n-io/n8n/commit/64c337bba8c9c03f52d08045fce107eb1e3a3ead))
- **API:** Use scope checks instead of system roles for resource access
([#&#8203;32769](https://redirect.github.com/n8n-io/n8n/issues/32769))
([908bab7](https://redirect.github.com/n8n-io/n8n/commit/908bab7bccb354c49d27ae47c02a4efdf7856092))
- **AWS Transcribe Node:** Add AWS Assume Role authentication
([#&#8203;32017](https://redirect.github.com/n8n-io/n8n/issues/32017))
([038b623](https://redirect.github.com/n8n-io/n8n/commit/038b623a1dc51051f11a5d70d89191909f99ca11))
- **Compression Node:** Add tar and tar.gz support
([#&#8203;32547](https://redirect.github.com/n8n-io/n8n/issues/32547))
([d595631](https://redirect.github.com/n8n-io/n8n/commit/d595631d60fd7403dbd78bce9fa0f0ca414e541e))
- **core:** Add 'workflows-imported' logstreaming event
([#&#8203;32488](https://redirect.github.com/n8n-io/n8n/issues/32488))
([70d4a67](https://redirect.github.com/n8n-io/n8n/commit/70d4a676af896ae95ddde56c9105c2671e39e01d))
- **core:** Add agent heartbeat session metrics
([#&#8203;32732](https://redirect.github.com/n8n-io/n8n/issues/32732))
([fd2cf90](https://redirect.github.com/n8n-io/n8n/commit/fd2cf90a81446116cbe531d1b0a50e0891725488))
- **core:** Add Azure storage mode for execution data
([#&#8203;32368](https://redirect.github.com/n8n-io/n8n/issues/32368))
([1d6415c](https://redirect.github.com/n8n-io/n8n/commit/1d6415cd594403d2271ff52d14effa7977430f11))
- **core:** Add Instance AI error correlation and structured
observability
([#&#8203;32400](https://redirect.github.com/n8n-io/n8n/issues/32400))
([f53a648](https://redirect.github.com/n8n-io/n8n/commit/f53a64824c6e6981837902278d4ed6b7652b3ad6))
- **core:** Add knowledge file storage for agents
([#&#8203;31956](https://redirect.github.com/n8n-io/n8n/issues/31956))
([3ae74f1](https://redirect.github.com/n8n-io/n8n/commit/3ae74f10b0169c07dba06f4c26b6e940b4343138))
- **core:** Add knowledge retrieval tools for agents
([#&#8203;32485](https://redirect.github.com/n8n-io/n8n/issues/32485))
([8e5dd83](https://redirect.github.com/n8n-io/n8n/commit/8e5dd83e3b8554448fa50285a7dc1a92b63fc066))
- **core:** Add node-class-description-name-camelcase community node
lint rule
([#&#8203;32443](https://redirect.github.com/n8n-io/n8n/issues/32443))
([fb16f72](https://redirect.github.com/n8n-io/n8n/commit/fb16f724a3eb0f0829413b9fb482e4ca41918ced))
- **core:** Add prometheus metrics for detailed metrics on webhook &
form workflows
([#&#8203;32251](https://redirect.github.com/n8n-io/n8n/issues/32251))
([b9e7729](https://redirect.github.com/n8n-io/n8n/commit/b9e7729ad658e33b1c705e5c30955b37c720bfa8))
- **core:** Add Prometheus metrics for Instance AI runs
([#&#8203;32489](https://redirect.github.com/n8n-io/n8n/issues/32489))
([4218e1b](https://redirect.github.com/n8n-io/n8n/commit/4218e1b0174244db87b92b15eaa466d1e4530892))
- **core:** Add redirect URLs allow lists to MCP server
([#&#8203;24739](https://redirect.github.com/n8n-io/n8n/issues/24739))
([b513f54](https://redirect.github.com/n8n-io/n8n/commit/b513f54fbec39384d35ad3366a9da80a24ded613))
- **core:** Add support for 'create-stub' mode in credential handling…
([#&#8203;32507](https://redirect.github.com/n8n-io/n8n/issues/32507))
([6b453d9](https://redirect.github.com/n8n-io/n8n/commit/6b453d96b18f50abb89c9b06444be0cecf466096))
- **core:** Enable creation of custom instance (global) roles
([#&#8203;32590](https://redirect.github.com/n8n-io/n8n/issues/32590))
([e60bb4b](https://redirect.github.com/n8n-io/n8n/commit/e60bb4bd0e6e893c67a36bc1efd982765c28b751))
- **core:** Enable scheduled execution deduplication by default
([#&#8203;32533](https://redirect.github.com/n8n-io/n8n/issues/32533))
([dcbdb10](https://redirect.github.com/n8n-io/n8n/commit/dcbdb10a2bb0f3cf7cb164ffa7cedc7e24f520de))
- **core:** Enable thinking modes for instance ai
([#&#8203;32768](https://redirect.github.com/n8n-io/n8n/issues/32768))
([c8e4c76](https://redirect.github.com/n8n-io/n8n/commit/c8e4c7606a7a7f0b5f6a6300a4fdbe911fceb899))
- **core:** Expand secret redaction patterns (JWT, PEM keys, vendor
tokens, URL creds)
([#&#8203;32440](https://redirect.github.com/n8n-io/n8n/issues/32440))
([f815269](https://redirect.github.com/n8n-io/n8n/commit/f815269228107a2500a71dca2b9cadc047cf3d39))
- **core:** Gate MCP tool calls on the caller's private-credential
status
([#&#8203;32446](https://redirect.github.com/n8n-io/n8n/issues/32446))
([8cac6e7](https://redirect.github.com/n8n-io/n8n/commit/8cac6e7261b5b66adae2aee456eb8d45305de43d))
- **core:** Make MCP and OAuth server IP rate limits configurable via
environment variables
([#&#8203;32203](https://redirect.github.com/n8n-io/n8n/issues/32203))
([b34ab3b](https://redirect.github.com/n8n-io/n8n/commit/b34ab3b34d872aa2ba22c4fec21f3936594f066b))
- **core:** OpenAI Responses API support for agent pdf passthrough
([#&#8203;32604](https://redirect.github.com/n8n-io/n8n/issues/32604))
([ade94af](https://redirect.github.com/n8n-io/n8n/commit/ade94af96a10e84cf7ff09f8eb153dce53c02ff6))
- **core:** Prioritize workflow as code over json
([#&#8203;32668](https://redirect.github.com/n8n-io/n8n/issues/32668))
([e11e0b1](https://redirect.github.com/n8n-io/n8n/commit/e11e0b122c6ccee7ed940cdfbaaaa6de34b785ca))
- **core:** Reduce templates complexity in KB
([#&#8203;32694](https://redirect.github.com/n8n-io/n8n/issues/32694))
([9341fdb](https://redirect.github.com/n8n-io/n8n/commit/9341fdb202c35c6bf73b618b9baaa1e3aed022a0))
- **core:** Resolve the triggering user's private credentials over MCP
OAuth
([#&#8203;32432](https://redirect.github.com/n8n-io/n8n/issues/32432))
([d6cc6c6](https://redirect.github.com/n8n-io/n8n/commit/d6cc6c655e2911248db5c1d31101a980642be95f))
- **core:** Show required scope badge on Swagger UI operations
([#&#8203;32240](https://redirect.github.com/n8n-io/n8n/issues/32240))
([58ba32d](https://redirect.github.com/n8n-io/n8n/commit/58ba32d94e1ae2b7d6c9f4eaa4146b51259caffe))
- **core:** Support MCP tool filtering for Instance AI MCP connections
([#&#8203;31836](https://redirect.github.com/n8n-io/n8n/issues/31836))
([7a3a190](https://redirect.github.com/n8n-io/n8n/commit/7a3a190d37d602e895e583963a6b46f7e574ac65))
- **core:** Update credential handling in workflows-imported event
([#&#8203;32794](https://redirect.github.com/n8n-io/n8n/issues/32794))
([95a7532](https://redirect.github.com/n8n-io/n8n/commit/95a75320ced1c628f208c9aea95108ba3702ed16))
- Derive picker coverage map from ledger in build-matrix
([#&#8203;32721](https://redirect.github.com/n8n-io/n8n/issues/32721))
([33d38e3](https://redirect.github.com/n8n-io/n8n/commit/33d38e3c1142b902c9b49a7fbf6d430df1259774))
- **editor:** Add owner filter to API keys "All" tab
([#&#8203;32430](https://redirect.github.com/n8n-io/n8n/issues/32430))
([888be28](https://redirect.github.com/n8n-io/n8n/commit/888be2835f1f3dbc8958237d62117e8779db5ec2))
- **editor:** Add Roles settings area with instance roles tab
([#&#8203;32775](https://redirect.github.com/n8n-io/n8n/issues/32775))
([3983a48](https://redirect.github.com/n8n-io/n8n/commit/3983a487a202220bb19230a97526e943172a07e4))
- **editor:** Add rotate action for API keys
([#&#8203;32342](https://redirect.github.com/n8n-io/n8n/issues/32342))
([44d9f3d](https://redirect.github.com/n8n-io/n8n/commit/44d9f3ddf8816529c9c5604947b699ad103ce161))
- **editor:** Improve credential saving UX for OAuth credentials
([#&#8203;32653](https://redirect.github.com/n8n-io/n8n/issues/32653))
([d52762f](https://redirect.github.com/n8n-io/n8n/commit/d52762f6c949a204cd58030c921469c85bce1a7f))
- **editor:** Investigate failed executions on Instance AI editor
hand-offs
([#&#8203;32675](https://redirect.github.com/n8n-io/n8n/issues/32675))
([504b282](https://redirect.github.com/n8n-io/n8n/commit/504b2826dc22c867ce68f43c0097a23aaae4a102))
- **editor:** Open the current workflow and credentials in Instance AI
from the editor
([#&#8203;32398](https://redirect.github.com/n8n-io/n8n/issues/32398))
([b1687ef](https://redirect.github.com/n8n-io/n8n/commit/b1687ef015f844eb7854864a84473305eeed03c9))
- **editor:** Redesign API key scope picker with grouped tree
([#&#8203;32167](https://redirect.github.com/n8n-io/n8n/issues/32167))
([f6afb39](https://redirect.github.com/n8n-io/n8n/commit/f6afb3933a1ed086b11294fb1bfe298434375969))
- **editor:** Rename n8n Connect usage table header from Model to
Resource
([#&#8203;32448](https://redirect.github.com/n8n-io/n8n/issues/32448))
([ade2de9](https://redirect.github.com/n8n-io/n8n/commit/ade2de9c30aab0fb04cf2458271de03db859a2e6))
- **editor:** Render the workflow execution preview natively instead of
in an iframe
([#&#8203;32296](https://redirect.github.com/n8n-io/n8n/issues/32296))
([23fb6b9](https://redirect.github.com/n8n-io/n8n/commit/23fb6b977103ea0c7eedb91f7ff0ca6476e7ccd2))
- **editor:** Render workflow history and template previews natively
([#&#8203;32468](https://redirect.github.com/n8n-io/n8n/issues/32468))
([5582bb2](https://redirect.github.com/n8n-io/n8n/commit/5582bb2604839cad564b0d6d09b0757354fb86cf))
- **editor:** Surface execution data size in the executions view
([#&#8203;32505](https://redirect.github.com/n8n-io/n8n/issues/32505))
([084a6d6](https://redirect.github.com/n8n-io/n8n/commit/084a6d614867751ba30f8d930903dfc5c7effd75))
- **GitHub Node:** Add Pull Request resource with create, update, merge,
comments, diff and patch
([#&#8203;32261](https://redirect.github.com/n8n-io/n8n/issues/32261))
([86db3e4](https://redirect.github.com/n8n-io/n8n/commit/86db3e4a42d7053c2f27ec929a12b2ee5a571394))
- **Google Ads Node:** Upgrade API from v20 to v21
([#&#8203;32712](https://redirect.github.com/n8n-io/n8n/issues/32712))
([b91492d](https://redirect.github.com/n8n-io/n8n/commit/b91492d9bd6e56f73becc18505da039ee9df8fbe))
- **Google Calendar Node:** Allow custom OAuth2 scopes
([#&#8203;32661](https://redirect.github.com/n8n-io/n8n/issues/32661))
([7e37945](https://redirect.github.com/n8n-io/n8n/commit/7e37945ad9a233f2d3608500f9e4c50d5ef87a3c))
- **Google Cloud Storage Node:** Allow custom OAuth2 scopes
([#&#8203;32659](https://redirect.github.com/n8n-io/n8n/issues/32659))
([0369d40](https://redirect.github.com/n8n-io/n8n/commit/0369d407191f606dcb4e5daa64ecc868a8f24139))
- **Google Sheets Node:** Allow custom OAuth2 scopes
([#&#8203;32660](https://redirect.github.com/n8n-io/n8n/issues/32660))
([9158556](https://redirect.github.com/n8n-io/n8n/commit/9158556730db27cba790e473062fb39ec4631aa8))
- **Google Sheets Trigger Node:** Add Service Account credential support
([#&#8203;32312](https://redirect.github.com/n8n-io/n8n/issues/32312))
([7b9ba29](https://redirect.github.com/n8n-io/n8n/commit/7b9ba29b147cced759d483d80d3c07223f83b596))
- **instance-ai:** Simulate destructive and user-action nodes during
workflow verification
([#&#8203;32209](https://redirect.github.com/n8n-io/n8n/issues/32209))
([f4a1ab6](https://redirect.github.com/n8n-io/n8n/commit/f4a1ab6d99cb3d7570379a873faf81d0a133212f))
- **LoneScale Node:** Add Contact (enrich, source) and Company (search)
resources
([#&#8203;32009](https://redirect.github.com/n8n-io/n8n/issues/32009))
([63f464d](https://redirect.github.com/n8n-io/n8n/commit/63f464dacf0c3965147cce458a92f55975ed1e85))
- **Microsoft Excel 365 Node:** Accept the generic Microsoft OAuth2
(Graph) credential
([#&#8203;32434](https://redirect.github.com/n8n-io/n8n/issues/32434))
([e2c59a5](https://redirect.github.com/n8n-io/n8n/commit/e2c59a5a15f79d33bdb051fea856d5b9f1f78f75))
- **Microsoft Graph Security Node:** Support authenticating with the
generic Microsoft OAuth2 credential
([#&#8203;32529](https://redirect.github.com/n8n-io/n8n/issues/32529))
([c2a006a](https://redirect.github.com/n8n-io/n8n/commit/c2a006aab899239b4b10495520814119a8a0fca3))
- **Microsoft Outlook Node:** Accept the generic Microsoft OAuth2
(Graph) credential
([#&#8203;32531](https://redirect.github.com/n8n-io/n8n/issues/32531))
([76d9c93](https://redirect.github.com/n8n-io/n8n/commit/76d9c936a2f45e3904610cf7ae6ec5d306e2c48c))
- **Microsoft Teams Node:** Accept the generic Microsoft OAuth2 (Graph)
credential
([#&#8203;32455](https://redirect.github.com/n8n-io/n8n/issues/32455))
([93c3c2f](https://redirect.github.com/n8n-io/n8n/commit/93c3c2fb9edf5ea207dc78e5f39f099a3deb6cee))
- **Microsoft To Do Node:** Accept the generic Microsoft OAuth2 (Graph)
credential
([#&#8203;32492](https://redirect.github.com/n8n-io/n8n/issues/32492))
([02b2013](https://redirect.github.com/n8n-io/n8n/commit/02b2013aaa76727dd63708f6f464cc4a17f4df15))
- **Microsoft To Do Node:** Allow custom OAuth2 scopes
([#&#8203;32538](https://redirect.github.com/n8n-io/n8n/issues/32538))
([ad8faa6](https://redirect.github.com/n8n-io/n8n/commit/ad8faa66faae64e896972114720cb6f1dce80485))
- **Phantombuster Node:** Add Launch Sync operation
([#&#8203;31101](https://redirect.github.com/n8n-io/n8n/issues/31101))
([2e76cf3](https://redirect.github.com/n8n-io/n8n/commit/2e76cf3b8791b315d871e4364e716a3a4b591138))
- Refactor agent runtime
([#&#8203;32293](https://redirect.github.com/n8n-io/n8n/issues/32293))
([30224e9](https://redirect.github.com/n8n-io/n8n/commit/30224e9a4158a130c70427210c92f95ac81b3d17))
- Settings for MCP Registry server usage in Instance AI
([#&#8203;31692](https://redirect.github.com/n8n-io/n8n/issues/31692))
([097f683](https://redirect.github.com/n8n-io/n8n/commit/097f6837cb77016701474389fe27a7095f1ca876))
- Surface MCP registry connections in the Instance AI sidebar
([#&#8203;31748](https://redirect.github.com/n8n-io/n8n/issues/31748))
([675e5e8](https://redirect.github.com/n8n-io/n8n/commit/675e5e86f6edce89cdbd394fc44637fad7737bd0))
- **Telegram Node:** Add rich message and message draft operations
([#&#8203;32173](https://redirect.github.com/n8n-io/n8n/issues/32173))
([a970e34](https://redirect.github.com/n8n-io/n8n/commit/a970e34ae40e35da423d76b19b874b5491834420))
- **Webhook Node:** Add "Only Run If" option to filter requests
([#&#8203;28872](https://redirect.github.com/n8n-io/n8n/issues/28872))
([d64aeb2](https://redirect.github.com/n8n-io/n8n/commit/d64aeb24b68f9c73f52d9f41b25599fea2794bbd))
- Write per-file mutation coverage back to the ledger row
([#&#8203;32716](https://redirect.github.com/n8n-io/n8n/issues/32716))
([a084bd8](https://redirect.github.com/n8n-io/n8n/commit/a084bd8ab97847c2d91bdbf9d81f3ca0878de2d3))

##### Performance Improvements

- **core:** Improve performance of pre-execution workflow checks
([#&#8203;32363](https://redirect.github.com/n8n-io/n8n/issues/32363))
([aaa4fa8](https://redirect.github.com/n8n-io/n8n/commit/aaa4fa861088621a07ce69a3692e916318ba1703))
- **core:** Move Instance AI clock out of the cached prompt prefix
([#&#8203;32452](https://redirect.github.com/n8n-io/n8n/issues/32452))
([630d57e](https://redirect.github.com/n8n-io/n8n/commit/630d57e3afb830745a31335a2585312e64176509))
- **core:** Stabilize Instance AI prompt-cache prefix across turns
([#&#8203;32404](https://redirect.github.com/n8n-io/n8n/issues/32404))
([1ea6f59](https://redirect.github.com/n8n-io/n8n/commit/1ea6f590e0ac1594b9ed1d2e7b2adb3143a4fb7f))
- **editor:** Defer AI assistant markdown decoration and fix resource
chip clicks
([#&#8203;32160](https://redirect.github.com/n8n-io/n8n/issues/32160))
([2fef949](https://redirect.github.com/n8n-io/n8n/commit/2fef94956583cba9d7eaf254b380a7309cac0171))
- Set ignoreStatic in mutation-health default Stryker config
([#&#8203;32720](https://redirect.github.com/n8n-io/n8n/issues/32720))
([05ef0a5](https://redirect.github.com/n8n-io/n8n/commit/05ef0a528f358aec14a982eb7bcbde3c77a13a59))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9uOG4iLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19-->
2026-06-23 16:39:51 +02:00
TrueCharts Bot 0b6edeb7f3 chore(valkey): update image docker.io/bitnamisecure/valkey digest to 08d2c29 (#49393)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| docker.io/bitnamisecure/valkey | digest | `bcb8664` → `08d2c29` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC92YWxrZXkiLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL2RpZ2VzdCJdfQ==-->
2026-06-23 16:39:18 +02:00
TrueCharts Bot fcb7765413 chore(prowlarr): update image oci.trueforge.org/containerforge/prowlarr digest to 4a3577a (#49390) 2026-06-23 16:35:58 +02:00
TrueCharts Bot 50c05e2ca1 chore(radarr): update image oci.trueforge.org/containerforge/radarr digest to 923b996 (#49391) 2026-06-23 16:35:52 +02:00
TrueCharts Bot 44ed6effea chore(kdenlive): update image lscr.io/linuxserver/kdenlive digest to d77fd35 (#49388)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| lscr.io/linuxserver/kdenlive | digest | `e87b6d5` → `d77fd35` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9rZGVubGl2ZSIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvZGlnZXN0Il19-->
2026-06-23 16:35:39 +02:00
TrueCharts Bot 23c9f4255f feat(zwavejs2mqtt): update image docker.io/zwavejs/zwave-js-ui 11.20.0 → 11.21.1 (#49405)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/zwavejs/zwave-js-ui](https://redirect.github.com/zwave-js/zwave-js-ui)
| minor | `e6b829b` → `1193b96` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>zwave-js/zwave-js-ui (docker.io/zwavejs/zwave-js-ui)</summary>

###
[`v11.21.1`](https://redirect.github.com/zwave-js/zwave-js-ui/blob/HEAD/CHANGELOG.md#11211-2026-06-23)

[Compare
Source](https://redirect.github.com/zwave-js/zwave-js-ui/compare/v11.20.0...v11.21.1)

##### 🐛 Bug Fixes

- confine store paths against the resolved store dir
([#&#8203;4685](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4685))
([a5dc881](https://redirect.github.com/zwave-js/zwave-js-ui/commit/a5dc881fdfbeadfb016563a770d729d757f5f152)),
closes
[pre-#&#8203;4678](https://redirect.github.com/zwave-js/pre-/issues/4678)
[#&#8203;4678](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4678)
- don't return password hash in `PUT /api/password` response
([#&#8203;4687](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4687))
([4b0b7d6](https://redirect.github.com/zwave-js/zwave-js-ui/commit/4b0b7d6be496f3b5c49b6fb55757ddf539e7675b))
- prevent symlinks from escaping the store directory
([#&#8203;4678](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4678))
([592e1b8](https://redirect.github.com/zwave-js/zwave-js-ui/commit/592e1b86d9479d943f04003c56d16e40beab0f66))
- refresh broadcast virtual nodes to avoid querying removed nodes
([#&#8203;4688](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4688))
([8c1981e](https://redirect.github.com/zwave-js/zwave-js-ui/commit/8c1981e1ced2b01e98edbb2ee0f8b4db790f4033)),
closes
[#&#8203;4677](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4677)
[#&#8203;4677](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4677)
- **ui:** separate virtual and physical devices in nodes table
([#&#8203;4673](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4673))
([3a80ce6](https://redirect.github.com/zwave-js/zwave-js-ui/commit/3a80ce6e6d9dc2a9134f3e32e41d85bd2a08392e)),
closes
[#&#8203;4672](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4672)
- write self-signed TLS key/cert with owner-only permissions
([#&#8203;4686](https://redirect.github.com/zwave-js/zwave-js-ui/issues/4686))
([2f62656](https://redirect.github.com/zwave-js/zwave-js-ui/commit/2f626565557204daa3c5114615d38efa4a37f159))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC96d2F2ZWpzMm1xdHQiLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19-->
2026-06-23 16:33:38 +02:00
TrueCharts Bot 5b6994a1c8 fix(octoprint): update image docker.io/octoprint/octoprint 1.11.7 → 1.11.8 (#49399)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/octoprint/octoprint](https://redirect.github.com/OctoPrint/octoprint-docker)
| patch | `49bea4e` → `5ea0181` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9vY3RvcHJpbnQiLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->
2026-06-23 16:33:05 +02:00
TrueCharts Bot fa571597e1 chore(redis): update image docker.io/bitnamisecure/redis digest to 68ea50c (#49392)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| docker.io/bitnamisecure/redis | digest | `d842c43` → `68ea50c` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9yZWRpcyIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvZGlnZXN0Il19-->
2026-06-23 16:31:05 +02:00
TrueCharts Bot a037191dcc chore(drawio): update image docker.io/jgraph/drawio digest to 74d11af (#49387)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [docker.io/jgraph/drawio](https://www.drawio.com)
([source](https://redirect.github.com/jgraph/docker-drawio)) | digest |
`373cfbe` → `74d11af` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9kcmF3aW8iLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL2RpZ2VzdCJdfQ==-->
2026-06-23 16:30:35 +02:00
TrueCharts Bot 3951990279 fix(speedtest-tracker): update image ghcr.io/linuxserver/speedtest-tracker 1.14.4 → 1.14.5 (#49384) 2026-06-23 04:36:15 +02:00
TrueCharts Bot 2271ae5af8 feat(pocketmine-mp): update image ghcr.io/pmmp/pocketmine-mp 5.43.2 → 5.44.1 (#49385) 2026-06-23 04:36:10 +02:00
TrueCharts Bot 2bc7d533e6 chore(syslog-ng): update image docker.io/balabit/syslog-ng digest to 2162f85 (#49381) 2026-06-23 04:36:03 +02:00
TrueCharts Bot 00010914c4 fix(kubernetes-reflector): update image ghcr.io/emberstack/kubernetes-reflector 10.0.50 → 10.0.51 (#49383)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/emberstack/kubernetes-reflector](https://redirect.github.com/emberstack/kubernetes-reflector)
| patch | `060c0b5` → `8703338` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Release Notes

<details>
<summary>emberstack/kubernetes-reflector
(ghcr.io/emberstack/kubernetes-reflector)</summary>

###
[`v10.0.51`](https://redirect.github.com/emberstack/kubernetes-reflector/releases/tag/v10.0.51)

[Compare
Source](https://redirect.github.com/emberstack/kubernetes-reflector/compare/v10.0.50...v10.0.51)

The release process is automated.

#### What's Changed

- build(deps): bump actions/checkout from 6 to 7 in the all-dependencies
group by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;667](https://redirect.github.com/emberstack/kubernetes-reflector/pull/667)
- Bump the all-dependencies group with 6 updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;668](https://redirect.github.com/emberstack/kubernetes-reflector/pull/668)

**Full Changelog**:
<https://github.com/emberstack/kubernetes-reflector/compare/v10.0.50...v10.0.51>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9rdWJlcm5ldGVzLXJlZmxlY3RvciIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvcGF0Y2giXX0=-->
2026-06-23 04:36:00 +02:00
TrueCharts Bot b2d57c44b1 chore(projectsend): update image ghcr.io/linuxserver/projectsend digest to 899592e (#49380)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| ghcr.io/linuxserver/projectsend | digest | `7051aab` → `899592e` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9wcm9qZWN0c2VuZCIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvZGlnZXN0Il19-->
2026-06-23 04:35:23 +02:00
TrueCharts Bot 0ff49b0f68 chore(nextcloud): update image docker.io/clamav/clamav digest to c17762a (#49378)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.io/clamav/clamav](https://redirect.github.com/Cisco-Talos/clamav.git)
([source](https://redirect.github.com/Cisco-Talos/clamav)) | digest |
`8df57e5` → `c17762a` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9uZXh0Y2xvdWQiLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL2RpZ2VzdCJdfQ==-->
2026-06-23 04:34:39 +02:00
TrueCharts Bot 5ab208d971 chore(digikam): update image ghcr.io/linuxserver/digikam digest to 6072c8c (#49377)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/linuxserver/digikam](https://redirect.github.com/linuxserver/docker-digikam/packages)
([source](https://redirect.github.com/linuxserver/docker-digikam)) |
digest | `86cb8fc` → `6072c8c` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9kaWdpa2FtIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9kaWdlc3QiXX0=-->
2026-06-23 04:34:01 +02:00
TrueCharts Bot a75df071f8 chore(cloudflareddns): update image oci.trueforge.org/containerforge/cloudflareddns digest to 94678b4 (#49375)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[oci.trueforge.org/containerforge/cloudflareddns](https://ghcr.io/trueforge-org/cloudflareddns)
([source](https://www.hotio.dev)) | digest | `6ed7231` → `94678b4` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9jbG91ZGZsYXJlZGRucyIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvZGlnZXN0Il19-->
2026-06-23 04:32:33 +02:00
TrueCharts Bot 14a350d658 chore(tvheadend): update image ghcr.io/linuxserver/tvheadend digest to 62ce7b5 (#49382)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| ghcr.io/linuxserver/tvheadend | digest | `708222e` → `62ce7b5` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC90dmhlYWRlbmQiLCJhdXRvbWVyZ2UiLCJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL2RpZ2VzdCJdfQ==-->
2026-06-23 04:32:09 +02:00
TrueCharts Bot 8b53110576 chore(openvscode-server): update image ghcr.io/linuxserver/openvscode-server digest to f54894b (#49379)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/linuxserver/openvscode-server](https://redirect.github.com/linuxserver/docker-openvscode-server/packages)
([source](https://redirect.github.com/linuxserver/docker-openvscode-server))
| digest | `47cfb70` → `f54894b` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9vcGVudnNjb2RlLXNlcnZlciIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvZGlnZXN0Il19-->
2026-06-23 04:30:46 +02:00
TrueCharts Bot 7bd64017d7 chore(broadcast-box): update image seaduboi/broadcast-box digest to 30c0817 (#49374)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| seaduboi/broadcast-box | digest | `1d45a63` → `30c0817` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9icm9hZGNhc3QtYm94IiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9kaWdlc3QiXX0=-->
2026-06-23 04:30:36 +02:00
TrueCharts Bot 7ef3a2afea feat(openobserve): update image public.ecr.aws/zinclabs/openobserve v0.90.3 → v0.91.0 (#49370)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| public.ecr.aws/zinclabs/openobserve | minor | `f778561` → `e4d9eeb` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9vcGVub2JzZXJ2ZSIsImF1dG9tZXJnZSIsInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->

---------

Signed-off-by: Alfred Göppel <43101280+alfi0812@users.noreply.github.com>
Co-authored-by: Alfred Göppel <43101280+alfi0812@users.noreply.github.com>
2026-06-22 20:32:02 +00:00
TrueCharts Bot 67edbf5018 feat(mstream): update image ghcr.io/linuxserver/mstream 6.11.2 → 6.12.0 (#49373)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/linuxserver/mstream](https://redirect.github.com/linuxserver/docker-mstream/packages)
([source](https://redirect.github.com/linuxserver/docker-mstream)) |
minor | `b2ca98d` → `d501361` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/18710) for more information.

Add the preset `:preserveSemverRanges` to your config if you don't want
to pin your dependencies.

---

### Configuration

📅 **Schedule**: (UTC)

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

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEzMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImFwcC9tc3RyZWFtIiwiYXV0b21lcmdlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==-->
2026-06-22 22:28:27 +02:00