AgeCommit message (Collapse)AuthorLines
Clean up the whole treeBryce Kwon-9/+8
Fold `enable-stats` back into `max-stats`Bryce Kwon-1/+1
A `max-stats` period enables the page again, as it did before v2.2.0, so one key does both jobs.
Use standard HTTP reason phrasesBryce Kwon-2/+2
Mark the cache listing untrustedBryce Kwon-0/+4
Remove the repository homepage featureBryce Kwon-2/+0
Restyle the sources and fix the audit's findingsBryce Kwon-77/+85
Settle the names, types and layout of the sourcesBryce Kwon-7/+6
Drop the help tab and its built-in guideBryce Kwon-10/+0
Gate the stats page and add a language breakdownBryce Kwon-1/+4
`max-stats` only bounds the selectable periods now and no longer doubles as the enable switch. The tree walk runs before the history walk on purpose. Releasing commit memory while walking history resets each commit slab index, and a commit graph lookup afterwards would read another commit slot and walk the wrong tree. The stats fixture writes a commit graph so the tests cover that path. The history walk bounds the window in process rather than passing a formatted since date to `setup_revisions`, and parses each commit once.
Add a help page with common workflowsBryce Kwon-0/+10
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.
Tolerate a missing or empty repository URLBryce Kwon-1/+2
`trim_end()` returns NULL when a repo url is empty or all slashes and the later newline trim dereferenced it. The legacy `r=` and `p=about` path also read the last byte of the url without checking it was set.
Gate the cache listing behind `enable-cache-list`Bryce Kwon-0/+6
The `ls_cache` page printed the cache directory path and the urls other visitors had requested, with no gate at all.
Reorganize into source, assets and librariesBryce Kwon-0/+208
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.