summaryrefslogtreecommitdiff
Commit message (Expand)AuthorAgeFilesLines
* Makefile: Add tmpl to .PHONYv0.1.4Runxi Yu11 days1-1/+1
* */Makefile: Update againRunxi Yu11 days6-14/+45
* *: Further restructuringRunxi Yu11 days11-7/+66
* *.go: Move to backendRunxi Yu11 days18-2/+4
* iadocs: Update IA documentationRunxi Yu11 days10-44/+279
* docs: max-width: 50rem;Runxi Yu11 days1-1/+1
* docs/admin: Document database setupRunxi Yu11 days1-1/+10
* docs/admin: Update protocol informationRunxi Yu11 days1-3/+2
* iadocs: Cover page updateRunxi Yu11 days1-5/+5
* {,u}sem.go, ws*.go: Restructure filesRunxi Yu11 days5-235/+319
* {config,main}.go: Enhance configuration file processingRunxi Yu11 days2-8/+124
* bench.go: ReformatRunxi Yu11 days1-2/+2
* bench.go: Separate connection stage from selection stagev0.1.3Runxi Yu11 days1-2/+10
* bench.go: More realistic benchmark for one course onlyRunxi Yu11 days1-9/+18
* Makefile: BSD Make also supports wildcards in targetsRunxi Yu11 days1-1/+1
* Makefile: Add sem.go to source file listRunxi Yu11 days1-1/+1
* {config,ws}.go, cca.scfg.example: Add perf.course_update_intervalRunxi Yu11 days3-6/+14
* {courses,wsm}.go: Use in-memory structure to fetch cgroup, not SQLRunxi Yu11 days2-26/+18
* {config,ws}.go, cca.scfg.example: Remove chanPool/SendQRunxi Yu11 days3-59/+0
* ws.go: &usemT{} //exhaustruct:ignoreRunxi Yu11 days1-1/+1
* ws.go: Check error of populateUserCourseGroupsRunxi Yu11 days1-1/+4
* wsm.go: Omit comparison to bool constantRunxi Yu11 days1-1/+1
* wsm.go: Report error when course doesn't existRunxi Yu11 days1-0/+8
* {courses,sem,ws,wsm}.go: Second step towards an efficient state propagatorRunxi Yu11 days4-16/+24
* {courses,sem,ws}.go: First step towards an efficient state propagatorRunxi Yu11 days3-6/+110
* go.sum: go mod tidy (removing old checksums)Runxi Yu11 days1-6/+0
* ws.go: Index chanPool by userID, rather than session cookieRunxi Yu11 days1-5/+2
* {main,utils,ws}.go: Initialize cancelPool directly tooRunxi Yu11 days3-25/+1
* Bump dependenciesRunxi Yu11 days2-3/+9
* {main,ws}.go: Initialize chanPool directly instead of setupChanPool()Runxi Yu11 days2-22/+1
* courses.go: ReformatRunxi Yu11 days1-1/+1
* {courses,wsm}.go: Add getCourseByIDRunxi Yu11 days2-10/+8
* {courses,wsm}.go: Add (*courseT).decrementSelectedAndPropagateRunxi Yu11 days2-24/+15
* {courses,ws,wsm}.go: Update userCourseGroups during choose/unchooseRunxi Yu11 days3-12/+51
* config.go: Emit warning when fake auth is enabledRunxi Yu11 days1-0/+2
* bench.go: Don't close request bodyRunxi Yu11 days1-6/+0
* {courses,ws}.go: Populate userCourseGroups in a separate functionRunxi Yu11 days2-32/+35
* {courses,ws}.go: Populate userCourseGroups for each connectionRunxi Yu12 days2-5/+63
* courses.go, schema.sql: Validate course{Type,Group} in server, not SQLRunxi Yu12 days4-30/+45
* *.sql: New schema with ctypes and cgroupsRunxi Yu12 days3-18/+39
* drop.sql: New SQL script to drop all tablesRunxi Yu12 days1-0/+3
* auth.go: Improve display of OAuth 2.0 errorsRunxi Yu12 days1-4/+17
* config.go: Return errors instead of panicing on auth.fake issuesRunxi Yu12 days1-3/+11
* {config,main}.go, cca.scfg.example: Settable static pathRunxi Yu12 days3-13/+8
* staff.html: Initial staff pageRunxi Yu12 days1-0/+149
* student.html, *.js: {main->student}.jsRunxi Yu12 days2-1/+1
* student.html: {{ .user.Name }} instead of Home in titleRunxi Yu12 days1-1/+1
* bench.go, main.js: Use an HTTPS URLRunxi Yu12 days2-2/+2
* {config,main}.go, cca.scfg.example: Support TLSRunxi Yu12 days3-8/+65
* main.go, cca.scfg.example: Remove FastCGI supportRunxi Yu12 days2-9/+5