Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | .woodpecker: Try alpine:edge | Runxi Yu | 2024-09-25 | 1 | -1/+1 | |
| | ||||||
* | .woodpecker: Initialize CI | Runxi Yu | 2024-09-25 | 1 | -0/+11 | |
| | ||||||
* | ws.go: Document chanPoolLock's purpose | Runxi Yu | 2024-09-24 | 1 | -0/+9 | |
| | ||||||
* | auth.go: Close PostForm response body | Runxi Yu | 2024-09-24 | 1 | -0/+1 | |
| | ||||||
* | style.css: Fix more regressions | Runxi Yu | 2024-09-24 | 1 | -4/+8 | |
| | ||||||
* | index.html, main.js: Display message when connection is closed | Runxi Yu | 2024-09-24 | 3 | -2/+41 | |
| | | | | Also fixed some CSS regressions | |||||
* | index.html: Fix template to match the new "ID" rather than "Id" | Runxi Yu | 2024-09-24 | 1 | -5/+5 | |
| | ||||||
* | auth.go: Fix json tag, should be access_token not accessToken | Runxi Yu | 2024-09-24 | 1 | -1/+1 | |
| | ||||||
* | auth.go: Fix grant_type=authorization_code | Runxi Yu | 2024-09-24 | 1 | -1/+1 | |
| | | | | I accidentally changed it to authorizationCode during linting | |||||
* | cca.scfg.example -> docs/ | Runxi Yu | 2024-09-24 | 1 | -0/+0 | |
| | ||||||
* | docs, scripts, sql: Sort support files into subdirectories | Runxi Yu | 2024-09-24 | 6 | -0/+0 | |
| | ||||||
* | Makefile: Update number of Go files | Runxi Yu | 2024-09-24 | 1 | -1/+1 | |
| | ||||||
* | main.js: Omit semicolons | Runxi Yu | 2024-09-24 | 2 | -40/+38 | |
| | ||||||
* | main.js, eslint.config.js: Start using eslint | Runxi Yu | 2024-09-24 | 2 | -41/+149 | |
| | ||||||
* | main.js: Don't indent case in switch | Runxi Yu | 2024-09-24 | 1 | -28/+28 | |
| | ||||||
* | *.go: Linting | Runxi Yu | 2024-09-24 | 10 | -140/+147 | |
| | ||||||
* | style.css, index.html: More clean-up | Runxi Yu | 2024-09-24 | 2 | -136/+106 | |
| | ||||||
* | style.css: Initial clean-up | Runxi Yu | 2024-09-24 | 1 | -42/+9 | |
| | ||||||
* | utils.go: Reformat | Runxi Yu | 2024-09-24 | 1 | -2/+2 | |
| | ||||||
* | courses.go: Comment out coursetype_t enum to make linter happy for now | Runxi Yu | 2024-09-24 | 1 | -5/+7 | |
| | ||||||
* | {index,utils,ws}.go: Handle write errors | Runxi Yu | 2024-09-24 | 3 | -39/+39 | |
| | ||||||
* | {utils,auth,index,ws}.go: Handle errors in random number generation | Runxi Yu | 2024-09-24 | 4 | -10/+30 | |
| | ||||||
* | ws.go: Log userid and sessionid with channel pointer | Runxi Yu | 2024-09-24 | 1 | -3/+4 | |
| | ||||||
* | auth.go: Remove unnecessary fmt.Sprintf | Runxi Yu | 2024-09-23 | 1 | -1/+1 | |
| | ||||||
* | ws.go: chanPoolLock should be a RWMutex rather than a pointer to one | Runxi Yu | 2024-09-23 | 1 | -1/+1 | |
| | | | | | | | A pointer to one could always be obtained via &chanPoolLock; but if I declare it as a pointer globally, I would need to initialize it somewhere so I don't get a null pointer dereference. It's more convenient to just declare it as the value. | |||||
* | ws.go: Add missing returns after authentication failure | Runxi Yu | 2024-09-23 | 1 | -0/+2 | |
| | ||||||
* | ws.go: Initial attempt to manage chanPool | Runxi Yu | 2024-09-23 | 1 | -13/+22 | |
| | ||||||
* | auth.go, ws.go: Update comments | Runxi Yu | 2024-09-23 | 2 | -7/+10 | |
| | ||||||
* | Bump dependencies | Runxi Yu | 2024-09-23 | 2 | -3/+3 | |
| | ||||||
* | Bump dependencies | Runxi Yu | 2024-09-22 | 2 | -6/+6 | |
| | ||||||
* | index.html: Add box styling to the WebSocket warning | Runxi Yu | 2024-09-17 | 1 | -1/+1 | |
| | ||||||
* | ws.go, main.js, index.html: Better WS documentation and structure | Runxi Yu | 2024-09-16 | 4 | -85/+156 | |
| | ||||||
* | ws.go: Fix previous commit's type inconsistencies | Runxi Yu | 2024-09-13 | 1 | -4/+5 | |
| | ||||||
* | ws.go: Very basic channels | Runxi Yu | 2024-09-13 | 2 | -5/+23 | |
| | ||||||
* | go.mod: Bump dependencies | Runxi Yu | 2024-09-12 | 2 | -21/+21 | |
| | ||||||
* | tcourse.sql: Use real-ish example data | Runxi Yu | 2024-09-12 | 1 | -6/+5 | |
| | ||||||
* | ws.go: Clarrify handleWs's purpose | Runxi Yu | 2024-09-12 | 1 | -1/+2 | |
| | ||||||
* | ws.go: Move the login logic to handleWs from handleConn | Runxi Yu | 2024-09-12 | 1 | -19/+38 | |
| | ||||||
* | ws.go: gofmt | Runxi Yu | 2024-09-12 | 1 | -3/+2 | |
| | ||||||
* | ws.go: Use channels to handle incoming messages | Runxi Yu | 2024-09-12 | 1 | -11/+30 | |
| | ||||||
* | ws.go: Document the message format | Runxi Yu | 2024-09-12 | 1 | -0/+25 | |
| | ||||||
* | fields.txt: Document the export fields we need | Runxi Yu | 2024-09-11 | 1 | -0/+26 | |
| | ||||||
* | ws.go: TODO: Select c.Read and a broadcast channel | Runxi Yu | 2024-09-11 | 1 | -0/+1 | |
| | | | | | | | I'm not sure whether we need to spawn an entirely different goroutine, make a shared channel, and select between the channels. It certainlly doesn't seem like there's a trivial way to block from a synchronous function and a channel, but I might be wrong, being unfamiliar with Go's concurrency. | |||||
* | auth.go: Use && instead of nested if statement | Runxi Yu | 2024-09-11 | 1 | -14/+12 | |
| | ||||||
* | tcourse.sql: Make the names slightly less random | Runxi Yu | 2024-09-09 | 1 | -6/+6 | |
| | ||||||
* | *.go: Add more licenses | Runxi Yu | 2024-09-09 | 4 | -0/+120 | |
| | ||||||
* | .editorconfig: Initialize | Runxi Yu | 2024-09-09 | 1 | -0/+16 | |
| | ||||||
* | index{,_login}.tmpl: Rename .tmpl to .html | Runxi Yu | 2024-09-09 | 2 | -0/+0 | |
| | ||||||
* | *.go: Shorter line lengths | Runxi Yu | 2024-09-09 | 3 | -8/+34 | |
| | ||||||
* | *.go: Add comments | Runxi Yu | 2024-09-09 | 8 | -11/+134 | |
| |