AgeCommit message (Collapse)AuthorLines
Show characters a browser breaks at as escapesBryce Kwon-0/+13
The HTML parser turns a carriage return with no line feed after it into a line feed, and WebKit starts a new line at U+2028 and U+2029, while git and the line numbers count line feeds alone, so each one set every later line of the tree and blame pages a line below its number. CSS Text makes vertical tab, form feed and next line forced breaks as well, though no engine honours that yet. The escapes follow gitweb, which shows control characters the same way.
Cut text between characters, never inside oneBryce Kwon-2/+3
The index description was cut at a byte count, which could split a multibyte character and leave an invalid sequence on the page. Commit subjects already backed up to the start of the character, so html_ntxt now does that for every caller.
Encode repository urls and the feed branchBryce Kwon-0/+8
Links built from the repository url, among them the description link on the index and the Atom and refs links, wrote it as configured, so a name holding a space, '#' or '?' broke them. The feed link in the page head did the same with the branch, which turned a '+' into a space.
Keep the error of a request that dies mid captureBryce Kwon-1/+2
The commit and diff pages collect each file's body before printing it, and a die in git while one was collected wrote the error page into that body, which was never sent, so the visitor got a page cut off mid table.
Keep the query string across the about redirectsBryce Kwon-0/+1
The hop to the trailing-slash form of the about page, and the hop back to the summary of a repository without a readme, were built from the path alone, so a request for the about page of another branch landed on the default one. The query goes into the Location line as the client sent it, with any byte a header cannot carry percent-encoded.
Harden the request path, scan and error recoveryBryce Kwon-4/+8
Clean up the whole treeBryce Kwon-7/+3
Trim the comments and dead code across the treeBryce Kwon-2/+2
Restyle the sources and fix the audit's findingsBryce Kwon-20/+50
Render each diff body while its file is openBryce Kwon-0/+5
Gather page output into one bufferBryce Kwon-0/+4
Emit generated runs in batches, not a write eachBryce Kwon-0/+7
Reorganize into source, assets and librariesBryce Kwon-0/+37
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.