* Replace per-module Methods screen with an Interface screen (methods + events)
A module exposes two halves of its API — methods you call and events you
subscribe to. The per-module screen now shows both. The 'View Methods'
button becomes 'Interface', and PluginMethodsView is renamed to
PluginInterfaceView with a Methods section (unchanged, with Call) and a
new Events section below it (event name in amber, signature, and the
event's description; no Call button).
- CoreModuleManager: getEvents(name) -> invokeRemoteMethod(name,
"getPluginEvents"), mirroring getMethods.
- MainUIBackend: getCoreModuleEvents(name) delegates to it.
- CoreModulesView: 'Interface' button; openInterface()/showingInterface.
- PluginInterfaceView (renamed): loads methods + events, renders both.
- docs: project.md view description.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Harden PluginInterfaceView: stable width + clear stale state
Address review feedback (#210):
- PluginInterfaceView: bind the inner ColumnLayout to the ScrollView's
availableWidth (via an id) instead of parent.width. Inside a Qt 6
ScrollView parent.width resolves against the internal Flickable
contentItem and can transiently collapse to 0 during Repeater reflow —
the same fix already applied in CoreModulesView/UiModulesTab.
- loadMethods()/loadEvents(): clear methods/events (and resultText) when
pluginName becomes empty, so a reset view can't show a previous
plugin's interface.
- CoreModuleManager.h: correct the stale 'Both return' comment now that
there are three JSON introspection methods (getMethods/getEvents/
callMethod).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>