Merge upstream v1.12.26 - reconnect the fork to Element Web (management #0099)

The repo had no upstream ancestry: a whole tree arrived in one commit in May, so
every update meant re-applying our patches by hand onto a fresh checkout, and a file
Element moved would take our lines with it silently.

The real base was found by measuring tree distance across develop rather than trusting
the changelog: deadd548, not the v1.12.17 tag. With that set as a temporary graft, this
merge computed as a proper three-way merge - 32 conflicts instead of 1757.

Resolutions, each decided rather than defaulted:

- 24 GitHub workflows stay deleted; we build on GitLab CI.
- MImageBody.tsx is gone upstream, migrated to MVVM. Our ClamAV error label moved into
  ImageBodyViewModel.computeErrorLabel, ahead of the DecryptError branch, matching what
  VideoBodyViewModel and FileBodyViewModel already do.
- Upstream extracted the room list item body into RoomListItemContent. Our call
  participants list and its getInitials helper moved there; both sides' CSS classes and
  both sides' props are kept.
- matrix-js-sdk follows upstream at 42.2.0 - our git ref pin was a workaround for a
  stale ref, and following upstream is the point of this merge.
- Element Call stays ours. Checked before deciding: @element-hq/element-call-embedded
  is referenced nowhere in the tree, while webpack.config.ts needs
  @sorb/threadnet-call-embedded, so taking upstream's line would have deleted the noise
  suppression from #0054 without a word.

The lockfile was regenerated with pnpm 11.20.0, which upstream now requires through
devEngines. CI already runs corepack enable, and onFail: download makes it fetch that
version by itself.

Not yet accepted: this needs a build and the ClamAV functional test - send an encrypted
file, receive a rejected one - before it goes near main.
This commit is contained in:
Thore Cimbal
2026-08-19 12:00:00 +00:00
2884 changed files with 111523 additions and 71192 deletions
+7 -1
View File
@@ -21,9 +21,15 @@
/apps/web/src/models/Call.ts @element-hq/element-call-reviewers
/apps/web/test/unit-tests/models/Call-test.ts @element-hq/element-call-reviewers
/apps/web/src/stores/CallStore.ts @element-hq/element-call-reviewers
/apps/web/test/unit-tests/stores/CallStore-test.ts @element-hq/element-call-reviewers
/apps/web/src/call-types.ts @element-hq/element-call-reviewers
/apps/web/src/components/views/voip @element-hq/element-call-reviewers
/apps/web/playwright/e2e/voip/element-call.spec.ts @element-hq/element-call-reviewers
/apps/web/res/css/views/voip @element-hq/element-call-reviewers
/apps/web/playwright/e2e/voip @element-hq/element-call-reviewers
/apps/web/playwright/snapshots/voip @element-hq/element-call-reviewers
/apps/web/test/test-utils/call.ts @element-hq/element-call-reviewers
# Ignore translations as those will be updated by GHA for Localazy download
/apps/web/src/i18n/strings
+2 -2
View File
@@ -21,7 +21,7 @@ runs:
PREFIX: ${{ runner.os }}-${{ runner.arch }}
- name: Cache playwright binaries
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
if: inputs.write-cache == 'true'
id: cache
with:
@@ -30,7 +30,7 @@ runs:
# When running in merge queue only restore the cache, never write it
- name: Restore playwright binaries cache
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
if: inputs.write-cache != 'true'
id: cache-restore
with:
-3
View File
@@ -91,9 +91,6 @@
- name: "A-Modules"
description: "Module system related"
color: "bfd4f2"
- name: "A-New-Search-Experience"
description: "The new search dialog available in Labs"
color: "bfd4f2"
- name: "A-Packaging"
description: "Packaging, signing, releasing"
color: "bfd4f2"
+2
View File
@@ -1,3 +1,5 @@
_extends: matrix-org/matrix-js-sdk
version-resolver:
default: patch
# Exclude modules releases
tag-prefix: v
+32 -3
View File
@@ -11,15 +11,25 @@
"matchDepTypes": ["testcontainers-docker"],
"matchPackageNames": ["*"]
},
{
"description": "Group all pnpm updates",
"groupName": "pnpm",
"groupSlug": "pnpm",
"matchPackageNames": ["pnpm", "ghcr.io/pnpm/pnpm"]
},
{
"description": "Separate updates to overrides from other groups",
"matchDepTypes": ["pnpm.overrides"],
"matchManagers": ["npm"],
"matchFileNames": ["pnpm-workspace.yaml"],
"matchDepTypes": ["pnpm-workspace.overrides"],
"groupSlug": null
},
{
"description": "Disable any major updates to overrides as this almost always is wrong",
"matchDepTypes": ["pnpm.overrides"],
"matchUpdateTypes": ["major"],
"matchManagers": ["npm"],
"matchFileNames": ["pnpm-workspace.yaml"],
"matchDepTypes": ["pnpm-workspace.overrides"],
"enabled": false
}
],
@@ -41,6 +51,25 @@
"matchStrings": ["hakDependencies.$each(function($v, $k) { { 'packageName': $k, 'currentValue': $v } })"],
"datasourceTemplate": "npm",
"depTypeTemplate": "hak"
},
{
"description": "Update pnpm in devEngines",
"customType": "jsonata",
"fileFormat": "json",
"managerFilePatterns": ["/(^|/)package\\.json$/"],
"matchStrings": [
"devEngines.packageManager.name = 'pnpm' ? { 'currentValue': devEngines.packageManager.version } : null"
],
"depNameTemplate": "pnpm",
"datasourceTemplate": "npm",
"depTypeTemplate": "devengines"
}
]
],
"toolSettings": {
"nodeMaxMemory": 2048
},
"env": {
"PNPM_MAX_WORKERS": "2",
"PNPM_WORKERS": "2"
}
}
+57
View File
@@ -0,0 +1,57 @@
name: Release module
run-name: Release modules
on:
push:
tags:
- "module/*/v*.*.*"
permissions: {}
jobs:
release:
name: Build and release module
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- name: Parse tag
env:
TAG: ${{ github.ref_name }}
run: |
MODULE=$(echo "$TAG" | cut -d'/' -f2)
VERSION=$(echo "$TAG" | cut -d'/' -f3)
echo "MODULE=$MODULE" >> "$GITHUB_ENV"
echo "VERSION=$VERSION" >> "$GITHUB_ENV"
echo "TAG=$TAG" >> "$GITHUB_ENV"
echo "ARCHIVE=${MODULE}-${VERSION}.zip" >> "$GITHUB_ENV"
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
cache: "pnpm"
node-version: "lts/*"
- name: Install deps
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter "./modules/$MODULE" run build
- name: Create archive
run: zip -r "$ARCHIVE" -j "modules/$MODULE/lib"
- name: Create GitHub release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release create "$TAG" \
--title "$VERSION $MODULE" \
--draft \
--latest=false \
"$ARCHIVE"
@@ -0,0 +1,47 @@
# Triggers after the shared component storybook has finished building,
# taking the artifact and uploading it to Netlify for easier viewing
name: Upload Shared Component Storybook to Netlify
on:
# Privilege escalation necessary to deploy to Netlify
# 🚨 We must not execute any checked out code here.
workflow_run: # zizmor: ignore[dangerous-triggers]
workflows: ["Build shared component storybook"]
types:
- completed
concurrency:
group: ${{ github.workflow }}-${{ github.event.workflow_run.head_branch || github.run_id }}
cancel-in-progress: ${{ github.event.workflow_run.event == 'pull_request' }}
permissions: {}
jobs:
report:
if: github.event.workflow_run.conclusion != 'cancelled' && github.event.workflow_run.event == 'pull_request'
name: Upload Storybook
runs-on: ubuntu-24.04
environment: Netlify
permissions:
actions: read
deployments: write
steps:
- name: 📥 Download artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
run-id: ${{ github.event.workflow_run.id }}
name: shared-components-storybook
path: storybook-static
- name: 📤 Deploy to Netlify
uses: matrix-org/netlify-pr-preview@9805cd123fc9a7e421e35340a05e1ebc5dee46b5 # v3
with:
path: storybook-static
owner: ${{ github.event.workflow_run.head_repository.owner.login }}
branch: ${{ github.event.workflow_run.head_branch }}
revision: ${{ github.event.workflow_run.head_sha }}
token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site_id: ${{ vars.NETLIFY_SITE_ID }}
desc: Shared Component Storybook
deployment_env: SharedComponentStorybook
prefix: "storybook-"