From 8dc1965d150c6d1490874ac3635638f8b8dc0c64 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Date: Thu, 23 Jul 2026 11:11:59 +0000 Subject: [PATCH] Fix docs and build script for desktop build (#34395) * Fix some documentation for element-desktop Some of these links got broken, or outdated, during the monorepo switch. * Fix desktop docker build script It will fail with 'workspace_node_modules: no such file or directory' if the directory does not exist. This got broken by https://github.com/element-hq/element-web/pull/33641. * Clarify native modules doc Most of this stuff does not apply when using the docker build. * update snapshot --- apps/desktop/README.md | 9 ++------- apps/desktop/scripts/in-docker.sh | 6 +++++- .../views/settings/EventIndexPanel.tsx | 2 +- .../EventIndexPanel-test.tsx.snap | 2 +- docs/native-node-modules.md | 18 +++++++++--------- 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/apps/desktop/README.md b/apps/desktop/README.md index e502355a12..5c7d4874fb 100644 --- a/apps/desktop/README.md +++ b/apps/desktop/README.md @@ -1,9 +1,4 @@ -![Build](https://github.com/vector-im/element-desktop/actions/workflows/build_desktop_and_deploy.yaml/badge.svg) -![Static Analysis](https://github.com/vector-im/element-desktop/actions/workflows/static_analysis.yaml/badge.svg) -[![Localazy](https://img.shields.io/endpoint?url=https%3A%2F%2Fconnect.localazy.com%2Fstatus%2Felement-web%2Fdata%3Fcontent%3Dall%26title%3Dlocalazy%26logo%3Dtrue)](https://localazy.com/p/element-web) -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=element-desktop&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=element-desktop) -[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=element-desktop&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=element-desktop) -[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=element-desktop&metric=bugs)](https://sonarcloud.io/summary/new_code?id=element-desktop) +![Build](https://github.com/element-hq/element-web/actions/workflows/build_desktop_and_deploy.yaml/badge.svg) # Element Desktop @@ -63,7 +58,7 @@ ln -s ../web/webapp ./ TODO: List native pre-requisites -Optionally, [build the native modules](https://github.com/vector-im/element-desktop/blob/develop/docs/native-node-modules.md), +Optionally, [build the native modules](https://github.com/element-hq/element-web/blob/develop/docs/native-node-modules.md), which include support for searching in encrypted rooms and secure storage. Skipping this step is fine, you just won't have those features. Then, run diff --git a/apps/desktop/scripts/in-docker.sh b/apps/desktop/scripts/in-docker.sh index 7ccf9d0d3b..c358c3776f 100755 --- a/apps/desktop/scripts/in-docker.sh +++ b/apps/desktop/scripts/in-docker.sh @@ -12,7 +12,11 @@ if [ $? != 0 ]; then exit 1 fi -mkdir -p docker/node_modules docker/.hak docker/.gnupg +mkdir -p \ + docker/workspace_node_modules \ + docker/node_modules \ + docker/.hak \ + docker/.gnupg # Taken from https://www.electron.build/multi-platform-build#docker # Pass through any vars prefixed with INDOCKER_, removing the prefix diff --git a/apps/web/src/components/views/settings/EventIndexPanel.tsx b/apps/web/src/components/views/settings/EventIndexPanel.tsx index 4cd7a7d015..121860d5ee 100644 --- a/apps/web/src/components/views/settings/EventIndexPanel.tsx +++ b/apps/web/src/components/views/settings/EventIndexPanel.tsx @@ -165,7 +165,7 @@ export default class EventIndexPanel extends React.Component when event indexing is supported but not installed Element is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom Element Desktop with diff --git a/docs/native-node-modules.md b/docs/native-node-modules.md index dac81ede20..a5fbf34ae7 100644 --- a/docs/native-node-modules.md +++ b/docs/native-node-modules.md @@ -24,11 +24,11 @@ INDOCKER_SQLCIPHER_BUNDLED=1 pnpm docker:build:native ``` The above will build `matrix-seshat` in -`docker/node_modules/matrix-seshat`. You can then either run `pnpm docker:build` +`docker/.hak/hakModules/matrix-seshat`. You can then either run `pnpm docker:build` to build the app inside docker, or: ``` -pnpm link docker/node_modules/matrix-seshat +pnpm link ./docker/.hak/hakModules/matrix-seshat ``` ... and build the app with `pnpm build` or run it with `pnpm start`. @@ -53,7 +53,7 @@ pnpm run build:native If you need to build for a specific architecture, see [here](#compiling-for-specific-architectures). -## Adding Seshat for search in E2E encrypted rooms +### Adding Seshat for search in E2E encrypted rooms Seshat is a native Node module that adds support for local event indexing and full text search in E2E encrypted rooms. @@ -90,7 +90,7 @@ as usual using: pnpm start -### Statically linking libsqlcipher +#### Statically linking libsqlcipher On Windows & macOS we always statically link libsqlcipher for it is not generally available. On Linux by default we will use a system package, on debian & ubuntu this is `libsqlcipher0`, @@ -101,9 +101,9 @@ link sqlcipher, including a static build of OpenSSL. More info can be found at https://github.com/matrix-org/seshat/issues/102 and https://github.com/vector-im/element-web/issues/20926. -## Compiling for specific architectures +### Compiling for specific architectures -### macOS +#### macOS On macOS, you can build universal native modules too: @@ -130,7 +130,7 @@ To bundle a universal build for macOS, run: pnpm run build:universal ``` -### Windows +#### Windows If you're on Windows, you can choose to build specifically for 32 or 64 bit: @@ -144,14 +144,14 @@ or pnpm run build:64 ``` -### Cross compiling +#### Cross compiling Compiling a module for a particular operating system (Linux/macOS/Windows) needs to be done on that operating system. Cross-compiling from a host OS for a different target OS may be possible, but we don't support this flow with Element dependencies at this time. -### Switching between architectures +#### Switching between architectures The native module build system keeps the different architectures separate, so you can keep native modules for several architectures at the same