docs(healthchat): update the runbook and add the 26.11.0 release notes

This commit is contained in:
Sedat Qaja
2026-10-19 09:18:09 +02:00
parent de5f6d9c75
commit 6f931434b5
3 changed files with 50 additions and 5 deletions
+29 -4
View File
@@ -35,6 +35,12 @@ Verify each item before tagging. If any fail, fix and commit first.
**Numeric only. One to three dot-separated integers.** `26.7.4`. Never `26.7.4-rc1`. **Numeric only. One to three dot-separated integers.** `26.7.4`. Never `26.7.4-rc1`.
**Store version ≠ bundle version, by decision (2026-10-16).** App Store Connect shows
the 2.x line (2.0.0 shipped the 26.10.1 build; next is 2.1.0), entered by hand when the
store version is created. The tag/bundle version keeps the calendar scheme and must
exceed the previous one. Apple tolerates the mismatch today but documents that they
"should match" — if that ever gets enforced, align the store label to the bundle version.
The marketing version lands verbatim in `CFBundleShortVersionString`, and Apple The marketing version lands verbatim in `CFBundleShortVersionString`, and Apple
rejects anything that is not at most three period-separated integers. A marker rejects anything that is not at most three period-separated integers. A marker
version passes the tag regex and every local gate, then dies at the **upload version passes the tag regex and every local gate, then dies at the **upload
@@ -148,10 +154,13 @@ invisible to the other account.
## Self-hosted runner requirements ## Self-hosted runner requirements
Runs on `novaloop-mac-studio-001` — an **org-level** runner (`[self-hosted, Runs on `novaloop-mac-studio-001` — an **org-level** runner (`[self-hosted,
macOS, ARM64]`) shared with the legacy fork, not registered per-repo. macOS, ARM64]`) shared with the legacy fork, not registered per-repo. One machine,
three names: `novaloop-mac-studio-001` in GitHub, hostname `novaloop-mac-studio-2`
(macOS appended `-2` in October 2026), `novaloops-mac-studio` on Tailscale.
- **One Xcode, globally selected.** A single install at `/Applications/Xcode.app` - **One Xcode, globally selected.** A single install at `/Applications/Xcode.app`
(**26.6**, build `17F113`, today) — no versioned `Xcode_*.app` siblings. (**27.1**, build `27A9275`, since 2026-10-16; upgraded in place via the App Store)
— no versioned `Xcode_*.app` siblings. Upstream 26.10.3+ needs the iOS 27 SDK.
**Nothing pins it.** The Fastfile builds with whatever `xcode-select` points at, so **Nothing pins it.** The Fastfile builds with whatever `xcode-select` points at, so
**whatever the runner has is what ships**. Upgrading the runner's Xcode silently **whatever the runner has is what ships**. Upgrading the runner's Xcode silently
changes the compiler every subsequent release is built with — no tag, no diff, no changes the compiler every subsequent release is built with — no tag, no diff, no
@@ -292,7 +301,23 @@ What does need watching:
`post-release.yml` are gated on `github.repository == 'element-hq/element-x-ios'` `post-release.yml` are gated on `github.repository == 'element-hq/element-x-ios'`
and silently no-op here, so rebases drag upstream's version along. Harmless: the and silently no-op here, so rebases drag upstream's version along. Harmless: the
tag is the source of truth. tag is the source of truth.
- **`AuthenticationStartScreenViewModel.login(classicAppAccount:)`** — the only - **Upstream files this fork edits** (expect conflicts here on every sync):
upstream logic file this fork edits. See "The migration contract". `AuthenticationStartScreenViewModel` (migration fall-through, see "The migration
contract"), `AppHooks/UserHooks.swift` (two HealthChat hook fields),
`AppSettings.swift` (VoIP push properties for the NSE), `ElementCallService.swift`
(PushKit token storage, expiration parsing), `NSE/Sources/NotificationHandler.swift`
(VoIP push request to Sygnal), `UserSessionFlowCoordinator` (Members tab),
the `SettingsScreen` files, `RoomMemberDetailsScreen` and `UserProfileScreen`
(extended profile section).
- **Sync strategy: patch stack, like healthchat-web.** `release/healthchat` is
upstream's release tag plus the HealthChat commits on top, nothing else. To sync:
rebase the stack onto the new upstream tag (or rebuild it from the resolved final
tree, one commit per topic), verify tree and tests, then force-push
`release/healthchat`. Older release tags keep their commits alive but leave the
branch line, as on the web fork after its rebase onto v1.12.21. `AGENTS.md`'s
no-rewrite rule is about PR branches; this sync is the one sanctioned rewrite.
- **Unit tests need an iOS 27 simulator.** Upstream's video-size expectations are
encoder-dependent; on iOS 26.5 two `MediaUploadingPreprocessorTests` fail for no
real reason.
- **`app.yml`'s `CLASSIC_APP_*`** — upstream owns these and they stay pointed at - **`app.yml`'s `CLASSIC_APP_*`** — upstream owns these and they stay pointed at
Element's ids. The variant overrides them. Do not "fix" `app.yml`. Element's ids. The variant overrides them. Do not "fix" `app.yml`.
+3 -1
View File
@@ -71,7 +71,9 @@ PRs must follow rules. Prefer Xcode MCP tools over terminal commands.
## Releasing ## Releasing
HealthChat ship via tag `healthchat-v*` → TestFlight. Full runbook in HealthChat ship via tag `healthchat-v*` → TestFlight. Full runbook in
`.agents/skills/releasing-healthchat/SKILL.md`. Read skill before release, cert `.agents/skills/releasing-healthchat/SKILL.md`. `release/healthchat` = upstream tag +
HealthChat commits on top (patch stack). Upstream sync rebase stack, force-push branch —
only rewrite allowed; see runbook. Read skill before release, cert
renewal, or touching `fastlane/`. No duplicate runbook here. renewal, or touching `fastlane/`. No duplicate runbook here.
--- ---
+18
View File
@@ -9,6 +9,24 @@ matches `## Changes in <version>` exactly.
Upstream's `CHANGES.md` tracks element-hq's own releases and must not be edited here. Upstream's `CHANGES.md` tracks element-hq's own releases and must not be edited here.
## Changes in 26.11.0 (2026-10-16)
🙌 Improvements
- Synced with upstream Element X 26.10.3 (Rust SDK 26.10.15).
- Message search: a new Search tab finds messages across all chats, including encrypted ones.
The index is built on the device.
- Notifications: unread counts on the Chats tab, stale notifications for rooms read elsewhere
are cleared, tapping a notification opens the room at its newest message.
- Fixes for signing back in after a soft logout and for iOS 27 layouts.
⚠️ Known issues
- Incoming calls are labelled as video calls on the call screen; voice calls still connect
as voice calls.
- An "Incoming call" notification is shown next to the call screen, and a few notifications
may show generic text, while Apple reviews the notification filtering entitlement.
## Changes in 26.10.1 (2026-10-12) ## Changes in 26.10.1 (2026-10-12)
🙌 Improvements 🙌 Improvements