Commit graph

12 commits

Author SHA1 Message Date
71319a7587 auto-update: Stop treating script noise as success
Both service scripts piped their output through 'tail -5' under
'pipefail', so the exit status came from tail, not the upgrade —
failures looked like success and nothing was sent to the classifier.
For PieFed the problem was worse: deploy.sh starts a service that no
longer exists and pybabel exits 1 on translation errors, so the strict
invocation aborted after stopping the services and left the site down.
Run it plainly (it manages fine without set -e, same as manually) and
judge success by the live service state plus an HTTP check instead of
the exit code.

A Mastodon update that fails now reports its real output and status.
2026-10-06 22:10:10 +09:00
2df588b957 freshrss: Add deploy script, context & classifier examples
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.
2026-09-14 07:25:31 +00:00
f046ebf504 fix: use docker compose pull/up for paperless update
Paperless is a Docker Compose deployment (compose.yaml), not a scripted
install. The previous update.sh reference didn't exist, causing
'bash: update.sh: No such file or directory'. Match the convention used
by other Compose services (freshrss, uptime-kuma, grafana, jellyfin).
2026-08-25 19:34:01 +09:00
3e5c130d49 fix: cd into paperless directory before running update.sh
The upstream update.sh references docker-compose.yaml with a relative
path, so it must be run from the paperless directory.
2026-05-26 00:14:15 +00:00
6b4b74fc01 feat: Add Mastodon auto-update with classifier examples 2026-05-02 08:42:23 +00:00
cf7f7a7b62 feat: Add Paperless auto-update with classifier examples 2026-05-02 08:41:58 +00:00
e56ef34a32 feat: Add Uptime Kuma auto-update
Docker compose update via SSH to abraham.jeena.net. Review examples
include real v2.x patches as auto and the v1→v2 migration as manual,
plus a synthetic v2→v3 breaking change example.

Also fix test_classifier.py version derivation for x.0.0 releases
where patch decrement would produce the same version, causing the
model to see a nonsensical "upgrading from 2.0.0 to 2.0.0" prompt.
2026-04-14 01:54:25 +00:00
7c2a7a98e7 feat: Add Open WebUI auto-update
Simple local Docker update via existing update.sh script. Context
file tells the classifier this is a single Docker instance, so
database migration warnings aimed at multi-worker deployments are
correctly classified as auto.
2026-04-13 10:35:11 +00:00
7c2bf2c23b feat: Add Jellyfin auto-update
Jellyfin runs in Docker locally, so the auto-update is a simple
docker compose pull and up. Review examples include real patch and
security releases as auto, and one real major release (v10.11.0
with DB refactor) plus a synthetic example of Docker-breaking
changes (volume path changes) as manual.
2026-04-13 10:12:34 +00:00
ea90b8569b feat: Add Grafana auto-update & improve classifier
Add auto-update for Grafana on Synology via SSH + docker compose,
with review examples and a context.txt describing the specific setup
(Prometheus + Node Exporter, no plugins) so the classifier can
ignore plugin-only breaking changes.

The classifier now loads an optional context.txt per service to
tailor decisions to the actual deployment. It also truncates large
release notes intelligently, keeping important sections (breaking
changes, deprecations, migration notes) while dropping long PR
lists that add no signal.

test_classifier.py now also loads context.txt and accepts any
service name as argument.
2026-04-13 03:57:22 +00:00
67a9509eaa feat: Add PeerTube & PieFed auto-update, improve classifier
Add auto-update scripts and review examples for PeerTube and PieFed,
bringing total auto-updating services to three.

The classifier now includes the current and target version in the
prompt so it can correctly evaluate conditional upgrade notes like
"follow v8.1.0 instructions if upgrading from <= v8.0.2". Without
this context the model would conservatively flag patch releases as
manual.

All auto-update wrappers now use `bash -euo pipefail` when calling
remote scripts so failures in upstream deploy/upgrade scripts
propagate correctly instead of silently succeeding.

test_classifier.py now accepts a service name argument and derives
realistic version numbers from the release notes for testing.
2026-04-12 23:13:26 +00:00
f55f3d8e91 feat: Add AI-driven auto-update & restructure into package
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.
2026-04-09 12:49:57 +00:00