[{"data":1,"prerenderedAt":22},["ShallowReactive",2],{"release-notes-entry-2026-q2-mask-contains-fix":3},{"note":4,"quarter":13,"newer":16,"older":19},{"title":5,"date":6,"summary":7,"description":8,"html":9,"href":10,"canonical":11,"canonicalIsExternal":12},"Filters — Wildcard Masks Now Match the Way You Expect","2026-05-06","Group, login, and symbol filters now correctly match contains-style and multi-segment wildcards (*text*, prefix*suffix, *A*B*). Previously some of these patterns silently returned no results.","Group, login, and symbol filters now correctly match contains-style and multi-segment wildcards (*text*, prefix*suffix, *A*B*). Previously some of these…","\u003Cp>A small but high-impact fix to how filter masks are matched across the app.\u003C\u002Fp>\n\u003Ch2>What was wrong\u003C\u002Fh2>\n\u003Cp>Wildcard masks handled simple shapes (\u003Ccode>text*\u003C\u002Fcode> \u002F \u003Ccode>*text\u003C\u002Fcode>) correctly but quietly failed on:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Contains\u003C\u002Fstrong> patterns: \u003Ccode>*demo*\u003C\u002Fcode> against a real group \u003Ccode>demo-1k\u003C\u002Fcode> returned \u003Cstrong>no matches\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multi-segment\u003C\u002Fstrong> patterns: \u003Ccode>real*CHF\u003C\u002Fcode> (start with \u003Ccode>real\u003C\u002Fcode>, end with \u003Ccode>CHF\u003C\u002Fcode>, anything between) was treated as a literal string and matched nothing.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The same shape affected Login filters (\u003Ccode>*123*\u003C\u002Fcode> would not pick up \u003Ccode>91234\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cp>The other mask shapes — single-anchor (\u003Ccode>text*\u003C\u002Fcode>, \u003Ccode>*text\u003C\u002Fcode>), exact match, numeric ranges (\u003Ccode>1000-2000\u003C\u002Fcode>), comma\u002Fsemicolon lists — were always fine.\u003C\u002Fp>\n\u003Ch2>What changed\u003C\u002Fh2>\n\u003Cp>Masks are now matched by the same proven matcher the rest of Toolbox already relies on — Trades Copier, Rollover and other modules. It supports the full MetaQuotes mask syntax:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>*text*\u003C\u002Fcode> → matches anywhere (e.g. \u003Ccode>demo-1k\u003C\u002Fcode>, \u003Ccode>real_demo_eu\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Ccode>text*\u003C\u002Fcode> → starts-with\u003C\u002Fli>\n\u003Cli>\u003Ccode>*text\u003C\u002Fcode> → ends-with\u003C\u002Fli>\n\u003Cli>\u003Ccode>prefix*suffix\u003C\u002Fcode> → starts-with + ends-with, anything between (e.g. \u003Ccode>real*CHF\u003C\u002Fcode> matches \u003Ccode>real\\ABCEURCHF\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Ccode>*A*B*\u003C\u002Fcode> → multi-segment contains (must contain \u003Ccode>A\u003C\u002Fcode> THEN \u003Ccode>B\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Ccode>1000-2000\u003C\u002Fcode> → numeric range (login masks)\u003C\u002Fli>\n\u003Cli>Lists separated by \u003Ccode>,\u003C\u002Fcode> or \u003Ccode>;\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Group matching remains case-insensitive. Login matching is numeric \u002F exact as before.\u003C\u002Fp>\n\u003Ch2>Where you&#39;ll see it\u003C\u002Fh2>\n\u003Cp>Any screen that uses MetaQuotes-style masks: Trades Copier filters, OTR \u002F CTR (Open \u002F Closed Trades Reconciliation) reports, and any module exposing a Login \u002F Group \u002F Symbol filter.\u003C\u002Fp>\n\u003Cp>If you have a saved filter using \u003Ccode>*text*\u003C\u002Fcode> or a multi-segment pattern that previously felt &quot;too narrow&quot;, re-run the report — it should now return what you expect.\u003C\u002Fp>\n\u003Ch2>Bonus fix in the same area: CTR Symbol filter\u003C\u002Fh2>\n\u003Cp>We also fixed a separate, older issue with the \u003Cstrong>Symbol\u003C\u002Fstrong> filter in \u003Cstrong>Closed Trades Reconciliation\u003C\u002Fstrong> (and MatchTrader&#39;s OTR). It handled one common shape (\u003Ccode>EUR*\u003C\u002Fcode>) correctly but silently misbehaved for everything else: \u003Ccode>*USD\u003C\u002Fcode>, \u003Ccode>*USD*\u003C\u002Fcode>, multi-segment patterns and comma-separated lists.\u003C\u002Fp>\n\u003Cp>It now uses the same matcher, so all the patterns above work consistently for Symbol filters too — across MT4, MT5, and MatchTrader, in both OTR and CTR reports.\u003C\u002Fp>\n","\u002Frelease-notes\u002F2026\u002Fq2\u002Fmask-contains-fix","https:\u002F\u002Ftoolbox.cplugin.com\u002Frelease-notes\u002F2026\u002Fq2\u002Fmask-contains-fix",false,{"label":14,"path":15},"Q2 2026","\u002Frelease-notes\u002F2026\u002Fq2",{"title":17,"href":18},"View your invoices and current month estimate in Toolbox","\u002Frelease-notes\u002F2026\u002Fq2\u002Finvoices-in-toolbox",{"title":20,"href":21},"Trades Copier — MT4 OTR Now Reads Truly Open Positions","\u002Frelease-notes\u002F2026\u002Fq2\u002Fmt4-otr-open-positions-correctness",1791920739338]