0.9.0: an unpaid role can say so
An unpaid role can say so
There was no way to post an unpaid internship.
Leaving the salary range empty already meant "the employer did not fill this in", so an honest unpaid listing was indistinguishable from a careless one. Putting 0 in the range was worse: it sorts and filters as a paid job worth nothing.
salary.unpaid is a boolean for that reason. When it is set the range stays null, so every salary filter and the salary sort keep excluding these listings with no special case anywhere, and the page prints Unpaid instead of nothing.
Unpaid wins over any number that arrives with it. A form can post a stale range alongside a ticked box, and "unpaid, $40k - $60k a year" is not a listing anybody can act on.
Posting one
| Surface | How |
|---|---|
/post |
a checkbox in the Pay fieldset |
| REST | salaryUnpaid: true |
| CLI | agenticjobs post --salary-unpaid |
| Job file front matter | salary_unpaid: true |
schema.org has no vocabulary for unpaid work, so baseSalary is absent, which is what it already did for a null range. docs/openjob.md documents the field.
Also in this release
CI could not fail on a failing test. The step ran node --test | tee output.txt under a shell without pipefail, so the exit code came from tee, and the script ended in exit 0. Fixed in #39 by @KennerMiner. Every check on this release is the first one that could actually have gone red.
Full changelog: v0.8.0...v0.9.0