Modules: what ships inside Postulo is a module, with sub-modules, categories, and switches that cascade #873
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#873
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?
Plugins of the internal type are called Modules from now on, even though they share the plugin internals, and they gain a hierarchy:
What exists today
@declares(shipped(name=, label=, kind=, description=))(plugins/base.py:300) and registered from each app'sready();Manifestis a frozen dataclass (base.py:160).kind(plugins/kinds.py:27-55, a coloured badge frompartials/plugin_tags.html; Server settings → Plugins draws the raw slug instead,templates/server/plugins.html:59).PluginPolicy(plugins/models.py:88), decided bypolicy._decide(policy.py:158-209), drawn on Server settings → Plugins (plugins.html:82-115) and saved bycore/server_views.py:1287-1343. Built-ins are never the person's (_decide:195-200, #200).plugins/provenance.py).What would change
Manifest.parent(a module's name) andManifest.categories(a tuple of slugs with translated labels); a module that is a parent has none._decideconsults the parent first: a child of a switched-off parent is off and not switchable; the memo invalidated on the parent's row.disabledwhile the parent is off; switching a parent on clears its children'soffrows.Decisions
The modules themselves: #875, #876, #877; logos #874; the repository plugins' counterpart #883.
Checked against
mainat8c3d03570. From the maintainer's improvements list of 2026-10-07 (plugins).Fixed in
318f03fccon main.