Eight fixes, in two groups.
The tool list an assistant is handed
That list is printed once, when a client connects, and there is no way to hand it a new one. Three faults all followed from that.
A toolset holding nothing was left off the list — permanently. On a site where every ability already had a home, the Other toolset was missing: the Tools tab said 14 while the assistant was served 13, and reconnecting could never close the gap, because it was still empty at that moment too. The built-in toolsets are now always offered, empty or not. Calling an empty one answers with a message rather than an error. Toolsets belonging to a specific plugin are unchanged — they still appear only when their plugin is present.
The Integrations toolset could vanish the same way, and that is the one that exists precisely so an assistant can reach a plugin installed after it connected. Its contents come only from plugin toolsets, so on a site with none active it was empty and therefore absent, exactly when it was most needed. It is now always present.
Integrations and Other now say that their contents change. Both fill and empty as plugins and themes are activated, so an assistant that asked once and kept the answer was wrong from the next activation onwards with nothing to tell it. Their listings now carry a volatile marker and a note to ask again, and an empty one says the emptiness is about this moment rather than settled.
Contact Form 7
All five were found by calling the abilities against a live site rather than by reading the code.
A mail tag written inside angle brackets was silently deleted. From: [your-name] <[your-email]> is how a From line is normally written in a plain-text body. Sanitising read <[your-email]> as an unknown HTML tag and removed it, taking the mail tag with it — the save reported success, and checking the template afterwards reported it valid, because the tag that would have been flagged was gone. This is the one worth updating for. Sanitising is unchanged in what it removes; only this one shape, a bare mail tag between angle brackets, now survives it. Updating a mail template also names any field whose stored content was altered.
A field option containing a space became several options. Contact Form 7 splits a field tag on spaces, so placeholder:+44 7700 900000 arrived as three options and the field ended up with a placeholder of +44. Option values are now quoted the way choice values always were, and an option that cannot be repaired is refused by name instead of silently mangled.
The field-type list advertised syntax that does not work. Contact Form 7 registers text and text* as separate types, and the list appended an asterisk to each — producing a duplicate row for every type and the string text**. One row per type now, showing a required form only where one genuinely exists. 35 entries become 24.
Creating a form now accepts template, the name the other template abilities already use. form still works.
Enabling an autoresponder now warns when it would send to nobody. A form whose fields were rewritten keeps the stock autoresponder addressed to [your-email]; without that field the reply goes nowhere while the visitor sees success. Switching it on now reports any mail tag in it that matches no field.
Upgrading
No breaking changes. Every type genuinely available in the field-type list still is — only duplicates and a required form that never worked were removed.
Full changelog: v0.0.37…v0.0.38