mirror of
https://github.com/element-hq/element-desktop.git
synced 2026-02-18 14:47:24 -05:00
Compare commits
58 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e2ef97cc15 | ||
|
|
8602435994 | ||
|
|
bdca72cc19 | ||
|
|
eabd0af515 | ||
|
|
a974b5bab5 | ||
|
|
0db7363a58 | ||
|
|
2c62efa6e8 | ||
|
|
bae8b58c17 | ||
|
|
724c545b0c | ||
|
|
2deacf6d41 | ||
|
|
d929da6869 | ||
|
|
d830d0ef10 | ||
|
|
6a72f53d0b | ||
|
|
0f82a070dc | ||
|
|
85901ef2a9 | ||
|
|
426ad15f8c | ||
|
|
33787efd1c | ||
|
|
d4de1a362f | ||
|
|
90492d61e6 | ||
|
|
1bbced71b8 | ||
|
|
a1f86e83dc | ||
|
|
95c0fab46a | ||
|
|
ce10394e58 | ||
|
|
e51e248052 | ||
|
|
d718f008e7 | ||
|
|
0da5ec88d6 | ||
|
|
47e98c55b2 | ||
|
|
060ac5b650 | ||
|
|
d06bf5b062 | ||
|
|
a0f92941fc | ||
|
|
2b61ea82ec | ||
|
|
d9c5c4be07 | ||
|
|
d15bedda5a | ||
|
|
04d91ef5b8 | ||
|
|
7d1dd90b2a | ||
|
|
dd6ba612d0 | ||
|
|
45c6a2b9f3 | ||
|
|
cdd16c9cbd | ||
|
|
6319ba04d3 | ||
|
|
ae7fe02018 | ||
|
|
6adc753b30 | ||
|
|
1929351e91 | ||
|
|
0208c4d087 | ||
|
|
d67822dae3 | ||
|
|
e2f7393ad5 | ||
|
|
bc97be9ab7 | ||
|
|
ae1d8a896d | ||
|
|
fd66c14544 | ||
|
|
07523ecfdd | ||
|
|
6aac68ca9a | ||
|
|
1debdbeb47 | ||
|
|
ef170eb94e | ||
|
|
1234db90aa | ||
|
|
58bf462c47 | ||
|
|
5ceed282a0 | ||
|
|
6b2314e54e | ||
|
|
95c56b9168 | ||
|
|
11664eb97b |
2
.github/workflows/backport.yml
vendored
2
.github/workflows/backport.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
)
|
||||
)
|
||||
steps:
|
||||
- uses: tibdex/backport@2e217641d82d02ba0603f46b1aeedefb258890ac
|
||||
- uses: tibdex/backport@7005ef85c4562bc23b0e9b4a9940d5922f439750
|
||||
with:
|
||||
labels_template: "<%= JSON.stringify([...labels, 'X-Release-Blocker']) %>"
|
||||
# We can't use GITHUB_TOKEN here or CI won't run on the new PR
|
||||
|
||||
80
.github/workflows/build_and_deploy.yaml
vendored
80
.github/workflows/build_and_deploy.yaml
vendored
@@ -3,6 +3,9 @@ on:
|
||||
# Nightly build
|
||||
schedule:
|
||||
- cron: "0 9 * * *"
|
||||
# Release build
|
||||
release:
|
||||
types: [published]
|
||||
# Manual nightly & release
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
@@ -19,13 +22,8 @@ on:
|
||||
required: true
|
||||
type: boolean
|
||||
default: true
|
||||
windows_32bit:
|
||||
description: Build Windows 32-bit
|
||||
required: true
|
||||
type: boolean
|
||||
default: true
|
||||
windows_64bit:
|
||||
description: Build Windows 64-bit
|
||||
windows:
|
||||
description: Build Windows
|
||||
required: true
|
||||
type: boolean
|
||||
default: true
|
||||
@@ -39,7 +37,7 @@ on:
|
||||
required: true
|
||||
type: boolean
|
||||
default: true
|
||||
run-name: Element ${{ inputs.mode == 'release' && 'Desktop' || 'Nightly' }}
|
||||
run-name: Element ${{ inputs.mode != 'release' && github.event_name != 'release' && 'Nightly' || 'Desktop' }}
|
||||
concurrency: ${{ github.workflow }}
|
||||
env:
|
||||
R2_BUCKET: ${{ vars.R2_BUCKET }}
|
||||
@@ -47,36 +45,27 @@ jobs:
|
||||
prepare:
|
||||
uses: ./.github/workflows/build_prepare.yaml
|
||||
with:
|
||||
config: element.io/${{ inputs.mode || 'nightly' }}
|
||||
version: ${{ inputs.mode != 'release' && 'develop' || '' }}
|
||||
nightly: ${{ inputs.mode != 'release' }}
|
||||
config: element.io/${{ inputs.mode || (github.event_name == 'release' && 'release') || 'nightly' }}
|
||||
version: ${{ (inputs.mode != 'release' && github.event_name != 'release') && 'develop' || '' }}
|
||||
nightly: ${{ inputs.mode != 'release' && github.event_name != 'release' }}
|
||||
secrets:
|
||||
CF_R2_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }}
|
||||
CF_R2_TOKEN: ${{ secrets.CF_R2_TOKEN }}
|
||||
|
||||
windows_32bit:
|
||||
if: github.event_name != 'workflow_dispatch' || inputs.windows_32bit
|
||||
windows:
|
||||
if: github.event_name != 'workflow_dispatch' || inputs.windows
|
||||
needs: prepare
|
||||
name: Windows 32-bit
|
||||
name: Windows ${{ matrix.arch }}
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x86, x64]
|
||||
uses: ./.github/workflows/build_windows.yaml
|
||||
secrets: inherit
|
||||
with:
|
||||
sign: true
|
||||
deploy-mode: true
|
||||
arch: x86
|
||||
version: ${{ needs.prepare.outputs.win32-x86-version }}
|
||||
|
||||
windows_64bit:
|
||||
if: github.event_name != 'workflow_dispatch' || inputs.windows_64bit
|
||||
needs: prepare
|
||||
name: Windows 64-bit
|
||||
uses: ./.github/workflows/build_windows.yaml
|
||||
secrets: inherit
|
||||
with:
|
||||
sign: true
|
||||
deploy-mode: true
|
||||
arch: x64
|
||||
version: ${{ needs.prepare.outputs.win32-x64-version }}
|
||||
arch: ${{ matrix.arch }}
|
||||
version: ${{ needs.prepare.outputs.nightly-version }}
|
||||
|
||||
macos:
|
||||
if: github.event_name != 'workflow_dispatch' || inputs.macos
|
||||
@@ -87,8 +76,8 @@ jobs:
|
||||
with:
|
||||
sign: true
|
||||
deploy-mode: true
|
||||
base-url: https://packages.element.io/${{ inputs.mode == 'release' && 'desktop' || 'nightly' }}
|
||||
version: ${{ needs.prepare.outputs.macos-version }}
|
||||
base-url: https://packages.element.io/${{ needs.prepare.outputs.packages-dir }}
|
||||
version: ${{ needs.prepare.outputs.nightly-version }}
|
||||
|
||||
# We do not put these calls into deploy-mode as we do not want it to add to the packages.element.io artifact
|
||||
# We ship this build via reprepro only
|
||||
@@ -102,9 +91,9 @@ jobs:
|
||||
uses: ./.github/workflows/build_linux.yaml
|
||||
with:
|
||||
arch: ${{ matrix.arch }}
|
||||
config: element.io/${{ inputs.mode || 'nightly' }}
|
||||
config: ${{ needs.prepare.outputs.config }}
|
||||
sqlcipher: system
|
||||
version: ${{ needs.prepare.outputs.linux-version }}
|
||||
version: ${{ needs.prepare.outputs.nightly-version }}
|
||||
|
||||
# We ship the static build via static tarball only
|
||||
linux_static:
|
||||
@@ -115,22 +104,29 @@ jobs:
|
||||
with:
|
||||
arch: amd64
|
||||
deploy-mode: true
|
||||
config: element.io/${{ inputs.mode || 'nightly' }}
|
||||
config: ${{ needs.prepare.outputs.config }}
|
||||
sqlcipher: static
|
||||
version: ${{ needs.prepare.outputs.linux-version }}
|
||||
version: ${{ needs.prepare.outputs.nightly-version }}
|
||||
|
||||
# This deploy job only handles Windows, macOS & linux_static as those are stateless and static.
|
||||
# Linux will be deployed via reprepro after it, but we list it as a dependency to abort if it fails.
|
||||
deploy:
|
||||
needs:
|
||||
- prepare
|
||||
- macos
|
||||
- linux
|
||||
- linux_static
|
||||
- windows_32bit
|
||||
- windows_64bit
|
||||
- windows
|
||||
runs-on: ubuntu-latest
|
||||
name: Deploy
|
||||
if: github.event_name != 'workflow_dispatch' || (inputs.deploy && (inputs.macos || inputs.windows_32bit || inputs.windows_64bit))
|
||||
if: |
|
||||
(
|
||||
github.event_name != 'workflow_dispatch' &&
|
||||
github.event.release.prerelease != true
|
||||
) || (
|
||||
always() && !failure() && !cancelled() && inputs.deploy &&
|
||||
(inputs.macos || inputs.windows || inputs.linux)
|
||||
)
|
||||
environment: packages.element.io
|
||||
steps:
|
||||
- name: Download artifacts
|
||||
@@ -146,7 +142,7 @@ jobs:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_TOKEN }}
|
||||
R2_URL: ${{ vars.CF_R2_S3_API }}
|
||||
DEPLOYMENT_DIR: ${{ inputs.mode == 'release' && 'desktop' || 'nightly' }}
|
||||
DEPLOYMENT_DIR: ${{ needs.prepare.outputs.packages-dir }}
|
||||
|
||||
- name: Notify packages.element.io of new files
|
||||
uses: peter-evans/repository-dispatch@26b39ed245ab8f31526069329e112ab2fb224588 # v2
|
||||
@@ -164,7 +160,13 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [amd64, arm64]
|
||||
if: github.event_name != 'workflow_dispatch' || (inputs.deploy && inputs.linux)
|
||||
if: |
|
||||
(
|
||||
github.event_name != 'workflow_dispatch' &&
|
||||
github.event.release.prerelease != true
|
||||
) || (
|
||||
always() && !failure() && !cancelled() && inputs.deploy && inputs.linux
|
||||
)
|
||||
uses: ./.github/workflows/reprepro.yaml
|
||||
secrets: inherit
|
||||
with:
|
||||
|
||||
6
.github/workflows/build_and_test.yaml
vendored
6
.github/workflows/build_and_test.yaml
vendored
@@ -41,13 +41,13 @@ jobs:
|
||||
|
||||
- name: "Get modified files"
|
||||
id: changed_files
|
||||
uses: tj-actions/changed-files@2a968ff601949c81b47d9c1fdb789b0d25ddeea2 # v37
|
||||
uses: tj-actions/changed-files@2f7246cb26e8bb6709b6cbfc1fec7febfe82e96a # v38
|
||||
with:
|
||||
files: |
|
||||
dockerbuild/*
|
||||
- name: Log in to the Container registry
|
||||
if: steps.changed_files.outputs.any_modified == 'true'
|
||||
uses: docker/login-action@a9794064588be971151ec5e7144cb535bcb56e36
|
||||
uses: docker/login-action@cf8514a65188af1d4f94f8c28a7a4153af1088ce
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
@@ -63,7 +63,7 @@ jobs:
|
||||
|
||||
- name: Build and push Docker image
|
||||
if: steps.changed_files.outputs.any_modified == 'true'
|
||||
uses: docker/build-push-action@4fad532b9fdbfb80f436784834374a1c11834153
|
||||
uses: docker/build-push-action@9311bf5263ae5b36f3ec67aff768790c6e2344ad
|
||||
with:
|
||||
context: dockerbuild
|
||||
push: true
|
||||
|
||||
9
.github/workflows/build_macos.yaml
vendored
9
.github/workflows/build_macos.yaml
vendored
@@ -52,11 +52,10 @@ jobs:
|
||||
|
||||
- name: Install Rust
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
uses: actions-rs/toolchain@88dc2356392166efad76775c878094f4e83ff746
|
||||
with:
|
||||
default: true
|
||||
toolchain: stable
|
||||
target: aarch64-apple-darwin
|
||||
run: |
|
||||
rustup toolchain install stable --profile minimal --no-self-update
|
||||
rustup default stable
|
||||
rustup target add aarch64-apple-darwin
|
||||
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
|
||||
54
.github/workflows/build_prepare.yaml
vendored
54
.github/workflows/build_prepare.yaml
vendored
@@ -23,28 +23,23 @@ on:
|
||||
CF_R2_TOKEN:
|
||||
required: false
|
||||
outputs:
|
||||
macos-version:
|
||||
description: "The version string the next macOS Nightly should use, only output for nightly"
|
||||
value: ${{ jobs.prepare.outputs.macos-version }}
|
||||
linux-version:
|
||||
description: "The version string the next Linux Nightly should use, only output for nightly"
|
||||
value: ${{ jobs.prepare.outputs.linux-version }}
|
||||
win32-x64-version:
|
||||
description: "The version string the next Windows x64 Nightly should use, only output for nightly"
|
||||
value: ${{ jobs.prepare.outputs.win32-x64-version }}
|
||||
win32-x86-version:
|
||||
description: "The version string the next Windows x86 Nightly should use, only output for nightly"
|
||||
value: ${{ jobs.prepare.outputs.win32-x86-version }}
|
||||
nightly-version:
|
||||
description: "The version string the next Nightly should use, only output for nightly"
|
||||
value: ${{ jobs.prepare.outputs.nightly-version }}
|
||||
packages-dir:
|
||||
description: "The directory non-deb packages for this run should live in within packages.element.io"
|
||||
value: ${{ inputs.nightly && 'nightly' || 'desktop' }}
|
||||
# This is just a simple pass-through of the input to simplify reuse of complex inline conditions
|
||||
config:
|
||||
description: "The relative path to the config file for this run"
|
||||
value: ${{ inputs.config }}
|
||||
jobs:
|
||||
prepare:
|
||||
name: Prepare
|
||||
environment: ${{ inputs.nightly && 'packages.element.io' || '' }}
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
macos-version: ${{ steps.versions.outputs.macos }}
|
||||
linux-version: ${{ steps.versions.outputs.linux }}
|
||||
win32-x64-version: ${{ steps.versions.outputs.win_x64 }}
|
||||
win32-x86-version: ${{ steps.versions.outputs.win_x86 }}
|
||||
nightly-version: ${{ steps.versions.outputs.nightly }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
@@ -66,20 +61,21 @@ jobs:
|
||||
find hak -type f -print0 | xargs -0 sha1sum >> hakHash
|
||||
find scripts/hak -type f -print0 | xargs -0 sha1sum >> hakHash
|
||||
|
||||
- name: "[Nightly] Calculate versions"
|
||||
- name: "[Nightly] Calculate version"
|
||||
id: versions
|
||||
if: inputs.nightly
|
||||
run: |
|
||||
MACOS=$(aws s3 cp s3://$R2_BUCKET/nightly/update/macos/releases.json - --endpoint-url $R2_URL --region auto | jq -r .currentRelease)
|
||||
echo "macos=$(scripts/generate-nightly-version.ts --latest $MACOS)" >> $GITHUB_OUTPUT
|
||||
# Find all latest Nightly versions
|
||||
aws s3 cp s3://$R2_BUCKET/nightly/update/macos/releases.json - --endpoint-url $R2_URL --region auto | jq -r .currentRelease >> VERSIONS
|
||||
aws s3 cp s3://$R2_BUCKET/debian/dists/default/main/binary-amd64/Packages - --endpoint-url $R2_URL --region auto | grep "Package: element-nightly" -A 50 | grep Version -m1 | sed -n 's/Version: //p' >> VERSIONS
|
||||
aws s3 cp s3://$R2_BUCKET/debian/dists/default/main/binary-arm64/Packages - --endpoint-url $R2_URL --region auto | grep "Package: element-nightly" -A 50 | grep Version -m1 | sed -n 's/Version: //p' >> VERSIONS
|
||||
aws s3 cp s3://$R2_BUCKET/nightly/update/win32/x64/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8- >> VERSIONS
|
||||
aws s3 cp s3://$R2_BUCKET/nightly/update/win32/ia32/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8- >> VERSIONS
|
||||
|
||||
LINUX=$(aws s3 cp s3://$R2_BUCKET/debian/dists/default/main/binary-amd64/Packages - --endpoint-url $R2_URL --region auto | grep "Package: element-nightly" -A 50 | grep Version -m1 | sed -n 's/Version: //p')
|
||||
echo "linux=$(scripts/generate-nightly-version.ts --latest $LINUX)" >> $GITHUB_OUTPUT
|
||||
|
||||
WINx64=$(aws s3 cp s3://$R2_BUCKET/nightly/update/win32/x64/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8-)
|
||||
echo "win_x64=$(scripts/generate-nightly-version.ts --latest $WINx64)" >> $GITHUB_OUTPUT
|
||||
WINx86=$(aws s3 cp s3://$R2_BUCKET/nightly/update/win32/ia32/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8-)
|
||||
echo "win_x86=$(scripts/generate-nightly-version.ts --latest $WINx86)" >> $GITHUB_OUTPUT
|
||||
# Pick the greatest one
|
||||
VERSION=$(cat VERSIONS | sort -uf | tail -n1)
|
||||
# Increment it
|
||||
echo "nightly=$(scripts/generate-nightly-version.ts --latest $VERSION)" >> $GITHUB_OUTPUT
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_TOKEN }}
|
||||
@@ -123,14 +119,10 @@ jobs:
|
||||
REACT_VERSION=${WEBAPP_VERSION:19:12}
|
||||
JS_VERSION=${WEBAPP_VERSION:35:12}
|
||||
|
||||
echo "### Nightly build" >> $GITHUB_STEP_SUMMARY
|
||||
echo "### Nightly build ${{ steps.versions.outputs.nightly }}" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Component | Version |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| ----------- | ------- |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| macOS | ${{ steps.versions.outputs.macos }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Linux | ${{ steps.versions.outputs.linux }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Windows x64 | ${{ steps.versions.outputs.win_x64 }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Windows x86 | ${{ steps.versions.outputs.win_x86 }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Bundle Hash | $BUNDLE_HASH |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Element Web | [$WEB_VERSION](https://github.com/vector-im/element-web/commit/$WEB_VERSION) |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| React SDK | [$REACT_VERSION](https://github.com/matrix-org/matrix-react-sdk/commit/$REACT_VERSION) |" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
9
.github/workflows/build_windows.yaml
vendored
9
.github/workflows/build_windows.yaml
vendored
@@ -95,11 +95,10 @@ jobs:
|
||||
|
||||
- name: Install Rust
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
uses: actions-rs/toolchain@88dc2356392166efad76775c878094f4e83ff746
|
||||
with:
|
||||
default: true
|
||||
toolchain: stable
|
||||
target: ${{ steps.config.outputs.target }}
|
||||
run: |
|
||||
rustup toolchain install stable --profile minimal --no-self-update
|
||||
rustup default stable
|
||||
rustup target add ${{ steps.config.outputs.target }}
|
||||
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
|
||||
6
.github/workflows/dockerbuild.yaml
vendored
6
.github/workflows/dockerbuild.yaml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@a9794064588be971151ec5e7144cb535bcb56e36
|
||||
uses: docker/login-action@cf8514a65188af1d4f94f8c28a7a4153af1088ce
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
@@ -28,14 +28,14 @@ jobs:
|
||||
|
||||
- name: Extract metadata for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@35e9aff4f5d665b5aa8a8f2adffaf8a1b5f49cc0
|
||||
uses: docker/metadata-action@0f8c876bafbf5dbce05c36682ec68e9a0274a48a
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@4fad532b9fdbfb80f436784834374a1c11834153
|
||||
uses: docker/build-push-action@9311bf5263ae5b36f3ec67aff768790c6e2344ad
|
||||
with:
|
||||
context: dockerbuild
|
||||
push: true
|
||||
|
||||
108
CHANGELOG.md
108
CHANGELOG.md
@@ -1,3 +1,111 @@
|
||||
Changes in [1.11.41](https://github.com/vector-im/element-desktop/releases/tag/v1.11.41) (2023-09-12)
|
||||
=====================================================================================================
|
||||
|
||||
## ✨ Features
|
||||
* Make SVGR icons use forward ref ([\#26082](https://github.com/vector-im/element-web/pull/26082)).
|
||||
* Add support for rendering a custom wrapper around Element ([\#25537](https://github.com/vector-im/element-web/pull/25537)). Contributed by @maheichyk.
|
||||
* Allow creating public knock rooms ([\#11481](https://github.com/matrix-org/matrix-react-sdk/pull/11481)). Contributed by @charlynguyen.
|
||||
* Render custom images in reactions according to MSC4027 ([\#11087](https://github.com/matrix-org/matrix-react-sdk/pull/11087)). Contributed by @sumnerevans.
|
||||
* Introduce room knocks bar ([\#11475](https://github.com/matrix-org/matrix-react-sdk/pull/11475)). Contributed by @charlynguyen.
|
||||
* Room header UI updates ([\#11507](https://github.com/matrix-org/matrix-react-sdk/pull/11507)). Fixes vector-im/element-web#25892.
|
||||
* Remove green "verified" bar for encrypted events ([\#11496](https://github.com/matrix-org/matrix-react-sdk/pull/11496)).
|
||||
* Update member count on room summary update ([\#11488](https://github.com/matrix-org/matrix-react-sdk/pull/11488)).
|
||||
* Support for E2EE in Element Call ([\#11492](https://github.com/matrix-org/matrix-react-sdk/pull/11492)).
|
||||
* Allow requesting to join knock rooms via spotlight ([\#11482](https://github.com/matrix-org/matrix-react-sdk/pull/11482)). Contributed by @charlynguyen.
|
||||
* Lock out the first tab if Element is opened in a second tab. ([\#11425](https://github.com/matrix-org/matrix-react-sdk/pull/11425)). Fixes vector-im/element-web#25157.
|
||||
* Change avatar to use Compound implementation ([\#11448](https://github.com/matrix-org/matrix-react-sdk/pull/11448)).
|
||||
|
||||
## 🐛 Bug Fixes
|
||||
* Fix vertical alignment of default avatar font ([\#11582](https://github.com/matrix-org/matrix-react-sdk/pull/11582)). Fixes vector-im/element-web#26081.
|
||||
* Fix avatars in public room & space search being flex shrunk ([\#11580](https://github.com/matrix-org/matrix-react-sdk/pull/11580)). Fixes vector-im/element-web#26133.
|
||||
* Fix EventTile avatars being rendered with a size of 0 instead of hidden ([\#11558](https://github.com/matrix-org/matrix-react-sdk/pull/11558)). Fixes vector-im/element-web#26075.
|
||||
* Updated no drag zones ([\#1193](https://github.com/vector-im/element-desktop/pull/1193)).
|
||||
* Fix compound external assets path in bundle ([\#26069](https://github.com/vector-im/element-web/pull/26069)).
|
||||
* Use RoomStateEvent.Update for knocks ([\#11516](https://github.com/matrix-org/matrix-react-sdk/pull/11516)). Contributed by @charlynguyen.
|
||||
* Prevent event propagation when clicking icon buttons ([\#11515](https://github.com/matrix-org/matrix-react-sdk/pull/11515)).
|
||||
* Only display RoomKnocksBar when feature flag is enabled ([\#11513](https://github.com/matrix-org/matrix-react-sdk/pull/11513)). Contributed by @andybalaam.
|
||||
* Fix avatars of knock members for people tab of room settings ([\#11506](https://github.com/matrix-org/matrix-react-sdk/pull/11506)). Fixes vector-im/element-web#26083. Contributed by @charlynguyen.
|
||||
* Fixes read receipt avatar offset ([\#11483](https://github.com/matrix-org/matrix-react-sdk/pull/11483)). Fixes vector-im/element-web#26067, vector-im/element-web#26064 vector-im/element-web#26059 and vector-im/element-web#26061.
|
||||
* Fix avatar defects ([\#11473](https://github.com/matrix-org/matrix-react-sdk/pull/11473)). Fixes vector-im/element-web#26051 and vector-im/element-web#26046.
|
||||
* Fix consistent avatar output for Percy ([\#11472](https://github.com/matrix-org/matrix-react-sdk/pull/11472)). Fixes vector-im/element-web#26049 and vector-im/element-web#26052.
|
||||
* Fix colour of avatar and colour matching with username ([\#11470](https://github.com/matrix-org/matrix-react-sdk/pull/11470)). Fixes vector-im/element-web#26042.
|
||||
* Fix incompatibility of Soft Logout with Element-R ([\#11468](https://github.com/matrix-org/matrix-react-sdk/pull/11468)).
|
||||
* Fix instances of double translation and guard translation calls using typescript ([\#11443](https://github.com/matrix-org/matrix-react-sdk/pull/11443)).
|
||||
|
||||
Changes in [1.11.40](https://github.com/vector-im/element-desktop/releases/tag/v1.11.40) (2023-08-29)
|
||||
=====================================================================================================
|
||||
|
||||
## ✨ Features
|
||||
* Add FreeBSD support ([\#1163](https://github.com/vector-im/element-desktop/pull/1163)). Contributed by @lwhsu.
|
||||
* Hide account deactivation for externally managed accounts ([\#11445](https://github.com/matrix-org/matrix-react-sdk/pull/11445)). Fixes vector-im/element-web#26022. Contributed by @kerryarchibald.
|
||||
* OIDC: Redirect to delegated auth provider when signing out ([\#11432](https://github.com/matrix-org/matrix-react-sdk/pull/11432)). Fixes vector-im/element-web#26000. Contributed by @kerryarchibald.
|
||||
* Disable 3pid fields in settings when `m.3pid_changes` capability is disabled ([\#11430](https://github.com/matrix-org/matrix-react-sdk/pull/11430)). Fixes vector-im/element-web#25995. Contributed by @kerryarchibald.
|
||||
* OIDC: disable multi session signout for OIDC-aware servers in session manager ([\#11431](https://github.com/matrix-org/matrix-react-sdk/pull/11431)). Contributed by @kerryarchibald.
|
||||
* Implement updated open dialog method of the Module API ([\#11395](https://github.com/matrix-org/matrix-react-sdk/pull/11395)). Contributed by @dhenneke.
|
||||
* Polish & delabs `Exploring public spaces` feature ([\#11423](https://github.com/matrix-org/matrix-react-sdk/pull/11423)).
|
||||
* Treat lists with a single empty item as plain text, not Markdown. ([\#6833](https://github.com/matrix-org/matrix-react-sdk/pull/6833)). Fixes vector-im/element-meta#1265.
|
||||
* Allow managing room knocks ([\#11404](https://github.com/matrix-org/matrix-react-sdk/pull/11404)). Contributed by @charlynguyen.
|
||||
* Pin the action buttons to the bottom of the scrollable dialogs ([\#11407](https://github.com/matrix-org/matrix-react-sdk/pull/11407)). Contributed by @dhenneke.
|
||||
* Support Matrix 1.1 (drop legacy r0 versions) ([\#9819](https://github.com/matrix-org/matrix-react-sdk/pull/9819)).
|
||||
|
||||
## 🐛 Bug Fixes
|
||||
* Don't intercept Ctrl + Cmd + Q on macOS ([\#1174](https://github.com/vector-im/element-desktop/pull/1174)). Contributed by @zhaofengli.
|
||||
* Improve selectors for macos app draggable regions ([\#1170](https://github.com/vector-im/element-desktop/pull/1170)). Fixes #1169.
|
||||
* Fix path separator for Windows based systems ([\#25997](https://github.com/vector-im/element-web/pull/25997)).
|
||||
* Fix instances of double translation and guard translation calls using typescript ([\#11443](https://github.com/matrix-org/matrix-react-sdk/pull/11443)).
|
||||
* Fix export type "Current timeline" to match its behaviour to its name ([\#11426](https://github.com/matrix-org/matrix-react-sdk/pull/11426)). Fixes vector-im/element-web#25988.
|
||||
* Fix Room Settings > Notifications file upload input being shown superfluously ([\#11415](https://github.com/matrix-org/matrix-react-sdk/pull/11415)). Fixes vector-im/element-web#18392.
|
||||
* Simplify registration with email validation ([\#11398](https://github.com/matrix-org/matrix-react-sdk/pull/11398)). Fixes vector-im/element-web#25832 vector-im/element-web#23601 and vector-im/element-web#22297.
|
||||
* correct home server URL ([\#11391](https://github.com/matrix-org/matrix-react-sdk/pull/11391)). Fixes vector-im/element-web#25931. Contributed by @NSV1991.
|
||||
* Include non-matching DMs in Spotlight recent conversations when the DM's userId is part of the search API results ([\#11374](https://github.com/matrix-org/matrix-react-sdk/pull/11374)). Contributed by @mgcm.
|
||||
* Fix useRoomMembers missing updates causing incorrect membership counts ([\#11392](https://github.com/matrix-org/matrix-react-sdk/pull/11392)). Fixes vector-im/element-web#17096.
|
||||
* Show error when searching public rooms fails ([\#11378](https://github.com/matrix-org/matrix-react-sdk/pull/11378)).
|
||||
|
||||
Changes in [1.11.39](https://github.com/vector-im/element-desktop/releases/tag/v1.11.39) (2023-08-15)
|
||||
=====================================================================================================
|
||||
|
||||
## 🦖 Deprecations
|
||||
* Deprecate camelCase config options ([\#25800](https://github.com/vector-im/element-web/pull/25800)).
|
||||
* Deprecate customisations in favour of Module API ([\#25736](https://github.com/vector-im/element-web/pull/25736)). Fixes vector-im/element-web#25733.
|
||||
|
||||
## ✨ Features
|
||||
* Switch to hidden titleBar on macOS to integrate the app better ([\#1101](https://github.com/vector-im/element-desktop/pull/1101)).
|
||||
* Update labs.md for knock rooms ([\#25923](https://github.com/vector-im/element-web/pull/25923)). Contributed by @charlynguyen.
|
||||
* Package release builds of element-web in package.element.io debs ([\#25198](https://github.com/vector-im/element-web/pull/25198)).
|
||||
* Allow knocking rooms ([\#11353](https://github.com/matrix-org/matrix-react-sdk/pull/11353)). Contributed by @charlynguyen.
|
||||
* Support adding space-restricted joins on rooms not members of those spaces ([\#9017](https://github.com/matrix-org/matrix-react-sdk/pull/9017)). Fixes vector-im/element-web#19213.
|
||||
* Clear requiresClient and show pop-out if widget-api fails to ready ([\#11321](https://github.com/matrix-org/matrix-react-sdk/pull/11321)). Fixes vector-im/customer-retainer#73.
|
||||
* Bump pagination sizes due to hidden events ([\#11342](https://github.com/matrix-org/matrix-react-sdk/pull/11342)).
|
||||
* Remove display of key backup signatures from backup settings ([\#11333](https://github.com/matrix-org/matrix-react-sdk/pull/11333)).
|
||||
* Use PassphraseFields in ExportE2eKeysDialog to enforce minimum passphrase complexity ([\#11222](https://github.com/matrix-org/matrix-react-sdk/pull/11222)). Fixes vector-im/element-web#9478.
|
||||
|
||||
## 🐛 Bug Fixes
|
||||
* Prevent the media lightbox sender info clipping with traffic light on macos ([\#1141](https://github.com/vector-im/element-desktop/pull/1141)). Fixes #1140.
|
||||
* Restore macOs room header dragability ([\#1136](https://github.com/vector-im/element-desktop/pull/1136)). Fixes #1135.
|
||||
* Fix ability to interact with room topic in header ([\#1126](https://github.com/vector-im/element-desktop/pull/1126)). Fixes undefined/element-desktop#1125.
|
||||
* Fix "Export chat" not respecting configured time format in plain text mode ([\#10696](https://github.com/matrix-org/matrix-react-sdk/pull/10696)). Fixes vector-im/element-web#23838. Contributed by @rashmitpankhania.
|
||||
* Fix some missing 1-count pluralisations around event list summaries ([\#11371](https://github.com/matrix-org/matrix-react-sdk/pull/11371)). Fixes vector-im/element-web#25925.
|
||||
* Fix create subspace dialog not working for public space creation ([\#11367](https://github.com/matrix-org/matrix-react-sdk/pull/11367)). Fixes vector-im/element-web#25916.
|
||||
* Search for users on paste ([\#11304](https://github.com/matrix-org/matrix-react-sdk/pull/11304)). Fixes vector-im/element-web#17523. Contributed by @peterscheu-aceart.
|
||||
* Fix AppTile context menu not always showing up when it has options ([\#11358](https://github.com/matrix-org/matrix-react-sdk/pull/11358)). Fixes vector-im/element-web#25914.
|
||||
* Fix clicking on home all rooms space notification not working ([\#11337](https://github.com/matrix-org/matrix-react-sdk/pull/11337)). Fixes vector-im/element-web#22844.
|
||||
* Fix joining a suggested room switching space away ([\#11347](https://github.com/matrix-org/matrix-react-sdk/pull/11347)). Fixes vector-im/element-web#25838.
|
||||
* Fix home/all rooms context menu in space panel ([\#11350](https://github.com/matrix-org/matrix-react-sdk/pull/11350)). Fixes vector-im/element-web#25896.
|
||||
* Make keyboard handling in and out of autocomplete completions consistent ([\#11344](https://github.com/matrix-org/matrix-react-sdk/pull/11344)). Fixes vector-im/element-web#25878.
|
||||
* De-duplicate reactions by sender to account for faulty/malicious servers ([\#11340](https://github.com/matrix-org/matrix-react-sdk/pull/11340)). Fixes vector-im/element-web#25872.
|
||||
* Fix disable_3pid_login being ignored for the email field ([\#11335](https://github.com/matrix-org/matrix-react-sdk/pull/11335)). Fixes vector-im/element-web#25863.
|
||||
* Upgrade wysiwyg editor for ctrl+backspace windows fix ([\#11324](https://github.com/matrix-org/matrix-react-sdk/pull/11324)). Fixes vector-im/verticals-internal#102.
|
||||
* Unhide the view source event toggle - it works well enough ([\#11336](https://github.com/matrix-org/matrix-react-sdk/pull/11336)). Fixes vector-im/element-web#25861.
|
||||
|
||||
Changes in [1.11.38](https://github.com/vector-im/element-desktop/releases/tag/v1.11.38) (2023-08-04)
|
||||
=====================================================================================================
|
||||
|
||||
## ✨ Features
|
||||
* Package release builds of element-web in package.element.io debs ([\#25921](https://github.com/vector-im/element-web/pull/25921)). Contributed by @RiotRobot.
|
||||
|
||||
## 🐛 Bug Fixes
|
||||
* Revert to using the /presence API for presence ([\#11366](https://github.com/matrix-org/matrix-react-sdk/pull/11366))
|
||||
|
||||
Changes in [1.11.37](https://github.com/vector-im/element-desktop/releases/tag/v1.11.37) (2023-08-01)
|
||||
=====================================================================================================
|
||||
|
||||
|
||||
20
package.json
20
package.json
@@ -2,7 +2,7 @@
|
||||
"name": "element-desktop",
|
||||
"productName": "Element",
|
||||
"main": "lib/electron-main.js",
|
||||
"version": "1.11.37",
|
||||
"version": "1.11.41",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "Element",
|
||||
"homepage": "https://element.io",
|
||||
@@ -79,33 +79,33 @@
|
||||
"@types/jest": "^29.0.0",
|
||||
"@types/minimist": "^1.2.1",
|
||||
"@types/mkdirp": "^1.0.2",
|
||||
"@types/node": "16.18.38",
|
||||
"@types/node": "16.18.41",
|
||||
"@types/pacote": "^11.1.1",
|
||||
"@types/tar": "^6.1.3",
|
||||
"@types/uuid": "^9.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^5.42.0",
|
||||
"@typescript-eslint/parser": "^5.42.0",
|
||||
"allchange": "^1.0.6",
|
||||
"app-builder-lib": "24.5.2",
|
||||
"app-builder-lib": "24.6.3",
|
||||
"babel-jest": "^29.0.0",
|
||||
"chokidar": "^3.5.2",
|
||||
"detect-libc": "^1.0.3",
|
||||
"electron": "^25.0.0",
|
||||
"electron-builder": "24.4.0",
|
||||
"electron-builder-squirrel-windows": "24.5.2",
|
||||
"electron": "^26.0.0",
|
||||
"electron-builder": "24.6.3",
|
||||
"electron-builder-squirrel-windows": "24.6.3",
|
||||
"electron-devtools-installer": "^3.2.0",
|
||||
"eslint": "^8.26.0",
|
||||
"eslint-config-google": "^0.14.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"eslint-plugin-import": "^2.25.4",
|
||||
"eslint-plugin-matrix-org": "^1.0.0",
|
||||
"eslint-plugin-unicorn": "^47.0.0",
|
||||
"eslint-plugin-unicorn": "^48.0.0",
|
||||
"expect-playwright": "^0.8.0",
|
||||
"find-npm-prefix": "^1.0.2",
|
||||
"fs-extra": "^11.0.0",
|
||||
"glob": "^10.0.0",
|
||||
"jest": "^29.0.0",
|
||||
"matrix-web-i18n": "^1.3.0",
|
||||
"matrix-web-i18n": "^2.0.0",
|
||||
"mkdirp": "^3.0.0",
|
||||
"node-pre-gyp": "^0.17.0",
|
||||
"pacote": "^15.0.0",
|
||||
@@ -122,7 +122,7 @@
|
||||
"keytar": "^7.9.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"@types/node": "16.18.38"
|
||||
"@types/node": "16.18.41"
|
||||
},
|
||||
"build": {
|
||||
"appId": "im.riot.app",
|
||||
|
||||
@@ -28,11 +28,11 @@ fs.mkdirSync("lib/i18n/strings", { recursive: true });
|
||||
type Translations = Record<string, Record<string, string> | string>;
|
||||
|
||||
function genLangFile(file: string, dest: string): void {
|
||||
const inTrs: Record<string, string> = {};
|
||||
const translations: Translations = {};
|
||||
[file].forEach(function (f) {
|
||||
if (fs.existsSync(f)) {
|
||||
try {
|
||||
Object.assign(inTrs, JSON.parse(fs.readFileSync(f).toString()));
|
||||
Object.assign(translations, JSON.parse(fs.readFileSync(f).toString()));
|
||||
} catch (e) {
|
||||
console.error("Failed: " + f, e);
|
||||
throw e;
|
||||
@@ -40,7 +40,6 @@ function genLangFile(file: string, dest: string): void {
|
||||
}
|
||||
});
|
||||
|
||||
const translations = weblateToCounterpart(inTrs);
|
||||
const json = JSON.stringify(translations, null, 4);
|
||||
const filename = path.basename(file);
|
||||
|
||||
@@ -50,46 +49,6 @@ function genLangFile(file: string, dest: string): void {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert translation key from weblate format
|
||||
* (which only supports a single level) to counterpart
|
||||
* which requires object values for 'count' translations.
|
||||
*
|
||||
* eg.
|
||||
* "there are %(count)s badgers|one": "a badger",
|
||||
* "there are %(count)s badgers|other": "%(count)s badgers"
|
||||
* becomes
|
||||
* "there are %(count)s badgers": {
|
||||
* "one": "a badger",
|
||||
* "other": "%(count)s badgers"
|
||||
* }
|
||||
*/
|
||||
function weblateToCounterpart(inTrs: Record<string, string>): Translations {
|
||||
const outTrs: Translations = {};
|
||||
|
||||
for (const key of Object.keys(inTrs)) {
|
||||
const keyParts = key.split("|", 2);
|
||||
if (keyParts.length === 2) {
|
||||
let obj = outTrs[keyParts[0]];
|
||||
if (obj === undefined) {
|
||||
obj = outTrs[keyParts[0]] = {};
|
||||
} else if (typeof obj === "string") {
|
||||
// This is a transitional edge case if a string went from singular to pluralised and both still remain
|
||||
// in the translation json file. Use the singular translation as `other` and merge pluralisation atop.
|
||||
obj = outTrs[keyParts[0]] = {
|
||||
other: inTrs[key],
|
||||
};
|
||||
console.warn("Found entry in i18n file in both singular and pluralised form", keyParts[0]);
|
||||
}
|
||||
obj[keyParts[1]] = inTrs[key];
|
||||
} else {
|
||||
outTrs[key] = inTrs[key];
|
||||
}
|
||||
}
|
||||
|
||||
return outTrs;
|
||||
}
|
||||
|
||||
/*
|
||||
watch the input files for a given language,
|
||||
regenerate the file, and regenerating languages.json with the new filename
|
||||
|
||||
@@ -81,6 +81,10 @@ export default class HakEnv {
|
||||
return this.target.platform === "linux";
|
||||
}
|
||||
|
||||
public isFreeBSD(): boolean {
|
||||
return this.target.platform === "freebsd";
|
||||
}
|
||||
|
||||
public getTargetArch(): Arch {
|
||||
return this.target.arch;
|
||||
}
|
||||
@@ -102,6 +106,6 @@ export default class HakEnv {
|
||||
}
|
||||
|
||||
public wantsStaticSqlCipher(): boolean {
|
||||
return !this.isLinux() || process.env.SQLCIPHER_BUNDLED == "1";
|
||||
return !(this.isLinux() || this.isFreeBSD()) || process.env.SQLCIPHER_BUNDLED == "1";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,9 @@ export type TargetId =
|
||||
| "i686-pc-windows-msvc"
|
||||
| "x86_64-pc-windows-msvc"
|
||||
| "aarch64-pc-windows-msvc"
|
||||
| "i686-unknown-freebsd"
|
||||
| "x86_64-unknown-freebsd"
|
||||
| "aarch64-unknown-freebsd"
|
||||
| "i686-unknown-linux-musl"
|
||||
| "i686-unknown-linux-gnu"
|
||||
| "x86_64-unknown-linux-musl"
|
||||
@@ -36,7 +39,7 @@ export type TargetId =
|
||||
| "powerpc64le-unknown-linux-gnu";
|
||||
|
||||
// Values are expected to match those used in `process.platform`.
|
||||
export type Platform = "darwin" | "linux" | "win32";
|
||||
export type Platform = "darwin" | "freebsd" | "linux" | "win32";
|
||||
|
||||
// Values are expected to match those used in `process.arch`.
|
||||
export type Arch = "arm64" | "ia32" | "x64" | "ppc64" | "universal";
|
||||
@@ -106,6 +109,24 @@ const aarch64WindowsMsvc: WindowsTarget = {
|
||||
vcVarsArch: "arm64",
|
||||
};
|
||||
|
||||
const i686UnknownFreebsd: Target = {
|
||||
id: "i686-unknown-freebsd",
|
||||
platform: "freebsd",
|
||||
arch: "ia32",
|
||||
};
|
||||
|
||||
const x8664UnknownFreebsd: Target = {
|
||||
id: "x86_64-unknown-freebsd",
|
||||
platform: "freebsd",
|
||||
arch: "x64",
|
||||
};
|
||||
|
||||
const aarch64UnknownFreebsd: Target = {
|
||||
id: "aarch64-unknown-freebsd",
|
||||
platform: "freebsd",
|
||||
arch: "arm64",
|
||||
};
|
||||
|
||||
const x8664UnknownLinuxGnu: LinuxTarget = {
|
||||
id: "x86_64-unknown-linux-gnu",
|
||||
platform: "linux",
|
||||
@@ -171,6 +192,10 @@ export const TARGETS: Record<TargetId, Target> = {
|
||||
"i686-pc-windows-msvc": i686PcWindowsMsvc,
|
||||
"x86_64-pc-windows-msvc": x8664PcWindowsMsvc,
|
||||
"aarch64-pc-windows-msvc": aarch64WindowsMsvc,
|
||||
// FreeBSD
|
||||
"i686-unknown-freebsd": i686UnknownFreebsd,
|
||||
"x86_64-unknown-freebsd": x8664UnknownFreebsd,
|
||||
"aarch64-unknown-freebsd": aarch64UnknownFreebsd,
|
||||
// Linux
|
||||
"i686-unknown-linux-musl": i686UnknownLinuxMusl,
|
||||
"i686-unknown-linux-gnu": i686UnknownLinuxGnu,
|
||||
|
||||
@@ -40,6 +40,7 @@ import * as updater from "./updater";
|
||||
import { getProfileFromDeeplink, protocolInit } from "./protocol";
|
||||
import { _t, AppLocalization } from "./language-helper";
|
||||
import { setDisplayMediaCallback } from "./displayMediaCallback";
|
||||
import { setupMacosTitleBar } from "./macos-titlebar";
|
||||
|
||||
const argv = minimist(process.argv, {
|
||||
alias: { help: "h" },
|
||||
@@ -259,7 +260,7 @@ global.appQuitting = false;
|
||||
const exitShortcuts: Array<(input: Input, platform: string) => boolean> = [
|
||||
(input, platform): boolean => platform !== "darwin" && input.alt && input.key.toUpperCase() === "F4",
|
||||
(input, platform): boolean => platform !== "darwin" && input.control && input.key.toUpperCase() === "Q",
|
||||
(input, platform): boolean => platform === "darwin" && input.meta && input.key.toUpperCase() === "Q",
|
||||
(input, platform): boolean => platform === "darwin" && input.meta && !input.control && input.key.toUpperCase() === "Q",
|
||||
];
|
||||
|
||||
const warnBeforeExit = (event: Event, input: Input): void => {
|
||||
@@ -454,6 +455,9 @@ app.on("ready", async () => {
|
||||
// https://www.electronjs.org/docs/faq#the-font-looks-blurry-what-is-this-and-what-can-i-do
|
||||
backgroundColor: "#fff",
|
||||
|
||||
titleBarStyle: process.platform === "darwin" ? "hidden" : "default",
|
||||
trafficLightPosition: { x: 9, y: 8 },
|
||||
|
||||
icon: global.trayConfig.icon_path,
|
||||
show: false,
|
||||
autoHideMenuBar: global.store.get("autoHideMenuBar", true),
|
||||
@@ -472,6 +476,10 @@ app.on("ready", async () => {
|
||||
});
|
||||
global.mainWindow.loadURL("vector://vector/webapp/");
|
||||
|
||||
if (process.platform === "darwin") {
|
||||
setupMacosTitleBar(global.mainWindow);
|
||||
}
|
||||
|
||||
// Handle spellchecker
|
||||
// For some reason spellCheckerEnabled isn't persisted, so we have to use the store here
|
||||
global.mainWindow.webContents.session.setSpellCheckerEnabled(global.store.get("spellCheckerEnabled", true));
|
||||
|
||||
@@ -1 +1 @@
|
||||
{}
|
||||
{}
|
||||
|
||||
@@ -42,5 +42,6 @@
|
||||
"Start Speaking": "Commencer la dictée",
|
||||
"Copy image address": "Copier l'adresse de l'image",
|
||||
"Redo": "Refaire",
|
||||
"Close %(brand)s": "Fermer %(brand)s"
|
||||
"Close %(brand)s": "Fermer %(brand)s",
|
||||
"%(brand)s Help": "Aide de %(brand)s"
|
||||
}
|
||||
|
||||
@@ -42,5 +42,6 @@
|
||||
"Show/Hide": "Показати/Сховати",
|
||||
"Are you sure you want to quit?": "Ви впевнені, що хочете вийти?",
|
||||
"Close %(brand)s": "Закрити %(brand)s",
|
||||
"Cancel": "Скасувати"
|
||||
"Cancel": "Скасувати",
|
||||
"%(brand)s Help": "Довідка %(brand)s"
|
||||
}
|
||||
|
||||
@@ -42,5 +42,6 @@
|
||||
"Are you sure you want to quit?": "你确定要退出吗?",
|
||||
"Cancel": "取消",
|
||||
"Copy image address": "复制图片地址",
|
||||
"Close %(brand)s": "关闭 %(brand)s"
|
||||
"Close %(brand)s": "关闭 %(brand)s",
|
||||
"%(brand)s Help": "%(brand)s帮助"
|
||||
}
|
||||
|
||||
131
src/macos-titlebar.ts
Normal file
131
src/macos-titlebar.ts
Normal file
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
Copyright 2023 New Vector Ltd
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { BrowserWindow } from "electron";
|
||||
|
||||
export function setupMacosTitleBar(window: BrowserWindow): void {
|
||||
if (process.platform !== "darwin") return;
|
||||
|
||||
let cssKey: string | undefined;
|
||||
|
||||
async function applyStyling(): Promise<void> {
|
||||
cssKey = await window.webContents.insertCSS(`
|
||||
/* Create margin of space for the traffic light buttons */
|
||||
.mx_UserMenu {
|
||||
margin-top: 32px !important;
|
||||
}
|
||||
/* Maintain alignment of the toggle space panel button */
|
||||
.mx_SpacePanel_toggleCollapse {
|
||||
/* 19px original top value, 32px margin-top above, 12px original margin-top value */
|
||||
top: calc(19px + 32px - 12px) !important;
|
||||
}
|
||||
/* Prevent the media lightbox sender info from clipping into the traffic light buttons */
|
||||
.mx_ImageView_info_wrapper {
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
||||
/* Mark the splash screen as a drag handle */
|
||||
.mx_MatrixChat_splash {
|
||||
-webkit-app-region: drag;
|
||||
}
|
||||
/* Exclude the splash buttons from being drag handles */
|
||||
.mx_MatrixChat_splashButtons {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
|
||||
/* Mark the background as a drag handle */
|
||||
.mx_AuthPage {
|
||||
-webkit-app-region: drag;
|
||||
}
|
||||
/* Exclude the main content elements from being drag handles */
|
||||
.mx_AuthPage .mx_AuthPage_modalBlur,
|
||||
.mx_AuthPage .mx_AuthFooter > * {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
|
||||
/* Mark the header as a drag handle */
|
||||
.mx_LeftPanel .mx_LeftPanel_filterContainer {
|
||||
-webkit-app-region: drag;
|
||||
}
|
||||
/* Exclude header interactive elements from being drag handles */
|
||||
.mx_LeftPanel .mx_LeftPanel_filterContainer .mx_AccessibleButton {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
|
||||
/* Mark the home page background as a drag handle */
|
||||
.mx_HomePage {
|
||||
-webkit-app-region: drag;
|
||||
}
|
||||
/* Exclude interactive elements from being drag handles */
|
||||
.mx_HomePage .mx_HomePage_body,
|
||||
.mx_HomePage .mx_HomePage_default_wrapper > * {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
|
||||
/* Mark the header as a drag handle */
|
||||
.mx_LegacyRoomHeader,
|
||||
.mx_RoomHeader {
|
||||
-webkit-app-region: drag;
|
||||
-webkit-user-select: none;
|
||||
}
|
||||
.mx_ImageView_panel {
|
||||
-webkit-app-region: drag;
|
||||
}
|
||||
/* Exclude header interactive elements from being drag handles */
|
||||
.mx_RoomHeader .mx_BaseAvatar,
|
||||
.mx_RoomHeader_heading,
|
||||
.mx_RoomHeader button,
|
||||
.mx_RoomHeader .mx_FacePile,
|
||||
.mx_LegacyRoomHeader .mx_LegacyRoomHeader_avatar,
|
||||
.mx_LegacyRoomHeader .mx_E2EIcon,
|
||||
.mx_LegacyRoomHeader .mx_RoomTopic,
|
||||
.mx_LegacyRoomHeader .mx_AccessibleButton,
|
||||
.mx_ImageView_panel > .mx_ImageView_info_wrapper,
|
||||
.mx_ImageView_panel > .mx_ImageView_title,
|
||||
.mx_ImageView_panel > .mx_ImageView_toolbar > * {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
|
||||
/* Mark the background as a drag handle only if no modal is open */
|
||||
.mx_MatrixChat_wrapper[aria-hidden="false"] .mx_RoomView_wrapper {
|
||||
-webkit-app-region: drag;
|
||||
}
|
||||
/* Exclude content elements from being drag handles */
|
||||
.mx_SpaceRoomView_landing > *,
|
||||
.mx_RoomPreviewBar,
|
||||
.mx_RoomView_body,
|
||||
.mx_AutoHideScrollbar,
|
||||
.mx_RightPanel_ResizeWrapper,
|
||||
.mx_RoomPreviewCard {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
`);
|
||||
}
|
||||
|
||||
window.on("enter-full-screen", () => {
|
||||
if (cssKey !== undefined) {
|
||||
window.webContents.removeInsertedCSS(cssKey);
|
||||
}
|
||||
});
|
||||
window.on("leave-full-screen", () => {
|
||||
applyStyling();
|
||||
});
|
||||
window.webContents.on("did-finish-load", () => {
|
||||
if (!window.isFullScreen()) {
|
||||
applyStyling();
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user