| Age | Commit message (Collapse) | Author | Lines |
|
setup.sh already asks the binary, so the seven scripts that each turned
the answer into a prerequisite now share one. test-lib names the
missing prerequisite beside every test it skips, so the notes that cgit
lacks Lua go, while the ones announcing a fallback stay. The list of
standalone interpreters moves into lib.sh and matches the versions the
extensions claim directly.
|
|
t0502 owns the shipped highlighter and already writes a cgitrc naming
it, so the check needs no config of its own there. t0204's header still
called it the last case long after it stopped being one.
|
|
The two identical posts for an unknown user become one, and no two
checks share a name, so a failure report points at a single check.
|
|
|
|
Every check replaces get_secret, the only caller of posix.sys.stat,
link and unlink, and nothing outside the harness calls preload.
|
|
cgit names no repository with an empty string, never nil, so the check
that the index stays up proved nothing, and auth-file in fact refuses
the index too while its repos file cannot be read. A session_seconds of
0 signs a session that has expired by the time it comes back, so it
needs no branch of its own in set_cookie.
|
|
set_cookie only ever writes an empty value or a token secure_value
built from url-encoded text, digits and hex, so stripping it changed
nothing.
|
|
The loop let a valid cookie through with a field appended, a doubled
separator or a zero in front of its expiry. The payload now carries the
expiry as written, so only the spelling secure_value issues verifies.
|
|
The filter hands a NUL through untouched, and only the harness's copy of
cgit's sink cut the text there, so the check would have failed the day
the filter replaced NULs the way about-render does.
|
|
The table of extensions and the second lookup served only a Scintillua
with no detect(), which now leaves every file uncoloured but escaped.
The fake detect() names a lexer after the file's suffix, so every test
lexer is reached through it.
|
|
|
|
Nothing in assets/ or in README's list of hooks reads a fenced block's
data-lang or the manpage class on a man page's wrapper, so the header
now names the two wrappers the stylesheet does style.
|
|
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.
|
|
The page guessed from the two settings cgit_add_clone_urls reads, so a
clone-url that expanded to nothing, or an empty one turning the global
off, still drew a Clone heading over no rows. The summary already waits
for a first url, and both now draw the heading the same way.
|
|
A row whose first entry is itself a directory leaked that entry's name.
A level git could not read as a tree returned early instead, which also
left the row's log, stats and plain links on the deeper path.
|
|
Every exit now goes through one label, which also clears the walk
arguments that the normal end used to leave allocated.
|
|
|
|
|
|
|
|
The anchors' scroll margin of half the window already centres a line
scrolled to the top of the view, which is where the browser puts a
single line. Asking to centre a range as well centred the margin with
it, and in Chromium, WebKit and Firefox the first line of a range
landed 73% of the way down the window against 49% for a single line.
|
|
getElementsByClassName returns a live collection, so an age moved to
the next unit dropped out of it mid-loop and the age after it was
skipped until the next pass, which can be a day away. On a cached page
that has crossed a unit boundary every second age stayed stale.
querySelectorAll returns a static list of the same elements.
|
|
The quick start says to uncomment scan-path, and in its old place a
scanned repository missed every setting below it, among them the
filters, the snapshots and the enable flags.
|
|
|
|
A list at the end of the file is easy to miss when a target is added
or renamed.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
The commit page draws no diff for a merge of three or more parents, so
the options above it changed nothing.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
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 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 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.
|
|
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.
|
|
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.
|