This issue has been solved in update 9.12
Viewing post in Bug report
The above was written before what i'm writting now, I had the idea after writing all this to battle one of them and see if it fix the heart thing, I went to Golden Sand and got to battle Bandit, then I went back to his shop and the heart was there
I'm guessing the update need the player to "refresh" the affinity gauge by battling them once to get a bit of affinity point and understand that they're already full ? Posting this so people who come to read this later might have a clue if they got the same issue as me after the update
Edit : I totally forgot about the dicktionnary when I had the idea, but I just tried and renting a room to battle them anytime works too
Liam was showing just fine for me, if it really is a matter of refreshing the gauge by buying something or battling them, Liam's probably the easiest since his beer are available for free, it's harder for character that sell their goods only once and after that you can't buy anything from them if you already bought everything