35 Commits over 0 Days - ∞cph!
Query personal bests by playerid
Fetch completion returns replay url
Can receive binary messages
Azure blob storage
Upload replays to storage, replay url column for completions
Discord webhook shows correct name, and only shows personal bests
Discord webhook for completions and world records
Fix float.ToTime formatting
Organize
PersonalBest fetch by player and fetch by rank
Server heartbeat controller
Completions store what server it was completed on
Fix run list sorting
Show special chip up to rank 5
Fix wrcp on run single page
Show server in run page
Server login
Display server's steamid and a button to copy connection string for console
Fix up RunList
Fix whitelist check
Woops
Use DI for db context
Move common queries to their own files
Server whitelist and list em in servers page
IP whitelist action filter
Whitelist run submission
Simplify a few queries
Add a run's current rank to run details page
Don't show wr nav for non-wr runs
Fix next wr grabbing non wrs
Add dummy servers page
Lots of cleanup, components to their own namespace and use code-behind approach
Add data to personal best for queries and sorting
Run detail page improvements
Layout & style improvements
Update MapCard.razor
Disable register
Run list loading skeleton
Map pages layout improvements
Top 10 card
Azure logging
Layout cleanup
Run detail page
Return stage comparison data
Add support for course type & map title
Single map page
Show special chips on good runs
Store and return additional information when submitting a run
Show rank, first completions, personal bests
Layout & style adjustments
Runs page improvements
Struct for Vector3 with json conversion
Dark mode, on by default
Page showing latest completions
Login api call
Map bump api call
Keep a record of every login
StageSubmission game model
Data models
Store stage submissions in db
Try running websocket messages through controllers for simplicity
Replay game models
Cleanup, api receives run completions and replay data
WebSocket controller with basic send/receive
Basic app with api
Create .editorconfig