FreshRSS was the only service with just a config.yaml: no auto-update
script, no instance context, and no review examples. That left the
classifier with no few-shot context, so every release would fall back
to "manual", and the auto-updater had nothing to run. These files bring
it in line with the other services so patch & feature releases can be
applied automatically while real breaking changes (volume path moves,
new required env vars) still surface for manual review.
The monolithic check_updates.py has been split into the update_monitor/
package with separate modules for fetching, extraction, comparison,
classification, and notification. This makes the codebase easier to
navigate and test.
The flat services.yaml is replaced by per-service directories under
services/<name>/config.yaml, co-locating config with update scripts
and AI review examples.
When --auto-update is enabled, services with an auto-update.sh script
get their release notes classified by a local Ollama model (using
few-shot examples from review-examples/) to decide whether the update
can be applied automatically or needs manual admin intervention. Results
are reported in a single consolidated Matrix message.
Immich is the first service with auto-update configured, using 7
real release note examples to train the classifier.