| Age | Commit message (Collapse) | Author | Lines |
|
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
The stripe rules come later at the same specificity and match every
row, so the logheader background never showed.
|
|
|
|
The five rules differed only in their colours, so a change to the shape
of a label had to be made five times over.
|
|
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.
|
|
|
|
The padding the table gained left an empty commit with a hollow frame
where the file rows would be.
|
|
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.
|
|
On a touch screen the highlight stayed on whichever row was tapped last.
|
|
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.
|
|
Scintillua's css lexer tags them with names the map had no row for, so
they came out as plain text.
|
|
The fades are skipped for anyone who asks for reduced motion.
|
|
Its dark red barely stood out from the dark background.
|
|
A short file left the rule above the code, and the highlight bar under
a fragment, only as wide as its longest line.
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
A window too narrow for the tabs wrapped the last of them onto a second
row, held apart from the line under the others, as an iPhone showed on
every repository page. The row now scrolls sideways instead, keeping
the active tab in view and fading the side that hides more of them, and
the tabs draw closer as the window narrows so all seven still fit at
360 pixels.
|
|
|
|
git format-patch ends each patch with the version of git that wrote it,
and the bare "cgit" that 3a00e19 left in its place said less. The
version is written as git writes its own, without the v of the tag, so
a release build signs with "cgit 2.9.0". The footer and the generator
tag still leave versions out.
|
|
Only some pre elements named --font-mono, so code in a readme took the
browser's own font, Courier in Chrome and Safari, rather than a theme's.
|
|
The bar was measured from the table's border edge, a pixel above where
its offset counts from, and covered only the digits of each number. Its
width was the part of the table in view, so scrolling a long line
sideways left the highlight behind.
|
|
A lexer may hand back the bytes of one separator, or the CR and LF of a
line ending, in different tokens, so line endings become line feeds
before lexing and the separators are escaped once the tokens are joined.
|
|
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.
|
|
The stylesheet overhaul in 4ce57f5 gave the pre of the tree and blame
pages the site's monospace font but left the code element inside it on
the browser's own, Courier in Safari and DejaVu Sans Mono on a typical
Linux desktop. A line box holds both fonts on one baseline, so where
their ascent and descent differ each code line comes out a little
taller than its number. By the end of a 2,000 line file the code sat 45
lines low in Safari and 109 in all three engines on Debian.
|
|
|
|
|
|
The about-render unit test bounds three renders at one second to catch
the cubic trim coming back. They take 0.1 s natively and three seconds
on an emulated x86_64 host, where the check failed, while the old code
took minutes, so ten seconds still tells the two apart.
|
|
Git reads the global config for its trace settings before cmd_main is
reached, so the isolation there came too late and every request probed
$HOME/.gitconfig. The home-access test had passed on arm64 only because
access is no syscall of its own there, so it now traces every call that
takes a path.
|
|
Every list sorted here is null until its first entry, and C leaves a
null base undefined even with nothing to sort. glibc declares it nonnull
and its UBSan build aborted the stats page of a repository with no
commits in the window, which the Linux matrix caught.
|
|
The slot lock was a POSIX record lock, which a process loses the moment
any descriptor on the file closes, and the fill puts the lock file on
stdout, which every exec filter and snapshot compressor closes with its
dup2. A second request on the slot could then rebuild it under the first
and splice the two pages. An flock holds until the last descriptor goes.
|
|
The slot being filled was forgotten before the page's final flush, so a
write that failed there, on a full disk for one, could not abandon the
fill: cgit died into the lock file instead and the visitor got nothing.
The mid-page path already delivered the page from the lock file.
|
|
Both pages hand the diff to git, whose own limit on an inlined blob is
512 MB, so a commit adding a blob the other views refuse was inflated
and diffed in full. The cap is passed through to git, which shows such a
blob as binary.
|
|
A quoted header value escaped only the quote, the backslash, CR and LF.
A web server refuses a response whose header holds any other control
byte, so a file named with one could not be downloaded at all.
|
|
A ttl in the tens of millions of minutes overflowed the int it was
multiplied in.
|
|
The index stats the default branch below the repository to date it,
and a scanned repository sets its own defbranch, which was not held to
what a ref may hold, so one spelled as a path reached a file outside.
|
|
A tree can hold two entries of one name when fsck is off, and the walk
went on after the first answered: a second file put two responses in
one body, and a directory under the same name printed headers from the
mimetype string the first had already freed.
|
|
A signature is a note a pusher stored, and the download read it whole
without the size check every other blob a page inflates goes through.
|
|
The refs listing offers a tag's snapshot under the stem of its name, and
the lookup back from that name settled on whatever ref matched first,
so a branch spelled like the stem was archived in the tag's place. Every
candidate is now tried as a tag before any is tried as a branch.
|
|
A pusher can point refs/notes/commits or a signature notes ref at any
object, and git dies loading one that is no tree, which ended every page
of the repository, the dumb transport included. Such a ref now counts
as absent.
|
|
A date past what the system holds, a zone that is no hhmm offset, or a
date earlier than its own westward offset all made git die inside
show_date, which took the summary, refs, log, commit and feed pages of
the repository down. They are now clamped as git's own log clamps them.
|