Thank you for the feedback. Tbf I'm grateful the bugs made it easier, not more difficult.
Many of the issues stem from one error. The game removes the visual feedback for the line if it's too long, but never actually removes the Vector2 point used for detecting loops.
func TrimLine() -> void: while GetLineLength() > max_length: line.remove_point(0)
It is missing this line:
draw_points.remove_at(0)
Thank you for playing, and I hope the nostalgia was a positive experience :)