Commit 96df83f2d3
Verified · cmc ci/build: success ci/test: success ci/vuln: success
Layout: unified · split
CHANGELOG.org +70
| @@ -4,6 +4,76 @@ Versioning follows semver from v0.1.0. Database migrations run | |||
| 4 | automatically on daemon start; upgrade notes appear per release when | 4 | automatically on daemon start; upgrade notes appear per release when |
| 5 | anything beyond "replace the binary and restart" is needed. | 5 | anything beyond "replace the binary and restart" is needed. |
| 6 | 6 | ||
| 7 | * v1.13.0 — 2026-09-04 | ||
| 8 | |||
| 9 | Collaboration. A review is composed and submitted as one thing, a merge | ||
| 10 | request can say it is not asking yet and can show what changed since you | ||
| 11 | last looked, issues are searched by their text, and the events half the | ||
| 12 | mutations 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 | |||
| 66 | Migrations 0036 through 0039 add the search index, the draft flag, | ||
| 67 | pending review comments and merge request head history; 0036 and 0039 | ||
| 68 | backfill from what is already there. They run on daemon start. | ||
| 69 | |||
| 70 | Two things this does not do. There is still no way to ask a particular | ||
| 71 | person for a review — the queue is computed from involvement, so a | ||
| 72 | collaborator 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 | ||
| 74 | no container; the runner on this instance is scoped to one repository, | ||
| 75 | which is what keeps that narrow (krz/gitbay#144). Both are v1.14.0. | ||
| 76 | |||
| 7 | * v1.12.0 — 2026-09-04 | 77 | * v1.12.0 — 2026-09-04 |
| 8 | 78 | ||
| 9 | The store and the push path. Dashboard queries walk an index instead of | 79 | The store and the push path. Dashboard queries walk an index instead of |