AgeCommit message (Collapse)AuthorLines
Give every summary section the same columnsBryce Kwon-6/+21
The ref rows always spanned five columns and the log three to five, so with the default config the log and clone rows stopped 160px short of the table's edge, and with any config the log rows did on a phone, where they alone lost their counts. A column no cell began in also made the summary and refs pages invalid HTML.
Search the log literally as intendedBryce Kwon-6/+4
setup_revisions compiles the pattern itself, and the literal type cgit set afterwards came too late, so text that was no valid regular expression, such as an unbalanced bracket, ended in a 500.
Make two branch conditions say what they rely onBryce Kwon-1/+1
cgit_parse_url tested ctx.repo where the loop sets repo_end alongside it, and the log's closing link kept a commit it never read. Clang's analyzer tripped on both.
Page a followed log by the name asked forBryce Kwon-5/+6
Each row of a followed log moves ctx.qry.vpath to the name its commit knew the file by, and the pager built its links from that, so past a rename both links named the old file and led to an empty page.
Show the root commit in a followed logBryce Kwon-13/+12
A followed log diffs each commit against its parent to learn whether the file changed there, and a root commit was skipped rather than diffed against the empty tree, so a file created in the first commit never showed that commit.
Hold object sizes in size_t as git 2.55 doesBryce Kwon-2/+2
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.
Pass callbacks to git by addressBryce Kwon-1/+3
ISO C has no conversion between a function pointer and void *, so the callbacks handed through git's data pointers and the write found by dlsym stopped the pedantic half of a DEVELOPER=1 build.
Add stable markup hooks for site themesBryce Kwon-19/+22
Harden the page renderersBryce Kwon-26/+71
Apply the mailmap at HEAD to every identBryce Kwon-0/+2
Clean up the whole treeBryce Kwon-76/+49
Trim the comments and dead code across the treeBryce Kwon-10/+8
Use standard HTTP reason phrasesBryce Kwon-1/+1
Replace non-ASCII output glyphs with ASCIIBryce Kwon-6/+5
Log scan lock failures that are not contentionBryce Kwon-1/+1
Tidy the structure of the generated markupBryce Kwon-1/+1
Omit the pager on a single log pageBryce Kwon-3/+7
Give the stub and tag rows their full widthBryce Kwon-3/+7
Let the listings wrap and the diff tables scrollBryce Kwon-1/+1
Restyle the sources and fix the audit's findingsBryce Kwon-233/+274
Settle the names, types and layout of the sourcesBryce Kwon-4/+4
Declutter the interface on small screensBryce Kwon-6/+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.
Reject option-like revisions in the log walkBryce Kwon-0/+12
The log page passed the `id` query parameter to git's revision parser without resolving it and ahead of the end-of-options marker. A value like `id=--output=/path` was then parsed as an option, so an unauthenticated request could create or truncate any file the server user could write. No valid ref or object name begins with a dash.
Cast signed chars before ctype callsBryce Kwon-2/+2
A plain char is undefined in the ctype functions for negative values, which a high byte produces wherever char is signed.
Reorganize into source, assets and librariesBryce Kwon-0/+553
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.