|
2 | 2 |
|
3 | 3 | All notable Branchy changes are documented here. |
4 | 4 |
|
5 | | -Branchy uses SemVer-style versions with pre-release tags before `v1.0.0`. Release |
6 | | -notes should be copied from the relevant changelog section and lightly edited for |
7 | | -GitHub Releases. |
| 5 | +The `## <tag>` section of this file *is* the GitHub Release body: the release |
| 6 | +workflow copies it verbatim and refuses a tag that has no section. Write it |
| 7 | +for whoever has to decide whether to upgrade. |
| 8 | + |
| 9 | +See [`docs/versioning.md`](docs/versioning.md) for what the numbers mean and |
| 10 | +[`docs/releases.md`](docs/releases.md) for how a release is published. |
8 | 11 |
|
9 | 12 | ## Unreleased |
10 | 13 |
|
11 | 14 | Use this section for changes that are merged but not released yet. |
12 | 15 |
|
| 16 | +## v1.2.1 - 2026-09-09 |
| 17 | + |
| 18 | +An About card, a group panel that can be closed, and the fix for a hole that let |
| 19 | +any group member delete Branchy's notification cards. |
| 20 | + |
| 21 | + |
| 22 | +### Added |
| 23 | + |
| 24 | +- `docs/releases.md` gained a **Deploying** section, and `AGENTS.md` points at it. |
| 25 | + Releasing was documented; deploying was not, in any repository in the family — |
| 26 | + the process stopped at "deploy it" and never said how. That gap mattered more |
| 27 | + after the stacks moved from building on the host to pulling a published image, |
| 28 | + because the procedure changed on the same day. The section names this stack's |
| 29 | + host directory, its env file, the variable that selects the image, the networks |
| 30 | + it needs, and what a rollback actually is. |
| 31 | + |
| 32 | +- An **About** card, reachable from the main menu and from the group panel. It |
| 33 | + states the running version — the same string `/healthz` reports — plus the |
| 34 | + supported events, the repository, the license, and the admin contact. Until |
| 35 | + now nothing in the interface could answer "which version are you running", |
| 36 | + which is the first question any complaint has to answer. The repository is a |
| 37 | + link in the text rather than a second button, because two ways to reach one |
| 38 | + place is duplication. |
| 39 | +- **Close** on the group panel, and on the About card when it is opened from a |
| 40 | + group. Branchy had no way to take a panel back out of a group chat. Close acts |
| 41 | + only on ephemeral messages: Telegram lets a client send any callback data for |
| 42 | + any message it can see, so honouring `close` against a public message would |
| 43 | + have let anyone in a group delete Branchy's notification cards. There is no |
| 44 | + Close in DM, where the conversation is the panel and there is nothing to |
| 45 | + close. |
| 46 | +- `deploy/ws04/compose.yaml`, the production stack, pulling the image the |
| 47 | + release workflow publishes to GHCR. The stack on the host built its own image |
| 48 | + from a working copy, so what served users was not the artifact CI had tested, |
| 49 | + scanned and published, and nothing on the host could say which commit it came |
| 50 | + from. `BRANCHY_IMAGE` has no default: an unset one stops the stack instead of |
| 51 | + quietly starting something else. |
| 52 | + |
| 53 | +### Changed |
| 54 | + |
| 55 | +- One versioning and release document for the whole family. `docs/versioning.md` |
| 56 | + and `docs/releases.md` are now byte-identical across every Asterfield |
| 57 | + repository apart from two clearly marked sections: this repository's own |
| 58 | + version line, and the surface where a change here breaks something. They spell |
| 59 | + out what each of the three numbers means, what the `-alpha.N` suffix counts, |
| 60 | + when alpha becomes beta and when it is legitimate to skip to rc or run a |
| 61 | + pre-release in production. |
| 62 | +- **Pre-releases are now tagged on `dev`, not `main`.** Only stable versions are |
| 63 | + tagged on `main`, on the merge commit from `dev`. `release.yml` had no branch |
| 64 | + check at all before, so a tag pushed from any branch would publish; it now |
| 65 | + refuses a tag that is not on the branch its channel is published from. |
| 66 | + Earlier pre-releases were tagged on `main` under the previous rule; they are |
| 67 | + left as they are. |
| 68 | + |
| 69 | + |
| 70 | +- `github.com/FreshLabDev/tg` moves to `v0.0.1-alpha.7`. It carries one fix: |
| 71 | + a preflight probe is marked as a probe, so the `404 method not found` it |
| 72 | + expects stops being counted and logged as a transport failure. All four bots |
| 73 | + on the shared client now run the same version. |
| 74 | +- The same action is now called the same thing on every screen. Three sibling |
| 75 | + settings screens all returned to the settings hub and each named it |
| 76 | + differently: the draft branch-filter screen said `Done`, the draft release |
| 77 | + screen said `Back`, and the draft pull-request screen flipped between the two |
| 78 | + depending on how many actions were selected. All three now say `Back`, which |
| 79 | + is what they do — nothing on them is committed, and the hub is the screen the |
| 80 | + user came from. `Done` survives in exactly one place, the draft branch list, |
| 81 | + where it skips a level rather than stepping back. `Save branches` on the edit |
| 82 | + branch list is now `Save`, matching the other two edit screens that commit. |
| 83 | +- Single-select options are marked `◉` and `◎` instead of `●` and `○`, the pair |
| 84 | + the rest of the bot family uses. Multi-select options keep `■`/`□`, so the two |
| 85 | + kinds of list still cannot be confused for each other. |
| 86 | +- Callbacks arriving from a group are answered on the ephemeral panel itself |
| 87 | + (`editEphemeralMessageText`) rather than through `editMessageText`, which |
| 88 | + cannot address an ephemeral message. Before this, a button on the group panel |
| 89 | + would have left the panel frozen and answered in DM. A `home` callback from a |
| 90 | + group now returns the group panel instead of building the DM menu, which |
| 91 | + would have put one person's GitHub login and subscription count into a chat |
| 92 | + they share with everyone else. A public group message is never edited into a |
| 93 | + panel at all: every panel Branchy shows in a group is ephemeral, so a public |
| 94 | + one is a delivered notification card, and callback data can be sent for any |
| 95 | + visible message. Such a callback is answered in DM. |
| 96 | +- Both Telegram command descriptions moved out of `cmd/branchy/main.go` into |
| 97 | + `internal/bot/copy.go`, next to the rest of Branchy's fixed copy. Behaviour is |
| 98 | + unchanged — one list per scope, still `all_private_chats` plus an ephemeral |
| 99 | + `all_group_chats`. The file records why there is no list per `language_code`: |
| 100 | + the English-only interface is a product boundary, not missing work. |
| 101 | + |
13 | 102 | ## v1.2.1-alpha.1 - 2026-09-08 |
14 | 103 |
|
15 | 104 | Internal, with one visible consequence: Branchy will not start against a |
@@ -781,7 +870,7 @@ Telegram-first setup flow are unchanged. |
781 | 870 | - Subscription view, pause, edit, delete, and test notification actions. |
782 | 871 | - Startup SQL migrations tracked in `schema_migrations`. |
783 | 872 | - `/healthz` runtime health endpoint. |
784 | | -- Apache-2.0 license under FreshLab. |
| 873 | +- Apache-2.0 license under Asterfield. |
785 | 874 | - Project documentation for architecture, GitHub integration, Telegram behavior, |
786 | 875 | versioning, and release process. |
787 | 876 | - Pagination for the repository and branch pickers (Prev/Next) instead of |
|
0 commit comments