It depends on how comfortable the client is with technical tools.
If they're a geek, then we stay almost entirely in Github (opening issues, chatting about features, etc).
If they're moderately comfortable with tech then I use Asana (I force them to watch the instructional videos first). I basically just paste my spec in line-by-line and check off each feature as I build it. When it comes to bug tracking, I usually integrate Bugherd and tell the client to report bugs using their interface.
If they're not comfortable at all (rare but it happens sometimes), I just email back and forth with them and track my time using Harvest or something like that.