New features:
* Rudimentary authentication from kubeconfig/serviceaccount with no pykube-ng/kubernetes libraries. 771
Bugfixes:
* Restore specific groups for peering selectors to prevent whole-cluster API group scanning. 741
* Fix an issue with Click 8.0.0 for custom type double-conversion. 769
Improvements:
* Better typing for memos in strictly typed operators (no `Union` is needed). 747 753
* Better typing for daemon stopping flags in strictly typed operators. 757 760
* Actionable suggestions on 401 "Unauthenticated" API errors. 770
* Expose Kopf's version in user-agent & in logs. 777
Contributor experience:
* Remove leading zeros from IPv4 in tests (broken CI for Python >= 3.9.5). 750
* Document the layered code architecture (with a picture). 766
* Proper badge URL for README. 749
* Lint the source code with pre-commit. 776 778
Internal refactoring:
* Rebalance the classes & modules **massively** — for cohesion and decoupling. 765 766 752 761 759 763 764 751
* Hide all internal modules & packages from users (via underscore-naming). 765
* Rename internal entities to not mention "resource(s)" explicitly. 756
* Fix the documentation cross-linking. 773
* Correct some code-formatting and linting issues. 775
* Parse E2E flags/configs with AST instead of RegExps. 733
* Use only pure f-strings for logs, avoid %s/%r formatting. 772
<img src="https://user-images.githubusercontent.com/544296/118763139-9f68da00-b877-11eb-8a28-b3c90d7a3c6a.png" height="200"/>