Appends char to the buffer and returns the first non-disabled
option whose lowercased label starts with it. currentIndex < 0
walks inclusively from 0; currentIndex >= 0 walks exclusively
with round-robin (native <select> parity). Returns null for
non-printable input, disabled state, empty options, or no match.
Buffer auto-clears after debounceMs.