Plugins: tell the administrator an update is available, and update one or all from the interface with a single button #1187
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo#1187
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The maintainer's request (2026-10-31): an administrator is told when a plugin has an update available, and can fetch and deploy the upgrade of one plugin, or of all of them, from the interface alone, with a single button.
What exists today (checked against
mainat8eedc02de)templates/server/plugins.html,core/server_views.pynear :1990).plugins/catalogue.py).plugins/installing.py).installing.take_snapshot()androll_back()keep the previous plugins directory, andverify_imports()checks a plugin loads after install.installing.compatible(requires_postulo)refuses a release meant for another core.request.session["plugin_listings"]): nothing is stored, nothing is compared, nobody is told."installed": installing.installed(name) is not None), not which version. The button says Reinstall whether the catalogue offers the same version or a newer one.Proposal
Know the installed version, and compare it. Each listing carries the installed version beside the offered one, compared by PEP 440 version order.
Keep what the catalogues said. The last answer of each catalogue is stored (the serial is already kept in
catalogue.remember): when it was checked, and which updates it offers. The Plugins page and the notices read from that store, not from the session.Check on a schedule, not only by hand.
core/errands.py), on the worker where there is one. On an instance without a scheduler, it runs at most once a day when an administrator opens a Server page.POSTULO_PLUGIN_UPDATE_CHECK=daily|offturns it off (see #1186), and the page says when it last ran.Tell the administrators.
One button for one plugin, one for all.
Each run:
take_snapshot);verify_imports.Any failure restores the snapshot for the whole run (
roll_back), and the page names the plugin and the reason. A plugin the administrator switched off stays switched off, and its settings and data are kept.Deploy without a shell. After an update, the running processes must load the new code.
HUPto the arbiter), which finishes the requests in flight. Where the process cannot do that, it says plainly: "Updated. Restart Postulo to finish," with the reason.A record of it. Each update, success or rollback, is written to the instance's log and to the Server activity: who, when, which versions, which catalogue.
Decisions (recommended option first)
requires_postulofloor, and never part of Update all without a separate confirmation.Done when
Decided by the maintainer (2026-11-12)
The daily check is offered with an enable/disable setting on the plugins' settings page. Read as: on by default, as this issue recommends, and an administrator can switch it off. It fetches only the signed index.
🤖 Generated with Claude Code
Related: #1263 supplies the manifest this reads (builtin, official and third-party entries); detecting an update and the one-click upgrade stay here.
Related: #1264 (an administrator can hold a plugin or pin it to a version).