Release Version 2.10.0

Seit dem Announcement zu 2.7.5 im August 2025 sind elf Versionen erschienen. Deshalb hier eine Sammelmeldung zu allem, was ich schon längst hier hätte vorstellen wollen:

Am deutlichsten sichtbar ist die neue Oberfläche: suvi verwendet seit 2.10.0 das ECMind-Theme und folgt automatisch der Hell-Dunkel-Einstellung des Browsers, auch dann, wenn sie während des Betrachtens umgestellt wird. Die Icons stammen aus dem aktuellen Phosphor-Set und sind somit auch etwas frischer:

Bei Anmeldung und Betrieb hat sich am meisten getan. Version 2.8.0 bringt unter /login und /logout eine Anmeldung mit signiertem Session-Cookie, dazu die Optionen --secret-key und --session-days. Seit 2.9.0 lässt sich suvi hinter einem Reverse Proxy unterhalb eines Unterpfads betreiben, gesteuert über --url-prefix, --url-scheme und --trusted-proxy. Alle Links werden passend zum Unterpfad gebaut, und das Session-Cookie gilt nur noch für diesen Pfad und wird bei https als Secure markiert.

Die Oberfläche ist zudem spürbar schneller geworden. Die Listen der Tasks, Prozesse und Logs rendert der Server selbst, statt die Seite leer zu lassen, bis htmx sie nachgeliefert hat. Statische Dateien darf der Browser nun cachen. Textantworten werden komprimiert, womit eine volle Log-Seite von 270 KB auf 5 KB schrumpft: Unkomprimiert hat eine solche Seite das Laden der eigenen Stylesheets verzögert und erschien kurz ohne Formatierung. Die neue Option --threads hebt die Vorgabe von vier auf acht.

Die Zeitpläne wurden mit 2.9.1 robuster: Bis dahin konnte ein einziger fehlerhafter Schedule den Scheduler-Thread beenden, womit alle geplanten Tasks bis zum nächsten Neustart unbemerkt stehen blieben. Jetzt werden die fünf Felder einmal beim Laden ausgewertet, und unbrauchbare Angaben landen als Warnung im Log. Ausserdem versteht suvi jetzt Bereiche mit Schrittweite wie 1-23/2, englische Monats- und Wochentagsnamen wie mon-fri und Zahlen mit führender Null. Die zwei Stellen, an denen suvi bewusst von aktuellem cron abweicht, sind im Readme beschrieben. Bestehende Schedules laufen unverändert weiter.

Dazu kommt eine Reihe kleinerer Korrekturen: Tasknamen mit Sonderzeichen wie # lassen sich wieder stoppen und neu laden, Task-Dateien mit einem Punkt im Namen werden richtig geladen, relative Programmpfade von system-Tasks werden unter Windows korrekt aufgelöst, der Auto-Reload pausiert, solange Text markiert ist, und /tasks.json wurde gefixt.

Meldet Euch gerne mit Feedback und Fragen bei mir.