Changes
* Support Django 3.2 and 4.0-4.2.
* Support Python 3.7-3.11.
New Features:
* Break the profile page into multiple template sections for easier overriding.
* Replace hardcoded Twitter and GitHub links with configurable `SOCIAL_MEDIA_ENTRIES` and `CODE_HOSTING_ENTRIES`. Stored in KV under the `Online Profiles` group.
* Add a setting to hide the schedule from users while scheduling is in progress. `WAFER_HIDE_SCHEDULE`.
* Allow pending talk submissions to be publicly visible for certain talk types (configured on the Talk Type).
* Add a schedule validator to find when speakers are double-booked in overlapping slots.
* Trigger schedule validation (by JS) when making changes in the schedule editor.
* Selenium test coverage.
* If an `unregister` URL is configured, display it in on the profile menu, for registered attendees.
Minor
* Render line breaks in user profiles.
Bug Fixes
* Handle invalid provided timestamps when rendering the "current" schedule.
* Re-display talks in the unassigned list, if they were replaced by dragging over them.
* Delay popover jQuery calls until after the page has loaded.
* Bootstrap 5 rendering fixes.