Basically it was previously only looking for "item" or "virtual-signal" for strings to replace the value with when in rich text mode, but those are only two of the prototypes.
E.g. a fluid's rich text is [fluid=water]
as opposed to [item=foo]
, ditto with many other signals, Entities, planets, etc..
Not quite, it was only trying to handle special cases for those rich text (item can be nil in SignalIDType and virtual-signal isn't named consistently), I did however not handle the "planet" case which I do now in 1.3.0
It also now support quality.
You had some good ideas in your PR but could be handled with a single pattern match which is better for performance