Plugin framework and surface: settings gate, names, wheels, webhook, templates, serial, lease, links #999
No reviewers
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo!999
Loading…
Reference in a new issue
No description provided.
Delete branch "sec2-f-plugin-framework"
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?
Plugin framework and surface fixes from the SEC2 review.
settings=; a page two plugins share (mail) is closed by either rule. An administrator who is not the operator can no longer write or lift a rule about their own account or one of their groups, nor change a group an access rule names.is_internalstill answers by name, which is now correct because a built-in always keeps its name.http://receivers are accepted only when the operator allowed private destinations and every resolved address is private; help text and error say so. The webhook plugin now records a dependency oncore.destinationsin the surface test.plugins/template_loader.py), after the filesystem and app-directory loaders, so they cannot shadow any existing template.TEMPLATESnow names its loaders explicitly instead ofAPP_DIRS.CatalogueSerial, migrationplugins/0011), not aPluginRepositorycolumn, because environment-configured catalogues have no row.scripts/official_catalogue.pysigns a 60-day expiry by default. The user must regenerate and re-signcatalogue/official/index.jsonwith the key from vaultwarden (official_catalogue.py buildthensign); I did not touch the signed manifest. Note that from then on it must be re-signed within 60 days. An index that drops its serial entirely is still accepted (not in scope).save_only_linkraisesValidationErrorunless the address is a complete http(s) one.read_body,deadline_in,until,BodyRefusedonpostulo.plugins.api(wiki line added; changelog entry cites #967 for lack of an issue number).Tests: full unit suite 18901 passed, 122 skipped, 1 xfailed, 1 failed (changelog entry lacking an issue, fixed afterwards; test_changelog passes). Each issue has its "done when" test. The browser (e2e) suite was not run locally; the template loader change and the explicit
loaderssetting affect every template render, so please read the CI browser job.Closes #967, Closes #968, Closes #969, Closes #970, Closes #971, Closes #972, Closes #988, Closes #991
🤖 Generated with Claude Code
3fac9ebd5d4cdc49605b