AgeCommit message (Collapse)AuthorLines
Send a charset only with a text typeBryce Kwon-8/+2
Archives, packs and the HEAD file went out as octet-stream or gzip with a UTF-8 charset on the end, since only the blob page cleared it. The headers now decide from the type itself, so the two places that cleared the charset by hand no longer need to.
Word the blob size and binary errors alikeBryce Kwon-1/+1
The four pages that refuse a blob over max-blob-size each said it in their own way, two of them in lower case, and the blame page ended its binary notice with a full stop no other error carries.
Harden the page renderersBryce Kwon-6/+5
Clean up the whole treeBryce Kwon-12/+7
Trim the comments and dead code across the treeBryce Kwon-20/+16
Use standard HTTP reason phrasesBryce Kwon-6/+6
Spell the charset UTF-8 everywhereBryce Kwon-1/+1
Print the raw-content headers with the restBryce Kwon-6/+1
Drop the Last-Modified, Expires and ETag headersBryce Kwon-2/+0
Serve the plain listing as a complete documentBryce Kwon-4/+9
Restyle the sources and fix the audit's findingsBryce Kwon-48/+96
Settle the names, types and layout of the sourcesBryce Kwon-4/+6
Point the fork's links and credits at itselfBryce Kwon-1/+1
AUTHORS now records the upstream developers as the project's history rather than as maintainers of the fork.
Check `max-blob-size` before reading, default 10 MBBryce Kwon-0/+8
Only the tree view honoured the limit, and only after loading the whole object. The raw blob, plain, blame and readme paths now check the size before reading, and the default moves from unlimited to 10 MB so a fresh install never buffers a huge object whole, with zero still the opt-out.
Harden the blob view error pathsBryce Kwon-2/+2
A blob requested by ref with an unknown path fell through to the commit object and was served with a 200 instead of a 404, two error pages passed a null pointer to a %s format when the request carried no object id, and the error pages left the layout open.
Reorganize into source, assets and librariesBryce Kwon-0/+209
The C sources move to source/, the served files to assets/, the bundled Git submodule to libraries/git and the filter scripts to extensions/. Everything the build generates now lands in build/, so a clean is a single remove and the tree stays clean.