devtools-no-plugin
[wizzard] refusals are not captured. The wizard was created without the devtools plugin, so arefused next() never reaches this panel. const dt = devtools(); createWizard({ flow, plugins:[dt] }); <WizardDevtools plugin={dt}/>. …/errors/devtools-no-plugin[wizzard] refusals are not captured. The plugin object passed to the panel is not the oneinstalled on this wizard, so its rings stay empty. Pass the same devtools() instance tocreateWizard({ plugins: [dt] }) and to <WizardDevtools plugin={dt}/>. …/errors/devtools-no-pluginShown in the Activity tab’s header and as refusals: not captured in the export preview. The
panel still works: commits, the graph, the state and the diff need no plugin.
A refusal leaves nothing in state that says it happened. A move a guard, the policy or a plugin
refuses commits nothing, so subscribe never fires; one a validator refuses commits the errors
it produced, and nothing about the move. A panel built on state alone cannot tell which move was
refused or why - which is the case the plugin exists for. It sits in createWizard({ plugins: [dt] }), receives the engine’s attempt hook,
and keeps the rings the panel reads.
The second form fires when a plugin is passed but its attached is false, or its lastRev
stays behind the wizard’s rev after a commit. Both mean two different devtools() objects:
one installed on the engine, another handed to the panel. One instance goes to both places.