Nice. I think you might want to have an animationTime variable that you add the delta value to
local animationTime = 0
then in render loop:
animationTIme = animationTime + delta
idle:apply(char, animationTime, true)
Right now if delta is roughly the same value each frame the animation will be set to the same state each time the apply is called. Apply sets the skeleton rig to a state based on the time. If the time is the same each time apply is called the skeleton will be set to the same pose.