CHANGELOG: v1.19.0 !376
1 file changed, +53 −0
Layout: unified · split
CHANGELOG.org +53
| @@ -4,6 +4,59 @@ 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.19.0 — 2026-09-11 | ||
| 8 | |||
| 9 | Labels and milestones an org defines once for every repository under | ||
| 10 | it, and =Closes owner/name#N= acting across repositories (#203). | ||
| 11 | |||
| 12 | ** Org labels and milestones | ||
| 13 | |||
| 14 | - Migration 0052: =labels= and =milestones= rows belong to a | ||
| 15 | repository or to an org, exactly one, with a partial unique index | ||
| 16 | per scope. Existing rows and their memberships keep their ids. | ||
| 17 | - A repository owned by an org sees the org's labels and milestones | ||
| 18 | beside its own; =issue label --add=, =issue milestone= and =mr | ||
| 19 | milestone= resolve the org's row first. A repository cannot create, | ||
| 20 | recolour, remove, close or reopen a name its org holds; the refusal | ||
| 21 | names the org command. | ||
| 22 | - =org label set|list|remove= and =org milestone | ||
| 23 | create|list|close|reopen=, for org admins. Creating a name that | ||
| 24 | repositories under the org already use folds them in: their issues | ||
| 25 | and merge requests move to the org's row and the repository rows | ||
| 26 | go. =repo transfer= into an org folds the same way. Counts on org | ||
| 27 | rows span the repositories the caller can read. | ||
| 28 | - Web: read-only =/<org>/-/labels= and =/<org>/-/milestones=, linked | ||
| 29 | from the org page; an "org" mark on repository label and milestone | ||
| 30 | pages, whose forms act on repository rows only. | ||
| 31 | - =label list= and =milestone list= JSON carry =org: true= on an org | ||
| 32 | row. | ||
| 33 | |||
| 34 | ** Cross-repository closes | ||
| 35 | |||
| 36 | - =Closes owner/name#N= in a commit on the default branch, or in a | ||
| 37 | merged merge request's title or body, closes that issue when the | ||
| 38 | actor holds write on the target and the pushing key's scope allows | ||
| 39 | it: a deploy key never acts outside its binding. An unknown or | ||
| 40 | refused target does nothing and logs nothing; the text stays a | ||
| 41 | plain autolink. An archived target is refused. Bare =owner/name#N= | ||
| 42 | without a keyword stays display-only. | ||
| 43 | |||
| 44 | ** Store | ||
| 45 | |||
| 46 | - A migration whose first line is =-- foreign_keys: off= runs on one | ||
| 47 | pinned connection with foreign keys off, re-enabled afterwards and | ||
| 48 | =foreign_key_check= required empty. Rebuilding a table other tables | ||
| 49 | reference loses the children's rows otherwise, even under | ||
| 50 | =legacy_alter_table=. | ||
| 51 | |||
| 52 | ** Behaviour changes | ||
| 53 | |||
| 54 | - =milestone create= exits 1 on a duplicate title, as =org milestone | ||
| 55 | create= does; it exited 2 before. | ||
| 56 | |||
| 57 | Upgrade: replace the binary and restart; migration 0052 runs on | ||
| 58 | start and copies every label and milestone row once. | ||
| 59 | |||
| 7 | * v1.18.1 — 2026-09-11 | 60 | * v1.18.1 — 2026-09-11 |
| 8 | 61 | ||
| 9 | A runner that cannot hang on a dead connection, SSH keys with names, | 62 | A runner that cannot hang on a dead connection, SSH keys with names, |