Currently: Uses recursion to checks which move will have the most empty spots(with depth that you can decide as the user), and calculates which is the best move. This works surprisingly well, but takes a significant amount of processing power and is inconsistent
chore: everythign that you cant name otherwise
docs: updated docs
E (inconsequential and insignificant change)
fix: bugfixes
feat: new feature
looks: improves the UI's looks
perf: improved performace
refactor: reorganized code
subfeat: part of a feature, but not completely a feature