AgeCommit message (Collapse)AuthorLines
Declare each phony target beside its ruleBryce Kwon-9/+19
A list at the end of the file is easy to miss when a target is added or renamed.
Rename the release script to build-release.shBryce Kwon-1/+1
Named like build-development.sh, so the two sort together in tools/.
Add a development build scriptBryce Kwon-2/+49
cgit's objects are compiled by its own rule rather than git's, so they took no -MJ flag and a compilation database held only git's sources.
Fold the version script into its make recipeBryce Kwon-36/+17
gen-version.sh was only ever run by this one recipe, so tools/ now holds just the scripts a person runs.
Let long hashes and names wrap on a phoneBryce Kwon-0/+8
A blob header's hash and a commit's download names are single words wider than a phone's content area, so the whole main area scrolled sideways. The hash may now break anywhere, and below 640px a download name may too, while wider screens keep each name on one line with its signature.
Keep the commit-graph current in an example hookBryce Kwon-1/+57
cgit's log, blame and graph pages read commits from the commit-graph when a repository has one, and its changed path filters let a walk limited to one file skip the commits that never touched it. git gc writes a graph only now and then and starts those filters only when a write asks for them, so the hook writes a split layer with them after each push.
Drop only the cache a push makes staleBryce Kwon-28/+195
The hook cleared every slot on a push to any repository. cgit writes the request a slot answers at its head, so the hook now reads it back and drops only the pushed repository's pages and the index. It finds the repository's url from scan-path or hooks.cgiturl, and with neither it clears everything as before.
Pin the server configs to the releases they suitBryce Kwon-1/+7
Each names the branch it was written for and the release current at its last review, nginx 1.30.6 stable, Apache httpd 2.4.69 and lighttpd 1.4.85, as the projects' own sites listed them on 2026-10-29.
Note that the dumb http transport is a fallbackBryce Kwon-3/+7
Render the man pages that generators writeBryce Kwon-56/+298
DocBook, pod2man and hand written pages leaked roff onto the page: font escapes inside no fill blocks, comments, layout escapes such as \% and \c, the colours and half line moves around DocBook's links, and the requests and macro definitions their preambles open with. Those now draw nothing, the common named characters and strings render, .EX and pod2man's .Vb read as code, a .TP tag takes a line of its own and the alternating font macros switch fonts between their arguments. Anything rarer still falls back to its text.
Render more of the markdown seen in readmesBryce Kwon-19/+131
A line of equals signs or dashes under a paragraph now makes a heading of it, as on GitHub, instead of running into its text, and any other rule ends the paragraph. Four spaces or a tab start a code block, and an escaped pipe stays in its table cell. A link opening with two slashes or backslashes in any mix leads to another site, so it renders as text like the plain scheme relative one already did.
Keep a readme whole past a NUL byteBryce Kwon-8/+25
cgit takes filter output through a C string sink that stops at the first NUL, so a readme holding one lost everything after it. Each NUL now shows as U+FFFD, as a browser would show it.
Line error text up with the contentBryce Kwon-1/+1
Messages such as Path not found sat 2em further in than every other block on the page.
Offer no diff options on an octopus mergeBryce Kwon-1/+15
The commit page draws no diff for a merge of three or more parents, so the options above it changed nothing.
Bring every text colour up to WCAG AABryce Kwon-9/+14
Muted, faint, the footer and the month and year ages fell short of 4.5:1 on the backgrounds they sit on, the row stripes and line number cells among them, and links inside sentences differed from the text around them only by colour. Each grey is now the lightest that clears 4.5:1 on its darkest background, with months stepped between weeks and years so the age fade keeps all six steps, and links in running text are underlined.
Offer the versions as an optionBryce Kwon-7/+68
enable-version-info brings back the cgit and git versions that 3a00e19 took off the footer and the generator tag, for a site that wants them, and the version 2a6726a put on the signature of patches now follows it too. It stays off by default for the reason 3a00e19 gave.
Name the page first in every titleBryce Kwon-5/+46
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.
Mark the active tab and lines in forced coloursBryce Kwon-0/+13
A forced colours palette, such as a Windows high contrast theme, drops author backgrounds, and those were the only marks on the active tab and on the lines a URL names. The user's own Highlight colour takes their place.
Name the graph and links header cellsBryce Kwon-3/+7
Both were empty, so a screen reader moving through the table announced those columns with no name. An aria-label names them without adding text to the page.
Load the scripts with deferBryce Kwon-3/+11
A plain script in the head held up parsing until it had downloaded and run, though cgit.js only acts once the document is ready. Deferred scripts still run in the order given and before DOMContentLoaded, so a site script after cgit.js can still call window.cgit.
Give the syntax highlight colours tokensBryce Kwon-6/+13
They were the only colours written into their rules, so a theme could not change them the way the README says it can change the rest.
Write sizes and spacing one wayBryce Kwon-23/+16
Font sizes mixed percentages with ems, several paddings and margins spelt out four values where fewer said the same, the blob and blame tables set their position in a rule of their own, and the odd rows repeated the base row background.
Order the stylesheet by page areaBryce Kwon-288/+288
Rules now run from the tokens and the base elements through the controls, the page frame, the listings, the readme, the blob and blame views, the commit page, the diff, the stats and the login form, to the media queries. Each rule moved whole, and every page renders the same in Chromium, WebKit and Firefox.
Tidy the diff and stat options panelBryce Kwon-18/+22
Its caption sat above the box, each select took its own width, and the reload button hung indented under them. The caption is now the panel's header strip, the selects and the button share one column at the width of the widest select, and the labels lose their colons to match the commit details.
Test that every copy of the background matchesBryce Kwon-0/+16
Give form controls a border of 3:1 contrastBryce Kwon-2/+2
WCAG 1.4.11 asks for 3:1 where the border is what shows a field is there, and the search field has no other edge. The strong grey gives 5.7:1 on the light background and 3.2:1 on the dark one. Hover moves to the text colour so that it still shows.
Frame boxes and grids in the mid greyBryce Kwon-8/+8
The stats grid, the binary blob table and the line above a blob kept the black of the original stylesheet as the darkest grey, and the readme used the lightest, while the diffstat and diff options sat in between. Rules such as the tab bar and the header line keep the light grey.
Draw one focus ring on links and controlsBryce Kwon-1/+3
Links fell back to each browser's own ring, which differs in shape and colour from one engine to the next, while selects and inputs drew the link colour ring. The repository title clips its overflow, so it gets 3px of padding, given back by a negative margin, for its ring to show whole.
Square the corners of controls, tabs and labelsBryce Kwon-4/+4
The radius tokens stay, set to zero, since the README offers metrics to a theme, so a site can still round them. Zero rather than no radius at all, since WebKit's own stylesheet gives a select a radius of its own. The chevron loses its round caps and joins to match.
Drop a row background the stripes overrideBryce Kwon-4/+0
The stripe rules come later at the same specificity and match every row, so the logheader background never showed.
Write border shorthands in one orderBryce Kwon-8/+8
Share one rule between the ref labelsBryce Kwon-25/+10
The five rules differed only in their colours, so a change to the shape of a label had to be made five times over.
Stop folding a tag's signature awayBryce Kwon-71/+8
The fold put a click between the reader and the signature, and the browser's own disclosure marker and summary did not take the theme. The signature prints as part of the message again, as it did up to v2.9.1.
Release v2.9.2 v2.9.2Bryce Kwon-1/+52
Draw no diffstat table for a change to no filesBryce Kwon-4/+17
The padding the table gained left an empty commit with a hollow frame where the file rows would be.
Fold a tag's signature away under its messageBryce Kwon-4/+94
The armour ran on for more lines than most tag messages, as part of the message itself. git finds the signature for every kind it can sign with, so PGP, SSH and X.509 all fold the same way.
Highlight list rows on hover only under a mouseBryce Kwon-13/+15
On a touch screen the highlight stayed on whichever row was tapped last.
Say when a login fails, and line up the formBryce Kwon-17/+77
A wrong password sent the reader back to the same empty form, which looked no different from a crash. The redirect now carries a flag the form reads, the same for an unknown user as for a wrong password, and the form leaves the flag out of the way back it signs.
Colour css properties and pseudo-classesBryce Kwon-30/+38
Scintillua's css lexer tags them with names the map had no row for, so they came out as plain text.
Fade colour changes and the line highlight inBryce Kwon-0/+20
The fades are skipped for anyone who asks for reduced motion.
Brighten the logo in dark modeBryce Kwon-0/+6
Its dark red barely stood out from the dark background.
Run the blob and blame tables across the pageBryce Kwon-2/+2
A short file left the rule above the code, and the highlight bar under a fragment, only as wide as its longest line.
Let a commit's labels wrap apart from its subjectBryce Kwon-6/+19
The labels sat flush against the subject's last word, which made the two one unbreakable run, so a narrow cell stranded a word on its own line. A space now precedes each label and carries its gap, and a line that breaks there drops it, so a wrapped label starts flush.
Drop the comments from the stylesheetBryce Kwon-11/+0
Give every summary section the same columnsBryce Kwon-45/+172
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.
Drop the diffstat modes on phonesBryce Kwon-0/+4
The modes took a third of a phone's width, so longer paths broke at a hyphen or a slash. The tree listing already drops its mode column at that width, and the diff itself still names a mode that changed.
Pad the inside of the diffstat boxBryce Kwon-0/+3
The modes in the first column sat against the box's left border. A table with collapsed borders ignores its own padding, so the box now keeps its borders separate to take some.
Draw the diffstat bars as SVGBryce Kwon-28/+21
The bars were cells spanning up to 1000 columns of a nested table, which kept them free of inline styles under a strict CSP but broke the HTML table model, 18 errors on a commit page, and left Firefox's longest bar short of the full width. An SVG canvas sized by its attributes is just as safe under a CSP, validates, and draws every bar exactly to scale.
Keep each snapshot link in one pieceBryce Kwon-0/+30
On a narrow screen the download column broke a snapshot name at a hyphen or left its signature link alone on the next line. Each file and its signature now stay together, and a line breaks only between them.
Stack the commit details on narrow screensBryce Kwon-8/+23
Below 900 pixels the name, address and date of an author or committer shared one row with the diff options beside it, so each wrapped into a sliver and the name dropped below its label. Each value now stacks under its label at those widths.