From 03d27e28088b03b602837a836adcea5eaa0bc028 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 18 Feb 2025 13:01:30 +0000 Subject: [PATCH 01/14] Upgrade dependency to matrix-js-sdk@37.0.0-rc.0 --- package.json | 2 +- yarn.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 8558639470..9721776130 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "maplibre-gl": "^5.0.0", "matrix-encrypt-attachment": "^1.0.3", "matrix-events-sdk": "0.0.1", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", + "matrix-js-sdk": "37.0.0-rc.0", "matrix-widget-api": "^1.10.0", "memoize-one": "^6.0.0", "mime": "^4.0.4", diff --git a/yarn.lock b/yarn.lock index 6c3b510ed3..99302d6163 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8723,9 +8723,10 @@ matrix-events-sdk@0.0.1: resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz#c8c38911e2cb29023b0bbac8d6f32e0de2c957dd" integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": - version "36.2.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/b584f818f51c899cc81bc83bf1499a2ed374c6c7" +matrix-js-sdk@37.0.0-rc.0: + version "37.0.0-rc.0" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-37.0.0-rc.0.tgz#d6a87bda024d2ec9ee782e7d825da1e8e31fc00f" + integrity sha512-KcshXXWRIrXx6E7vsm+BvBgcJc8STEgbOcMTu9ZneITDwHrjP13qObdEUXUZv3x8tYxKSWj821aMr+nOH3jL+A== dependencies: "@babel/runtime" "^7.12.5" "@matrix-org/matrix-sdk-crypto-wasm" "^13.0.0" From 8c4996b437c277216fadb1f8f6a2e3fd4635222b Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 18 Feb 2025 13:04:49 +0000 Subject: [PATCH 02/14] v1.11.93-rc.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9721776130..8e70c087eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "element-web", - "version": "1.11.91", + "version": "1.11.93-rc.0", "description": "Element: the future of secure communication", "author": "New Vector Ltd.", "repository": { From 2e883b40ebfae50d0a04a0c6c764f6f28708ac1c Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 25 Feb 2025 09:16:22 +0000 Subject: [PATCH 03/14] Add docker healthcheck (#29351) * Add docker healthcheck and test ELEMENT_WEB_PORT envvar Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Iterate Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Iterate Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Iterate Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Iterate Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .github/workflows/docker.yaml | 27 ++++++++++++++++++++------- Dockerfile | 2 ++ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 56b91c750e..3ebf0b2036 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -17,8 +17,6 @@ jobs: permissions: id-token: write # needed for signing the images with GitHub OIDC Token packages: write # needed for publishing packages to GHCR - env: - TEST_TAG: vectorim/element-web:test steps: - uses: actions/checkout@v4 with: @@ -52,26 +50,41 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and load + id: test-build uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6 with: context: . load: true - tags: ${{ env.TEST_TAG }} - name: Test the image + env: + IMAGEID: ${{ steps.test-build.outputs.imageid }} run: | + set -x + # Make a fake module to test the image MODULE_PATH="modules/module_name/index.js" mkdir -p $(dirname $MODULE_PATH) echo 'alert("Testing");' > $MODULE_PATH # Spin up a container of the image - CONTAINER_ID=$(docker run --rm -dp 80:80 -v $(pwd)/modules:/tmp/element-web-modules ${{ env.TEST_TAG }}) + ELEMENT_WEB_PORT=8181 + CONTAINER_ID=$( + docker run \ + --rm \ + -e "ELEMENT_WEB_PORT=$ELEMENT_WEB_PORT" \ + -dp "$ELEMENT_WEB_PORT:$ELEMENT_WEB_PORT" \ + -v $(pwd)/modules:/tmp/element-web-modules \ + "$IMAGEID" \ + ) # Run some smoke tests - wget --retry-connrefused --tries=5 -q --wait=3 --spider http://localhost:80/modules/module_name/index.js - MODULE_1=$(curl http://localhost:80/config.json | jq -r .modules[0]) - test "$MODULE_1" = "/${MODULE_PATH}" + wget --retry-connrefused --tries=5 -q --wait=3 --spider "http://localhost:$ELEMENT_WEB_PORT/modules/module_name/index.js" + MODULE_0=$(curl "http://localhost:$ELEMENT_WEB_PORT/config.json" | jq -r .modules[0]) + test "$MODULE_0" = "/${MODULE_PATH}" + + # Check healthcheck + test "$(docker inspect -f {{.State.Running}} $CONTAINER_ID)" == "true" # Clean up docker stop "$CONTAINER_ID" diff --git a/Dockerfile b/Dockerfile index dd8be21932..1103d7336f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,3 +46,5 @@ USER nginx # HTTP listen port ENV ELEMENT_WEB_PORT=80 + +HEALTHCHECK --start-period=5s CMD wget --retry-connrefused --tries=5 -q --wait=3 --spider http://localhost:$ELEMENT_WEB_PORT/config.json From 43efd911c70b6f10686546d2ac7db12b40be6e81 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Tue, 25 Feb 2025 12:03:29 +0100 Subject: [PATCH 04/14] New room list: add dial to search section (#29359) * feat(new room list): add dial to new room list * test(new room list): test dial button * test(new room list): update room list test --- .../rooms/RoomListView/_RoomListSearch.pcss | 2 +- .../rooms/RoomListView/RoomListSearch.tsx | 24 +++++- .../RoomListView/RoomListSearch-test.tsx | 28 +++++- .../RoomListSearch-test.tsx.snap | 86 ++++++++++++++++++- .../__snapshots__/RoomListView-test.tsx.snap | 2 +- 5 files changed, 136 insertions(+), 6 deletions(-) diff --git a/res/css/views/rooms/RoomListView/_RoomListSearch.pcss b/res/css/views/rooms/RoomListView/_RoomListSearch.pcss index e6bd492466..f175ab3976 100644 --- a/res/css/views/rooms/RoomListView/_RoomListSearch.pcss +++ b/res/css/views/rooms/RoomListView/_RoomListSearch.pcss @@ -31,7 +31,7 @@ } } - .mx_RoomListSearch_explore:hover { + .mx_RoomListSearch_button:hover { svg { fill: var(--cpd-color-icon-primary); } diff --git a/src/components/views/rooms/RoomListView/RoomListSearch.tsx b/src/components/views/rooms/RoomListView/RoomListSearch.tsx index 415e817ad9..6809841075 100644 --- a/src/components/views/rooms/RoomListView/RoomListSearch.tsx +++ b/src/components/views/rooms/RoomListView/RoomListSearch.tsx @@ -9,6 +9,7 @@ import React, { type JSX } from "react"; import { Button } from "@vector-im/compound-web"; import ExploreIcon from "@vector-im/compound-design-tokens/assets/web/icons/explore"; import SearchIcon from "@vector-im/compound-design-tokens/assets/web/icons/search"; +import DialPadIcon from "@vector-im/compound-design-tokens/assets/web/icons/dial-pad"; import { IS_MAC, Key } from "../../../../Keyboard"; import { _t } from "../../../../languageHandler"; @@ -20,6 +21,8 @@ import { Action } from "../../../../dispatcher/actions"; import PosthogTrackers from "../../../../PosthogTrackers"; import defaultDispatcher from "../../../../dispatcher/dispatcher"; import { Flex } from "../../../utils/Flex"; +import { useTypedEventEmitterState } from "../../../../hooks/useEventEmitter"; +import LegacyCallHandler, { LegacyCallHandlerEvent } from "../../../../LegacyCallHandler"; type RoomListSearchProps = { /** @@ -35,6 +38,12 @@ type RoomListSearchProps = { */ export function RoomListSearch({ activeSpace }: RoomListSearchProps): JSX.Element { const displayExploreButton = activeSpace === MetaSpace.Home && shouldShowComponent(UIComponent.ExploreRooms); + // We only display the dial button if the user is can make PSTN calls + const displayDialButton = useTypedEventEmitterState( + LegacyCallHandler.instance, + LegacyCallHandlerEvent.ProtocolSupport, + () => LegacyCallHandler.instance.getSupportsPstnProtocol(), + ); return ( @@ -50,9 +59,22 @@ export function RoomListSearch({ activeSpace }: RoomListSearchProps): JSX.Elemen {IS_MAC ? "⌘ K" : _t(ALTERNATE_KEY_NAME[Key.CONTROL]) + " K"} + {displayDialButton && ( + + + +`; + +exports[` should display the dial button when the PTSN protocol is not supported 1`] = ` + + + + + +`; + +exports[` space menu should display the space menu 1`] = ` + +
+
+

+ title +

+ +
+ +
+
+`; + +exports[` space menu should not display the space menu 1`] = ` + +
+
+

+ title +

+
+
`; diff --git a/test/unit-tests/components/views/rooms/RoomListView/__snapshots__/RoomListView-test.tsx.snap b/test/unit-tests/components/views/rooms/RoomListView/__snapshots__/RoomListView-test.tsx.snap index 79bf67b0aa..90e1454f50 100644 --- a/test/unit-tests/components/views/rooms/RoomListView/__snapshots__/RoomListView-test.tsx.snap +++ b/test/unit-tests/components/views/rooms/RoomListView/__snapshots__/RoomListView-test.tsx.snap @@ -12,9 +12,14 @@ exports[` should not render the RoomListSearch component when UI data-testid="room-list-header" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: space-between; --mx-flex-gap: 0;" > -

- Home -

+
+

+ Home +

+
@@ -88,9 +93,14 @@ exports[` should render the RoomListSearch component when UIComp data-testid="room-list-header" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: space-between; --mx-flex-gap: 0;" > -

- Home -

+
+

+ Home +

+