Public Access
- Search box: substring, case- and accent-insensitive, over Name, description,
Focus, specialities and language names; combines with every filter (AND).
- Filters: OCA membership (any / member / not a member), Language (canonical
names only), plus Country/Speciality; a project MINIMUM ('N+ projects'),
rendered only when a threshold can narrow the list.
- Languages standardised: a closed ISO 639-1 checklist on both forms, with the
proficiency as a SEPARATE axis (language_levels, 'Spanish:beginner'). A stored
'Spanish - beginners' now maps to the language 'Spanish' and never becomes a
filter option.
- Fix: .dev-card/.dir-filters set display, which beat the UA [hidden] rule, so
filtered-out cards and the JS-off filter bar stayed visible.
- Deterministic order by Name (the endpoint's order alternates between reads).
- Card states plainly that a photo shows only when it is a link (the stored
value is base64 and is not rendered); admin Image field says the same.
- specialities stays free text.