mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-10-31 08:15:24 +00:00
docs(healthchat): update the runbook and add the 26.11.0 release notes
This commit is contained in:
@@ -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`.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user