- Shipped
- August 28, 2026 at 2:14 AM UTC
- Author
- Kamo
- Commit
- 3a763e4
Nothing on the server ever required it — the column is nullable, the create parser maps an empty value to null, and patchOrganization applies only the keys a PUT body mentions, so "yearEst": null is a deliberate clear. The only gate was this wizard's validateBasics, which blocked the whole Basics step until a year was picked. Plenty of real customers have no answer (a new LLC, a division spun out mid-year, anyone who simply does not know), so the gate just taught them to invent one. Drop it; the field keeps its asterisk-free label and gains the same "Optional." FieldHint every other optional field on the step already has. Fixes the reason nobody noticed the field was already nullable end to end: the org DTO parsed yearEst with a bare **************** and coercion runs BEFORE optionality, so Number(null) === 0 and every org without a year arrived as founded in the year zero. It stayed invisible because display sites guard on truthiness and 0 is falsy — it would have surfaced as "Est. 0" at the first site that checked `!= null` instead. Preprocess null and "" back to undefined, normalize the same way in Organization.fromJSON, and widen the network/theme DTOs to admit the null that actually arrives. The two display sites that used `{org.yearEst && <Fact/>}` become ternaries: a falsy-and render is what would have painted a bare 0 into the drawer. The settings form now routes the save through parseYearEst, so a blank box clears the value on purpose rather than by way of JSON.stringify turning NaN into null.