Add registered action attachment points with rendering control.
Review Request #14667 — Created Nov. 3, 2025 and submitted
When actions were first introduced, an action could specify an
attachment point that they wanted to render into. These were strings
that corresponded to a template tag call, rendering all actions attached
to that point at that location.This change builds upon that concept by introducing a formal
registration of attachment points. These provide a level of control for
the rendering and state of any actions placed within them, allowing, for
example, one attachment point to render actions as a list of links and
another to render those same actions as a list of buttons.Each attachment point has a default renderer that's used if the action
being rendered doesn't specify its own default. The intended approach
going forward is to have actions only specify a renderer if they have a
strong need for certain rendering behavior, but to otherwise leave that
up to the parent action group, attachment point, or to the (coming soon)
placement configuration.Attachment points may also specify a list of actions to directly
include, in the order included. These may be actions registered to this
attachment point, or they may not be. This allows an attachment point to
easily include a set of actions rendered under the attachment point's
control for special extension use cases.
Unit tests pass.
Tested all current actions in the UI. They all appear and behave as
expected.Tested with in-progress changes that move Quick Access actions to this
new system, and verified they rendered as expected.
- Change Summary:
-
Fixed a line length issue.
- Commits:
-
Summary ID 6e1f150b44753d75d5c24bf01abb9964f07f041d fabb28da5483021491c6da757504b8007109a7b6 - Diff:
-
Revision 2 (+1612 -82)
Checks run (2 succeeded)
-
-
Should we enforce that the
attachment_point_idcan only be one of the values inAttachmentPoint, for security purposes? This is related to my comment on /r/14663, what if an action author wants to set the ID to something malicious.I guess we do have the check in the
actions_htmltag where we return an empty string for actions that aren't registered, maybe that's enough safe guarding? I also can't really tell where we register all the aciton attachment points though, do we only register the default values?
- Change Summary:
-
Updated unit tests based on changes to parent commits.
- Commits:
-
Summary ID fabb28da5483021491c6da757504b8007109a7b6 5de9b8a455d3bff272815ac9a52b0280cbc30486 - Diff:
-
Revision 3 (+1612 -82)