Skip to content

Commit 02ee80b

Browse files
committed
Merge tag 'v3.60.0' into sc
* Loading threads with server-side assistance ([\matrix-org#9356](matrix-org#9356)). Fixes element-hq/element-web#21807, element-hq/element-web#21799, element-hq/element-web#21911, element-hq/element-web#22141, element-hq/element-web#22157, element-hq/element-web#22641, element-hq/element-web#22501 element-hq/element-web#22438 and element-hq/element-web#21678. Contributed by @justjanne. * Make thread replies trigger a room list re-ordering ([\matrix-org#9510](matrix-org#9510)). Fixes element-hq/element-web#21700. * Device manager - add extra details to device security and renaming ([\matrix-org#9501](matrix-org#9501)). Contributed by @kerryarchibald. * Add plain text mode to the wysiwyg composer ([\matrix-org#9503](matrix-org#9503)). Contributed by @florianduros. * Sliding Sync: improve sort order, show subspace rooms, better tombstoned room handling ([\matrix-org#9484](matrix-org#9484)). * Device manager - add learn more popups to filtered sessions section ([\matrix-org#9497](matrix-org#9497)). Contributed by @kerryarchibald. * Show thread notification if thread timeline is closed ([\matrix-org#9495](matrix-org#9495)). Fixes element-hq/element-web#23589. * Add message editing to wysiwyg composer ([\matrix-org#9488](matrix-org#9488)). Contributed by @florianduros. * Device manager - confirm sign out of other sessions ([\matrix-org#9487](matrix-org#9487)). Contributed by @kerryarchibald. * Automatically request logs from other users in a call when submitting logs ([\matrix-org#9492](matrix-org#9492)). * Add thread notification with server assistance (MSC3773) ([\matrix-org#9400](matrix-org#9400)). Fixes element-hq/element-web#21114, element-hq/element-web#21413, element-hq/element-web#21416, element-hq/element-web#21433, element-hq/element-web#21481, element-hq/element-web#21798, element-hq/element-web#21823 element-hq/element-web#23192 and element-hq/element-web#21765. * Support for login + E2EE set up with QR ([\matrix-org#9403](matrix-org#9403)). Contributed by @hughns. * Allow pressing Enter to send messages in new composer ([\matrix-org#9451](matrix-org#9451)). Contributed by @andybalaam. * Fix regressions around media uploads failing and causing soft crashes ([\matrix-org#9549](matrix-org#9549)). Fixes matrix-org/element-web-rageshakes#16831, matrix-org/element-web-rageshakes#16824 matrix-org/element-web-rageshakes#16810 and element-hq/element-web#23641. * Fix /myroomavatar slash command ([\matrix-org#9536](matrix-org#9536)). Fixes matrix-org/synapse#14321. * Fix NotificationBadge unsent color ([\matrix-org#9522](matrix-org#9522)). Fixes element-hq/element-web#23646. * Fix room list sorted by recent on app startup ([\matrix-org#9515](matrix-org#9515)). Fixes element-hq/element-web#23635. * Reset custom power selector when blurred on empty ([\matrix-org#9508](matrix-org#9508)). Fixes element-hq/element-web#23481. * Reinstate timeline/redaction callbacks when updating notification state ([\matrix-org#9494](matrix-org#9494)). Fixes element-hq/element-web#23554. * Only render NotificationBadge when needed ([\matrix-org#9493](matrix-org#9493)). Fixes element-hq/element-web#23584. * Fix embedded Element Call screen sharing ([\matrix-org#9485](matrix-org#9485)). Fixes element-hq/element-web#23571. * Send Content-Type: application/json header for integration manager /register API ([\matrix-org#9490](matrix-org#9490)). Fixes element-hq/element-web#23580. * Fix joining calls without audio or video inputs ([\matrix-org#9486](matrix-org#9486)). Fixes element-hq/element-web#23511. * Ensure spaces in the spotlight dialog have rounded square avatars ([\matrix-org#9480](matrix-org#9480)). Fixes element-hq/element-web#23515. * Only show mini avatar uploader in room intro when no avatar yet exists ([\matrix-org#9479](matrix-org#9479)). Fixes element-hq/element-web#23552. * Fix threads fallback incorrectly targets root event ([\matrix-org#9229](matrix-org#9229)). Fixes element-hq/element-web#23147. * Align video call icon with banner text ([\matrix-org#9460](matrix-org#9460)). * Set relations helper when creating event tile context menu ([\matrix-org#9253](matrix-org#9253)). Fixes element-hq/element-web#22018. * Device manager - put client/browser device metadata in correct section ([\matrix-org#9447](matrix-org#9447)). Contributed by @kerryarchibald. * Update the room unread notification counter when the server changes the value without any related read receipt ([\matrix-org#9438](matrix-org#9438)).
2 parents ae89347 + e1e5950 commit 02ee80b

File tree

346 files changed

+13406
-4572
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

346 files changed

+13406
-4572
lines changed

.node-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
14
1+
16

CHANGELOG.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,40 @@
1+
Changes in [3.60.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.60.0) (2022-11-08)
2+
=====================================================================================================
3+
4+
## ✨ Features
5+
* Loading threads with server-side assistance ([\#9356](https://github.com/matrix-org/matrix-react-sdk/pull/9356)). Fixes vector-im/element-web#21807, vector-im/element-web#21799, vector-im/element-web#21911, vector-im/element-web#22141, vector-im/element-web#22157, vector-im/element-web#22641, vector-im/element-web#22501 vector-im/element-web#22438 and vector-im/element-web#21678. Contributed by @justjanne.
6+
* Make thread replies trigger a room list re-ordering ([\#9510](https://github.com/matrix-org/matrix-react-sdk/pull/9510)). Fixes vector-im/element-web#21700.
7+
* Device manager - add extra details to device security and renaming ([\#9501](https://github.com/matrix-org/matrix-react-sdk/pull/9501)). Contributed by @kerryarchibald.
8+
* Add plain text mode to the wysiwyg composer ([\#9503](https://github.com/matrix-org/matrix-react-sdk/pull/9503)). Contributed by @florianduros.
9+
* Sliding Sync: improve sort order, show subspace rooms, better tombstoned room handling ([\#9484](https://github.com/matrix-org/matrix-react-sdk/pull/9484)).
10+
* Device manager - add learn more popups to filtered sessions section ([\#9497](https://github.com/matrix-org/matrix-react-sdk/pull/9497)). Contributed by @kerryarchibald.
11+
* Show thread notification if thread timeline is closed ([\#9495](https://github.com/matrix-org/matrix-react-sdk/pull/9495)). Fixes vector-im/element-web#23589.
12+
* Add message editing to wysiwyg composer ([\#9488](https://github.com/matrix-org/matrix-react-sdk/pull/9488)). Contributed by @florianduros.
13+
* Device manager - confirm sign out of other sessions ([\#9487](https://github.com/matrix-org/matrix-react-sdk/pull/9487)). Contributed by @kerryarchibald.
14+
* Automatically request logs from other users in a call when submitting logs ([\#9492](https://github.com/matrix-org/matrix-react-sdk/pull/9492)).
15+
* Add thread notification with server assistance (MSC3773) ([\#9400](https://github.com/matrix-org/matrix-react-sdk/pull/9400)). Fixes vector-im/element-web#21114, vector-im/element-web#21413, vector-im/element-web#21416, vector-im/element-web#21433, vector-im/element-web#21481, vector-im/element-web#21798, vector-im/element-web#21823 vector-im/element-web#23192 and vector-im/element-web#21765.
16+
* Support for login + E2EE set up with QR ([\#9403](https://github.com/matrix-org/matrix-react-sdk/pull/9403)). Contributed by @hughns.
17+
* Allow pressing Enter to send messages in new composer ([\#9451](https://github.com/matrix-org/matrix-react-sdk/pull/9451)). Contributed by @andybalaam.
18+
19+
## 🐛 Bug Fixes
20+
* Fix regressions around media uploads failing and causing soft crashes ([\#9549](https://github.com/matrix-org/matrix-react-sdk/pull/9549)). Fixes matrix-org/element-web-rageshakes#16831, matrix-org/element-web-rageshakes#16824 matrix-org/element-web-rageshakes#16810 and vector-im/element-web#23641.
21+
* Fix /myroomavatar slash command ([\#9536](https://github.com/matrix-org/matrix-react-sdk/pull/9536)). Fixes matrix-org/synapse#14321.
22+
* Fix NotificationBadge unsent color ([\#9522](https://github.com/matrix-org/matrix-react-sdk/pull/9522)). Fixes vector-im/element-web#23646.
23+
* Fix room list sorted by recent on app startup ([\#9515](https://github.com/matrix-org/matrix-react-sdk/pull/9515)). Fixes vector-im/element-web#23635.
24+
* Reset custom power selector when blurred on empty ([\#9508](https://github.com/matrix-org/matrix-react-sdk/pull/9508)). Fixes vector-im/element-web#23481.
25+
* Reinstate timeline/redaction callbacks when updating notification state ([\#9494](https://github.com/matrix-org/matrix-react-sdk/pull/9494)). Fixes vector-im/element-web#23554.
26+
* Only render NotificationBadge when needed ([\#9493](https://github.com/matrix-org/matrix-react-sdk/pull/9493)). Fixes vector-im/element-web#23584.
27+
* Fix embedded Element Call screen sharing ([\#9485](https://github.com/matrix-org/matrix-react-sdk/pull/9485)). Fixes vector-im/element-web#23571.
28+
* Send Content-Type: application/json header for integration manager /register API ([\#9490](https://github.com/matrix-org/matrix-react-sdk/pull/9490)). Fixes vector-im/element-web#23580.
29+
* Fix joining calls without audio or video inputs ([\#9486](https://github.com/matrix-org/matrix-react-sdk/pull/9486)). Fixes vector-im/element-web#23511.
30+
* Ensure spaces in the spotlight dialog have rounded square avatars ([\#9480](https://github.com/matrix-org/matrix-react-sdk/pull/9480)). Fixes vector-im/element-web#23515.
31+
* Only show mini avatar uploader in room intro when no avatar yet exists ([\#9479](https://github.com/matrix-org/matrix-react-sdk/pull/9479)). Fixes vector-im/element-web#23552.
32+
* Fix threads fallback incorrectly targets root event ([\#9229](https://github.com/matrix-org/matrix-react-sdk/pull/9229)). Fixes vector-im/element-web#23147.
33+
* Align video call icon with banner text ([\#9460](https://github.com/matrix-org/matrix-react-sdk/pull/9460)).
34+
* Set relations helper when creating event tile context menu ([\#9253](https://github.com/matrix-org/matrix-react-sdk/pull/9253)). Fixes vector-im/element-web#22018.
35+
* Device manager - put client/browser device metadata in correct section ([\#9447](https://github.com/matrix-org/matrix-react-sdk/pull/9447)). Contributed by @kerryarchibald.
36+
* Update the room unread notification counter when the server changes the value without any related read receipt ([\#9438](https://github.com/matrix-org/matrix-react-sdk/pull/9438)).
37+
138
Changes in [3.59.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.59.1) (2022-11-01)
239
=====================================================================================================
340

cypress.config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ export default defineConfig({
3030
experimentalSessionAndOrigin: true,
3131
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
3232
},
33+
env: {
34+
// Docker tag to use for `ghcr.io/matrix-org/sliding-sync-proxy` image.
35+
SLIDING_SYNC_PROXY_TAG: "v0.6.0",
36+
},
3337
retries: {
3438
runMode: 4,
3539
openMode: 0,
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
/*
2+
Copyright 2022 The Matrix.org Foundation C.I.C.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
/// <reference types="cypress" />
18+
19+
import { SynapseInstance } from "../../plugins/synapsedocker";
20+
import { SettingLevel } from "../../../src/settings/SettingLevel";
21+
22+
describe("Composer", () => {
23+
let synapse: SynapseInstance;
24+
25+
beforeEach(() => {
26+
cy.startSynapse("default").then(data => {
27+
synapse = data;
28+
});
29+
});
30+
31+
afterEach(() => {
32+
cy.stopSynapse(synapse);
33+
});
34+
35+
describe("CIDER", () => {
36+
beforeEach(() => {
37+
cy.initTestUser(synapse, "Janet").then(() => {
38+
cy.createRoom({ name: "Composing Room" });
39+
});
40+
cy.viewRoomByName("Composing Room");
41+
});
42+
43+
it("sends a message when you click send or press Enter", () => {
44+
// Type a message
45+
cy.get('div[contenteditable=true]').type('my message 0');
46+
// It has not been sent yet
47+
cy.contains('.mx_EventTile_body', 'my message 0').should('not.exist');
48+
49+
// Click send
50+
cy.get('div[aria-label="Send message"]').click();
51+
// It has been sent
52+
cy.contains('.mx_EventTile_body', 'my message 0');
53+
54+
// Type another and press Enter afterwards
55+
cy.get('div[contenteditable=true]').type('my message 1{enter}');
56+
// It was sent
57+
cy.contains('.mx_EventTile_body', 'my message 1');
58+
});
59+
60+
it("can write formatted text", () => {
61+
cy.get('div[contenteditable=true]').type('my bold{ctrl+b} message');
62+
cy.get('div[aria-label="Send message"]').click();
63+
// Note: both "bold" and "message" are bold, which is probably surprising
64+
cy.contains('.mx_EventTile_body strong', 'bold message');
65+
});
66+
67+
it("should allow user to input emoji via graphical picker", () => {
68+
cy.getComposer(false).within(() => {
69+
cy.get('[aria-label="Emoji"]').click();
70+
});
71+
72+
cy.get('[data-testid="mx_EmojiPicker"]').within(() => {
73+
cy.contains(".mx_EmojiPicker_item", "😇").click();
74+
});
75+
76+
cy.get(".mx_ContextualMenu_background").click(); // Close emoji picker
77+
cy.get('div[contenteditable=true]').type("{enter}"); // Send message
78+
79+
cy.contains(".mx_EventTile_body", "😇");
80+
});
81+
82+
describe("when Ctrl+Enter is required to send", () => {
83+
beforeEach(() => {
84+
cy.setSettingValue("MessageComposerInput.ctrlEnterToSend", null, SettingLevel.ACCOUNT, true);
85+
});
86+
87+
it("only sends when you press Ctrl+Enter", () => {
88+
// Type a message and press Enter
89+
cy.get('div[contenteditable=true]').type('my message 3{enter}');
90+
// It has not been sent yet
91+
cy.contains('.mx_EventTile_body', 'my message 3').should('not.exist');
92+
93+
// Press Ctrl+Enter
94+
cy.get('div[contenteditable=true]').type('{ctrl+enter}');
95+
// It was sent
96+
cy.contains('.mx_EventTile_body', 'my message 3');
97+
});
98+
});
99+
});
100+
101+
describe("WYSIWYG", () => {
102+
beforeEach(() => {
103+
cy.enableLabsFeature("feature_wysiwyg_composer");
104+
cy.initTestUser(synapse, "Janet").then(() => {
105+
cy.createRoom({ name: "Composing Room" });
106+
});
107+
cy.viewRoomByName("Composing Room");
108+
});
109+
110+
it("sends a message when you click send or press Enter", () => {
111+
// Type a message
112+
cy.get('div[contenteditable=true]').type('my message 0');
113+
// It has not been sent yet
114+
cy.contains('.mx_EventTile_body', 'my message 0').should('not.exist');
115+
116+
// Click send
117+
cy.get('div[aria-label="Send message"]').click();
118+
// It has been sent
119+
cy.contains('.mx_EventTile_body', 'my message 0');
120+
121+
// Type another
122+
cy.get('div[contenteditable=true]').type('my message 1');
123+
// Press enter. Would be nice to just use {enter} but we can't because Cypress
124+
// does not trigger an insertParagraph when you do that.
125+
cy.get('div[contenteditable=true]').trigger('input', { inputType: "insertParagraph" });
126+
// It was sent
127+
cy.contains('.mx_EventTile_body', 'my message 1');
128+
});
129+
130+
it("can write formatted text", () => {
131+
cy.get('div[contenteditable=true]').type('my {ctrl+b}bold{ctrl+b} message');
132+
cy.get('div[aria-label="Send message"]').click();
133+
cy.contains('.mx_EventTile_body strong', 'bold');
134+
});
135+
136+
describe("when Ctrl+Enter is required to send", () => {
137+
beforeEach(() => {
138+
cy.setSettingValue("MessageComposerInput.ctrlEnterToSend", null, SettingLevel.ACCOUNT, true);
139+
});
140+
141+
it("only sends when you press Ctrl+Enter", () => {
142+
// Type a message and press Enter
143+
cy.get('div[contenteditable=true]').type('my message 3');
144+
cy.get('div[contenteditable=true]').trigger('input', { inputType: "insertParagraph" });
145+
// It has not been sent yet
146+
cy.contains('.mx_EventTile_body', 'my message 3').should('not.exist');
147+
148+
// Press Ctrl+Enter
149+
cy.get('div[contenteditable=true]').type('{ctrl+enter}');
150+
// It was sent
151+
cy.contains('.mx_EventTile_body', 'my message 3');
152+
});
153+
});
154+
});
155+
});

cypress/e2e/create-room/create-room.spec.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,11 @@ describe("Create Room", () => {
5454
// Fill room address
5555
cy.get('[label="Room address"]').type("test-room-1");
5656
// Submit
57-
cy.startMeasuring("from-submit-to-room");
5857
cy.get(".mx_Dialog_primary").click();
5958
});
6059

6160
cy.url().should("contain", "/#/room/#test-room-1:localhost");
62-
cy.stopMeasuring("from-submit-to-room");
63-
cy.get(".mx_RoomHeader_nametext").contains(name);
64-
cy.get(".mx_RoomHeader_topic").contains(topic);
61+
cy.contains(".mx_RoomHeader_nametext", name);
62+
cy.contains(".mx_RoomHeader_topic", topic);
6563
});
6664
});

cypress/e2e/editing/editing.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ describe("Editing", () => {
6262
cy.get(".mx_BasicMessageComposer_input").type("Foo{backspace}{backspace}{backspace}{enter}");
6363
cy.checkA11y();
6464
});
65-
cy.get(".mx_RoomView_body .mx_EventTile").contains(".mx_EventTile[data-scroll-tokens]", "Message");
65+
cy.contains(".mx_RoomView_body .mx_EventTile[data-scroll-tokens]", "Message");
6666

6767
// Assert that the edit composer has gone away
6868
cy.get(".mx_EditMessageComposer").should("not.exist");

cypress/e2e/login/consent.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ describe("Consent", () => {
4646

4747
// Accept terms & conditions
4848
cy.get(".mx_QuestionDialog").within(() => {
49-
cy.get("#mx_BaseDialog_title").contains("Terms and Conditions");
49+
cy.contains("#mx_BaseDialog_title", "Terms and Conditions");
5050
cy.get(".mx_Dialog_primary").click();
5151
});
5252

@@ -58,7 +58,7 @@ describe("Consent", () => {
5858
cy.visit(url);
5959

6060
cy.get('[type="submit"]').click();
61-
cy.get("p").contains("Danke schon");
61+
cy.contains("p", "Danke schon");
6262
});
6363
});
6464

cypress/e2e/login/login.spec.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,6 @@ import { SynapseInstance } from "../../plugins/synapsedocker";
2121
describe("Login", () => {
2222
let synapse: SynapseInstance;
2323

24-
beforeEach(() => {
25-
cy.visit("/#/login");
26-
cy.startSynapse("consent").then(data => {
27-
synapse = data;
28-
});
29-
});
30-
3124
afterEach(() => {
3225
cy.stopSynapse(synapse);
3326
});
@@ -37,7 +30,11 @@ describe("Login", () => {
3730
const password = "p4s5W0rD";
3831

3932
beforeEach(() => {
40-
cy.registerUser(synapse, username, password);
33+
cy.startSynapse("consent").then(data => {
34+
synapse = data;
35+
cy.registerUser(synapse, username, password);
36+
cy.visit("/#/login");
37+
});
4138
});
4239

4340
it("logs in with an existing account and lands on the home screen", () => {
@@ -55,24 +52,25 @@ describe("Login", () => {
5552

5653
cy.get("#mx_LoginForm_username").type(username);
5754
cy.get("#mx_LoginForm_password").type(password);
58-
cy.startMeasuring("from-submit-to-home");
5955
cy.get(".mx_Login_submit").click();
6056

6157
cy.url().should('contain', '/#/home', { timeout: 30000 });
62-
cy.stopMeasuring("from-submit-to-home");
6358
});
6459
});
6560

6661
describe("logout", () => {
6762
beforeEach(() => {
68-
cy.initTestUser(synapse, "Erin");
63+
cy.startSynapse("consent").then(data => {
64+
synapse = data;
65+
cy.initTestUser(synapse, "Erin");
66+
});
6967
});
7068

7169
it("should go to login page on logout", () => {
7270
cy.get('[aria-label="User menu"]').click();
7371

7472
// give a change for the outstanding requests queue to settle before logging out
75-
cy.wait(500);
73+
cy.wait(2000);
7674

7775
cy.get(".mx_UserMenu_contextMenu").within(() => {
7876
cy.get(".mx_UserMenu_iconSignOut").click();
@@ -94,7 +92,7 @@ describe("Login", () => {
9492
cy.get('[aria-label="User menu"]').click();
9593

9694
// give a change for the outstanding requests queue to settle before logging out
97-
cy.wait(500);
95+
cy.wait(2000);
9896

9997
cy.get(".mx_UserMenu_contextMenu").within(() => {
10098
cy.get(".mx_UserMenu_iconSignOut").click();

0 commit comments

Comments
 (0)