Commit 96df83f2d3

96df83f2d3eb9f241bcaa53fcc243d090c53ab2b

parent: e99285743d

Verified · cmc ci/build: success ci/test: success ci/vuln: success

cmc <hello@cleberg.net> · 2026-09-04 17:48 UTC

CHANGELOG: v1.13.0

Layout: unified · split

CHANGELOG.org +70
@@ -4,6 +4,76 @@ Versioning follows semver from v0.1.0. Database migrations run
44automatically on daemon start; upgrade notes appear per release when
55anything beyond "replace the binary and restart" is needed.
66
7* v1.13.0 — 2026-09-04
8
9Collaboration. A review is composed and submitted as one thing, a merge
10request can say it is not asking yet and can show what changed since you
11last looked, issues are searched by their text, and the events half the
12mutations never recorded now exist.
13
14- A review is composed as a unit. =mr diff-comment --pending= holds a
15 comment back; =mr review= publishes the batch with the verdict and says
16 how many went with it; =mr review --discard= throws away what was never
17 submitted. A pending comment notifies nobody when written — the review
18 is the announcement, and it names its own size — and does not gate a
19 merge, since a thread only its author can see is one nobody else could
20 resolve. #111
21- =mr create --draft=, =mr draft=, =mr ready=. A draft does not merge and
22 does not appear in anyone's review queue; marking it ready is the
23 request for review. Draft is a flag rather than a fifth state, so every
24 =state = 'open'= rule still means what it did, and the merge refusal is
25 unconditional: every other gate is a setting an admin turns on, and
26 this one is the author's own statement about their own work. #111
27- =mr range-diff= shows what changed between two revisions of a merge
28 request, and =mr revisions= lists them. A push stales every review and
29 nothing said what had moved; a diff of the two heads cannot answer it,
30 and the previous head was overwritten in place. Each side of the
31 comparison carries the merge base it had at the time, since measuring
32 both against today's would attribute every commit that landed on the
33 target in between to this merge request's author. #111
34- Issues and merge requests are searched by their title and body, over
35 FTS5. =issue list --search= and =mr list --search= narrow one
36 repository; the instance-wide =search= reaches bodies now, and both
37 list pages carry a search box. What someone types is quoted term by
38 term, so an FTS5 operator — =c++=, =AND=, a lone quote — is a word to
39 match rather than a syntax error. #114
40- Ten mutations that changed a repository silently now record an event:
41 =mr.closed=, =mr.reviewed=, =mr.edited=, =mr.retargeted=, =mr.draft=,
42 =issue.edited=, =issue.labeled=, =issue.assigned=, =issue.milestoned=,
43 =mr.milestoned=, =release.deleted=. =mr close= and =issue edit= also
44 notify participants, which they did not. The full list is on the API
45 wiki page and =webhook add --events= refuses a name that is not on it,
46 since a subscription to a typo would never fire and nothing would say
47 so. #112
48- =gitbay-runner -jobs N= runs N builds at once. Claiming was always a
49 single transaction that selects and updates, and each build already
50 worked in its own directory, so several workers were safe the whole
51 time; the runner never used more than one. #115
52- A merge request replayed from a migration bundle has a diff. The bundle
53 carried no head at all, and =mr diff= resolves through the head ref, so
54 a merged merge request — which has no source branch left — could only
55 fail. Re-running an import after the git push sets the head it could
56 not set the first time. The GitHub import fetches =refs/pull/*/head=,
57 which a mirror made with the default refspecs does not carry. #128
58- The review loop is driven end to end by three accounts in the test
59 suite: draft, ready, thread, approval, resolve, merge, with approvals,
60 CODEOWNERS and require-resolved all on at once. Every one of those had
61 its own test and none of them met. #139
62- A bare =go test ./...= says the timeout is too short instead of
63 panicking eleven minutes in and blaming whichever test was running.
64 =make test= is what CONTRIBUTING asks for now. #143
65
66Migrations 0036 through 0039 add the search index, the draft flag,
67pending review comments and merge request head history; 0036 and 0039
68backfill from what is already there. They run on daemon start.
69
70Two things this does not do. There is still no way to ask a particular
71person for a review — the queue is computed from involvement, so a
72collaborator with write access who has not touched a thread hears nothing
73(krz/gitbay#145). And a CI build still runs as the runner's own user with
74no container; the runner on this instance is scoped to one repository,
75which is what keeps that narrow (krz/gitbay#144). Both are v1.14.0.
76
777* v1.12.0 — 2026-09-04
878
979The store and the push path. Dashboard queries walk an index instead of