Losing part of serial input when using FastLED.addLeds

inputString = ""; 

Actually this is a situation in which a blocking reception of Serial is more appropriate, but if you can create a bit more time between transmission, even by putting a few dummy characters in, you will probably be ok.

21,h$...10,h$...1,h$...3,h$...4,h  etc

and then

(---
    Serial.write(inChar);    
    if (inchar != '.') inputString += inChar;  // discard the dummy character   
    if (inChar == '$') {
---) etc

The more leds, the more dummy characters you may need, the higher the baud-rate the more dummy characters. If you can just make the sender wait a little after sending the '$' that works as well of course, just enough time to make sure the show() has been completed and interrupts are enabled again.