Diff options
Diffstat (limited to '')
-rw-r--r--CHANGE.txt197
1 file changed, 197 insertions, 0 deletions
diff --git a/CHANGE.txt b/CHANGE.txt
index c14bf3d..fa0bf61 100644
--- a/CHANGE.txt
+++ b/CHANGE.txt
@@ -5,6 +5,203 @@ Notable changes to this fork, newest release first. History before v2.0.0
belongs to upstream cgit and is not covered here.
+v2.11.1 (2026-10-31)
+--------------------
+
+A bugfix release for v2.11.0, which crashed on the log and summary pages of
+any repository with enable-mailmap on.
+
+Fixed
+.....
+
+* The log and summary pages of a repository with enable-mailmap on crashed,
+ as releasing the walk also freed the mailmap cgit keeps for the whole
+ request. The patch and stats pages could free memory twice when git failed
+ to start their walk.
+* The syntax highlighter left a file whose extension is in capitals, such as
+ MAIN.C, without colour.
+* A page served uncached because its cache slot could not be written showed
+ its title twice.
+* A scan logged "Unable to read the owner" with "Success" as the reason for
+ each repository whose owner has no passwd entry.
+* tools/build-development.sh probed the compiler named by CC for sanitizers
+ but built with cc, and tools/build-release.sh left its probe files behind
+ in the temporary directory.
+* Some tests with an exec filter failed now and then, depending on whether
+ cgit or the filter ran first.
+
+
+v2.11.0 (2026-10-31)
+--------------------
+
+A release that cuts cgit back to a lean core. Nearly 300 commits take out dead
+code, repeated logic and stale comments across the sources, the stylesheet,
+the extensions, the tests and the docs, and fix the bugs found on the way. The
+caches now lock with flock throughout, so read the two upgrade notes under
+Changed before deploying, above all on a cache-root shared between hosts.
+
+Added
+.....
+
+* tools/build-release.sh builds on macOS as well as on Linux and the BSDs. It
+ probes its linker flags as it already did its compiler flags, and keeps full
+ RELRO wherever the linker offers it.
+* tools/build-development.sh uses whichever sanitizers the compiler offers,
+ falling back to UndefinedBehaviorSanitizer alone where AddressSanitizer is
+ missing, as on OpenBSD.
+* make get-git fetches, checks and unpacks git's tarball with the tools each
+ system ships, curl, wget, fetch or ftp, and sha256sum, shasum, sha256 or
+ openssl, piping xz to tar where tar cannot read it.
+
+Changed
+.......
+
+* The page cache and the cached repository list take the same lock, an flock
+ on a lock file opened close-on-exec. A request that finds a slot or the list
+ being rebuilt by another no longer logs "Unable to lock slot", while a real
+ failure to open, lock or write a lock file is logged with its path.
+* Upgrade note for Linux: a scan by the old binary still running when the new
+ one starts holds an fcntl lock that flock does not see, so one rebuild of
+ the repository list can be written by two processes at once. Delete the
+ rc-* files under cache-root once the new binary is in place, or upgrade
+ while no scan runs.
+* Upgrade note for NFS: on a mount with local_lock=flock or local_lock=all,
+ flock stays on each client, so hosts sharing one cache-root can rebuild the
+ same repository list at once, as the page cache always could. Give each
+ host a cache-root of its own on local disk.
+* The command line switches --repo, --page, --head, --oid and --ofs are gone.
+ They were undocumented, --query covers them, and --repo never selected a
+ repository.
+* syntax-highlight.lua colours a file only when Scintillua's detect() names a
+ lexer for it, and no longer guesses from the file extension. A Scintillua
+ without detect() leaves every file uncoloured but escaped.
+* about-render.lua no longer puts a data-lang attribute on fenced code or a
+ manpage class on man pages, since nothing styled or read either.
+* A line range such as #n10-n20 scrolls to where a single line lands, rather
+ than three quarters of the way down the window.
+* The truncation link of a side-by-side diff is underlined like the unified
+ one, and the login error takes the colour of the other error messages.
+* An empty repository's page no longer draws a Clone heading over no rows when
+ clone-url expands to nothing, which matches the summary page.
+* A corrupt repository whose root tree is missing lists as empty instead of
+ answering 404.
+* The diff page names a revision that is not a commit as the request wrote
+ it, and --version prints cgit in lower case.
+* The test suite writes its configs through shared helpers, and its duplicate
+ checks are gone.
+
+Fixed
+.....
+
+* The sample cgitrc placed scan-path ahead of about 30 settings that must
+ come before it, so uncommenting it where it stood silently dropped those
+ settings for every scanned repository.
+* With enable-commit-graph and follow both on, the log labelled the age column
+ Graph and lost its Age header.
+* The stats page dropped commits made on the window's first day earlier than
+ the time of the request.
+* The stats page handed a path starting with a colon to git as pathspec
+ magic, which the log, patch and feed pages refuse.
+* A snapshot of a repository whose url is ".git" or empty read past a buffer
+ while working out the snapshot's name.
+* The age labels skipped every other age when they moved to a coarser unit,
+ leaving some stale until the next pass.
+* post-receive.cgit-age printed an error and exited non-zero when it could not
+ write the age file. Like the other hooks it now says nothing and exits 0.
+* The auth filters failed every login on Lua 5.3 and later when
+ session_seconds was not a whole number, and accepted a few malformed
+ spellings of a valid cookie.
+* Filters and snapshot compressors inherited a stray copy of a cache slot's
+ lock, a refresh that could not take its lock went unlogged, and a slot whose
+ key could not be written stayed locked through the uncached render.
+* On FreeBSD, NetBSD and OpenBSD the build left Lua out, because those systems
+ name its package lua-5.4 or lua54.
+* Small leaks on the tree, refs, page header, log, snapshot and history walk
+ paths are closed.
+* The docs stated a few defaults and behaviours wrongly. virtual-root now
+ reads as defaulting to SCRIPT_NAME followed by a slash, and
+ enable-version-info, project-list and the server configs' asset links are
+ described as they work.
+* Two filter tests passed without their filter running, and several checks
+ matched text other than what they were after.
+
+
+v2.10.0 (2026-10-29)
+--------------------
+
+A release that squares off the interface and brings its colours up to WCAG
+AA, with a readme renderer that copes with more of what projects ship and an
+example hook that keeps the commit-graph current.
+
+Added
+.....
+
+* enable-version-info, off by default, puts cgit's version in the footer, the
+ generator tag and the signature of patches, with git's beside it in the
+ footer.
+* custom/hooks/post-receive.commit-graph writes the commit-graph and its
+ changed path filters after each push, which speeds up the log, blame and
+ graph pages and any log limited to one file.
+* The readme renderer makes a heading of a paragraph underlined with equals
+ signs or dashes, starts a code block at four spaces or a tab, and keeps an
+ escaped pipe inside its table cell.
+* tools/build-development.sh builds cgit for debugging, unoptimised and held
+ to git's developer warnings, with AddressSanitizer and
+ UndefinedBehaviorSanitizer linked in. With clang and ctags it also leaves a
+ compilation database and a tags file in build/.
+
+Changed
+.......
+
+* Controls, tabs and labels have square corners. The radius tokens stay, set
+ to zero, so a theme can still round them.
+* Every text colour reaches 4.5:1 on the backgrounds it sits on, row stripes
+ included, and links inside running text are underlined.
+* Form controls have a border of 3:1 contrast, and every link and control
+ shows the same focus ring.
+* Every framed box and table grid has the same mid grey border.
+* The diff and stat options panel has its caption as a header strip, with
+ the selects and the button sharing one column.
+* Page titles name the page first, then the repository and the site, so
+ tabs, history and search results can tell the pages apart.
+* A signed tag's signature prints as part of its message again, as it did up
+ to v2.9.1, rather than folded away.
+* The syntax highlight colours are tokens, so a theme can change them like
+ the rest.
+* The scripts load with defer. A site script placed after cgit.js can still
+ call window.cgit.
+* The post-receive.cgit-cache hook drops only the pushed repository's pages
+ and the index. It finds the repository's url from scan-path or
+ hooks.cgiturl, and clears everything as before when it has neither.
+* The example server configs name the release they were written for, nginx
+ 1.30, Apache httpd 2.4 and lighttpd 1.4.
+* tools/release-build.sh is now tools/build-release.sh, and CHANGELOG.txt is
+ now CHANGE.txt.
+
+Fixed
+.....
+
+* A long hash or download name made the whole page scroll sideways on a
+ phone. Both may now break.
+* A readme holding a NUL byte lost everything after it. Each NUL now shows as
+ U+FFFD.
+* A markdown link opening with a mix of slashes and backslashes, which a
+ browser follows to another site, now renders as text, as one opening with
+ two slashes already did.
+* Man pages written by DocBook, pod2man or by hand leaked roff onto the page.
+ Their escapes, comments and preambles now draw nothing, the common named
+ characters render, and .EX, .Vb, .TP and the alternating font macros lay
+ out as intended.
+* In forced colours, such as a Windows high contrast theme, the active tab
+ and the lines a URL names had no mark. They now take the reader's Highlight
+ colour.
+* A screen reader announced the graph and links columns with no name.
+* The commit page offered diff options for an octopus merge, which draws no
+ diff.
+* Error text such as "Path not found" sat further in than the rest of the
+ page.
+
+
v2.9.2 (2026-10-25)
-------------------