Commit f827923053
Verified · cmc ci/build: success ci/sonar: success ci/test: success ci/vuln: success
CHANGELOG.org +86
| @@ -4,6 +4,92 @@ Versioning follows semver from v0.1.0. Database migrations run | ||
| 4 | 4 | automatically on daemon start; upgrade notes appear per release when |
| 5 | 5 | anything beyond "replace the binary and restart" is needed. |
| 6 | 6 | |
| 7 | * v1.16.0 — 2026-09-08 | |
| 8 | ||
| 9 | What stops a stranger from moving here: the repository plumbing and | |
| 10 | the team gates the #185 walk found missing, twelve merge requests | |
| 11 | merged as one stack. | |
| 12 | ||
| 13 | ** Repositories | |
| 14 | ||
| 15 | - =repo settings default-branch <owner/name> <branch>= moves HEAD and | |
| 16 | the record; a branch that does not exist is refused. A first push of | |
| 17 | =master= or =trunk= into a fresh repository moves the unborn HEAD to | |
| 18 | the branch that arrived, so the clone checks something out. Settings | |
| 19 | page select. #189 | |
| 20 | - =repo rename <owner/name> <new-name>=: the row and the directory move | |
| 21 | together, with transfer's revert on a failed move. Clone URLs change. | |
| 22 | #190 | |
| 23 | - =repo settings require-mr on=: an existing protected branch refuses | |
| 24 | every direct push in pre-receive, =repo commit-file= and the web | |
| 25 | editor included; =mr merge= is its only writer. Creating the branch | |
| 26 | is still a push. #197 | |
| 27 | - =repo settings protect-tag <glob>= (and =unprotect-tag=): matching | |
| 28 | tags are created once and refuse moves and deletion. Separately, a | |
| 29 | tag a release is anchored to refuses both while the release exists, | |
| 30 | protected or not; delete the release first. #201 | |
| 31 | - =repo access list= reports effective access: one row per account | |
| 32 | with the highest role and where it comes from (owner, direct, org | |
| 33 | admin, org member, team). It used to list direct grants only, so a | |
| 34 | repository reached through teams answered with nothing. #200 | |
| 35 | - Removing an org member drops their team memberships in the same | |
| 36 | transaction. They kept every grant their teams carried, and re-adding | |
| 37 | them to the org restored nothing because nothing had gone. #196 | |
| 38 | - An outsider gets one answer about an org: its existence and members | |
| 39 | are public, its teams are for members, and =org team list= and =show= | |
| 40 | refuse a non-member rather than say the org does not exist. Ref #200 | |
| 41 | - A repository name may not end in =.atom=, as it may not end in | |
| 42 | =.git=. Ref #192 | |
| 43 | ||
| 44 | ** Merge requests | |
| 45 | ||
| 46 | - A push that leaves the merge request's diff unchanged keeps its fresh | |
| 47 | reviews: the patch-id of each revision against its own merge base is | |
| 48 | compared, and a rebase onto a target that moved on no longer stales | |
| 49 | every approval. A push that changes the diff stales them as before. | |
| 50 | #198 | |
| 51 | - The merge gates are one computation shared by =mr show= (a =gates= | |
| 52 | block: approvals counted and required, owners outstanding per file, | |
| 53 | open threads, checks, whether a fast-forward is possible), the merge | |
| 54 | request page, and =mr merge=, which names every unmet gate in one | |
| 55 | refusal rather than the first. =mr review= reports =counts= and says | |
| 56 | when a verdict is advisory because the reviewer cannot write. #199 | |
| 57 | ||
| 58 | ** Notifications | |
| 59 | ||
| 60 | - =@name= in an issue, merge request, comment or diff comment files | |
| 61 | "mentioned you" in that account's inbox and makes them a participant | |
| 62 | of the thread, provided they can read the repository and have not | |
| 63 | muted it. Watchers are not told about a mention addressed to someone | |
| 64 | else. Migration 0047. #202 | |
| 65 | - =notifications settings mail on|off= (and =show=): inbox rows are | |
| 66 | filed either way, this is the mail half. Login links are not activity | |
| 67 | and still arrive. The account page carries the same switch. | |
| 68 | Migration 0048. Ref #194 | |
| 69 | ||
| 70 | ** Web | |
| 71 | ||
| 72 | - Atom feeds: =/{owner}/{repo}/releases.atom=, | |
| 73 | =/{owner}/{repo}/log.atom[/{ref}]= and =/{owner}/activity.atom=, | |
| 74 | rendered over the rows the pages already serve. The owner feed covers | |
| 75 | public repositories only, since a reader carries no session; a | |
| 76 | private repository answers 404. The releases, log and owner pages | |
| 77 | carry the discovery link. #192 | |
| 78 | ||
| 79 | ** Documentation | |
| 80 | ||
| 81 | - The Users page says what differs over stock ssh: a multi-word value | |
| 82 | needs a second layer of quotes, and =help <noun>= replaces =--help=. | |
| 83 | The companion-wiki paragraph #170 made stale now points at | |
| 84 | =.gitbay/wiki/=. #204 | |
| 85 | ||
| 86 | ** Upgrading | |
| 87 | ||
| 88 | Replace the binary and reinstall the CLI. Two migrations (0047, the | |
| 89 | mentions table; 0048, the per-account mail switch), applied on start. | |
| 90 | Nothing changes behaviour until a setting is turned on: =require-mr=, | |
| 91 | =protect-tag= and =mail off= are all opt-in. | |
| 92 | ||
| 7 | 93 | * v1.15.0 — 2026-09-07 |
| 8 | 94 | |
| 9 | 95 | Builds run in containers, a rebase is not rebuilt, and a runner restart |