You'll noticeTier: how much it should matter to you
2Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
Plugin HooksArea: what it touches
ImprovementsKind: in v2.1.269,
ImprovementsSection of the release
What
The hooks.json schema for plugins no longer accepts a top-level surface key. Instead, each Client element in the config must name its own module. Using the old surface field now produces a hard schema error.
The runtime error shown when a plugin has no drawable Client now checks surfaceModules from the hooks module's own exports, instead of looking for a surface entry in hooks.json.
The code that resolves a plugin's hooks module used to also resolve and validate a separate surface path (checking for path traversal and that the file exists) and store it as surfacePath; that check is now removed, and the code just sets modulePath.
Elsewhere, the surface-environment loader was changed from loading a single surface module to loading an array of surfaceModules, and its logging now lists all the loaded module names instead of just one.
Why
This lets a plugin provide multiple UI-drawing ('surface') modules instead of just one, with each Client referencing its own module directly rather than all of them sharing a single top-level surface path.