AgeCommit message (Collapse)AuthorLines
Print line number anchors through one helperBryce Kwon-0/+7
Print the commit and tag dates through one helperBryce Kwon-0/+6
Print each person through one helperBryce Kwon-0/+7
The log, refs and tag pages no longer open a filter of their own, so they stop including filter.h.
Refuse pathspec magic through one helperBryce Kwon-0/+7
Start each history walk through one helperBryce Kwon-0/+7
Drop the hidden form fields' unused page argumentBryce Kwon-1/+1
Look up a request's commit in one placeBryce Kwon-0/+14
The diff page now names a revision that is no commit the way the request wrote it, as the other pages already did, rather than as the full id it resolved to. The helpers sit beside the error page in ui-shared.c, since shared.c prints nothing.
Open and close each page through the layout callsBryce Kwon-3/+0
Keep the clone row and title docs in the headerBryce Kwon-1/+15
Fold the va_list error page into its one callerBryce Kwon-1/+0
Drop the query-string form of every linkBryce Kwon-3/+1
cgit falls back to SCRIPT_NAME for virtual_root whenever cgitrc leaves it out, so the ?url= and ?r= forms only ever reached an error page raised while cgitrc was still being read. The page argument of cgit_add_hidden_formfields fed only the url field, so it is unused until its callers stop passing it.
Trim a snapshot name without reading out of boundsBryce Kwon-1/+2
For a url of .git, or an empty one, repo_basename stepped its index to the byte before its buffer, read it, and would have cleared it had it held a slash. Git's strbuf trims take the same steps safely, and they lift the 1024-byte cap that failed the page for a longer url.
Name the page first in every titleBryce Kwon-0/+1
Summary, about, log, refs, tag and stats pages shared one title, so tabs, history and search results could not tell them apart. Titles now read page, repository and site, with root-title as the site, and the description stays in the meta description, where search engines read it.
Encode repository urls and the feed branchBryce Kwon-2/+10
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.
Hold object sizes in size_t as git 2.55 doesBryce Kwon-1/+1
Git 2.55 moved object sizes from unsigned long to size_t. The two are the same type on 64-bit hosts, but not on a 32-bit one, where GCC 14 rejects the mismatched pointers, so cgit stopped compiling there.
Hand the about filter the tree url its links needBryce Kwon-0/+8
With nothing below the about page, a readme's relative links have to be written against the tree, and only cgit knows how this site spells the url of a tree page and which ref the readme was read from. Both reach the filter already escaped for a url, built by the same writer as cgit's own links.
Share the max-blob-size check and its refusalBryce Kwon-0/+5
Five copies of the test and four of the error page had to agree by hand. The new check pins the four refusals, which no test covered.
Keep the query string across the about redirectsBryce Kwon-2/+8
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 page renderersBryce Kwon-7/+17
Name the tagged object under its full idBryce Kwon-1/+2
Clean up the whole treeBryce Kwon-50/+31
Point clone rows at a url a browser can followBryce Kwon-0/+1
Restyle the sources and fix the audit's findingsBryce Kwon-14/+50
Settle the names, types and layout of the sourcesBryce Kwon-1/+1
Reorganize into source, assets and librariesBryce Kwon-0/+88
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.