From 6f931434b53e480963695cbec928eb9db85f4134 Mon Sep 17 00:00:00 2001 From: Sedat Qaja Date: Mon, 19 Oct 2026 09:18:09 +0200 Subject: [PATCH] docs(healthchat): update the runbook and add the 26.11.0 release notes --- .agents/skills/releasing-healthchat/SKILL.md | 33 +++++++++++++++++--- AGENTS.md | 4 ++- HEALTHCHAT_CHANGES.md | 18 +++++++++++ 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/.agents/skills/releasing-healthchat/SKILL.md b/.agents/skills/releasing-healthchat/SKILL.md index e9df096df..fd306d352 100644 --- a/.agents/skills/releasing-healthchat/SKILL.md +++ b/.agents/skills/releasing-healthchat/SKILL.md @@ -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`. diff --git a/AGENTS.md b/AGENTS.md index 8f92e514f..17923ef3e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -71,7 +71,9 @@ PRs must follow rules. Prefer Xcode MCP tools over terminal commands. ## Releasing 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. --- diff --git a/HEALTHCHAT_CHANGES.md b/HEALTHCHAT_CHANGES.md index 2f11caec2..4e53a9643 100644 --- a/HEALTHCHAT_CHANGES.md +++ b/HEALTHCHAT_CHANGES.md @@ -9,6 +9,24 @@ matches `## Changes in ` exactly. 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) 🙌 Improvements