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`.
**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
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
@@ -148,10 +154,13 @@ invisible to the other account.
## Self-hosted runner requirements
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`
(**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
**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
@@ -292,7 +301,23 @@ What does need watching:
`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
tag is the source of truth.
- **`AuthenticationStartScreenViewModel.login(classicAppAccount:)`** — the only
upstream logic file this fork edits. See "The migration contract".
- **Upstream files this fork edits** (expect conflicts here on every sync):
`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
Element's ids. The variant overrides them. Do not "fix" `app.yml`.