Skip to content

v0.8.0 β€” contract & workload filters

Choose a tag to compare

@Stupidoodle Stupidoodle released this 25 Aug 13:08
· 25 commits to main since this release

Contract-type and workload filters, parity-checked on every board

Two new filter dimensions, both honoring the v0.7 parity contract (served, folded, or visibly excluded β€” never a silent empty result):

  • --contract β€” permanent Β· temporary Β· freelance Β· internship Β· apprenticeship Β· supplementary. Works on every board: each platform maps its own taxonomy onto these shared aliases. The devitjobs family maps its jobType (a Contract posting answers to both freelance and temporary β€” the platform folds those into one value); jobs.ch/jobup.ch filter server-side through their own employment-type taxonomy, mapped id-by-id against the labels the site renders and verified identical on both boards.
  • --workload <pct> β€” postings that offer that workload percent (e.g. --workload 80). jobs.ch/jobup.ch publish structured workload ranges and filter server-side β€” which matters on a search-driven board, where post-fetch filtering would waste the 2,000-row result window. The devitjobs wire carries no workload percentages, so those boards are excluded visibly (boards_excluded + note), exactly like a salary filter on jobs.ch.
  • Summary rows now carry contract and workload_from/workload_to (additive, omit-empty). list_boards / sdj boards report each board's contract aliases as data.

Both dimensions are covered by the registry-driven parity matrix (test_filter_parity.py) β€” a future board fails CI until it declares what it can and cannot serve.

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

Full Changelog: v0.7.0...v0.8.0