Tell the operator when a finding needs them

A finding nobody is told about is a finding nobody has, and the card added earlier only shows
them to someone who opens the tab. Only needs_operator is announced — an open finding may still
be repaired by the next pass — one notification for all of them, and each is announced once and
stays quiet until the fault changes or gets worse.

vv_notify() hands the message to common.sh's notify() rather than reimplementing the channels,
and calls detect_hosts() explicitly because load_config.sh deliberately does not: without it the
Unraid notification arrives and Discord silently never does. It also reports false when no
channel is switched on at all, since notify() exits 0 either way and a caller believing that
would mark a finding as told and never mention it again.

Notification text is folded to ASCII. Unraid's notifier dropped an em dash outright and left the
double space behind, which was found by sending one and reading what arrived.
This commit is contained in:
Gmer4Lfe
2026-08-09 21:59:50 -04:00
parent e4423200cc
commit 91357a2d03
4 changed files with 194 additions and 0 deletions
+8
View File
@@ -1796,6 +1796,14 @@
# this is the budget for proving a candidate — kept short because a sweep may try several, and
# an address worth switching to answers quickly or is not worth switching to.
AI_PROBE_TIMEOUT=4
# Tell the operator when a finding needs them. Only findings the sweep cannot resolve itself are
# announced, one notification for all of them rather than one each, and each is announced once —
# it stays quiet through every later pass until the fault changes or gets worse. Delivery is
# whatever notify() is set up to use: NOTIFY_UNRAID and the host's Discord webhook.
#
# On by default, unlike the two switches above. Those gate reading and writing, which are things
# to be trusted first. This gates telling someone, which is the reason for having looked.
AI_REPAIR_NOTIFY_ENABLED=true
# ━━━ AI Conf Write Access ━━━
# Separate switch from AI_ENABLED, off by default, and an explicit key whitelist. Never paths,