Skip to content

v0.7.0 β€” filter parity across boards

Choose a tag to compare

@Stupidoodle Stupidoodle released this 25 Aug 12:55
· 27 commits to main since this release

Filter parity across all 8 boards β€” no more silent empty results

Filtering on data a board doesn't publish (salary, remote, visa, level on jobs.ch/jobup.ch) used to silently drop every row of that board β€” indistinguishable from "searched, nothing matched". jobs.ch's own site can't filter on those either; the data simply isn't on their wire (verified against the public API and their filter UI).

Now the tool tells you instead of hiding it:

  • boards_excluded β€” searches now report boards excluded by filters their platform cannot serve, plus an in-band note explaining why and how to include them again. On MCP, on sdj list --json, and on stderr for the table view.
  • --tech works on every board now β€” boards without technology tags match the terms server-side as a full-text query (multi-term queries AND together). Previously --tech Python silently dropped all jobs.ch/jobup.ch rows.
  • list_boards / sdj boards report each board's unavailable filter dimensions as data (filters_unavailable, additive key).
  • Salary filters stay fail-closed: --min-salary means "prove it" β€” boards without salary data are excluded visibly, not silently.

The parity contract is enforced by a registry-driven test matrix (test_filter_parity.py): every board Γ— every gated filter must be served, folded, or visibly excluded. A future board or filter param fails CI until classified.

245 tests, 93% branch coverage, CI on Python 3.9 + 3.14, zero runtime dependencies.

Full Changelog: v0.6.0...v0.7.0