Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | lint.sh: Disable yet another cyclomatic complexity checker | Runxi Yu | 2024-10-01 | 1 | -1/+1 | |
| | ||||||
* | ws.go, *.sql: Add course choices to the database | Runxi Yu | 2024-10-01 | 3 | -7/+47 | |
| | | | | | | | | | | | | | | | | | | | | Note that this naive implementation currently allows users to submit multiple requests for the same course. See the TODO comment below: /* * TODO: Ensure that the user is not already enrolled in this course * and pay attention to relevant race conditions. It might be useful * to restructure this part, to begin a transaction that adds the user * to the database (and check the (currently not existing) uniqueness) * constraint at that exact moment, and abort the transaction if the * course limit is exceeded. * Or perhaps choices should be also stored in an internal data * structure, though that requires extra attention on consistency * issues between the internal data structure and the database. * (Sometime I should really go fix the LMDB bindings...) */ References: https://todo.sr.ht/~runxiyu/cca/1 | |||||
* | postgres_run.sh: Run in debug level 2 | Runxi Yu | 2024-10-01 | 1 | -1/+1 | |
| | | | | | This allows SQL statements to be logged which makes debugging much easier. Also "$@" is added so any extra arguments may be passed. | |||||
* | ws.go: propagate -> propagateCouldFail | Runxi Yu | 2024-10-01 | 1 | -3/+8 | |
| | ||||||
* | ws.go: propagate course number updates in another goroutine | Runxi Yu | 2024-10-01 | 1 | -1/+1 | |
| | ||||||
* | auth.go: Add TODO about INSERT | Runxi Yu | 2024-10-01 | 1 | -0/+7 | |
| | ||||||
* | admin_handbook: List configuration caveats | Runxi Yu | 2024-09-30 | 1 | -3/+7 | |
| | ||||||
* | iadocs: cover_page.{html->htm} | Runxi Yu | 2024-09-30 | 2 | -353/+352 | |
| | | | | Cgit was kinda broken in serving HTML, it was a caching issue | |||||
* | docs, iadocs: Revamp | Runxi Yu | 2024-09-30 | 6 | -352/+544 | |
| | ||||||
* | docs: TeXinfo kinda sucks, removing | Runxi Yu | 2024-09-30 | 3 | -57/+0 | |
| | ||||||
* | ws.go: Separate c.Write calls into writeText() | Runxi Yu | 2024-09-30 | 1 | -25/+17 | |
| | ||||||
* | utils.go, auth.go: Rename random to randomBytes | Runxi Yu | 2024-09-30 | 2 | -3/+3 | |
| | ||||||
* | main.go: Actually repsect config.Perf.ReadHeaderTimeout | Runxi Yu | 2024-09-30 | 1 | -1/+1 | |
| | ||||||
* | style.css: Misc enhancements | Runxi Yu | 2024-09-30 | 1 | -29/+25 | |
| | ||||||
* | style.css: Break element specifiers onto its own line when long | Runxi Yu | 2024-09-30 | 1 | -6/+12 | |
| | ||||||
* | style.css: Rename --boxbg to --box | Runxi Yu | 2024-09-30 | 1 | -13/+11 | |
| | ||||||
* | style.css: Add a dark theme | Runxi Yu | 2024-09-30 | 1 | -8/+28 | |
| | ||||||
* | style.css: Remove poorly-framed comment on --x-contrast colors | Runxi Yu | 2024-09-30 | 1 | -5/+0 | |
| | ||||||
* | ws.go, utils.go: Document some synchronization design choices | Runxi Yu | 2024-09-30 | 2 | -1/+21 | |
| | | | | Also use TryLock in setupChanPool, and fail when not successful. | |||||
* | index.html: Disable checkbox initially when .Selected >= Max | Runxi Yu | 2024-09-30 | 1 | -0/+4 | |
| | ||||||
* | main.js: Move connect(s) to the event listener directly | Runxi Yu | 2024-09-30 | 1 | -6/+2 | |
| | ||||||
* | {config,index}.go, cca.scfg.example, style.css, *.html: Link to source | Runxi Yu | 2024-09-30 | 6 | -14/+17 | |
| | ||||||
* | *: Change license to AGPL-3.0-or-later | Runxi Yu | 2024-09-30 | 13 | -238/+787 | |
| | ||||||
* | index.go: Correct typo | Runxi Yu | 2024-09-30 | 1 | -1/+1 | |
| | ||||||
* | auth.go, config.go, cca.scfg.example: Issue expiring cookies | Runxi Yu | 2024-09-30 | 3 | -2/+13 | |
| | ||||||
* | {auth,index,ws}.go, schema.sql: Move session cookie into the user table | Runxi Yu | 2024-09-30 | 4 | -55/+23 | |
| | | | | | | | One user shall only have one session at a time. This reduces the possibility of strange race conditions and simplifies the code a lot. References: https://todo.sr.ht/~runxiyu/cca/4 | |||||
* | utils.go: Better logging for wstr() | Runxi Yu | 2024-09-30 | 1 | -1/+1 | |
| | ||||||
* | main.js: Disable boxes when full | Runxi Yu | 2024-09-30 | 1 | -0/+8 | |
| | ||||||
* | main.js: Fix the IRC-style message parser | Runxi Yu | 2024-09-30 | 1 | -0/+4 | |
| | | | | | Previously, if it receives a message like "a b :c", it returns "["a", "b", "c "]" which is erroneous. | |||||
* | index.html, main.js, ws.go: Enhance course selection rejection message | Runxi Yu | 2024-09-30 | 3 | -5/+9 | |
| | ||||||
* | main.js: Handle "Y" (course selection approved) | Runxi Yu | 2024-09-29 | 1 | -0/+4 | |
| | ||||||
* | style.css: Remove styling for preformatted text | Runxi Yu | 2024-09-29 | 1 | -9/+0 | |
| | ||||||
* | ws.go, config.go, config.scfg.example: Attempt to fix deadlock | Runxi Yu | 2024-09-29 | 3 | -4/+14 | |
| | | | | | | | When propagate tries to propagate a message to a connection that actually called propagate, it deadlocks because the it tries to send to that connection's send channel in the same goroutine. This is an attempt at a fix. | |||||
* | main.js: Handle number updates | Runxi Yu | 2024-09-29 | 1 | -0/+3 | |
| | ||||||
* | main.js: Relocate a comment and remove a blank line | Runxi Yu | 2024-09-29 | 1 | -2/+1 | |
| | ||||||
* | ws.go: Attempt to propagate messages | Runxi Yu | 2024-09-29 | 1 | -1/+11 | |
| | ||||||
* | ws.go: Implement course choice limits | Runxi Yu | 2024-09-29 | 1 | -0/+31 | |
| | ||||||
* | pre-commit hook: Use && to chain lint.sh and eslint.sh | Runxi Yu | 2024-09-29 | 1 | -2/+1 | |
| | ||||||
* | main.js: Add stub case "R" for course selection rejected | Runxi Yu | 2024-09-29 | 1 | -0/+5 | |
| | ||||||
* | main.js: Comments should be /* */ rather than // | Runxi Yu | 2024-09-29 | 1 | -2/+2 | |
| | ||||||
* | main.js: Remove command "A" (authentication) | Runxi Yu | 2024-09-29 | 1 | -3/+0 | |
| | | | | | Authentication is handled during the HTTP request that establishes the WebSocket connection since the cookie is passed there anyway. | |||||
* | auth.go: Document why we use a hybrid auth flow | Runxi Yu | 2024-09-29 | 1 | -1/+12 | |
| | ||||||
* | ws.go: protocolError is now its own function | Runxi Yu | 2024-09-29 | 1 | -28/+15 | |
| | ||||||
* | index.html: Remind user to report connection closed errors | Runxi Yu | 2024-09-29 | 1 | -0/+3 | |
| | ||||||
* | style.css, index.html: Emit warning when CSS doesn't load | Runxi Yu | 2024-09-29 | 2 | -0/+7 | |
| | ||||||
* | .github, .woodpecker: Remove CI for now | Runxi Yu | 2024-09-29 | 2 | -59/+0 | |
| | | | | I'll add them back when necessary | |||||
* | .ws.go: Close websocket on protocol errors | Runxi Yu | 2024-09-29 | 1 | -0/+12 | |
| | ||||||
* | ws.go: Stub for commands "Y" and "N", currently only counting arguments | Runxi Yu | 2024-09-29 | 1 | -0/+14 | |
| | ||||||
* | lint.sh: Disable gocognit | Runxi Yu | 2024-09-29 | 1 | -1/+1 | |
| | ||||||
* | style.css: Use YK Pao Green | Runxi Yu | 2024-09-29 | 1 | -1/+1 | |
| |