-
3.2.0
StableAll checks were successfulvalidation / validate-release (push) Successful in 34sreleased this
2026-08-03 12:30:54 +02:00 | 0 commits to main since this releaseSentinel 3.2.0
Sentinel 3.2.0 is a configuration and operability release. It introduces per-mode threshold persistence, a greatly expanded setup dashboard, actionable human-readable diagnostics, intelligent no-op change detection, and structured retroassignment job reporting.
Highlights
- Per-mode thresholds. Ban thresholds and windows are now stored independently for AutoMod and message mode. Switching modes restores each mode's last-used values instead of resetting to defaults.
- Expanded setup dashboard. Disable, AutoMod management, delete-history, auto-retroassign, ban DM toggle/message/invite, exemption removal, and AutoMod adopt/repair are all now first-class dashboard controls.
- Human-readable diagnostics. Validation and reconciliation findings are now keyed by stable codes and rendered as actionable, operator-facing guidance via a dedicated findings catalog.
- No-op change detection. Configuration writes that produce no effective change no longer create a revision or trigger reconciliation; command and dashboard responses surface "No changes were needed."
- Structured retroassign jobs. Retroactive assignment now tracks assigned, skipped, and failed counts with terminal status (completed, cancelled, failed), and cancelled jobs automatically restart when protection is ready.
- Standardized log severity.
logCriticalis renamed tologError; ban events now log atinfoseverity, aligning structured output with conventional severity labels.
Detection & Configuration
- Schema migration v5 → v6 adds
ban_threshold_automod,ban_window_automod,ban_threshold_message, andban_window_messagecolumns with CHECK constraints. Existing rows are backfilled from the current mode's values during migration. - A new
effectiveThresholds()helper resolves the active threshold/window pair for the current mode, falling back to mode defaults when per-mode values are unset. setModenow persists the outgoing mode's current thresholds before switching, so round-tripping between modes preserves operator-tuned values.- The
updateDesiredstore path normalizes the candidate patch against current settings and skips revision bumps when no mutable desired field actually changes, eliminating spurious reconciliation cycles. - Policy activation now tracks the last activated revision, policy epoch, and assignment signature, so redundant "protection ready" logs are suppressed and auto-retroassign only fires when the role, exemption set, or toggle actually changes.
Commands & Setup Dashboard
- New slash commands:
/sentinel delete-history <seconds>and/sentinel auto-retroassign <enabled>. - The setup dashboard gains a second action row with Disable, AutoMod, Delete History, and Auto-Retroassign buttons.
- Ban DM settings are split into separate controls: a toggle, a message editor modal, and an appeal-invite editor modal.
- Exemptions now support in-dashboard removal via a second user-select menu, alongside the existing add selector.
- AutoMod management is surfaced in the dashboard with managed/verify-only selection, an adopt-existing-rule modal, and a repair button.
- Dashboard and status fields now report changes pending activation, manual actions pending, cleanup required, delete-history seconds, and auto-retroassign state, with humanized controller-state labels (Active, Applying changes, Not fully active, Disabled, Stopping).
- All command and dashboard mutation responses use consistent wording: "applied" on success, "not fully active" on degradation, and "No changes were needed" for no-ops.
Diagnostics & Logging
- A new
src/findings.tscatalog maps internal finding codes to actionable operator messages covering missing permissions, log-channel problems, trap-role health, AutoMod rule health, stale cleanup, and bot membership. - Reconciliation and validation results are now routed through
humanizeFinding, replacing raw internal strings in user-facing output. - Degrade reporting is deduplicated: the same degradation message is logged once per occurrence rather than on every reconciliation pass.
logCriticalis renamed tologErroracross the codebase (logging.ts,ban.ts,runtime.ts,process-supervisor.ts,detection-service.ts,events.ts); ban events are now logged atinfolevel instead ofcritical.
Exports & Defaults
- Safe configuration exports now include
dm_on_ban,ban_delete_message_seconds, andenable_retroactive_role_assignment. - The default ban DM message no longer references the literal role name
@Do not ping; it now says "the trap role," keeping the default applicable regardless of the configured trap-role name.
Full changelog:
89444dd...6a13c1bDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads