Group of 2 Under the hood
No documentation found
Plugin hooks.json no longer has a top-level surface field; each Client element now names its own module, and multiple surfaceModules can load at once
What
- The
hooks.jsonschema for plugins no longer accepts a top-levelsurfacekey. Instead, eachClientelement in the config must name its own module. Using the oldsurfacefield now produces a hard schema error. - The runtime error shown when a plugin has no drawable Client now checks
surfaceModulesfrom the hooks module's own exports, instead of looking for asurfaceentry inhooks.json. - The code that resolves a plugin's hooks module used to also resolve and validate a separate
surfacepath (checking for path traversal and that the file exists) and store it assurfacePath; that check is now removed, and the code just setsmodulePath. - Elsewhere, the surface-environment loader was changed from loading a single
surfacemodule to loading an array ofsurfaceModules, 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.
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubt
The finding does not say where the removed path-traversal check now happens or whether it is still enforced somewhere.