[1.227.3] — 2026-08-29
Fixed — word: / stem: title-filter prefixes were silently ignored, turning those filter lines into no-ops.
Fixed
- web-ui did not implement the parent's
word:/stem:keyword prefixes.title_filter(andcontent_filter) default to case-insensitive substring matching, which is why a bare negativeinternalso rejects "International Product Manager" and "Internal Tools Engineer". Rather than flip that default — a breaking change for every configured install — the parent made precision opt-in per entry:word:internmatches the whole word only,stem:agentmust start a word and may continue (separating "Agentforce" from "Reagents"). web-ui had neither, so it matched a prefixed entry as the literal text"word:intern"— which appears in no job title. The line became a silent no-op: the sameportals.ymlfiltered correctly through the CLI and not at all here, so every intern posting the user had excluded still reached the#/scantable. Ported from the parent'stitle-keywords.mjs, including the Unicode-aware boundary (\p{L}\p{M}\p{N}_) rather than\b, which is ASCII-only and matched mid-word in accented or Cyrillic titles. - The 2–3 letter acronym rule now uses that same Unicode boundary. It previously used
\b, socooandword:coodisagreed on non-ASCII titles — two spellings of one rule.
Notes
- Found while checking a live
portals.ymlthat had just adoptedword:internspecifically to stop "International Product Manager" being dropped by a bareintern. The prefix worked in the CLI; web-ui quietly kept every intern posting. Behaviour is now identical in both. - Defaults are unchanged. An unprefixed keyword keeps exactly its previous matching: substring for phrases and anything containing non-letters (
.NET,SAP,L&D), boundary-anchored for 2–3 letter acronyms. A bareword:/stem:with nothing after it is treated as a typo and matches nothing — as a negative, an empty pattern would match every title and veto an entire scan from one stray colon. - 6 new cases in
tests/title-filter.test.mjscovering both prefixes, the Unicode boundary, the bare-prefix typo, positive-side use, and that unprefixed defaults are untouched. Test suite: 2846 → 2852.