CodeTracked since May 19, 2026
Fix watcher subject truncation to preserve UTF-8 validity
The pull request changes `firstLine()` in `internal/watcher` so that when a subject is capped at `maxLen=200`, trimming now backs up to the nearest valid UTF-8 boundary instead of slicing at an arbitrary byte offset. This keeps `watcher_events.subject` rows validly encoded for Slack/ntfy/webhook paths and prevents strict UTF-8 consumers from failing on truncated multi-byte characters.
firstLine()watcher_events.subjectinternal/watcher/webhook.goutf8.ValidString