* Reformated all files with Prettier.
* Updated GraphQL codegen.
* Updated ESLint (including rule config).
* Updated TypeScript.
* Eliminated most ESLint warnings (especially usage of the `any` type).
* Rewrote parts of the API resolver logic to be more type-safe.
* Added IP forwarding for API requests.
* Added dialog to change username and e-mail address.
* Added autoplay toggle to shuffle and playlists.
* Added related playlists to video page.
* Changed organization of some sections on video page.
* Changed revalidation to use permission for authorization.
* Removed revalidation token.
* Removed developer mode.
* Removed old video player implementation.
* Added bracket chart.
* Added border radius to all sides of cards.
* Added skeletons to home page.
* Added support for system color theme.
* Added code-splitting for GraphQL.
* Added config constants.
* Added warning banner on staging.
* Added URL caching to API resolver (only for non-page request for now).
* Made featured theme load by default.
* Changed static path fetching to only fetch paths if not on staging (except for bracket pages).
* Changed default color theme to system.
* Moved color theme toggle from navigation to profile page.
* Replaced sketchy local storage implementation with external package.
* Fixed wrong fallback for featured theme on devices which don't support our codecs.
* Fixed wrong links in footer.
* Fixed code-splitting of Prism package.
* Fixed "/" character not working in search input.
* Fixed glitching multi cover image on playlist page.
* Updated README.md.
- All data is now fetched from the API instead of the database.
- Added staging mode.
- Fixed cover images still showing old images when switching pages.
- Fixed first letter filter not working.
* Rewrote data layer to work on-demand.
* Added several favicon formats.
* Added image for SEO page previews.
* Disabled GitHub pages as it no longer works.
* Several other adjustments.
* Fixed a bug where links on video pages were sometimes invalid.
* Technical: Use react-query for fetch requests and removed SWR.
* Technical: Splitted search page in seperate rendered pages.
* This means no more .htaccess workarounds are necessary.