You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,13 @@
2
2
3
3
All notable changes to UnraidMonitor will be documented in this file.
4
4
5
+
## [0.15.1] - 2026-06-08
6
+
7
+
### Changed
8
+
-**Documentation refreshed for current features** — the README's "What's New" was still pinned to v0.12.0; replaced it with a v0.15.0 summary, and updated the feature list and command table to reflect the `/manage` Features panel (server/disks/features sections) and per-feature `/model` overrides (`chat`/`diagnose`/`analyze`).
9
+
-**User guide expanded** — added an Optional Features section documenting image-update detection and auto-heal (how to enable from `/manage` → ⚙️ Features and via `config.yaml`), documented per-feature model switching, and added the Features panel to the Manage Dashboard walkthrough.
10
+
-**Data Storage docs** — listed the previously-undocumented `announced_version.json` and `announced_updates.json` files.
11
+
5
12
## [0.15.0] - 2026-06-06
6
13
7
14
Audit remediation release — all 16 items from the June 6 codebase audit (`audit-reports/audit-2026-06-06-1538.md`).
Copy file name to clipboardExpand all lines: CLAUDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -92,7 +92,7 @@ src/utils/version_store.py - read/write data/announced_version.json for startup
92
92
93
93
## Project Overview
94
94
95
-
Unraid Server Monitor Bot (v0.15.0) - A Docker-based Telegram bot for monitoring Unraid servers. Monitors Docker containers (events, logs, resources) and Unraid server health (CPU, memory, disks, array, UPS). Uses multi-provider LLM support (Anthropic, OpenAI, Ollama) for AI-powered diagnostics and natural language interaction. Sends alerts via Telegram with quick-action buttons.
95
+
Unraid Server Monitor Bot (v0.15.1) - A Docker-based Telegram bot for monitoring Unraid servers. Monitors Docker containers (events, logs, resources) and Unraid server health (CPU, memory, disks, array, UPS). Uses multi-provider LLM support (Anthropic, OpenAI, Ollama) for AI-powered diagnostics and natural language interaction. Sends alerts via Telegram with quick-action buttons.
96
96
97
97
**Version string lives in TWO places** — `pyproject.toml` (`version`) and `src/__init__.py` (`__version__`). Both must be bumped together on release; `tests/test_version.py` guards against drift. `BOT_VERSION` (in `src/bot/health_command.py`) resolves from installed package metadata when available, else falls back to `src.__version__` — the package is not installed in the Docker image, so the `__version__` fallback is what runs in production.
Copy file name to clipboardExpand all lines: README.md
+18-14Lines changed: 18 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,15 +18,16 @@ A Telegram bot for monitoring Docker containers and Unraid servers. Get real-tim
18
18
-**Memory Pressure Management** - Automatic container priority handling during high memory
19
19
-**Mute System** - Temporarily silence alerts per container, server, or array
20
20
-**Natural Language Chat** - Ask questions naturally instead of using commands
21
-
-**Interactive Dashboard** - `/manage` hub for status, resources, ignores, and mutes
21
+
-**Interactive Dashboard** - `/manage` hub for status, resources, server, disks, ignores, mutes, and a Features panel to toggle optional monitors
22
22
-**Sectioned Help** - `/help` with navigable category buttons instead of a text wall
23
23
24
-
## What's New in v0.12.0
24
+
## What's New in v0.15.0
25
25
26
-
-**Image-update detection** - Opt-in daily digest of containers with newer images available, with per-container Pull buttons (`image_updates.enabled: true`)
27
-
-**Auto-heal** - Opt-in automatic restart of containers that fail their Docker HEALTHCHECK, with a storm guard that gives up after configurable retries (`auto_heal.containers: [...]`)
28
-
-**Richer startup message** - On first boot after an upgrade, shows a "What's new" summary so you always know what changed
29
-
-**CI test pipeline** - Tests, lint, and type-check now run automatically on every push and pull request
26
+
-**Toggle optional features from Telegram** - `/manage` → ⚙️ Features enables image-update detection and picks auto-heal containers without editing `config.yaml`
27
+
-**Alert-context-aware diagnostics** - `/diagnose` now knows which alert fired (crash / errors / restart-loop / high-usage) and gathers full container state, for far more accurate root-cause analysis
28
+
-**Properly formatted AI replies** - Bold, italics, headings, and code blocks now render correctly in Telegram instead of showing literal `*` characters
29
+
-**Friendlier natural-language chat** - Plays along with creative on-topic requests ("status as a captain's log", "roast my containers") while staying grounded in real stats
30
+
-**Reliability & security hardening** - Auto-heal retries persist correctly, image-update alerts no longer repeat after a restart, and API error bodies are redacted in all paths (full June 6 audit remediation)
30
31
31
32
See the [changelog](CHANGELOG.md) for full details.
32
33
@@ -429,9 +430,10 @@ auto_heal:
429
430
|---------|-------------|
430
431
| `/setup` | Re-run the setup wizard (merges with existing config) |
Copy file name to clipboardExpand all lines: docs/user-guide.md
+65-1Lines changed: 65 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,7 @@ This guide walks you through everything the bot can do, from first-run setup to
12
12
-[Unraid Server Monitoring](#unraid-server-monitoring)
13
13
-[Alert Control](#alert-control)
14
14
-[AI Features](#ai-features)
15
+
-[Optional Features](#optional-features)
15
16
-[Tips & Best Practices](#tips--best-practices)
16
17
17
18
---
@@ -293,6 +294,7 @@ You can also manage ignores through the `/manage` dashboard (see below).
293
294
-**💾 Disks** — Disk status
294
295
-**📝 Manage Ignores** — Browse and delete ignore patterns
295
296
-**🔕 Manage Mutes** — Browse and remove active mutes
297
+
-**⚙️ Features** — Turn optional monitors on or off (see [Optional Features](#optional-features))
296
298
297
299
Each sub-view includes per-item **🗑** delete buttons and a **⬅️ Back** button to return to the dashboard.
298
300
@@ -330,7 +332,69 @@ Follow-up questions work too. After asking about a container, you can say "resta
330
332
2. Choose a model from the list
331
333
3. Models without tool support are marked "(no tools)" — NL chat actions may be limited
332
334
333
-
Your selection is persisted across bot restarts.
335
+
You can also type the choice directly:
336
+
337
+
-**`/model sonnet`** — set the global default model (family names `sonnet`, `haiku`, `opus` resolve to the latest available release)
338
+
-**`/model chat sonnet`** — use a different model just for natural-language chat
339
+
-**`/model diagnose haiku`** — use a cheaper model for `/diagnose`
340
+
-**`/model analyze haiku`** — use a cheaper model for ignore-pattern generation
341
+
-**`/model chat default`** — reset a feature back to the global default
342
+
343
+
Per-feature overrides let you spend on a capable model where it matters (chat) and a cheap one where it doesn't (pattern analysis). Your selection is persisted across bot restarts.
344
+
345
+
---
346
+
347
+
## Optional Features
348
+
349
+
Two monitors are off by default. You can turn them on from Telegram — open **`/manage`** and tap **⚙️ Features** — or by editing `config.yaml`.
350
+
351
+
### Image-Update Detection
352
+
353
+
Checks once a day whether a newer image is available for your containers, then sends a single digest listing what's outdated, each with a one-tap **Pull** button.
354
+
355
+
**Enable it:**`/manage` → **⚙️ Features** → **✅ Enable image updates**. Because the check only runs at startup, the bot restarts itself to apply the change.
356
+
357
+
What you'll see:
358
+
359
+
```
360
+
🔄 Image updates available (3)
361
+
362
+
• radarr — linuxserver/radarr:latest
363
+
• sonarr — linuxserver/sonarr:latest
364
+
• plex — plexinc/pms-docker:latest
365
+
366
+
[⬇️ Pull radarr] [⬇️ Pull sonarr] [⬇️ Pull plex]
367
+
```
368
+
369
+
Tapping **Pull** runs the same confirm-then-recreate flow as `/pull`, preserving all container settings. The same update isn't re-announced after a restart.
370
+
371
+
**In `config.yaml`:**
372
+
373
+
```yaml
374
+
image_updates:
375
+
enabled: true
376
+
poll_interval_hours: 24# minimum 1
377
+
```
378
+
379
+
### Auto-Heal
380
+
381
+
Automatically restarts a container when it reports an unhealthy Docker HEALTHCHECK — useful for apps that occasionally wedge but recover on a restart. A **storm guard** stops restart loops: after `max_restarts` attempts within `window_minutes`, it gives up and sends an escalation alert instead of restarting forever. Protected containers are never auto-healed.
382
+
383
+
**Enable it:** `/manage` → **⚙️ Features** → **🩹 Configure auto-heal**, then tap to select which containers should be healed. Tap **💾 Save** — this applies live, with no restart.
384
+
385
+
**In `config.yaml`:**
386
+
387
+
```yaml
388
+
auto_heal:
389
+
enabled: true
390
+
containers:
391
+
- radarr
392
+
- sonarr
393
+
max_restarts: 3 # give up after this many restarts in the window
394
+
window_minutes: 60 # rolling window for the restart count
395
+
```
396
+
397
+
When auto-heal gives up on a container, you get an alert so you can investigate manually rather than the bot silently looping.
0 commit comments