Hi Ed,
Check this example, the filter basically renders any HTML output on GUI:
<joblist>
<job>
<context>
<options preserveOrder='true'>
<option name='age' required='true' value='18' />
</options>
</context>
<defaultTab>nodes</defaultTab>
<description></description>
<executionEnabled>true</executionEnabled>
<id>7e99966c-5ef6-46ad-bc7c-a2dcf2a02e11</id>
<loglevel>INFO</loglevel>
<name>HTMLExample</name>
<nodeFilterEditable>false</nodeFilterEditable>
<plugins />
<scheduleEnabled>true</scheduleEnabled>
<sequence keepgoing='false' strategy='node-first'>
<command>
<fileExtension>.sh</fileExtension>
<plugins>
<LogFilter type='render-datatype'>
<config>
<datatype>text/html</datatype>
<sanitizeHtml>true</sanitizeHtml>
<striped>false</striped>
</config>
</LogFilter>
</plugins>
<script><![CDATA[echo "<strong>USER:</strong> @job.username@"
echo "<strong>AGE:</strong> @option.age@"]]></script>
<scriptargs />
<scriptinterpreter>/bin/bash</scriptinterpreter>
</command>
</sequence>
<uuid>7e99966c-5ef6-46ad-bc7c-a2dcf2a02e11</uuid>
</job>
</joblist>
You can see the difference, here without HTML filter, and here using HTML output filter.
Hope it helps!