effect.apply, appearance.addEffect and effect.setParams checked an effect
parameter's type only when the effect has a dialog default for the key. Keys
that only the params text names were stored as given: an Outline Stroke with
`width: "10 pt"` drew at the stroke's own weight, and a Gaussian Blur with
`linear: 1` blurred in linear light.
- The earlier 3D `perspective`, `lightAzimuth` and `lightElevation`,
Scribble's `variation` and Outline Stroke's `width` must be numbers, and
Gaussian Blur's `linear` must be true or false. A test walks every effect
so a new key without a default needs a listed type or a check of its own.
- The `style` of Crop Marks must be `roman` or `japanese`, and `null` is
refused. Any other value drew as Roman.
- An installed plug-in effect's parameters are checked against its manifest
when the command runs, as plugin.run already checks the effect records a
filter returns.
- effect.setParams with `warpStyle` checks the parameters against the new
Warp style's effect, as it already did for a 3D effect's new
`threeDType`. It checked them against the old style.
- effect.setParams refuses a `visible` that is not true or false, such as
`1` or `"false"`, when called and when a step plays, and nothing changes.
Before, the value was ignored and the rest of the call applied. `null`
still leaves the visibility as it is.
A step of command.batch is refused the same way. A replayed journal or
action still plays a wrongly typed effect parameter, as it plays a key the
effect no longer takes.
Docs: docs/mcp.md, docs/target-app-parity.md.