diff --git a/.env.example b/.env.example
new file mode 100644
index 00000000000..80fe62906d0
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,15 @@
+# To enable CSS hot-reload, set the following variable to 1.
+CSS_HOT_RELOAD=1
+# To use the annoying and inconsistent full page error dialog, set this to 1.
+FULL_PAGE_ERRORS=0
+# To use a single theme, uncomment the line with the theme you want to hot-reload.
+MATRIX_THEMES='light'
+#MATRIX_THEMES='dark'
+#MATRIX_THEMES='legacy-light'
+#MATRIX_THEMES='legacy-dark'
+#MATRIX_THEMES='light-custom'
+#MATRIX_THEMES='dark-custom'
+# You can also enable multiple themes by using a comma-separated list.
+# When multiple themes are enabled, switching between them may require a full page reload.
+# Note that compilation times are proportional to the number of enabled themes.
+#MATRIX_THEMES='light,dark'
diff --git a/.eslintrc.js b/.eslintrc.js
index 4009da4a18f..b59ea416ad7 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,23 +1,30 @@
module.exports = {
- "extends": ["matrix-org", "matrix-org/react"],
- "env": {
- "browser": true,
- "node": true,
+ plugins: ["matrix-org"],
+ extends: [
+ "plugin:matrix-org/babel",
+ "plugin:matrix-org/react",
+ ],
+ env: {
+ browser: true,
+ node: true,
},
- "rules": {
+ rules: {
+ // Things we do that break the ideal style
"quotes": "off",
},
- "overrides": [{
- "files": ["src/**/*.{ts,tsx}"],
- "extends": ["matrix-org/ts", "matrix-org/react"],
- "env": {
- "browser": true,
- },
- "rules": {
+ overrides: [{
+ files: ["src/**/*.{ts,tsx}"],
+ extends: [
+ "plugin:matrix-org/typescript",
+ "plugin:matrix-org/react",
+ ],
+ rules: {
+ // Things we do that break the ideal style
+ "prefer-promise-reject-errors": "off",
"quotes": "off",
- // While converting to ts we allow this
+
+ // We disable this while we're transitioning
"@typescript-eslint/no-explicit-any": "off",
- "prefer-promise-reject-errors": "off",
},
}],
};
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 00000000000..558f9e0059a
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @vector-im/element-web
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index c673a89cb85..00000000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-### Description
-
-Describe here the problem that you are experiencing, or the feature you are requesting.
-
-### Steps to reproduce
-
-- For bugs, list the steps
-- that reproduce the bug
-- using hyphens as bullet points
-
-Describe how what happens differs from what you expected.
-
-Log: sent/not sent?
-
-
-
-### Version information
-
-
-
-- **Platform**: web (in-browser) or desktop?
-
-For the web app:
-
-- **Browser**: Chrome, Firefox, Safari, Edge? which version?
-- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc?
-- **URL**: develop.element.io / app.element.io / somewhere else? If a private server, what version of Element Web?
-
-For the desktop app:
-
-- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc?
-- **Version**: 1.x.y
diff --git a/.github/ISSUE_TEMPLATE/bug-desktop.yml b/.github/ISSUE_TEMPLATE/bug-desktop.yml
new file mode 100644
index 00000000000..ffc3817c7b3
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-desktop.yml
@@ -0,0 +1,75 @@
+name: Bug report for the Element desktop app (not in a browser)
+description: File a bug report if you are using the desktop Element application.
+labels: [T-Defect]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for taking the time to fill out this bug report!
+
+ Please report security issues by email to security@matrix.org
+ - type: textarea
+ id: reproduction-steps
+ attributes:
+ label: Steps to reproduce
+ description: Please attach screenshots, videos or logs if you can.
+ placeholder: Tell us what you see!
+ value: |
+ 1. Where are you starting? What can you see?
+ 2. What do you click?
+ 3. More steps…
+ validations:
+ required: true
+ - type: textarea
+ id: result
+ attributes:
+ label: What happened?
+ placeholder: Tell us what went wrong
+ value: |
+ ### What did you expect?
+
+ ### What happened?
+ validations:
+ required: true
+ - type: input
+ id: os
+ attributes:
+ label: Operating system
+ placeholder: Windows, macOS, Ubuntu, Arch Linux…
+ validations:
+ required: false
+ - type: input
+ id: version
+ attributes:
+ label: Application version
+ description: You can find the version information in Settings -> Help & About.
+ placeholder: e.g. Element version 1.7.34, olm version 3.2.3
+ validations:
+ required: false
+ - type: input
+ id: source
+ attributes:
+ label: How did you install the app?
+ description: Where did you install the app from? Please give a link or a description.
+ placeholder: e.g. From https://element.io/get-started
+ validations:
+ required: false
+ - type: input
+ id: homeserver
+ attributes:
+ label: Homeserver
+ description: Which server is your account registered on?
+ placeholder: e.g. matrix.org
+ validations:
+ required: false
+ - type: dropdown
+ id: rageshake
+ attributes:
+ label: Have you submitted a rageshake?
+ description: |
+ Did you know that you can send a /rageshake command from your application to submit logs for this issue? Trigger the defect, then type /rageshake into the message entry area followed by a description of the problem and send the command. This will automatically submit anonymous logs to the developers.
+ options:
+ - 'Yes'
+ - 'No'
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/bug-web.yml b/.github/ISSUE_TEMPLATE/bug-web.yml
new file mode 100644
index 00000000000..6219d40f276
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-web.yml
@@ -0,0 +1,75 @@
+name: Bug report for Element Web (in browser)
+description: File a bug report if you are using Element in a web browser like Firefox, Chrome, Edge, and so on.
+labels: [T-Defect]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for taking the time to fill out this bug report!
+
+ Please report security issues by email to security@matrix.org
+ - type: textarea
+ id: reproduction-steps
+ attributes:
+ label: Steps to reproduce
+ description: Please attach screenshots, videos or logs if you can.
+ placeholder: Tell us what you see!
+ value: |
+ 1. Where are you starting? What can you see?
+ 2. What do you click?
+ 3. More steps…
+ validations:
+ required: true
+ - type: textarea
+ id: result
+ attributes:
+ label: What happened?
+ placeholder: Tell us what went wrong
+ value: |
+ ### What did you expect?
+
+ ### What happened?
+ validations:
+ required: true
+ - type: input
+ id: os
+ attributes:
+ label: Operating system
+ placeholder: Windows, macOS, Ubuntu, Arch Linux…
+ validations:
+ required: false
+ - type: input
+ id: browser
+ attributes:
+ label: Browser information
+ description: Which browser are you using? Which version?
+ placeholder: e.g. Chromium Version 92.0.4515.131
+ validations:
+ required: false
+ - type: input
+ id: webapp-url
+ attributes:
+ label: URL for webapp
+ description: Which URL are you using to access the webapp? If a private server, tell us what version of Element Web you are using.
+ placeholder: e.g. develop.element.io, app.element.io
+ validations:
+ required: false
+ - type: input
+ id: homeserver
+ attributes:
+ label: Homeserver
+ description: Which server is your account registered on?
+ placeholder: e.g. matrix.org
+ validations:
+ required: false
+ - type: dropdown
+ id: rageshake
+ attributes:
+ label: Have you submitted a rageshake?
+ description: |
+ Did you know that you can send a /rageshake command from the web applicaiton to submit logs for this issue? Trigger the defect, then type /rageshake into the message entry area followed by a description of the problem and send the command. This will automatically submit anonymous logs to the developers.
+ options:
+ - 'Yes'
+ - 'No'
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 7bd12f6ddf0..00000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: T-Defect
-assignees: ''
-
----
-
-
-
-
-
-
-
-### Description
-
-Describe here the problem that you are experiencing, or the feature you are requesting.
-
-### Steps to reproduce
-
-- For bugs, list the steps
-- that reproduce the bug
-- using hyphens as bullet points
-
-Describe how what happens differs from what you expected.
-
-
-Logs being sent: yes/no
-
-
-
-### Version information
-
-
-
-- **Platform**: web (in-browser) or desktop?
-
-For the web app:
-
-- **Browser**: Chrome, Firefox, Safari, Edge? which version?
-- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc?
-- **URL**: develop.element.io / app.element.io / somewhere else? If a private server, what version of Element Web?
-
-For the desktop app:
-
-- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc?
-- **Version**: 1.x.y
diff --git a/.github/ISSUE_TEMPLATE/enhancement.yml b/.github/ISSUE_TEMPLATE/enhancement.yml
new file mode 100644
index 00000000000..5d9cfb3c885
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/enhancement.yml
@@ -0,0 +1,36 @@
+name: Enhancement request
+description: Do you have a suggestion or feature request?
+labels: [T-Enhancement]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thank you for taking the time to propose a new feature or make a suggestion.
+ - type: textarea
+ id: usecase
+ attributes:
+ label: Your use case
+ description: What would you like to be able to do? Please feel welcome to include screenshots or mock ups.
+ placeholder: Tell us what you would like to do!
+ value: |
+ #### What would you like to do?
+
+ #### Why would you like to do it?
+
+ #### How would you like to achieve it?
+ validations:
+ required: true
+ - type: textarea
+ id: alternative
+ attributes:
+ label: Have you considered any alternatives?
+ placeholder: A clear and concise description of any alternative solutions or features you've considered.
+ validations:
+ required: false
+ - type: textarea
+ id: additional-context
+ attributes:
+ label: Additional context
+ placeholder: Is there anything else you'd like to add?
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/suggestion-or-feature-request.md b/.github/ISSUE_TEMPLATE/suggestion-or-feature-request.md
deleted file mode 100644
index ffa31c6cf19..00000000000
--- a/.github/ISSUE_TEMPLATE/suggestion-or-feature-request.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: Suggestion or Feature request
-about: Suggest an idea for this project
-title: ''
-labels: T-Enhancement
-assignees: ''
-
----
-
-#### Is your suggestion related to a problem? Please describe.
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-#### Describe the solution you'd like.
-A clear and concise description of what you want to happen.
-
-#### Describe alternatives you've considered.
-A clear and concise description of any alternative solutions or features you've considered.
-
-#### Additional context
-Add any other context or screenshots about the feature request here.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index ffa42430e66..f1d5476c5d1 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,3 +1,11 @@
-
+
-
+
+
+
diff --git a/.github/workflows/issues_to_projects.yaml b/.github/workflows/issues_to_projects.yaml
new file mode 100644
index 00000000000..5c627a93173
--- /dev/null
+++ b/.github/workflows/issues_to_projects.yaml
@@ -0,0 +1,36 @@
+on:
+ issues:
+ types: [labeled]
+jobs:
+ move_priority_design_issues:
+ name: Move priority X-Needs-Design issues to Design project board
+ runs-on: ubuntu-latest
+ if: >
+ contains(github.event.issue.labels.*.name, 'X-Needs-Design') &&
+ (contains(github.event.issue.labels.*.name, 'O-Frequent') ||
+ contains(github.event.issue.labels.*.name, 'O-Intermediate')) &&
+ (contains(github.event.issue.labels.*.name, 'S-Critical') ||
+ contains(github.event.issue.labels.*.name, 'S-Major') ||
+ contains(github.event.issue.labels.*.name, 'S-Minor'))
+ steps:
+ - uses: konradpabjan/move-labeled-or-milestoned-issue@v2.0
+ with:
+ action-token: "${{ secrets.ELEMENT_BOT_TOKEN }}"
+ project-url: "https://github.com/orgs/vector-im/projects/14"
+ column-name: "📥 Inbox"
+ label-name: "X-Needs-Design"
+
+ move_spaces_issues:
+ name: Move Spaces issues to Delight project board
+ runs-on: ubuntu-latest
+ if: >
+ contains(github.event.issue.labels.*.name, 'A-Spaces') ||
+ contains(github.event.issue.labels.*.name, 'A-Space-Settings') ||
+ contains(github.event.issue.labels.*.name, 'A-Subspaces')
+ steps:
+ - uses: konradpabjan/move-labeled-or-milestoned-issue@v2.0
+ with:
+ action-token: "${{ secrets.ELEMENT_BOT_TOKEN }}"
+ project-url: "https://github.com/orgs/vector-im/projects/6"
+ column-name: "📥 Inbox"
+ label-name: "A-Spaces"
diff --git a/.github/workflows/preview_changelog.yaml b/.github/workflows/preview_changelog.yaml
new file mode 100644
index 00000000000..d68d19361da
--- /dev/null
+++ b/.github/workflows/preview_changelog.yaml
@@ -0,0 +1,12 @@
+name: Preview Changelog
+on:
+ pull_request_target:
+ types: [ opened, edited, labeled ]
+jobs:
+ changelog:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Preview Changelog
+ uses: matrix-org/allchange@main
+ with:
+ ghToken: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/triage-incoming.yml b/.github/workflows/triage-incoming.yml
new file mode 100644
index 00000000000..5a9ce877278
--- /dev/null
+++ b/.github/workflows/triage-incoming.yml
@@ -0,0 +1,15 @@
+name: Move new issues into Issue triage board
+
+on:
+ issues:
+ types: [opened]
+
+jobs:
+ automate-project-columns:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: alex-page/github-project-automation-plus@v0.8.1
+ with:
+ project: Issue triage
+ column: Incoming
+ repo-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
diff --git a/.github/workflows/triage-needs-info.yml b/.github/workflows/triage-needs-info.yml
new file mode 100644
index 00000000000..d43b2a503d5
--- /dev/null
+++ b/.github/workflows/triage-needs-info.yml
@@ -0,0 +1,16 @@
+name: Move X-Needs-Info into Need info column in the Issue triage board
+
+on:
+ issues:
+ types: [labeled]
+
+jobs:
+ Move_Labeled_Issue_On_Project_Board:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: konradpabjan/move-labeled-or-milestoned-issue@v2.0
+ with:
+ action-token: ${{ secrets.GITHUB_TOKEN }}
+ project-url: "https://github.com/vector-im/element-web/projects/27"
+ column-name: "Need info"
+ label-name: "X-Needs-Info"
diff --git a/.github/workflows/triage-priority-bugs.yml b/.github/workflows/triage-priority-bugs.yml
new file mode 100644
index 00000000000..2bda29cfb27
--- /dev/null
+++ b/.github/workflows/triage-priority-bugs.yml
@@ -0,0 +1,25 @@
+name: Move labelled issues into the Priority bugs column for the Web App Team
+
+on:
+ issues:
+ types: [labeled]
+
+jobs:
+ Move_high_priority_issues_to_team_workboard:
+ runs-on: ubuntu-latest
+ if: >
+ contains(github.event.issue.labels.*.name, 'T-Defect') &&
+ contains(github.event.issue.labels.*.name, 'S-Critical') &&
+ (contains(github.event.issue.labels.*.name, 'O-Frequent') ||
+ contains(github.event.issue.labels.*.name, 'O-Intermediate')) ||
+ contains(github.event.issue.labels.*.name, 'S-Major') &&
+ contains(github.event.issue.labels.*.name, 'O-Frequent') ||
+ contains(github.event.issue.labels.*.name, 'A11y') &&
+ contains(github.event.issue.labels.*.name, 'O-Frequent')
+ steps:
+ - uses: alex-page/github-project-automation-plus@v0.8.1
+ with:
+ project: Web App Team
+ column: P1
+ repo-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
+
diff --git a/.gitignore b/.gitignore
index c7f99f69259..52152e1a114 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,6 @@ electron/pub
/src/component-index.js
/.tmp
/webpack-stats.json
+.vscode
+.vscode/
+.env
diff --git a/.modernizr.json b/.modernizr.json
index e6fde5a968a..fcfd7124f31 100644
--- a/.modernizr.json
+++ b/.modernizr.json
@@ -1,9 +1,6 @@
{
"minify": true,
- "classPrefix": "modernizr_",
- "options": [
- "setClasses"
- ],
+ "enableClasses": false,
"feature-detects": [
"test/css/animations",
"test/css/displaytable",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8a8a0c2ea80..59cb20b2c9d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,526 @@
+Changes in [1.8.5](https://github.com/vector-im/element-desktop/releases/tag/v1.8.5) (2021-09-14)
+=================================================================================================
+
+## ✨ Features
+ * Add bubble highlight styling ([\#6582](https://github.com/matrix-org/matrix-react-sdk/pull/6582)). Fixes #18295 and #18295. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Create narrow mode for Composer ([\#6682](https://github.com/matrix-org/matrix-react-sdk/pull/6682)). Fixes #18533 and #18533.
+ * Prefer matrix.to alias links over room id in spaces & share ([\#6745](https://github.com/matrix-org/matrix-react-sdk/pull/6745)). Fixes #18796 and #18796.
+ * Stop automatic playback of voice messages if a non-voice message is encountered ([\#6728](https://github.com/matrix-org/matrix-react-sdk/pull/6728)). Fixes #18850 and #18850.
+ * Show call length during a call ([\#6700](https://github.com/matrix-org/matrix-react-sdk/pull/6700)). Fixes #18566 and #18566. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Serialize and retry mass-leave when leaving space ([\#6737](https://github.com/matrix-org/matrix-react-sdk/pull/6737)). Fixes #18789 and #18789.
+ * Improve form handling in and around space creation ([\#6739](https://github.com/matrix-org/matrix-react-sdk/pull/6739)). Fixes #18775 and #18775.
+ * Split autoplay GIFs and videos into different settings ([\#6726](https://github.com/matrix-org/matrix-react-sdk/pull/6726)). Fixes #5771 and #5771. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Add autoplay for voice messages ([\#6710](https://github.com/matrix-org/matrix-react-sdk/pull/6710)). Fixes #18804, #18715, #18714 #17961 and #18804.
+ * Allow to use basic html to format invite messages ([\#6703](https://github.com/matrix-org/matrix-react-sdk/pull/6703)). Fixes #15738 and #15738. Contributed by [skolmer](https://github.com/skolmer).
+ * Allow widgets, when eligible, to interact with more rooms as per MSC2762 ([\#6684](https://github.com/matrix-org/matrix-react-sdk/pull/6684)).
+ * Remove arbitrary limits from send/receive events for widgets ([\#6719](https://github.com/matrix-org/matrix-react-sdk/pull/6719)). Fixes #17994 and #17994.
+ * Reload suggested rooms if we see the state change down /sync ([\#6715](https://github.com/matrix-org/matrix-react-sdk/pull/6715)). Fixes #18761 and #18761.
+ * When creating private spaces, make the initial rooms restricted if supported ([\#6721](https://github.com/matrix-org/matrix-react-sdk/pull/6721)). Fixes #18722 and #18722.
+ * Threading exploration work ([\#6658](https://github.com/matrix-org/matrix-react-sdk/pull/6658)). Fixes #18532 and #18532.
+ * Default to `Don't leave any` when leaving a space ([\#6697](https://github.com/matrix-org/matrix-react-sdk/pull/6697)). Fixes #18592 and #18592. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Special case redaction event sending from widgets per MSC2762 ([\#6686](https://github.com/matrix-org/matrix-react-sdk/pull/6686)). Fixes #18573 and #18573.
+ * Add active speaker indicators ([\#6639](https://github.com/matrix-org/matrix-react-sdk/pull/6639)). Fixes #17627 and #17627. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Increase general app performance by optimizing layers ([\#6644](https://github.com/matrix-org/matrix-react-sdk/pull/6644)). Fixes #18730 and #18730. Contributed by [Palid](https://github.com/Palid).
+
+## 🐛 Bug Fixes
+ * Fix autocomplete not having y-scroll ([\#6802](https://github.com/matrix-org/matrix-react-sdk/pull/6802)).
+ * Fix emoji picker and stickerpicker not appearing correctly when opened ([\#6801](https://github.com/matrix-org/matrix-react-sdk/pull/6801)).
+ * Debounce read marker update on scroll ([\#6774](https://github.com/matrix-org/matrix-react-sdk/pull/6774)).
+ * Fix Space creation wizard go to my first room button behaviour ([\#6748](https://github.com/matrix-org/matrix-react-sdk/pull/6748)). Fixes #18764 and #18764.
+ * Fix scroll being stuck at bottom ([\#6751](https://github.com/matrix-org/matrix-react-sdk/pull/6751)). Fixes #18903 and #18903.
+ * Fix widgets not remembering identity verification when asked to. ([\#6742](https://github.com/matrix-org/matrix-react-sdk/pull/6742)). Fixes #15631 and #15631.
+ * Add missing pluralisation i18n strings for Spaces ([\#6738](https://github.com/matrix-org/matrix-react-sdk/pull/6738)). Fixes #18780 and #18780.
+ * Make ForgotPassword UX slightly more user friendly ([\#6636](https://github.com/matrix-org/matrix-react-sdk/pull/6636)). Fixes #11531 and #11531. Contributed by [Palid](https://github.com/Palid).
+ * Don't context switch room on SpaceStore ready as it can break permalinks ([\#6730](https://github.com/matrix-org/matrix-react-sdk/pull/6730)). Fixes #17974 and #17974.
+ * Fix explore rooms button not working during space creation wizard ([\#6729](https://github.com/matrix-org/matrix-react-sdk/pull/6729)). Fixes #18762 and #18762.
+ * Fix bug where one party's media would sometimes not be shown ([\#6731](https://github.com/matrix-org/matrix-react-sdk/pull/6731)).
+ * Only make the initial space rooms suggested by default ([\#6714](https://github.com/matrix-org/matrix-react-sdk/pull/6714)). Fixes #18760 and #18760.
+ * Replace fake username in EventTilePreview with a proper loading state ([\#6702](https://github.com/matrix-org/matrix-react-sdk/pull/6702)). Fixes #15897 and #15897. Contributed by [skolmer](https://github.com/skolmer).
+ * Don't send prehistorical events to widgets during decryption at startup ([\#6695](https://github.com/matrix-org/matrix-react-sdk/pull/6695)). Fixes #18060 and #18060.
+ * When creating subspaces properly set restricted join rule ([\#6725](https://github.com/matrix-org/matrix-react-sdk/pull/6725)). Fixes #18797 and #18797.
+ * Fix the Image View not openning for some pinned messages ([\#6723](https://github.com/matrix-org/matrix-react-sdk/pull/6723)). Fixes #18422 and #18422. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Show autocomplete sections vertically ([\#6722](https://github.com/matrix-org/matrix-react-sdk/pull/6722)). Fixes #18860 and #18860. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix EmojiPicker filtering to lower case emojibase data strings ([\#6717](https://github.com/matrix-org/matrix-react-sdk/pull/6717)). Fixes #18686 and #18686.
+ * Clear currentRoomId when viewing home page, fixing document title ([\#6716](https://github.com/matrix-org/matrix-react-sdk/pull/6716)). Fixes #18668 and #18668.
+ * Fix membership updates to Spaces not applying in real-time ([\#6713](https://github.com/matrix-org/matrix-react-sdk/pull/6713)). Fixes #18737 and #18737.
+ * Don't show a double stacked invite modals when inviting to Spaces ([\#6698](https://github.com/matrix-org/matrix-react-sdk/pull/6698)). Fixes #18745 and #18745. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Remove non-functional DuckDuckGo Autocomplete Provider ([\#6712](https://github.com/matrix-org/matrix-react-sdk/pull/6712)). Fixes #18778 and #18778.
+ * Filter members on `MemberList` load ([\#6708](https://github.com/matrix-org/matrix-react-sdk/pull/6708)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix improper voice messages being produced in Firefox and sometimes other browsers. ([\#6696](https://github.com/matrix-org/matrix-react-sdk/pull/6696)). Fixes #18587 and #18587.
+ * Fix client forgetting which capabilities a widget was approved for ([\#6685](https://github.com/matrix-org/matrix-react-sdk/pull/6685)). Fixes #18786 and #18786.
+ * Fix left panel widgets not remembering collapsed state ([\#6687](https://github.com/matrix-org/matrix-react-sdk/pull/6687)). Fixes #17803 and #17803.
+ * Fix changelog link colour back to blue ([\#6692](https://github.com/matrix-org/matrix-react-sdk/pull/6692)). Fixes #18726 and #18726.
+ * Soften codeblock border color ([\#6564](https://github.com/matrix-org/matrix-react-sdk/pull/6564)). Fixes #18367 and #18367. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Pause ringing more aggressively ([\#6691](https://github.com/matrix-org/matrix-react-sdk/pull/6691)). Fixes #18588 and #18588. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix command autocomplete ([\#6680](https://github.com/matrix-org/matrix-react-sdk/pull/6680)). Fixes #18670 and #18670. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Don't re-sort the room-list based on profile/status changes ([\#6595](https://github.com/matrix-org/matrix-react-sdk/pull/6595)). Fixes #110 and #110. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix codeblock formatting with syntax highlighting on ([\#6681](https://github.com/matrix-org/matrix-react-sdk/pull/6681)). Fixes #18739 #18365 and #18739. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Add padding to the Add button in the notification settings ([\#6665](https://github.com/matrix-org/matrix-react-sdk/pull/6665)). Fixes #18706 and #18706. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+
+Changes in [1.8.3-rc.2](https://github.com/vector-im/element-desktop/releases/tag/v1.8.3-rc.2) (2021-09-09)
+===========================================================================================================
+
+## 🐛 Bug Fixes
+ * Debounce read marker update on scroll ([\#6774](https://github.com/matrix-org/matrix-react-sdk/pull/6774)).
+
+Changes in [1.8.3-rc.1](https://github.com/vector-im/element-desktop/releases/tag/v1.8.3-rc.1) (2021-09-07)
+===========================================================================================================
+
+## ✨ Features
+ * Create narrow mode for Composer ([\#6682](https://github.com/matrix-org/matrix-react-sdk/pull/6682)). Fixes #18533 and #18533.
+ * Prefer matrix.to alias links over room id in spaces & share ([\#6745](https://github.com/matrix-org/matrix-react-sdk/pull/6745)). Fixes #18796 and #18796.
+ * Add bubble highlight styling ([\#6582](https://github.com/matrix-org/matrix-react-sdk/pull/6582)). Fixes #18295 and #18295. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Stop automatic playback of voice messages if a non-voice message is encountered ([\#6728](https://github.com/matrix-org/matrix-react-sdk/pull/6728)). Fixes #18850 and #18850.
+ * Show call length during a call ([\#6700](https://github.com/matrix-org/matrix-react-sdk/pull/6700)). Fixes #18566 and #18566. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Serialize and retry mass-leave when leaving space ([\#6737](https://github.com/matrix-org/matrix-react-sdk/pull/6737)). Fixes #18789 and #18789.
+ * Improve form handling in and around space creation ([\#6739](https://github.com/matrix-org/matrix-react-sdk/pull/6739)). Fixes #18775 and #18775.
+ * Split autoplay GIFs and videos into different settings ([\#6726](https://github.com/matrix-org/matrix-react-sdk/pull/6726)). Fixes #5771 and #5771. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Add autoplay for voice messages ([\#6710](https://github.com/matrix-org/matrix-react-sdk/pull/6710)). Fixes #18804, #18715, #18714 #17961 and #18804.
+ * Allow to use basic html to format invite messages ([\#6703](https://github.com/matrix-org/matrix-react-sdk/pull/6703)). Fixes #15738 and #15738. Contributed by [skolmer](https://github.com/skolmer).
+ * Allow widgets, when eligible, to interact with more rooms as per MSC2762 ([\#6684](https://github.com/matrix-org/matrix-react-sdk/pull/6684)).
+ * Remove arbitrary limits from send/receive events for widgets ([\#6719](https://github.com/matrix-org/matrix-react-sdk/pull/6719)). Fixes #17994 and #17994.
+ * Reload suggested rooms if we see the state change down /sync ([\#6715](https://github.com/matrix-org/matrix-react-sdk/pull/6715)). Fixes #18761 and #18761.
+ * When creating private spaces, make the initial rooms restricted if supported ([\#6721](https://github.com/matrix-org/matrix-react-sdk/pull/6721)). Fixes #18722 and #18722.
+ * Threading exploration work ([\#6658](https://github.com/matrix-org/matrix-react-sdk/pull/6658)). Fixes #18532 and #18532.
+ * Default to `Don't leave any` when leaving a space ([\#6697](https://github.com/matrix-org/matrix-react-sdk/pull/6697)). Fixes #18592 and #18592. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Special case redaction event sending from widgets per MSC2762 ([\#6686](https://github.com/matrix-org/matrix-react-sdk/pull/6686)). Fixes #18573 and #18573.
+ * Add active speaker indicators ([\#6639](https://github.com/matrix-org/matrix-react-sdk/pull/6639)). Fixes #17627 and #17627. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Increase general app performance by optimizing layers ([\#6644](https://github.com/matrix-org/matrix-react-sdk/pull/6644)). Fixes #18730 and #18730. Contributed by [Palid](https://github.com/Palid).
+
+## 🐛 Bug Fixes
+ * Fix Space creation wizard go to my first room button behaviour ([\#6748](https://github.com/matrix-org/matrix-react-sdk/pull/6748)). Fixes #18764 and #18764.
+ * Fix scroll being stuck at bottom ([\#6751](https://github.com/matrix-org/matrix-react-sdk/pull/6751)). Fixes #18903 and #18903.
+ * Fix widgets not remembering identity verification when asked to. ([\#6742](https://github.com/matrix-org/matrix-react-sdk/pull/6742)). Fixes #15631 and #15631.
+ * Add missing pluralisation i18n strings for Spaces ([\#6738](https://github.com/matrix-org/matrix-react-sdk/pull/6738)). Fixes #18780 and #18780.
+ * Make ForgotPassword UX slightly more user friendly ([\#6636](https://github.com/matrix-org/matrix-react-sdk/pull/6636)). Fixes #11531 and #11531. Contributed by [Palid](https://github.com/Palid).
+ * Don't context switch room on SpaceStore ready as it can break permalinks ([\#6730](https://github.com/matrix-org/matrix-react-sdk/pull/6730)). Fixes #17974 and #17974.
+ * Fix explore rooms button not working during space creation wizard ([\#6729](https://github.com/matrix-org/matrix-react-sdk/pull/6729)). Fixes #18762 and #18762.
+ * Fix bug where one party's media would sometimes not be shown ([\#6731](https://github.com/matrix-org/matrix-react-sdk/pull/6731)).
+ * Only make the initial space rooms suggested by default ([\#6714](https://github.com/matrix-org/matrix-react-sdk/pull/6714)). Fixes #18760 and #18760.
+ * Replace fake username in EventTilePreview with a proper loading state ([\#6702](https://github.com/matrix-org/matrix-react-sdk/pull/6702)). Fixes #15897 and #15897. Contributed by [skolmer](https://github.com/skolmer).
+ * Don't send prehistorical events to widgets during decryption at startup ([\#6695](https://github.com/matrix-org/matrix-react-sdk/pull/6695)). Fixes #18060 and #18060.
+ * When creating subspaces properly set restricted join rule ([\#6725](https://github.com/matrix-org/matrix-react-sdk/pull/6725)). Fixes #18797 and #18797.
+ * Fix the Image View not openning for some pinned messages ([\#6723](https://github.com/matrix-org/matrix-react-sdk/pull/6723)). Fixes #18422 and #18422. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Show autocomplete sections vertically ([\#6722](https://github.com/matrix-org/matrix-react-sdk/pull/6722)). Fixes #18860 and #18860. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix EmojiPicker filtering to lower case emojibase data strings ([\#6717](https://github.com/matrix-org/matrix-react-sdk/pull/6717)). Fixes #18686 and #18686.
+ * Clear currentRoomId when viewing home page, fixing document title ([\#6716](https://github.com/matrix-org/matrix-react-sdk/pull/6716)). Fixes #18668 and #18668.
+ * Fix membership updates to Spaces not applying in real-time ([\#6713](https://github.com/matrix-org/matrix-react-sdk/pull/6713)). Fixes #18737 and #18737.
+ * Don't show a double stacked invite modals when inviting to Spaces ([\#6698](https://github.com/matrix-org/matrix-react-sdk/pull/6698)). Fixes #18745 and #18745. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Remove non-functional DuckDuckGo Autocomplete Provider ([\#6712](https://github.com/matrix-org/matrix-react-sdk/pull/6712)). Fixes #18778 and #18778.
+ * Filter members on `MemberList` load ([\#6708](https://github.com/matrix-org/matrix-react-sdk/pull/6708)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix improper voice messages being produced in Firefox and sometimes other browsers. ([\#6696](https://github.com/matrix-org/matrix-react-sdk/pull/6696)). Fixes #18587 and #18587.
+ * Fix client forgetting which capabilities a widget was approved for ([\#6685](https://github.com/matrix-org/matrix-react-sdk/pull/6685)). Fixes #18786 and #18786.
+ * Fix left panel widgets not remembering collapsed state ([\#6687](https://github.com/matrix-org/matrix-react-sdk/pull/6687)). Fixes #17803 and #17803.
+ * Fix changelog link colour back to blue ([\#6692](https://github.com/matrix-org/matrix-react-sdk/pull/6692)). Fixes #18726 and #18726.
+ * Soften codeblock border color ([\#6564](https://github.com/matrix-org/matrix-react-sdk/pull/6564)). Fixes #18367 and #18367. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Pause ringing more aggressively ([\#6691](https://github.com/matrix-org/matrix-react-sdk/pull/6691)). Fixes #18588 and #18588. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix command autocomplete ([\#6680](https://github.com/matrix-org/matrix-react-sdk/pull/6680)). Fixes #18670 and #18670. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Don't re-sort the room-list based on profile/status changes ([\#6595](https://github.com/matrix-org/matrix-react-sdk/pull/6595)). Fixes #110 and #110. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix codeblock formatting with syntax highlighting on ([\#6681](https://github.com/matrix-org/matrix-react-sdk/pull/6681)). Fixes #18739 #18365 and #18739. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Add padding to the Add button in the notification settings ([\#6665](https://github.com/matrix-org/matrix-react-sdk/pull/6665)). Fixes #18706 and #18706. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+
+Changes in [1.8.2](https://github.com/vector-im/element-desktop/releases/tag/v1.8.2) (2021-08-31)
+=================================================================================================
+
+## ✨ Features
+ * Documentation for sentry config ([\#18608](https://github.com/vector-im/element-web/pull/18608)). Contributed by [novocaine](https://github.com/novocaine).
+ * [Release]Increase general app performance by optimizing layers ([\#6672](https://github.com/matrix-org/matrix-react-sdk/pull/6672)). Fixes #18730 and #18730. Contributed by [Palid](https://github.com/Palid).
+ * Add a warning on E2EE rooms if you try to make them public ([\#5698](https://github.com/matrix-org/matrix-react-sdk/pull/5698)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Allow pagination of the space hierarchy and use new APIs ([\#6507](https://github.com/matrix-org/matrix-react-sdk/pull/6507)). Fixes #18089 and #18427.
+ * Improve emoji in composer ([\#6650](https://github.com/matrix-org/matrix-react-sdk/pull/6650)). Fixes #18593 and #18593. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Allow playback of replied-to voice message ([\#6629](https://github.com/matrix-org/matrix-react-sdk/pull/6629)). Fixes #18599 and #18599. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Format autocomplete suggestions vertically ([\#6620](https://github.com/matrix-org/matrix-react-sdk/pull/6620)). Fixes #17574 and #17574. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Remember last `MemberList` search query per-room ([\#6640](https://github.com/matrix-org/matrix-react-sdk/pull/6640)). Fixes #18613 and #18613. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Sentry rageshakes ([\#6597](https://github.com/matrix-org/matrix-react-sdk/pull/6597)). Fixes #11111 and #11111. Contributed by [novocaine](https://github.com/novocaine).
+ * Autocomplete has been updated to match modern accessibility standards. Navigate via up/down arrows rather than Tab. Enter or Tab to confirm a suggestion. This should be familiar to Slack & Discord users. You can now use Tab to navigate around the application and do more without touching your mouse. No more accidentally sending half of people's names because the completion didn't fire on Enter! ([\#5659](https://github.com/matrix-org/matrix-react-sdk/pull/5659)). Fixes #4872, #11071, #17171, #15646 #4872 and #4872.
+ * Add new call tile states ([\#6610](https://github.com/matrix-org/matrix-react-sdk/pull/6610)). Fixes #18521 and #18521. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Left align call tiles ([\#6609](https://github.com/matrix-org/matrix-react-sdk/pull/6609)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Make loading encrypted images look snappier ([\#6590](https://github.com/matrix-org/matrix-react-sdk/pull/6590)). Fixes #17878 and #17862. Contributed by [Palid](https://github.com/Palid).
+ * Offer a way to create a space based on existing community ([\#6543](https://github.com/matrix-org/matrix-react-sdk/pull/6543)). Fixes #18092.
+ * Accessibility improvements in and around Spaces ([\#6569](https://github.com/matrix-org/matrix-react-sdk/pull/6569)). Fixes #18094 and #18094.
+
+## 🐛 Bug Fixes
+ * [Release] Fix commit edit history ([\#6690](https://github.com/matrix-org/matrix-react-sdk/pull/6690)). Fixes #18742 and #18742. Contributed by [Palid](https://github.com/Palid).
+ * Fix images not rendering when sent from other clients. ([\#6661](https://github.com/matrix-org/matrix-react-sdk/pull/6661)). Fixes #18702 and #18702.
+ * Fix autocomplete scrollbar and make the autocomplete a little smaller ([\#6655](https://github.com/matrix-org/matrix-react-sdk/pull/6655)). Fixes #18682 and #18682. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix replies on the bubble layout ([\#6451](https://github.com/matrix-org/matrix-react-sdk/pull/6451)). Fixes #18184. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Show "Enable encryption in settings" only when the user can do that ([\#6646](https://github.com/matrix-org/matrix-react-sdk/pull/6646)). Fixes #18646 and #18646. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix cross signing setup from settings screen ([\#6633](https://github.com/matrix-org/matrix-react-sdk/pull/6633)). Fixes #17761 and #17761.
+ * Fix call tiles on the bubble layout ([\#6647](https://github.com/matrix-org/matrix-react-sdk/pull/6647)). Fixes #18648 and #18648. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix error on accessing encrypted media without encryption keys ([\#6625](https://github.com/matrix-org/matrix-react-sdk/pull/6625)). Contributed by [Palid](https://github.com/Palid).
+ * Fix jitsi widget sometimes being permanently stuck in the bottom-right corner ([\#6632](https://github.com/matrix-org/matrix-react-sdk/pull/6632)). Fixes #17226 and #17226. Contributed by [Palid](https://github.com/Palid).
+ * Fix FilePanel pagination in E2EE rooms ([\#6630](https://github.com/matrix-org/matrix-react-sdk/pull/6630)). Fixes #18415 and #18415. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix call tile buttons ([\#6624](https://github.com/matrix-org/matrix-react-sdk/pull/6624)). Fixes #18565 and #18565. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix vertical call tile spacing issues ([\#6621](https://github.com/matrix-org/matrix-react-sdk/pull/6621)). Fixes #18558 and #18558. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix long display names in call tiles ([\#6618](https://github.com/matrix-org/matrix-react-sdk/pull/6618)). Fixes #18562 and #18562. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Avoid access token overflow ([\#6616](https://github.com/matrix-org/matrix-react-sdk/pull/6616)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Properly handle media errors ([\#6615](https://github.com/matrix-org/matrix-react-sdk/pull/6615)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix glare related regressions ([\#6614](https://github.com/matrix-org/matrix-react-sdk/pull/6614)). Fixes #18538 and #18538. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix long display names in call toasts ([\#6617](https://github.com/matrix-org/matrix-react-sdk/pull/6617)). Fixes #18557 and #18557. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix PiP of held calls ([\#6611](https://github.com/matrix-org/matrix-react-sdk/pull/6611)). Fixes #18539 and #18539. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix call tile behaviour on narrow layouts ([\#6556](https://github.com/matrix-org/matrix-react-sdk/pull/6556)). Fixes #18398. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix video call persisting when widget removed ([\#6608](https://github.com/matrix-org/matrix-react-sdk/pull/6608)). Fixes #15703 and #15703.
+ * Fix toast colors ([\#6606](https://github.com/matrix-org/matrix-react-sdk/pull/6606)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Remove tiny scrollbar dot from code blocks ([\#6596](https://github.com/matrix-org/matrix-react-sdk/pull/6596)). Fixes #18474. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Improve handling of pills in the composer ([\#6353](https://github.com/matrix-org/matrix-react-sdk/pull/6353)). Fixes #10134 #10896 and #15037. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+
+Changes in [1.8.1](https://github.com/vector-im/element-desktop/releases/tag/v1.8.1) (2021-08-17)
+=================================================================================================
+
+## 🐛 Bug Fixes
+ * Fix multiple VoIP regressions ([matrix-org/matrix-js-sdk#1860](https://github.com/matrix-org/matrix-js-sdk/pull/1860)).
+
+Changes in [1.8.0](https://github.com/vector-im/element-desktop/releases/tag/v1.8.0) (2021-08-16)
+=================================================================================================
+
+## ✨ Features
+ * Show how long a call was on call tiles ([\#6570](https://github.com/matrix-org/matrix-react-sdk/pull/6570)). Fixes #18405. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Add regional indicators to emoji picker ([\#6490](https://github.com/matrix-org/matrix-react-sdk/pull/6490)). Fixes #14963. Contributed by [robintown](https://github.com/robintown).
+ * Make call control buttons accessible to screen reader users ([\#6181](https://github.com/matrix-org/matrix-react-sdk/pull/6181)). Fixes #18358. Contributed by [pvagner](https://github.com/pvagner).
+ * Skip sending a thumbnail if it is not a sufficient saving over the original ([\#6559](https://github.com/matrix-org/matrix-react-sdk/pull/6559)). Fixes #17906.
+ * Increase PiP snapping speed ([\#6539](https://github.com/matrix-org/matrix-react-sdk/pull/6539)). Fixes #18371. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Improve and move the incoming call toast ([\#6470](https://github.com/matrix-org/matrix-react-sdk/pull/6470)). Fixes #17912. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Allow all of the URL schemes that Firefox allows ([\#6457](https://github.com/matrix-org/matrix-react-sdk/pull/6457)). Contributed by [aaronraimist](https://github.com/aaronraimist).
+ * Improve bubble layout colors ([\#6452](https://github.com/matrix-org/matrix-react-sdk/pull/6452)). Fixes #18081. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Spaces let users switch between Home and All Rooms behaviours ([\#6497](https://github.com/matrix-org/matrix-react-sdk/pull/6497)). Fixes #18093.
+ * Support for MSC2285 (hidden read receipts) ([\#6390](https://github.com/matrix-org/matrix-react-sdk/pull/6390)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Group pinned message events with MELS ([\#6349](https://github.com/matrix-org/matrix-react-sdk/pull/6349)). Fixes #17938. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Make version copiable ([\#6227](https://github.com/matrix-org/matrix-react-sdk/pull/6227)). Fixes #17603 and #18329. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Improve voice messages uploading state ([\#6530](https://github.com/matrix-org/matrix-react-sdk/pull/6530)). Fixes #18226 and #18224.
+ * Add surround with feature ([\#5510](https://github.com/matrix-org/matrix-react-sdk/pull/5510)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Improve call event tile wording ([\#6545](https://github.com/matrix-org/matrix-react-sdk/pull/6545)). Fixes #18376. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Show an avatar/a turned off microphone icon for muted users ([\#6486](https://github.com/matrix-org/matrix-react-sdk/pull/6486)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Prompt user to leave rooms/subspaces in a space when leaving space ([\#6424](https://github.com/matrix-org/matrix-react-sdk/pull/6424)). Fixes #18071.
+ * Add support for screen sharing in 1:1 calls ([\#5992](https://github.com/matrix-org/matrix-react-sdk/pull/5992)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+
+## 🐛 Bug Fixes
+ * Dismiss electron download toast when clicking Open ([\#18267](https://github.com/vector-im/element-web/pull/18267)). Fixes #18266.
+ * [Release] Fix glare related regressions ([\#6622](https://github.com/matrix-org/matrix-react-sdk/pull/6622)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * [Release] Fix PiP of held calls ([\#6612](https://github.com/matrix-org/matrix-react-sdk/pull/6612)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * [Release] Fix toast colors ([\#6607](https://github.com/matrix-org/matrix-react-sdk/pull/6607)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix [object Object] in Widget Permissions ([\#6560](https://github.com/matrix-org/matrix-react-sdk/pull/6560)). Fixes #18384. Contributed by [Palid](https://github.com/Palid).
+ * Fix right margin for events on IRC layout ([\#6542](https://github.com/matrix-org/matrix-react-sdk/pull/6542)). Fixes #18354.
+ * Mirror only usermedia feeds ([\#6512](https://github.com/matrix-org/matrix-react-sdk/pull/6512)). Fixes #5633. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix LogoutDialog warning + TypeScript migration ([\#6533](https://github.com/matrix-org/matrix-react-sdk/pull/6533)).
+ * Fix the wrong font being used in the room topic field ([\#6527](https://github.com/matrix-org/matrix-react-sdk/pull/6527)). Fixes #18339. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix inconsistent styling for links on hover ([\#6513](https://github.com/matrix-org/matrix-react-sdk/pull/6513)). Contributed by [janogarcia](https://github.com/janogarcia).
+ * Fix incorrect height for encoded placeholder images ([\#6514](https://github.com/matrix-org/matrix-react-sdk/pull/6514)). Contributed by [Palid](https://github.com/Palid).
+ * Fix call events layout for message bubble ([\#6465](https://github.com/matrix-org/matrix-react-sdk/pull/6465)). Fixes #18144.
+ * Improve subspaces and some utilities around room/space creation ([\#6458](https://github.com/matrix-org/matrix-react-sdk/pull/6458)). Fixes #18090 #18091 and #17256.
+ * Restore pointer cursor for SenderProfile in message bubbles ([\#6501](https://github.com/matrix-org/matrix-react-sdk/pull/6501)). Fixes #18249.
+ * Fix issues with the Call View ([\#6472](https://github.com/matrix-org/matrix-react-sdk/pull/6472)). Fixes #18221. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Align event list summary read receipts when using message bubbles ([\#6500](https://github.com/matrix-org/matrix-react-sdk/pull/6500)). Fixes #18143.
+ * Better positioning for unbubbled events in timeline ([\#6477](https://github.com/matrix-org/matrix-react-sdk/pull/6477)). Fixes #18132.
+ * Realign reactions row with messages in modern layout ([\#6491](https://github.com/matrix-org/matrix-react-sdk/pull/6491)). Fixes #18118. Contributed by [robintown](https://github.com/robintown).
+ * Fix CreateRoomDialog exploding when making public room outside of a space ([\#6492](https://github.com/matrix-org/matrix-react-sdk/pull/6492)). Fixes #18275.
+ * Fix call crashing because `element` was undefined ([\#6488](https://github.com/matrix-org/matrix-react-sdk/pull/6488)). Fixes #18270. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Upscale thumbnails to the container size ([\#6589](https://github.com/matrix-org/matrix-react-sdk/pull/6589)). Fixes #18307.
+ * Fix create room dialog in spaces no longer adding to the space ([\#6587](https://github.com/matrix-org/matrix-react-sdk/pull/6587)). Fixes #18465.
+ * Don't show a modal on call reject/user hangup ([\#6580](https://github.com/matrix-org/matrix-react-sdk/pull/6580)). Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fade Call View Buttons after `componentDidMount` ([\#6581](https://github.com/matrix-org/matrix-react-sdk/pull/6581)). Fixes #18439. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix missing expand button on codeblocks ([\#6565](https://github.com/matrix-org/matrix-react-sdk/pull/6565)). Fixes #18388. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * allow customizing the bubble layout colors ([\#6568](https://github.com/matrix-org/matrix-react-sdk/pull/6568)). Fixes #18408. Contributed by [benneti](https://github.com/benneti).
+ * Don't flash "Missed call" when accepting a call ([\#6567](https://github.com/matrix-org/matrix-react-sdk/pull/6567)). Fixes #18404. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix clicking whitespaces on replies ([\#6571](https://github.com/matrix-org/matrix-react-sdk/pull/6571)). Fixes #18327. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix composer not being disabled when sending voice messages ([\#6562](https://github.com/matrix-org/matrix-react-sdk/pull/6562)). Fixes #18413.
+ * Fix sizing issues of the screen picker ([\#6498](https://github.com/matrix-org/matrix-react-sdk/pull/6498)). Fixes #18281. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Stop voice messages that are playing when starting a recording ([\#6563](https://github.com/matrix-org/matrix-react-sdk/pull/6563)). Fixes #18410.
+ * Fix random box appearing when clicking room list headers. ([\#6561](https://github.com/matrix-org/matrix-react-sdk/pull/6561)). Fixes #18414.
+ * Null guard space inviter to prevent the app exploding ([\#6558](https://github.com/matrix-org/matrix-react-sdk/pull/6558)).
+ * Make the ringing sound mutable/disablable ([\#6534](https://github.com/matrix-org/matrix-react-sdk/pull/6534)). Fixes #15591. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix wrong cursor being used in PiP ([\#6551](https://github.com/matrix-org/matrix-react-sdk/pull/6551)). Fixes #18383. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Re-pin Jitsi if the widget already exists ([\#6226](https://github.com/matrix-org/matrix-react-sdk/pull/6226)). Fixes #17679. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix broken call notification regression ([\#6526](https://github.com/matrix-org/matrix-react-sdk/pull/6526)). Fixes #18335. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * createRoom, only send join rule event if we have a join rule to put in it ([\#6516](https://github.com/matrix-org/matrix-react-sdk/pull/6516)). Fixes #18301.
+ * Fix clicking pills inside replies ([\#6508](https://github.com/matrix-org/matrix-react-sdk/pull/6508)). Fixes #18283. Contributed by [SimonBrandner](https://github.com/SimonBrandner).
+ * Fix grecaptcha regression ([\#6503](https://github.com/matrix-org/matrix-react-sdk/pull/6503)). Fixes #18284. Contributed by [Palid](https://github.com/Palid).
+ * Fix compatibility with accounts where the security passphrase was created on a mobile device ([\#1819](https://github.com/matrix-org/matrix-js-sdk/pull/1819)).
+
+Changes in [1.7.34](https://github.com/vector-im/element-desktop/releases/tag/v1.7.34) (2021-08-02)
+===================================================================================================
+
+## 🔒 SECURITY FIXES
+ * Sanitize untrusted variables from message previews before translation
+ Fixes vector-im/element-web#18314
+
+## ✨ Features
+ * Fix editing of `` & ` & ``
+ [\#6469](https://github.com/matrix-org/matrix-react-sdk/pull/6469)
+ Fixes #18211
+ * Zoom images in lightbox to where the cursor points
+ [\#6418](https://github.com/matrix-org/matrix-react-sdk/pull/6418)
+ Fixes #17870
+ * Avoid hitting the settings store from TextForEvent
+ [\#6205](https://github.com/matrix-org/matrix-react-sdk/pull/6205)
+ Fixes #17650
+ * Initial MSC3083 + MSC3244 support
+ [\#6212](https://github.com/matrix-org/matrix-react-sdk/pull/6212)
+ Fixes #17686 and #17661
+ * Navigate to the first room with notifications when clicked on space notification dot
+ [\#5974](https://github.com/matrix-org/matrix-react-sdk/pull/5974)
+ * Add matrix: to the list of permitted URL schemes
+ [\#6388](https://github.com/matrix-org/matrix-react-sdk/pull/6388)
+ * Add "Copy Link" to room context menu
+ [\#6374](https://github.com/matrix-org/matrix-react-sdk/pull/6374)
+ * 💭 Message bubble layout
+ [\#6291](https://github.com/matrix-org/matrix-react-sdk/pull/6291)
+ Fixes #4635, #17773 #16220 and #7687
+ * Play only one audio file at a time
+ [\#6417](https://github.com/matrix-org/matrix-react-sdk/pull/6417)
+ Fixes #17439
+ * Move download button for media to the action bar
+ [\#6386](https://github.com/matrix-org/matrix-react-sdk/pull/6386)
+ Fixes #17943
+ * Improved display of one-to-one call history with summary boxes for each call
+ [\#6121](https://github.com/matrix-org/matrix-react-sdk/pull/6121)
+ Fixes #16409
+ * Notification settings UI refresh
+ [\#6352](https://github.com/matrix-org/matrix-react-sdk/pull/6352)
+ Fixes #17782
+ * Fix EventIndex double handling events and erroring
+ [\#6385](https://github.com/matrix-org/matrix-react-sdk/pull/6385)
+ Fixes #18008
+ * Improve reply rendering
+ [\#3553](https://github.com/matrix-org/matrix-react-sdk/pull/3553)
+ Fixes vector-im/riot-web#9217, vector-im/riot-web#7633, vector-im/riot-web#7530, vector-im/riot-web#7169, vector-im/riot-web#7151, vector-im/riot-web#6692 vector-im/riot-web#6579 and #17440
+ * Improve performance of room name calculation
+ [\#1801](https://github.com/matrix-org/matrix-js-sdk/pull/1801)
+
+## 🐛 Bug Fixes
+ * Fix browser history getting stuck looping back to the same room
+ [\#18053](https://github.com/vector-im/element-web/pull/18053)
+ * Fix space shortcuts on layouts with non-English keys in the places of numbers
+ [\#17780](https://github.com/vector-im/element-web/pull/17780)
+ Fixes #17776
+ * Fix CreateRoomDialog exploding when making public room outside of a space
+ [\#6493](https://github.com/matrix-org/matrix-react-sdk/pull/6493)
+ * Fix regression where registration would soft-crash on captcha
+ [\#6505](https://github.com/matrix-org/matrix-react-sdk/pull/6505)
+ Fixes #18284
+ * only send join rule event if we have a join rule to put in it
+ [\#6517](https://github.com/matrix-org/matrix-react-sdk/pull/6517)
+ * Improve the new download button's discoverability and interactions.
+ [\#6510](https://github.com/matrix-org/matrix-react-sdk/pull/6510)
+ * Fix voice recording UI looking broken while microphone permissions are being requested.
+ [\#6479](https://github.com/matrix-org/matrix-react-sdk/pull/6479)
+ Fixes #18223
+ * Match colors of room and user avatars in DMs
+ [\#6393](https://github.com/matrix-org/matrix-react-sdk/pull/6393)
+ Fixes #2449
+ * Fix onPaste handler to work with copying files from Finder
+ [\#5389](https://github.com/matrix-org/matrix-react-sdk/pull/5389)
+ Fixes #15536 and #16255
+ * Fix infinite pagination loop when offline
+ [\#6478](https://github.com/matrix-org/matrix-react-sdk/pull/6478)
+ Fixes #18242
+ * Fix blurhash rounded corners missing regression
+ [\#6467](https://github.com/matrix-org/matrix-react-sdk/pull/6467)
+ Fixes #18110
+ * Fix position of the space hierarchy spinner
+ [\#6462](https://github.com/matrix-org/matrix-react-sdk/pull/6462)
+ Fixes #18182
+ * Fix display of image messages that lack thumbnails
+ [\#6456](https://github.com/matrix-org/matrix-react-sdk/pull/6456)
+ Fixes #18175
+ * Fix crash with large audio files.
+ [\#6436](https://github.com/matrix-org/matrix-react-sdk/pull/6436)
+ Fixes #18149
+ * Make diff colors in codeblocks more pleasant
+ [\#6355](https://github.com/matrix-org/matrix-react-sdk/pull/6355)
+ Fixes #17939
+ * Show the correct audio file duration while loading the file.
+ [\#6435](https://github.com/matrix-org/matrix-react-sdk/pull/6435)
+ Fixes #18160
+ * Fix various timeline settings not applying immediately.
+ [\#6261](https://github.com/matrix-org/matrix-react-sdk/pull/6261)
+ Fixes #17748
+ * Fix issues with room list duplication
+ [\#6391](https://github.com/matrix-org/matrix-react-sdk/pull/6391)
+ Fixes #14508
+ * Fix grecaptcha throwing useless error sometimes
+ [\#6401](https://github.com/matrix-org/matrix-react-sdk/pull/6401)
+ Fixes #15142
+ * Update Emojibase and Twemoji and switch to IamCal (Slack-style) shortcodes
+ [\#6347](https://github.com/matrix-org/matrix-react-sdk/pull/6347)
+ Fixes #13857 and #13334
+ * Respect compound emojis in default avatar initial generation
+ [\#6397](https://github.com/matrix-org/matrix-react-sdk/pull/6397)
+ Fixes #18040
+ * Fix bug where the 'other homeserver' field in the server selection dialog would become briefly focus and then unfocus when clicked.
+ [\#6394](https://github.com/matrix-org/matrix-react-sdk/pull/6394)
+ Fixes #18031
+ * Standardise spelling and casing of homeserver, identity server, and integration manager
+ [\#6365](https://github.com/matrix-org/matrix-react-sdk/pull/6365)
+ * Fix widgets not receiving decrypted events when they have permission.
+ [\#6371](https://github.com/matrix-org/matrix-react-sdk/pull/6371)
+ Fixes #17615
+ * Prevent client hangs when calculating blurhashes
+ [\#6366](https://github.com/matrix-org/matrix-react-sdk/pull/6366)
+ Fixes #17945
+ * Exclude state events from widgets reading room events
+ [\#6378](https://github.com/matrix-org/matrix-react-sdk/pull/6378)
+ * Cache feature_spaces\* flags to improve performance
+ [\#6381](https://github.com/matrix-org/matrix-react-sdk/pull/6381)
+
+Changes in [1.7.33](https://github.com/vector-im/element-web/releases/tag/v1.7.33) (2021-07-19)
+===============================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.33-rc.1...v1.7.33)
+
+ * No changes from rc.1
+
+Changes in [1.7.33-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.33-rc.1) (2021-07-14)
+=========================================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.32...v1.7.33-rc.1)
+
+ * Translations update from Weblate
+ [\#17991](https://github.com/vector-im/element-web/pull/17991)
+ * Revert "Don't run nginx as root in docker"
+ [\#17990](https://github.com/vector-im/element-web/pull/17990)
+ * Don't run nginx as root in docker
+ [\#17927](https://github.com/vector-im/element-web/pull/17927)
+ * Add VS Code to gitignore
+ [\#17982](https://github.com/vector-im/element-web/pull/17982)
+ * Remove canvas native dependencies from Dockerfile
+ [\#17973](https://github.com/vector-im/element-web/pull/17973)
+ * Remove node-canvas devDependency
+ [\#17967](https://github.com/vector-im/element-web/pull/17967)
+ * Add `reskindex` to development steps
+ [\#17926](https://github.com/vector-im/element-web/pull/17926)
+ * Update Modernizr and stop it from polluting classes on the html tag
+ [\#17921](https://github.com/vector-im/element-web/pull/17921)
+ * Convert a few files to TS
+ [\#17895](https://github.com/vector-im/element-web/pull/17895)
+ * Do not generate a lockfile when running in CI
+ [\#17902](https://github.com/vector-im/element-web/pull/17902)
+ * Fix lockfile to match listed dependencies
+ [\#17888](https://github.com/vector-im/element-web/pull/17888)
+ * Remove PostCSS calc() processing
+ [\#17856](https://github.com/vector-im/element-web/pull/17856)
+ * Make issue template styling more consistent and improve PR template
+ [\#17691](https://github.com/vector-im/element-web/pull/17691)
+ * Update jsrsasign to ^10.2.0 (Includes fix for CVE-2021-30246)
+ [\#17170](https://github.com/vector-im/element-web/pull/17170)
+ * Migrate to `eslint-plugin-matrix-org`
+ [\#17847](https://github.com/vector-im/element-web/pull/17847)
+ * Remove spurious overflow: auto on #matrixchat element
+ [\#17647](https://github.com/vector-im/element-web/pull/17647)
+ * Enhance security by disallowing CSP object-src rule
+ [\#17818](https://github.com/vector-im/element-web/pull/17818)
+
+Changes in [1.7.32](https://github.com/vector-im/element-web/releases/tag/v1.7.32) (2021-07-05)
+===============================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.32-rc.1...v1.7.32)
+
+ * No changes from rc.1
+
+Changes in [1.7.32-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.32-rc.1) (2021-06-29)
+=========================================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.31...v1.7.32-rc.1)
+
+ * Update to react-sdk v3.25.0-rc.1 and js-sdk v12.0.1-rc.1
+ * Translations update from Weblate
+ [\#17832](https://github.com/vector-im/element-web/pull/17832)
+ * Fix canvas-filter-polyfill mock path
+ [\#17785](https://github.com/vector-im/element-web/pull/17785)
+ * Mock context-filter-polyfill for app-tests
+ [\#17774](https://github.com/vector-im/element-web/pull/17774)
+ * Add libera.chat to default room directory
+ [\#17772](https://github.com/vector-im/element-web/pull/17772)
+ * Improve typing of Event Index Manager / Seshat
+ [\#17704](https://github.com/vector-im/element-web/pull/17704)
+ * Bump dns-packet from 1.3.1 to 1.3.4
+ [\#17478](https://github.com/vector-im/element-web/pull/17478)
+ * Update matrix-widget-api to fix build issues
+ [\#17747](https://github.com/vector-im/element-web/pull/17747)
+ * Fix whitespace in Dockerfile
+ [\#17742](https://github.com/vector-im/element-web/pull/17742)
+ * Upgrade @types/react and @types/react-dom
+ [\#17723](https://github.com/vector-im/element-web/pull/17723)
+ * Spaces keyboard shortcuts first cut
+ [\#17457](https://github.com/vector-im/element-web/pull/17457)
+ * Labs: feature_report_to_moderators
+ [\#17694](https://github.com/vector-im/element-web/pull/17694)
+
+Changes in [1.7.31](https://github.com/vector-im/element-web/releases/tag/v1.7.31) (2021-06-21)
+===============================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.31-rc.1...v1.7.31)
+
+ * Upgrade to React SDK 3.24.0 and JS SDK 12.0.0
+
+Changes in [1.7.31-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.31-rc.1) (2021-06-15)
+=========================================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.30...v1.7.31-rc.1)
+
+ * Upgrade to React SDK 3.24.0-rc.1 and JS SDK 12.0.0-rc.1
+ * Translations update from Weblate
+ [\#17655](https://github.com/vector-im/element-web/pull/17655)
+ * Upgrade matrix-react-test-utils for React 17 peer deps
+ [\#17653](https://github.com/vector-im/element-web/pull/17653)
+ * Fix lint errors in Webpack config
+ [\#17626](https://github.com/vector-im/element-web/pull/17626)
+ * Preload only `woff2` fonts
+ [\#17614](https://github.com/vector-im/element-web/pull/17614)
+ * ⚛️ Upgrade to React@17
+ [\#17601](https://github.com/vector-im/element-web/pull/17601)
+
+Changes in [1.7.30](https://github.com/vector-im/element-web/releases/tag/v1.7.30) (2021-06-07)
+===============================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.30-rc.1...v1.7.30)
+
+ * Upgrade to React SDK 3.23.0 and JS SDK 11.2.0
+
+Changes in [1.7.30-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.30-rc.1) (2021-06-01)
+=========================================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.29...v1.7.30-rc.1)
+
+ * Upgrade to React SDK 3.23.0-rc.1 and JS SDK 11.2.0-rc.1
+ * Translations update from Weblate
+ [\#17526](https://github.com/vector-im/element-web/pull/17526)
+ * Add Modernizr test for Promise.allSettled given js-sdk and react-sdk depend
+ on it
+ [\#17464](https://github.com/vector-im/element-web/pull/17464)
+ * Bump libolm dependency, and update package name.
+ [\#17433](https://github.com/vector-im/element-web/pull/17433)
+ * Remove logo spinner
+ [\#17423](https://github.com/vector-im/element-web/pull/17423)
+
+Changes in [1.7.29](https://github.com/vector-im/element-web/releases/tag/v1.7.29) (2021-05-24)
+===============================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.29-rc.1...v1.7.29)
+
+## Security notice
+
+Element Web 1.7.29 fixes (by upgrading to olm 3.2.3) an issue in code used for
+decrypting server-side stored secrets. The issue could potentially allow a
+malicious homeserver to cause a stack buffer overflow in the affected function
+and to control that function's local variables.
+
+## All changes
+
+ * Upgrade to React SDK 3.22.0 and JS SDK 11.1.0
+ * [Release] Bump libolm dependency, and update package name
+ [\#17456](https://github.com/vector-im/element-web/pull/17456)
+
+Changes in [1.7.29-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.29-rc.1) (2021-05-19)
+=========================================================================================================
+[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.28...v1.7.29-rc.1)
+
+ * Upgrade to React SDK 3.22.0-rc.1 and JS SDK 11.1.0-rc.1
+ * Translations update from Weblate
+ [\#17384](https://github.com/vector-im/element-web/pull/17384)
+ * Prevent minification of `.html` files
+ [\#17349](https://github.com/vector-im/element-web/pull/17349)
+ * Update matrix-widget-api/react-sdk dependency reference
+ [\#17346](https://github.com/vector-im/element-web/pull/17346)
+ * Add `yarn start:https`
+ [\#16989](https://github.com/vector-im/element-web/pull/16989)
+ * Translations update from Weblate
+ [\#17239](https://github.com/vector-im/element-web/pull/17239)
+ * Remove "in development" flag from voice messages labs documentation
+ [\#17204](https://github.com/vector-im/element-web/pull/17204)
+ * Add required webpack+jest config to load Safari support modules
+ [\#17193](https://github.com/vector-im/element-web/pull/17193)
+
Changes in [1.7.28](https://github.com/vector-im/element-web/releases/tag/v1.7.28) (2021-05-17)
===============================================================================================
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.28-rc.1...v1.7.28)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000000..e14c75df973
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing code to Element
+============================
+
+Element follows the same pattern as the [matrix-js-sdk](https://github.com/matrix-org/matrix-js-sdk/blob/develop/CONTRIBUTING.md).
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
deleted file mode 100644
index 3af9d3945b7..00000000000
--- a/CONTRIBUTING.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Contributing code to Element
-============================
-
-Element follows the same pattern as https://github.com/matrix-org/matrix-js-sdk/blob/master/CONTRIBUTING.rst.
diff --git a/Dockerfile b/Dockerfile
index 8462d113607..e62b867d38c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,10 +9,7 @@ ARG REACT_SDK_BRANCH="master"
ARG JS_SDK_REPO="https://github.com/matrix-org/matrix-js-sdk.git"
ARG JS_SDK_BRANCH="master"
-RUN apt-get update && apt-get install -y git dos2unix \
-# These packages are required for building Canvas on architectures like Arm
-# See https://www.npmjs.com/package/canvas#compiling
- build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
+RUN apt-get update && apt-get install -y git dos2unix
WORKDIR /src
@@ -37,4 +34,4 @@ COPY --from=builder /src/webapp /app
RUN sed -i '3i\ \ \ \ application/wasm wasm\;' /etc/nginx/mime.types
RUN rm -rf /usr/share/nginx/html \
- && ln -s /app /usr/share/nginx/html
+ && ln -s /app /usr/share/nginx/html
diff --git a/README.md b/README.md
index 8d019fb5afc..4fd89c018ad 100644
--- a/README.md
+++ b/README.md
@@ -30,14 +30,14 @@ and [element-ios](https://github.com/vector-im/element-ios).
Getting Started
===============
-The easiest way to test Element is to just use the hosted copy at https://app.element.io.
-The `develop` branch is continuously deployed to https://develop.element.io
+The easiest way to test Element is to just use the hosted copy at .
+The `develop` branch is continuously deployed to
for those who like living dangerously.
To host your own copy of Element, the quickest bet is to use a pre-built
released version of Element:
-1. Download the latest version from https://github.com/vector-im/element-web/releases
+1. Download the latest version from
1. Untar the tarball on your web server
1. Move (or symlink) the `element-x.x.x` directory to an appropriate name
1. Configure the correct caching headers in your webserver (see below)
@@ -46,7 +46,7 @@ released version of Element:
1. Enter the URL into your browser and log into Element!
Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located
-at https://packages.riot.im/element-release-key.asc.
+at .
Note that for the security of your chats will need to serve Element
over HTTPS. Major browsers also do not allow you to use VoIP/video
@@ -72,7 +72,7 @@ access to Element (or other apps) due to sharing the same domain.
We have put some coarse mitigations into place to try to protect against this
situation, but it's still not good practice to do it in the first place. See
-https://github.com/vector-im/element-web/issues/1977 for more details.
+ for more details.
Configuration best practices
----------------------------
@@ -80,15 +80,15 @@ Configuration best practices
Unless you have special requirements, you will want to add the following to
your web server configuration when hosting Element Web:
-- The `X-Frame-Options: SAMEORIGIN` header, to prevent Element Web from being
+* The `X-Frame-Options: SAMEORIGIN` header, to prevent Element Web from being
framed and protect from [clickjacking][owasp-clickjacking].
-- The `frame-ancestors 'none'` directive to your `Content-Security-Policy`
+* The `frame-ancestors 'none'` directive to your `Content-Security-Policy`
header, as the modern replacement for `X-Frame-Options` (though both should be
included since not all browsers support it yet, see
[this][owasp-clickjacking-csp]).
-- The `X-Content-Type-Options: nosniff` header, to [disable MIME
+* The `X-Content-Type-Options: nosniff` header, to [disable MIME
sniffing][mime-sniffing].
-- The `X-XSS-Protection: 1; mode=block;` header, for basic XSS protection in
+* The `X-XSS-Protection: 1; mode=block;` header, for basic XSS protection in
legacy browsers.
[mime-sniffing]:
@@ -122,15 +122,15 @@ Ensure you have the latest LTS version of Node.js installed.
Using `yarn` instead of `npm` is recommended. Please see the Yarn [install
guide](https://classic.yarnpkg.com/en/docs/install) if you do not have it already.
-1. Install or update `node.js` so that your `node` is at least v10.x.
+1. Install or update `node.js` so that your `node` is at least v14.x.
1. Install `yarn` if not present already.
1. Clone the repo: `git clone https://github.com/vector-im/element-web.git`.
1. Switch to the element-web directory: `cd element-web`.
1. Install the prerequisites: `yarn install`.
- * If you're using the `develop` branch, then it is recommended to set up a
+ * If you're using the `develop` branch, then it is recommended to set up a
proper development environment (see [Setting up a dev
environment](#setting-up-a-dev-environment) below). Alternatively, you
- can use https://develop.element.io - the continuous integration release of
+ can use - the continuous integration release of
the develop branch.
1. Configure the app by copying `config.sample.json` to `config.json` and
modifying it. See the [configuration docs](docs/config.md) for details.
@@ -148,15 +148,16 @@ Running as a Desktop app
========================
Element can also be run as a desktop app, wrapped in Electron. You can download a
-pre-built version from https://element.io/get-started or, if you prefer,
+pre-built version from or, if you prefer,
build it yourself.
-To build it yourself, follow the instructions at https://github.com/vector-im/element-desktop.
+To build it yourself, follow the instructions at .
Many thanks to @aviraldg for the initial work on the Electron integration.
Other options for running as a desktop app:
- * @asdf:matrix.org points out that you can use nativefier and it just works(tm)
+
+* @asdf:matrix.org points out that you can use nativefier and it just works(tm)
```bash
yarn global add nativefier
@@ -171,6 +172,7 @@ Running from Docker
The Docker image can be used to serve element-web as a web server. The easiest way to use
it is to use the prebuilt image:
+
```bash
docker run -p 80:80 vectorim/element-web
```
@@ -178,11 +180,13 @@ docker run -p 80:80 vectorim/element-web
To supply your own custom `config.json`, map a volume to `/app/config.json`. For example,
if your custom config was located at `/etc/element-web/config.json` then your Docker command
would be:
+
```bash
docker run -p 80:80 -v /etc/element-web/config.json:/app/config.json vectorim/element-web
```
To build the image yourself:
+
```bash
git clone https://github.com/vector-im/element-web.git element-web
cd element-web
@@ -192,6 +196,7 @@ docker build .
If you're building a custom branch, or want to use the develop branch, check out the appropriate
element-web branch and then run:
+
```bash
docker build -t \
--build-arg USE_CUSTOM_SDKS=true \
@@ -224,6 +229,7 @@ Caching requirements
====================
Element requires the following URLs not to be cached, when/if you are serving Element from your own webserver:
+
```
/config.*.json
/i18n
@@ -261,6 +267,10 @@ internet. So please don't depend on resources (JS libs, CSS, images, fonts)
hosted by external CDNs or servers but instead please package all dependencies
into Element itself.
+CSS hot-reload is available as an opt-in development feature. You can enable it
+by defining a `CSS_HOT_RELOAD` environment variable, in a `.env` file in the root
+of the repository. See `.env.example` for documentation and an example.
+
Setting up a dev environment
============================
@@ -298,17 +308,19 @@ cd element-web
yarn link matrix-js-sdk
yarn link matrix-react-sdk
yarn install
+yarn reskindex
yarn start
```
-
Wait a few seconds for the initial build to finish; you should see something like:
+
```
[element-js] [webpack.Progress] 100%
[element-js]
[element-js] ℹ 「wdm」: 1840 modules
[element-js] ℹ 「wdm」: Compiled successfully.
```
+
Remember, the command will not terminate since it runs the web server
and rebuilds source files when they change. This development server also
disables caching, so do NOT use it in production.
@@ -316,7 +328,7 @@ Wait a few seconds for the initial build to finish; you should see something lik
Configure the app by copying `config.sample.json` to `config.json` and
modifying it. See the [configuration docs](docs/config.md) for details.
-Open http://127.0.0.1:8080/ in your browser to see your newly built Element.
+Open in your browser to see your newly built Element.
**Note**: The build script uses inotify by default on Linux to monitor directories
for changes. If the inotify limits are too low your build will fail silently or with
@@ -389,76 +401,6 @@ For a developer guide, see the [translating dev doc](docs/translating-dev.md).
Triaging issues
===============
-We strive to completely cover all applicable issues with these core labels:
-
-1. __Type__ — Every issue is assigned a type:
- - __[T-Defect](https://github.com/vector-im/element-web/labels/T-Defect):__
- Bugs, crashes, hangs, vulnerabilities, or other reported problems
- - __[T-Enhancement](https://github.com/vector-im/element-web/labels/T-Enhancement):__
- New features, changes in functionality, performance boosts, user-facing
- improvements
- - __[T-Task](https://github.com/vector-im/element-web/labels/T-Task):__
- Refactoring, enabling or disabling functionality, other engineering tasks
- - __[T-Other](https://github.com/vector-im/element-web/labels/T-Other):__
- Questions, user support, anything else
-
-2. __Severity__ — All issues labeled `T-Defect` are also assigned a severity:
- * __[S-Critical](https://github.com/vector-im/element-web/labels/S-Critical):__
- Prevents work, causes data loss, affects many users, and/or has no
- workaround
- * __[S-Major](https://github.com/vector-im/element-web/labels/S-Major):__
- Severely degrades major functionality or product features, with no
- satisfactory workaround
- * __[S-Minor](https://github.com/vector-im/element-web/labels/S-Minor):__
- Impairs non-critical functionality, or suitable workarounds exist
- * __[S-Tolerable](https://github.com/vector-im/element-web/labels/S-Tolerable):__
- Purely cosmetic or low / no impact to users
-
-3. __Priority__ — All issues which are not `T-Other` are assigned a priority:
- * __[P1](https://github.com/vector-im/element-web/labels/P1):__ Next
- * __[P2](https://github.com/vector-im/element-web/labels/P2):__ Later
- * __[P3](https://github.com/vector-im/element-web/labels/P3):__ Eventually
- * __[P4](https://github.com/vector-im/element-web/labels/P4):__ Interesting —
- Not yet scheduled, will accept patches
- * __[P5](https://github.com/vector-im/element-web/labels/P5):__ Dubious —
- Will not schedule, would consider patches
-
-4. __Area__ — Most issues are assigned one or several "areas" using one of the
- many `A-` prefixed labels, e.g. `A-Composer` or `A-Spaces`. Each area label
- maps to a group of features or portion of the UI surface in the app.
-
-### Other common labels
-
-We have a handful of other labels which are added on an as-needed basis, and not expected to be exhaustive:
-
-* __Exceptions__ — Special flags for issues and pull requests:
- * __[X-Needs-Info](https://github.com/vector-im/element-web/labels/X-Needs-Info):__
- This issue is blocked pending further information from the reporter
- * __[X-Regression](https://github.com/vector-im/element-web/labels/X-Regression):__
- Denotes things breaking which previously worked
- * __[X-Release-Blocker](https://github.com/vector-im/element-web/labels/X-Release-Blocker):__
- Issues which must be resolved before making a release
-
-* __[Easy](https://github.com/vector-im/element-web/labels/Easy)__ / __[Help
- Wanted](https://github.com/vector-im/element-web/labels/Help%20Wanted)__ —
- Well-defined issues which are suitable for folks new to the codebase
-
-* __[A11y](https://github.com/vector-im/element-web/labels/A11y)__ /
- __[Meta](https://github.com/vector-im/element-web/labels/Meta)__ /
- __[I18n](https://github.com/vector-im/element-web/labels/I18n)__ /
- __[Privacy](https://github.com/vector-im/element-web/labels/Privacy)__ /
- __[Security](https://github.com/vector-im/element-web/labels/Security)__ —
- Issues which fall under these conceptual themes (which apply to many software
- projects and are not specific to Element)
-
-* __[Sponsored](https://github.com/vector-im/element-web/labels/Sponsored)__ —
- Used internally by Element to denote issues with external funding
-
-### Ad hoc labels (`Z-`)
-
-We have reserved the `Z-` prefix for ad hoc labels.
-
-Any member of the core team is welcome to create labels beginning with `Z-` for
-any purpose, such as tracking personal areas of interest or providing a common
-way to label cross-repo initiatives. The prefix avoids interference with the
-project's main labels.
+Issues are triaged by community members and the Web App Team, following the [triage process](https://github.com/vector-im/element-web/wiki/Triage-process).
+
+We use [issue labels](https://github.com/vector-im/element-web/wiki/Issue-labelling) to sort all incoming issues.
diff --git a/babel.config.js b/babel.config.js
index 5f5bbd30c24..fe720e0a4dd 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -10,7 +10,6 @@ module.exports = {
],
}],
"@babel/preset-typescript",
- "@babel/preset-flow",
"@babel/preset-react",
],
"plugins": [
@@ -21,7 +20,6 @@ module.exports = {
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-proposal-optional-chaining",
"@babel/plugin-proposal-nullish-coalescing-operator",
- "@babel/plugin-transform-flow-comments",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-transform-runtime",
],
diff --git a/config.sample.json b/config.sample.json
index 32bdc7e5891..adf33174b29 100644
--- a/config.sample.json
+++ b/config.sample.json
@@ -25,9 +25,7 @@
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"defaultCountryCode": "GB",
"showLabsSettings": false,
- "features": {
- "feature_new_spinner": false
- },
+ "features": { },
"default_federate": true,
"default_theme": "light",
"roomDirectory": {
diff --git a/docs/config.md b/docs/config.md
index 1ca4bf48ffb..0c8d5e35df8 100644
--- a/docs/config.md
+++ b/docs/config.md
@@ -136,6 +136,12 @@ For a good example, see https://develop.element.io/config.json.
1. `obeyAssertedIdentity`: If set, MSC3086 asserted identity messages sent
on VoIP calls will cause the call to appear in the room corresponding to the
asserted identity. This *must* only be set in trusted environments.
+1. `posthog`: [Posthog](https://posthog.com/) integration config. If not set, Posthog analytics are disabled.
+ 1. `projectApiKey`: The Posthog project API key
+ 2. `apiHost`: The Posthog API host
+1. `sentry`: [Sentry](https://sentry.io/) configuration for rageshake data being sent to sentry.
+ 1. `dsn`: the Sentry [DSN](https://docs.sentry.io/product/sentry-basics/dsn-explainer/)
+ 2. `environment`: (optional) The [Environment](https://docs.sentry.io/product/sentry-basics/environments/) to pass to sentry
Note that `index.html` also has an og:image meta tag that is set to an image
hosted on riot.im. This is the image used if links to your copy of Element
diff --git a/docs/kubernetes.md b/docs/kubernetes.md
index 37f65da4654..803a72e09d3 100644
--- a/docs/kubernetes.md
+++ b/docs/kubernetes.md
@@ -62,9 +62,7 @@ Then you can deploy it to your cluster with something like `kubectl apply -f my-
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"defaultCountryCode": "GB",
"showLabsSettings": false,
- "features": {
- "feature_new_spinner": false
- },
+ "features": { },
"default_federate": true,
"default_theme": "light",
"roomDirectory": {
diff --git a/docs/labs.md b/docs/labs.md
index 3dff4474ca1..874018159dd 100644
--- a/docs/labs.md
+++ b/docs/labs.md
@@ -7,6 +7,11 @@ to `Settings->Labs`. This list is non-exhaustive and subject to change, chat in
**Be warned! Labs features are not finalised, they may be fragile, they may change, they may be
dropped. Ask in the room if you are unclear about any details here.**
+## Submit Abuse Report to Moderators [MSC3215](https://github.com/matrix-org/matrix-doc/pull/3215) support (`feature_report_to_moderators`)
+
+A new version of the "Report" dialog that lets users send abuse reports directly to room moderators,
+if the room supports it.
+
## Matrix Spaces [MSC1772](https://github.com/matrix-org/matrix-doc/pull/1772) support (`feature_spaces`)
Enables showing, using, creating, and managing spaces. Create Spaces from the all new Space Panel (to left of Room List).
@@ -19,10 +24,6 @@ Still in heavy development.
Enables rendering of LaTeX maths in messages using [KaTeX](https://katex.org/). LaTeX between single dollar-signs is interpreted as inline maths and double dollar-signs as display maths (i.e. centred on its own line).
-## New spinner design (`feature_new_spinner`)
-
-Replaces the old spinner image with a new, svg-based one featuring a sleeker design.
-
## Message pinning (`feature_pinning`)
Allows you to pin messages in the room. To pin a message, use the 3 dots to the right of the message
@@ -124,14 +125,19 @@ or feedback for this functionality at this time.
Allows users to receive encrypted messages by creating a device that is stored
encrypted on the server, as described in [MSC2697](https://github.com/matrix-org/matrix-doc/pull/2697).
-## Voice messages (`feature_voice_messages`) [In Development]
-
-An in-progress implementation of [MSC2516](https://github.com/matrix-org/matrix-doc/pull/2516) to add
-[voice messages](https://github.com/vector-im/element-web/issues/1358) to Element. Note that this feature
-is currently under active development and therefore is entirely incomplete and may not work at all - it
-is not recommended for general use at this time.
-
## Do not disturb (`feature_dnd`)
Enables UI for turning on "do not disturb" mode for the current device. When DND mode is engaged, popups
and notification noises are suppressed. Not perfect, but can help reduce noise.
+
+## Hidden read receipts (`feature_hidden_read_receipts`)
+
+Enables sending hidden read receipts as per [MSC2285](https://github.com/matrix-org/matrix-doc/pull/2285)
+
+## New layout switcher (with message bubbles) (`feature_new_layout_switcher`)
+
+Adds a "Message layout" section under `Settings -> Appearance`, where the user can select their preferred message layout (e.g. IRC or Modern). Additionally, adds a new "Message bubbles" layout.
+
+## Pseudonymous Analytics opt-in
+
+Opts in to collection of pseudonymous analytics data via Posthog. See https://github.com/matrix-org/matrix-react-sdk/pull/6495
diff --git a/docs/pr-previews.md b/docs/pr-previews.md
index dd1d6e220ae..8f6a7c79807 100644
--- a/docs/pr-previews.md
+++ b/docs/pr-previews.md
@@ -5,10 +5,7 @@ automatically set up a preview site with a full deployment of Element with the
changes from the pull request added in so that anyone can easily test and review
them. This is especially useful for checking visual and interactive changes.
-To access the preview site, scroll down to the bottom of the PR where the
-various CI results are displayed:
-
-![Pull request: checks section](./img/pr-checks.png)
+To access the preview site, click the link in the description of the PR.
The checks section could be collapsed at first, so you may need to click "Show
all checks" to reveal them. Look for an entry that mentions `deploy-preview`. It
diff --git a/docs/translating.md b/docs/translating.md
index cdfb48f25e4..a8d29a387d9 100644
--- a/docs/translating.md
+++ b/docs/translating.md
@@ -8,8 +8,9 @@
## Step 0: Join #element-translations:matrix.org
-1. Come and join https://matrix.to/#/#element-translations:matrix.org
-2. Read scrollback and/or ask if anyone else is working on your language, and co-ordinate if needed. In general little-or-no coordination is needed though :)
+1. Come and join https://matrix.to/#/#element-translations:matrix.org for general discussion
+2. Join https://matrix.to/#/#element-translators:matrix.org for language-specific rooms
+3. Read scrollback and/or ask if anyone else is working on your language, and co-ordinate if needed. In general little-or-no coordination is needed though :)
## Step 1: Preparing your Weblate Profile
diff --git a/element.io/app/config.json b/element.io/app/config.json
index 0259261701d..5922fcf504f 100644
--- a/element.io/app/config.json
+++ b/element.io/app/config.json
@@ -21,7 +21,8 @@
"roomDirectory": {
"servers": [
"matrix.org",
- "gitter.im"
+ "gitter.im",
+ "libera.chat"
]
},
"enable_presence_by_hs_url": {
diff --git a/element.io/develop/config.json b/element.io/develop/config.json
index 1e1e3ed0238..58da5283db7 100644
--- a/element.io/develop/config.json
+++ b/element.io/develop/config.json
@@ -21,7 +21,8 @@
"roomDirectory": {
"servers": [
"matrix.org",
- "gitter.im"
+ "gitter.im",
+ "libera.chat"
]
},
"enable_presence_by_hs_url": {
diff --git a/package.json b/package.json
index f38c4da1557..f01ea7d6d53 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "element-web",
- "version": "1.7.28",
+ "version": "1.8.5",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
@@ -44,32 +44,36 @@
"build:bundle-stats": "webpack --progress --bail --mode production --json > webpack-stats.json",
"dist": "scripts/package.sh",
"start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,element-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js\"",
+ "start:https": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,element-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js --https\"",
"start:res": "yarn build:jitsi && node scripts/copy-res.js -w",
- "start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --progress --mode development --disable-host-check",
+ "start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --progress --mode development --disable-host-check --hot",
"lint": "yarn lint:types && yarn lint:js && yarn lint:style",
- "lint:js": "eslint src",
+ "lint:js": "eslint --max-warnings 0 src",
+ "lint:js-fix": "eslint --fix src",
"lint:types": "tsc --noEmit --jsx react",
"lint:style": "stylelint 'res/css/**/*.scss'",
"test": "jest"
},
"dependencies": {
+ "@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.3.tgz",
"browser-request": "^0.3.3",
"gfm.css": "^1.1.2",
"highlight.js": "^10.5.0",
- "jsrsasign": "^10.1.5",
+ "jsrsasign": "^10.2.0",
"katex": "^0.12.0",
- "matrix-js-sdk": "11.0.0",
- "matrix-react-sdk": "3.21.0",
- "matrix-widget-api": "^0.1.0-beta.13",
- "olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz",
+ "matrix-js-sdk": "12.5.0",
+ "matrix-react-sdk": "3.30.0",
+ "matrix-widget-api": "^0.1.0-beta.16",
"prop-types": "^15.7.2",
- "react": "^16.14.0",
- "react-dom": "^16.14.0",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2",
"sanitize-html": "^2.3.2",
"ua-parser-js": "^0.7.24"
},
"devDependencies": {
"@babel/core": "^7.12.10",
+ "@babel/eslint-parser": "^7.12.10",
+ "@babel/eslint-plugin": "^7.12.10",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/plugin-proposal-decorators": "^7.12.12",
"@babel/plugin-proposal-export-default-from": "^7.12.1",
@@ -78,34 +82,34 @@
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
"@babel/plugin-proposal-optional-chaining": "^7.12.7",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-transform-flow-comments": "^7.12.1",
"@babel/plugin-transform-runtime": "^7.12.10",
"@babel/preset-env": "^7.12.11",
- "@babel/preset-flow": "^7.12.1",
"@babel/preset-react": "^7.12.10",
"@babel/preset-typescript": "^7.12.7",
"@babel/register": "^7.12.10",
"@babel/runtime": "^7.12.5",
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
"@principalstudio/html-webpack-inject-preload": "^1.2.7",
"@types/flux": "^3.1.9",
"@types/modernizr": "^3.5.3",
"@types/node": "^14.14.22",
- "@types/react": "^16.9",
- "@types/react-dom": "^16.9.10",
+ "@types/react": "^17.0.2",
+ "@types/react-dom": "^17.0.2",
"@types/sanitize-html": "^2.3.1",
+ "@typescript-eslint/eslint-plugin": "^4.17.0",
+ "@typescript-eslint/parser": "^4.17.0",
+ "allchange": "^1.0.3",
"autoprefixer": "^9.8.6",
- "babel-eslint": "^10.1.0",
"babel-jest": "^26.6.3",
"babel-loader": "^8.2.2",
- "canvas": "^2.6.1",
"chokidar": "^3.5.1",
"concurrently": "^5.3.0",
"cpx": "^1.5.0",
"css-loader": "^3.6.0",
+ "dotenv": "^10.0.0",
"eslint": "7.18.0",
- "eslint-config-matrix-org": "^0.2.0",
- "eslint-plugin-babel": "^5.3.1",
- "eslint-plugin-flowtype": "^5.2.0",
+ "eslint-config-google": "^0.14.0",
+ "eslint-plugin-matrix-org": "github:matrix-org/eslint-plugin-matrix-org#2306b3d4da4eba908b256014b979f1d3d43d2945",
"eslint-plugin-react": "^7.22.0",
"eslint-plugin-react-hooks": "^4.2.0",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
@@ -118,15 +122,14 @@
"json-loader": "^0.5.7",
"loader-utils": "^1.4.0",
"matrix-mock-request": "^1.2.3",
- "matrix-react-test-utils": "^0.2.2",
+ "matrix-react-test-utils": "^0.2.3",
"matrix-web-i18n": "github:matrix-org/matrix-web-i18n",
"mini-css-extract-plugin": "^0.12.0",
"minimist": "^1.2.5",
"mkdirp": "^1.0.4",
- "modernizr": "^3.11.4",
+ "modernizr": "^3.11.7",
"node-fetch": "^2.6.1",
"optimize-css-assets-webpack-plugin": "^5.0.4",
- "postcss-calc": "^7.0.5",
"postcss-easings": "^2.0.0",
"postcss-extend": "^1.0.5",
"postcss-hexrgba": "^2.0.1",
@@ -138,23 +141,27 @@
"postcss-scss": "^2.1.1",
"postcss-simple-vars": "^5.0.2",
"postcss-strip-inline-comments": "^0.1.5",
+ "react-refresh": "^0.10.0",
"rimraf": "^3.0.2",
"shell-escape": "^0.2.0",
"simple-proxy-agent": "^1.1.0",
+ "string-replace-loader": "2",
+ "style-loader": "2",
"stylelint": "^13.9.0",
+ "stylelint-config-standard": "^20.0.0",
+ "stylelint-scss": "^3.18.0",
"terser-webpack-plugin": "^2.3.8",
"typescript": "^4.1.3",
"webpack": "^4.46.0",
"webpack-cli": "^3.3.12",
- "webpack-dev-server": "^3.11.2"
- },
- "resolutions": {
- "**/@types/react": "^16.14"
+ "webpack-dev-server": "^3.11.2",
+ "worker-loader": "^2.0.0",
+ "worklet-loader": "^2.0.0"
},
"jest": {
"testEnvironment": "jest-environment-jsdom-sixteen",
"testMatch": [
- "/test/**/*-test.js"
+ "/test/**/*-test.[tj]s"
],
"setupFilesAfterEnv": [
"/node_modules/matrix-react-sdk/test/setupTests.js"
@@ -167,7 +174,14 @@
"^react$": "/node_modules/react",
"^react-dom$": "/node_modules/react-dom",
"^matrix-js-sdk$": "/node_modules/matrix-js-sdk/src",
- "^matrix-react-sdk$": "/node_modules/matrix-react-sdk/src"
+ "^matrix-react-sdk$": "/node_modules/matrix-react-sdk/src",
+ "decoderWorker\\.min\\.js": "/node_modules/matrix-react-sdk/__mocks__/empty.js",
+ "decoderWorker\\.min\\.wasm": "/node_modules/matrix-react-sdk/__mocks__/empty.js",
+ "waveWorker\\.min\\.js": "/node_modules/matrix-react-sdk/__mocks__/empty.js",
+ "context-filter-polyfill": "/node_modules/matrix-react-sdk/__mocks__/empty.js",
+ "FontManager.ts": "/node_modules/matrix-react-sdk/__mocks__/FontManager.js",
+ "workers/(.+)\\.worker\\.ts": "/node_modules/matrix-react-sdk/__mocks__/workerMock.js",
+ "RecorderWorklet": "/node_modules/matrix-react-sdk/__mocks__/empty.js"
},
"transformIgnorePatterns": [
"/node_modules/(?!matrix-js-sdk).+$",
diff --git a/release_config.yaml b/release_config.yaml
index 49d7ccd519b..4d207a32d89 100644
--- a/release_config.yaml
+++ b/release_config.yaml
@@ -1 +1,4 @@
signing_id: releases@riot.im
+subprojects:
+ matrix-react-sdk:
+ includeByDefault: true
diff --git a/res/decoder-ring/index.html b/res/decoder-ring/index.html
index 9984815f01e..0b47e2b44df 100644
--- a/res/decoder-ring/index.html
+++ b/res/decoder-ring/index.html
@@ -11,7 +11,7 @@
-
+
diff --git a/scripts/copy-res.js b/scripts/copy-res.js
index bd06e2e9e16..297e905b527 100755
--- a/scripts/copy-res.js
+++ b/scripts/copy-res.js
@@ -69,7 +69,7 @@ const COPY_LIST = [
["res/vector-icons/**", "webapp/vector-icons"],
["res/decoder-ring/**", "webapp/decoder-ring"],
["node_modules/matrix-react-sdk/res/media/**", "webapp/media"],
- ["node_modules/olm/olm_legacy.js", "webapp", { directwatch: 1 }],
+ ["node_modules/@matrix-org/olm/olm_legacy.js", "webapp", { directwatch: 1 }],
["./config.json", "webapp", { directwatch: 1 }],
["contribute.json", "webapp"],
];
diff --git a/scripts/fetch-develop.deps.sh b/scripts/fetch-develop.deps.sh
index 0625cec897d..421656ed940 100755
--- a/scripts/fetch-develop.deps.sh
+++ b/scripts/fetch-develop.deps.sh
@@ -76,7 +76,7 @@ dodep matrix-org matrix-js-sdk
pushd matrix-js-sdk
yarn link
-yarn install
+yarn install --pure-lockfile
popd
yarn link matrix-js-sdk
@@ -90,7 +90,7 @@ dodep matrix-org matrix-react-sdk
pushd matrix-react-sdk
yarn link
yarn link matrix-js-sdk
-yarn install
+yarn install --pure-lockfile
yarn reskindex
popd
diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts
index 68b85d6a84f..521150648a2 100644
--- a/src/@types/global.d.ts
+++ b/src/@types/global.d.ts
@@ -15,7 +15,7 @@ limitations under the License.
*/
import "matrix-react-sdk/src/@types/global"; // load matrix-react-sdk's type extensions first
-import type {Renderer} from "react-dom";
+import type { Renderer } from "react-dom";
type ElectronChannel =
"app_onAction" |
diff --git a/src/async-components/structures/CompatibilityView.tsx b/src/async-components/structures/CompatibilityView.tsx
index d8b5f0be8d3..75cc8fea2e4 100644
--- a/src/async-components/structures/CompatibilityView.tsx
+++ b/src/async-components/structures/CompatibilityView.tsx
@@ -27,7 +27,7 @@ interface IProps {
}
const CompatibilityView: React.FC = ({ onAccept }) => {
- const {brand, mobileBuilds} = SdkConfig.get();
+ const { brand, mobileBuilds } = SdkConfig.get();
let ios = null;
const iosCustomUrl = mobileBuilds?.ios;
@@ -71,7 +71,7 @@ const CompatibilityView: React.FC = ({ onAccept }) => {
android = [];
}
- let mobileHeader =
);
diff --git a/src/components/views/auth/VectorAuthHeaderLogo.tsx b/src/components/views/auth/VectorAuthHeaderLogo.tsx
index d3bf32341b1..976bd9a2f70 100644
--- a/src/components/views/auth/VectorAuthHeaderLogo.tsx
+++ b/src/components/views/auth/VectorAuthHeaderLogo.tsx
@@ -19,7 +19,7 @@ import React from 'react';
import SdkConfig from 'matrix-react-sdk/src/SdkConfig';
export default class VectorAuthHeaderLogo extends React.PureComponent {
- static replaces = 'AuthHeaderLogo'
+ static replaces = 'AuthHeaderLogo';
render() {
const brandingConfig = SdkConfig.get().branding;
diff --git a/src/components/views/auth/VectorAuthPage.tsx b/src/components/views/auth/VectorAuthPage.tsx
index b50c401f995..c1ccdcf9a06 100644
--- a/src/components/views/auth/VectorAuthPage.tsx
+++ b/src/components/views/auth/VectorAuthPage.tsx
@@ -19,7 +19,7 @@ import * as sdk from 'matrix-react-sdk/src/index';
import SdkConfig from 'matrix-react-sdk/src/SdkConfig';
export default class VectorAuthPage extends React.PureComponent {
- static replaces = 'AuthPage'
+ static replaces = 'AuthPage';
static welcomeBackgroundUrl;
diff --git a/src/favicon.ts b/src/favicon.ts
index a7f4d15bd25..bec13c78662 100644
--- a/src/favicon.ts
+++ b/src/favicon.ts
@@ -57,7 +57,7 @@ export default class Favicon {
private readyCb = () => {};
constructor(params: Partial = {}) {
- this.params = {...defaults, ...params};
+ this.params = { ...defaults, ...params };
this.icons = Favicon.getIcons();
// create work canvas
@@ -125,7 +125,7 @@ export default class Favicon {
}
private circle(n: number | string, opts?: Partial) {
- const params = {...this.params, ...opts};
+ const params = { ...this.params, ...opts };
const opt = this.options(n, params);
let more = false;
@@ -214,7 +214,7 @@ export default class Favicon {
if (!this.isReady) {
this.readyCb = () => {
this.badge(content, opts);
- }
+ };
return;
}
diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json
index 44758f656e8..7f97098be2f 100644
--- a/src/i18n/strings/ar.json
+++ b/src/i18n/strings/ar.json
@@ -32,5 +32,6 @@
"I understand the risks and wish to continue": "أفهم المخاطرة وأود المواصلة",
"Go to element.io": "انتقل إلى element.io",
"Failed to start": "فشل البدء",
- "Powered by Matrix": "تدعمه «ماترِكس»"
+ "Powered by Matrix": "تدعمه «ماترِكس»",
+ "Use %(brand)s on mobile": "استعمل %(brand)s على المحمول"
}
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index b8d9db3e384..b2d0bd2d486 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -32,5 +32,6 @@
"Open": "Отвори",
"Your browser can't run %(brand)s": "Браузърът ви не може да изпълни %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s използва модерни функции на браузъра, които не се поддържат от Вашия.",
- "Powered by Matrix": "Базирано на Matrix"
+ "Powered by Matrix": "Базирано на Matrix",
+ "Use %(brand)s on mobile": "Използвайте %(brand)s на мобилен телефон"
}
diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json
index 0cae81931ad..1a6e933ac0c 100644
--- a/src/i18n/strings/ca.json
+++ b/src/i18n/strings/ca.json
@@ -32,5 +32,7 @@
"I understand the risks and wish to continue": "Entenc els riscos i vull continuar",
"Go to element.io": "Vés a element.io",
"Failed to start": "Ha fallat l'inici",
- "Missing indexeddb worker script!": "Falta l'script del treballador indexeddb!"
+ "Missing indexeddb worker script!": "Falta l'script del treballador indexeddb!",
+ "Use %(brand)s on mobile": "Utilitza %(brand)s al mòbil",
+ "Switch to space by number": "Canvia d'espai per número"
}
diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json
index 7bff98988d7..e6a15d3cdf3 100644
--- a/src/i18n/strings/cs.json
+++ b/src/i18n/strings/cs.json
@@ -32,5 +32,7 @@
"Failed to start": "Nepovedlo se nastartovat",
"Powered by Matrix": "Běží na Matrixu",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s pro desktopový počítač (%(platformName)s)",
- "Missing indexeddb worker script!": "Nenačetl se skript spravující indexdb!"
+ "Missing indexeddb worker script!": "Nenačetl se skript spravující indexdb!",
+ "Use %(brand)s on mobile": "Používání %(brand)s v mobilních zařízeních",
+ "Switch to space by number": "Přepnout na prostor podle čísla"
}
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 0052218a9fc..51d80542510 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -2,9 +2,9 @@
"powered by Matrix": "betrieben mit Matrix",
"Dismiss": "Ausblenden",
"Unknown device": "Unbekanntes Gerät",
- "You need to be using HTTPS to place a screen-sharing call.": "Du musst HTTPS nutzen um einen Anruf mit Bildschirmfreigabe durchzuführen.",
+ "You need to be using HTTPS to place a screen-sharing call.": "Du musst HTTPS nutzen, um einen Anruf mit Bildschirmfreigabe durchzuführen.",
"Welcome to Element": "Willkommen bei Element",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- & Kollaborationslösung mittels [matrix]",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- & Kollaborationslösung basierend auf [matrix]",
"Sign In": "Anmelden",
"Create Account": "Konto erstellen",
"Explore rooms": "Räume erkunden",
@@ -33,5 +33,6 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s verwendet erweiterte Browserfunktionen, die von deinem Browser nicht unterstützt werden.",
"Your browser can't run %(brand)s": "Dein Browser kann %(brand)s nicht ausführen",
"Powered by Matrix": "Betrieben mit Matrix",
- "Use %(brand)s on mobile": "Verwende %(brand)s auf dem Handy"
+ "Use %(brand)s on mobile": "Verwende %(brand)s am Handy",
+ "Switch to space by number": "Zum n-ten Space wechseln"
}
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 892ab66cad1..f5e220b36aa 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1,5 +1,4 @@
{
- "Missing indexeddb worker script!": "Missing indexeddb worker script!",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.",
"Invalid configuration: no default server specified.": "Invalid configuration: no default server specified.",
"Your Element is misconfigured": "Your Element is misconfigured",
@@ -11,6 +10,7 @@
"Download Completed": "Download Completed",
"Open": "Open",
"Dismiss": "Dismiss",
+ "Switch to space by number": "Switch to space by number",
"Open user settings": "Open user settings",
"Previous/next recently visited room or community": "Previous/next recently visited room or community",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json
index 8b47936fbc5..bb955a59d18 100644
--- a/src/i18n/strings/en_US.json
+++ b/src/i18n/strings/en_US.json
@@ -32,5 +32,6 @@
"Unable to load config file: please refresh the page to try again.": "Unable to load config file: please refresh the page to try again.",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.",
"Your Element is misconfigured": "Your Element is misconfigured",
- "Missing indexeddb worker script!": "Missing indexeddb worker script!"
+ "Missing indexeddb worker script!": "Missing indexeddb worker script!",
+ "Switch to space by number": "Switch to space by number"
}
diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json
index 89edcd1c38d..8e800e3f59c 100644
--- a/src/i18n/strings/eo.json
+++ b/src/i18n/strings/eo.json
@@ -32,5 +32,7 @@
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Via agordaro de Elemento enhavas nevalidajn datumojn de JSON. Bonvolu korekti la problemon kaj aktualigi la paĝon.",
"Your browser can't run %(brand)s": "Via foliumilo ne povas ruli %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s uzas specialajn funkciojn de foliumilo, kiujn via nuna foliumilo ne subtenas.",
- "Powered by Matrix": "Povigata de Matrix"
+ "Powered by Matrix": "Povigata de Matrix",
+ "Use %(brand)s on mobile": "Uzi %(brand)s telefone",
+ "Switch to space by number": "Baskuli al aro laŭ numero"
}
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index ff1f8b51a3d..8bbfe59aef0 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -33,5 +33,6 @@
"Your browser can't run %(brand)s": "Tu navegador no es compatible con %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funciones avanzadas que su navegador actual no soporta.",
"Powered by Matrix": "Funciona con Matrix",
- "Use %(brand)s on mobile": "Usar %(brand)s en modo móvil"
+ "Use %(brand)s on mobile": "Usar %(brand)s en modo móvil",
+ "Switch to space by number": "Cambiar a espacio por número"
}
diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json
index acaaf562b5c..4a9eb8450a9 100644
--- a/src/i18n/strings/et.json
+++ b/src/i18n/strings/et.json
@@ -33,5 +33,6 @@
"Your browser can't run %(brand)s": "%(brand)s ei toimi sinu brauseris",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s kasutab mitmeid uusi brauseri-põhiseid tehnoloogiaid, mis ei ole veel sinu veebibrauseris toetatud.",
"Powered by Matrix": "Põhineb Matrix'il",
- "Use %(brand)s on mobile": "Kasuta %(brand)s rakendust nutiseadmes"
+ "Use %(brand)s on mobile": "Kasuta %(brand)s rakendust nutiseadmes",
+ "Switch to space by number": "Vaata kogukonnakeskust tema numbri alusel"
}
diff --git a/src/i18n/strings/fa.json b/src/i18n/strings/fa.json
index 2b504cf3820..710d5f23d7f 100644
--- a/src/i18n/strings/fa.json
+++ b/src/i18n/strings/fa.json
@@ -26,11 +26,13 @@
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s%(browserName)s، %(osName)s",
"Unsupported browser": "مرورگر پشتبانی نشده",
"Your browser can't run %(brand)s": "مرورگر شما نمیتواند %(brand)s را اجرا کند",
- "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s از ویژگی های پیشرفته مرورگر استفاده میکند که که در مرورگر فعلی شما پشتیبانی نمیشوند.",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s از ویژگی های پیشرفته مرورگر استفاده میکند که در مرورگر فعلی شما پشتیبانی نمیشوند.",
"Please install Chrome, Firefox, or Safari for the best experience.": "لطفا برای تجربه بهتر کروم، فایرفاکس، یا سافاری را نصب کنید.",
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "شما میتوانید با مرورگر فعلی خود ادامه دهید، اما ممکن است برخی یا کل ویژگی ها کار نکنند و نگاه و احساس از برنامه ممکن است درست نباشد.",
"I understand the risks and wish to continue": "از خطرات این کار آگاهم و مایلم که ادامه بدهم",
"Go to element.io": "برو به element.io",
"Failed to start": "مشکل در آغاز",
- "Powered by Matrix": "قدرتگرفته از ماتریکس"
+ "Powered by Matrix": "قدرتگرفته از ماتریکس",
+ "Use %(brand)s on mobile": "استفاده از %(brand)s روی گوشی",
+ "Switch to space by number": "تغییر به فضا با شماره"
}
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index a64ffb3c9e3..675e46f6526 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -33,5 +33,6 @@
"Your browser can't run %(brand)s": "Votre navigateur ne peut pas exécuter %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s nécessite des fonctionnalités avancées que votre navigateur actuel ne prend pas en charge.",
"Powered by Matrix": "Propulsé par Matrix",
- "Use %(brand)s on mobile": "Utiliser %(brand)s sur téléphone"
+ "Use %(brand)s on mobile": "Utiliser %(brand)s sur téléphone",
+ "Switch to space by number": "Afficher un espace par son numéro"
}
diff --git a/src/i18n/strings/fy.json b/src/i18n/strings/fy.json
new file mode 100644
index 00000000000..fa55c9dc5d5
--- /dev/null
+++ b/src/i18n/strings/fy.json
@@ -0,0 +1,36 @@
+{
+ "Sign In": "Ynskriuwe",
+ "Failed to start": "Iepenjen mislearre",
+ "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Jo kinne fierder gean mei jo eigen browser, mar guon funksjes kinne net wurkje en uterlik kin de applikaasje der ôfwikend út sjen.",
+ "Please install Chrome, Firefox, or Safari for the best experience.": "Graach Chrome, Firefox, ofSafari ynstallearre foar de beste ûnderfining.",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s brûkt avansearre browser funksjes dy net stipe wurde troch de browser dy jo no brûke.",
+ "Powered by Matrix": "Fersoarge troch Matrix",
+ "%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
+ "Previous/next recently visited room or community": "Foarige/Folgjende resintlik besochte keamer as mienskip",
+ "Switch to space by number": "Wikselje fan romte mei nûmer",
+ "Unexpected error preparing the app. See console for details.": "Ûnferwachte flater by it klearmeitsjen fan de applikaasje. Sjoch yn'e konsole foar details.",
+ "The message from the parser is: %(message)s": "It berjocht fan de ferwurker is: %(message)s",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Jo Element konfiguraasje hat ûnjildige JSON. Nei dat jo dit oplost ha kin dizze side ferfarske wurde.",
+ "Use %(brand)s on mobile": "Brûk %(brand)s op mobyl",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Desintralisearre, fersifere chat & gearwurking fersoarge troch [matrix]",
+ "You need to be using HTTPS to place a screen-sharing call.": "Jo moatte HTTPS brûke om te skiljen en jo skermynhâld te dielen.",
+ "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
+ "Go to your browser to complete Sign In": "Gean nei jo browser om it ynskriuwen ôf te rûnen",
+ "Download Completed": "Klear mei Delheljen",
+ "Unable to load config file: please refresh the page to try again.": "Kin konfiguraasje bestân net lade: ferfarskje de side en probearje it noch ris.",
+ "Open user settings": "Brûkersynstellingen iepenje",
+ "Dismiss": "Negearre",
+ "Explore rooms": "Keamers ûntdekke",
+ "Create Account": "Account Meitsje",
+ "Welcome to Element": "Wolkom by Element",
+ "I understand the risks and wish to continue": "Ik begryp de risiko's en wol graach fierder gean",
+ "Go to element.io": "Gean nei element.io",
+ "Your browser can't run %(brand)s": "Jo browser kin %(brand)s net útfiere",
+ "Unsupported browser": "Net stipe browser",
+ "Unknown device": "Ûnbekend apparaat",
+ "Open": "Iepenje",
+ "Invalid JSON": "Ûnjildiche JSON",
+ "Your Element is misconfigured": "Jo Element is net goed konfigurearre",
+ "Invalid configuration: no default server specified.": "Ûnjildiche konfiguraasje: gjin standert tsjinner selektearre.",
+ "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ûnjildige konfiguraasje: kin allinnich kieze út default_server_config, default_server_name, as default_hs_url."
+}
diff --git a/src/i18n/strings/ga.json b/src/i18n/strings/ga.json
index 8118d866e6a..054105a59c3 100644
--- a/src/i18n/strings/ga.json
+++ b/src/i18n/strings/ga.json
@@ -32,5 +32,7 @@
"Powered by Matrix": "Cumhachtaithe ag Matrix",
"Go to element.io": "Téigh go element.io",
"Open user settings": "Oscail socruithe úsáideora",
- "Open": "Oscail"
+ "Open": "Oscail",
+ "Use %(brand)s on mobile": "Úsáid %(brand)s ar guthán póca",
+ "Switch to space by number": "Athraigh go spás de réir uimhreach"
}
diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json
index 17b229a3517..c9b18d3cf2e 100644
--- a/src/i18n/strings/gl.json
+++ b/src/i18n/strings/gl.json
@@ -33,5 +33,6 @@
"Your browser can't run %(brand)s": "O teu navegador non pode executar %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s utiliza características avanzadas do navegador que non están dispoñibles no teu navegador.",
"Powered by Matrix": "Funciona grazas a Matrix",
- "Use %(brand)s on mobile": "Utiliza %(brand)s no móbil"
+ "Use %(brand)s on mobile": "Utiliza %(brand)s no móbil",
+ "Switch to space by number": "Cambiar a espazo polo número"
}
diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json
index 59fbea28394..b90bada916a 100644
--- a/src/i18n/strings/he.json
+++ b/src/i18n/strings/he.json
@@ -4,20 +4,20 @@
"Unknown device": "מכשיר לא ידוע",
"You need to be using HTTPS to place a screen-sharing call.": "עליך להשתמש ב HTTPS בכדי לבצע שיחת ווידאו משותפת.",
"Welcome to Element": "ברוכים הבאים ל Element",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "צ'ט מוצפן & ושת\"פ נעשה ע\"י ה [matrix]",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "צא'ט וכלי שיתוף פעולה מבוזר ומוצפן & מופעל באמצעות [matrix]",
"Invalid JSON": "JSON לא חוקי",
- "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "תצורה שגויה: ניתן לציין רק אחד מהבאים, default_server_config, default_server_name, או default_hs_url.",
+ "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "תצורה שגויה: ניתן לציין רק אחד מהערכים הבאים, default_server_config, default_server_name, או default_hs_url.",
"Invalid configuration: no default server specified.": "תצורה שגויה: לא צוין שרת ברירת מחדל.",
"Open user settings": "פתח הגדרות משתמש",
"Go to your browser to complete Sign In": "עבור לדפדפן להמשך ההתחברות",
- "Explore rooms": "שיטוט בחדרים",
+ "Explore rooms": "גלה חדרים",
"Create Account": "יצירת חשבון",
"Sign In": "כניסה",
"Previous/next recently visited room or community": "הבא\\קודם חדרים וקהילות שביקרתם לאחרונה",
"Open": "פתח",
"Download Completed": "ההורדה הושלמה",
- "Unexpected error preparing the app. See console for details.": "שגיאה לא צפויה במהלך הכנת האפליקציה. ראו קונסול לפרטים נוספים.",
- "Unable to load config file: please refresh the page to try again.": "לא יכול לקרוא את קובץ ההגדרות: אנא אתחלו את הדף לנסות שנית.",
+ "Unexpected error preparing the app. See console for details.": "שגיאה לא צפויה במהלך טעינת האפליקציה. ראו קונסול לפרטים נוספים.",
+ "Unable to load config file: please refresh the page to try again.": "לא ניתן לטעון את קובץ ההגדרות: יש לרענן את הדף כדי לנסות שנית.",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "האלמנט מכיל הגדרת JSON שגויה, אנא תקנו את הבעיה ואתחלו את הדף.",
"Your Element is misconfigured": "האלמנט מוגדר באופן שגוי",
"Go to element.io": "חזור לאתר הראשי: element.io",
@@ -31,6 +31,7 @@
"Powered by Matrix": "מופעל על ידי מטריקס",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s שולחן עבודה %(platformName)s",
- "The message from the parser is: %(message)s": "ההודעה מהניתוח היא: %(message)s",
- "Missing indexeddb worker script!": "סקריפט indexeddb worker חסר!"
+ "The message from the parser is: %(message)s": "ההודעה מהמנתח היא: %(message)s",
+ "Missing indexeddb worker script!": "סקריפט indexeddb worker חסר!",
+ "Switch to space by number": "עבור אל 'Space' על פי מספרו"
}
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 7f908795494..a0785675c97 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -33,5 +33,6 @@
"Your browser can't run %(brand)s": "A böngészője nem tudja futtatni ezt: %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s speciális böngészőfunkciókat használ, amelyeket a jelenlegi böngészője nem támogat.",
"Powered by Matrix": "A gépházban: Matrix",
- "Use %(brand)s on mobile": "Mobilon használd ezt: %(brand)s"
+ "Use %(brand)s on mobile": "Mobilon használd ezt: %(brand)s",
+ "Switch to space by number": "Tér váltás számmal"
}
diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json
index 1b1b095415c..71dab68afc3 100644
--- a/src/i18n/strings/id.json
+++ b/src/i18n/strings/id.json
@@ -7,5 +7,32 @@
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Obrolan terenkripsi, terdesentralisasi & kolaborasi didukung oleh [matrix]",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfigurasi Element Anda mengandung JSON yang tidak valid. Mohon perbaiki masalahnya dan muat ulang halaman nya.",
"Invalid configuration: no default server specified.": "Konfigurasi tidak valid: server default belum ditentukan.",
- "Missing indexeddb worker script!": "Tidak ada script worker indexeddb!"
+ "Missing indexeddb worker script!": "Tidak ada script worker indexeddb!",
+ "Explore rooms": "Jelajahi ruang",
+ "Create Account": "Buat Akun",
+ "Switch to space by number": "Beralih ke ruang dengan nomor",
+ "Go to your browser to complete Sign In": "Buka browser Anda untuk menyelesaikan Masuk",
+ "Sign In": "Masuk",
+ "Failed to start": "Gagal untuk memulai",
+ "Go to element.io": "Buka element.io",
+ "I understand the risks and wish to continue": "Saya memahami risikonya dan ingin melanjutkan",
+ "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Anda dapat lanjut menggunakan browser Anda saat ini, tetapi beberapa atau semua fitur mungkin tidak berfungsi dan tampilan serta nuansa aplikasi mungkin salah.",
+ "Please install Chrome, Firefox, or Safari for the best experience.": "Mohon instal Chrome, Firefox, atau Safari untuk pengalaman terbaik.",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s menggunakan fitur browser lanjutan yang tidak didukung oleh browser Anda saat ini.",
+ "Your browser can't run %(brand)s": "Browser Anda tidak bisa menjalankan %(brand)s",
+ "Unsupported browser": "Browser tidak didukung",
+ "Use %(brand)s on mobile": "Gunakan %(brand)s di ponsel",
+ "Powered by Matrix": "Didukung oleh Matrix",
+ "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
+ "%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
+ "Previous/next recently visited room or community": "Ruangan atau komunitas yang baru saja dikunjungi sebelum/berikutnya",
+ "Open user settings": "Buka pengaturan pengguna",
+ "Open": "Buka",
+ "Download Completed": "Unduh Selesai",
+ "Unexpected error preparing the app. See console for details.": "Kesalahan tak terduga saat menyiapkan aplikasi. Lihat konsol untuk detail.",
+ "Unable to load config file: please refresh the page to try again.": "Tidak bisa muat file konfigurasi: mohon segarkan halaman untuk mencoba lagi.",
+ "Invalid JSON": "JSON tidak valid",
+ "The message from the parser is: %(message)s": "Pesan dari pengurai adalah: %(message)s",
+ "Your Element is misconfigured": "Element Anda salah dikonfigurasi",
+ "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Konfigurasi tidak valid: hanya bisa menentukan satu dari default_server_config, default_server_name, atau default_hs_url."
}
diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json
index 23dd043c840..7dcd7cb429b 100644
--- a/src/i18n/strings/is.json
+++ b/src/i18n/strings/is.json
@@ -32,5 +32,6 @@
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Element stillingar þínar innihalda ógilda JSON. Vinsamlegast leiðréttu vandamálið og endurhladdu síðuna.",
"Your Element is misconfigured": "Element þitt er rangt stillt",
"Invalid configuration: no default server specified.": "Ógild stilling: enginn sjálfgefinn þjónn tilgreindur.",
- "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ógild stilling: getur aðeins tilgreint einn af default_server_config, default_server_name eða default_hs_url."
+ "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ógild stilling: getur aðeins tilgreint einn af default_server_config, default_server_name eða default_hs_url.",
+ "Use %(brand)s on mobile": "Nota %(brand)s í síma"
}
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index c14e74c63c5..4601f249f28 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -33,5 +33,6 @@
"Your browser can't run %(brand)s": "Il tuo browser non può eseguire %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funzionalità avanzate del browser che non sono supportate dal tuo browser attuale.",
"Powered by Matrix": "Offerto da Matrix",
- "Use %(brand)s on mobile": "Usa %(brand)s su mobile"
+ "Use %(brand)s on mobile": "Usa %(brand)s su mobile",
+ "Switch to space by number": "Passa allo spazio per numero"
}
diff --git a/src/i18n/strings/ka.json b/src/i18n/strings/ka.json
index b16781e89d9..5537dd78435 100644
--- a/src/i18n/strings/ka.json
+++ b/src/i18n/strings/ka.json
@@ -4,5 +4,28 @@
"Dismiss": "უარის თქმა",
"powered by Matrix": "Matrix-ზე დაფუძნებული",
"Welcome to Element": "კეთილი იყოს თქვენი მობრძანება Element-ზე",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "დეცენტრალიზებული, დაშიფრული ჩატი & კოლაბორაცია, დაფუძნებული [matrix]-ზე"
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "დეცენტრალიზებული, დაშიფრული ჩატი & კოლაბორაცია, დაფუძნებული [matrix]-ზე",
+ "Explore rooms": "ოთახების დათავლიერება",
+ "Failed to start": "ჩართვა ვერ მოხერხდა",
+ "Use %(brand)s on mobile": "გამოიყენე %(brand)s-ი მობილურზე",
+ "%(brand)s Desktop (%(platformName)s)": "%(brand)s დესკტოპი (%(platformName)s)",
+ "Unexpected error preparing the app. See console for details.": "მოულოდნელი ერორი აპლიკაციის შემზადებისას. იხილეთ კონსოლი დეტალებისთვის.",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "თქვენი Element-ის კონფიგურაცია შეიცავს მიუღებელ JSON-ს. გთხოვთ გადაჭრათ პრობლემა და დაარაფრეშოთ გვერდი.",
+ "Sign In": "შესვლა",
+ "Invalid configuration: no default server specified.": "არასწორი კონფიგურაცია: მთავარი სერვერი არ არის მითითებული.",
+ "Create Account": "ანგარიშის შექმნა",
+ "Go to element.io": "გადადი element.io-ზე",
+ "I understand the risks and wish to continue": "მესმის რისკები და მსურს გაგრძელება",
+ "Unsupported browser": "ბრაუზერი არ არის მხარდაჭერილი",
+ "Your browser can't run %(brand)s": "შენ ბრაუზერს არ შეუძლია გაუშვას %(brand)s-ი",
+ "Unable to load config file: please refresh the page to try again.": "კონფიგურაციის ფაილის ჩატვირთვა ვერ მოხერხდა: დაარეფრეშე გვერდი თავიდან საცდელად",
+ "Invalid JSON": "მიუღებელი JSON-ი",
+ "Your Element is misconfigured": "შენი Element-ი არასწორადაა კონფიგურირებული",
+ "Please install Chrome, Firefox, or Safari for the best experience.": "გთხოვთ დააინსტალოთ Chrome-ი, Firefox-ი, ან Safari საუკეთესო გამოცდილებისთვის.",
+ "Powered by Matrix": "მუშაობს Matrix-ის მეშვეობით",
+ "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
+ "Go to your browser to complete Sign In": "გახსენი ბრაუზერი Sign In-ის დასასრულებლად",
+ "Open user settings": "მომხმარებლების პარამეტრების გახსნა",
+ "Open": "გახსნა",
+ "Download Completed": "გადმოწერა დასრულებულია"
}
diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json
index a126234546c..fe4d237c341 100644
--- a/src/i18n/strings/lt.json
+++ b/src/i18n/strings/lt.json
@@ -32,5 +32,6 @@
"Your browser can't run %(brand)s": "Jūsų naršyklė negali paleisti %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s naudoja išplėstines naršyklės funkcijas, kurių jūsų dabartinė naršyklė nepalaiko.",
"Please install Chrome, Firefox, or Safari for the best experience.": "Geriausiam veikimui suinstaliuokite Chrome, Firefox, arba Safari.",
- "Powered by Matrix": "Veikia su Matrix"
+ "Powered by Matrix": "Veikia su Matrix",
+ "Use %(brand)s on mobile": "Naudoti %(brand)s mobiliajame telefone"
}
diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json
index 6268c3f37bd..b3afc2caf9a 100644
--- a/src/i18n/strings/lv.json
+++ b/src/i18n/strings/lv.json
@@ -1,36 +1,38 @@
{
- "Dismiss": "Aizvērt",
+ "Dismiss": "Aizvērt/atcelt",
"powered by Matrix": "Tiek darbināta ar Matrix",
"Unknown device": "Nezināma ierīce",
- "You need to be using HTTPS to place a screen-sharing call.": "Lai veiktu ekrāna kopīgošanas zvanu, nepieciešams izmantot HTTPS savienojumu.",
- "Welcome to Element": "Esiet laipni gaidīti Element",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizēta, šifrēta čata & kopdarbošanās sistēma uz [matrix] bāzes",
- "Sign In": "Pierakstīties",
+ "You need to be using HTTPS to place a screen-sharing call.": "Ekrāna kopīgošanai nepieciešams izmantot HTTPS savienojumu.",
+ "Welcome to Element": "Esiet laipni gaidīti Elementā",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizēta, šifrēta tērziņu & kopdarbības vide uz [matrix] bāzes",
+ "Sign In": "Ierakstīties",
"Create Account": "Izveidot kontu",
- "Explore rooms": "Pārlūkot istabas",
+ "Explore rooms": "Pārlūkot telpas",
"Unexpected error preparing the app. See console for details.": "Negaidīta kļūda, sagatavojot lietotni. Sīkāku informāciju skatiet konsolē.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Kļūdaina konfigurācija: var norādīt tikai vienu no parametriem default_server_config, default_server_name, vai default_hs_url.",
"Invalid configuration: no default server specified.": "Kļūdaina konfigurācija: nav norādīts noklusējuma serveris.",
- "The message from the parser is: %(message)s": "Ziņojums no parsētāja ir: %(message)s",
+ "The message from the parser is: %(message)s": "No pārsētāja ir ziņa: %(message)s",
"Invalid JSON": "Kļūdains JSON",
- "Unable to load config file: please refresh the page to try again.": "Neizdevās ielādēt konfigurācijas datni. Lūdzu, pārlādējiet lapu, lai mēģinātu vēlreiz.",
+ "Unable to load config file: please refresh the page to try again.": "Neizdevās ielādēt konfigurācijas failu. Lai atkārtotu mēģinātu, lūdzu pārlādējiet lapu.",
"Open user settings": "Atvērt lietotāja iestatījumus",
- "Go to your browser to complete Sign In": "Pārejiet uz pārlūku, lai pabeigtu pierakstīšanos",
+ "Go to your browser to complete Sign In": "Dodieties uz pārlūku, lai pabeigtu pierakstīšanos",
"Unsupported browser": "Neatbalstīts pārlūks",
- "Please install Chrome, Firefox, or Safari for the best experience.": "Labākajai izmantošanas pieredzei, lūdzu, instalējiet Chrome, Firefox vai Safari pārlūku.",
- "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Jūs varat turpināt lietot savu pašreizējo pārlūku, bet dažas vai visas funkcijas nestrādās, un lietotnes izskats var būt nepareizs.",
- "I understand the risks and wish to continue": "Es pieņemu riskus un vēlos turpināt",
- "Go to element.io": "Ej uz element.io",
+ "Please install Chrome, Firefox, or Safari for the best experience.": "Lai gūtu labāko lietošanas pieredzi, lūdzu, instalējiet Chromium, Firefox vai Safari pārlūku.",
+ "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Jūs varat turpināt lietot savu pašreizējo pārlūku, bet dažas funkcijas nestrādās un lietotnes izskats/saskarne var būt atspoguļoti nekorekti.",
+ "I understand the risks and wish to continue": "Es apzinos riskus un vēlos turpināt",
+ "Go to element.io": "Doties uz element.io",
"Failed to start": "Neizdevās palaist",
- "Powered by Matrix": "Darbojas uz Matrix",
- "Previous/next recently visited room or community": "Iepriekšējā/nākošā nesen apmeklētā istaba vai kopiena",
- "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s izmanto pārlūku papildus funkcijas, kas netiek atbalstītas šajā pārlūkā.",
+ "Powered by Matrix": "Griežas uz Matrix tehnoloģijas",
+ "Previous/next recently visited room or community": "Iepriekšējā/nākošā nesen apmeklētā telpa vai kopiena",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s izmanto pārlūku papildfunkcijas, kuras netiek atbalstītas šajā pārlūkā.",
"Your browser can't run %(brand)s": "Jūsu pārlūks nevar palaist %(brand)s",
"Missing indexeddb worker script!": "Trūkst indexeddb worker skripta!",
"Open": "Atvērt",
- "Download Completed": "Lejupielāde pabeigta",
- "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Jūsu Element konfigurācija satur kļūdainu JSON. Lūdzu, salabojiet problēmu un pārlādējiet lapu.",
+ "Download Completed": "Lejuplāde pabeigta",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Jūsu Element konfigurācija satur kļūdainu JSON. Lūdzu, izlabojiet un pārlādējiet lapu.",
"Your Element is misconfigured": "Jūsu Element ir nokonfigurēts kļūdaini",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
- "%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)"
+ "%(brand)s Desktop (%(platformName)s)": "%(brand)s Galdvirsmas (%(platformName)s)",
+ "Switch to space by number": "Pārslēgties uz atstarpi/tukšumu ar numuru",
+ "Use %(brand)s on mobile": "Mobilajā tālrunī izmanojiet %(brand)s"
}
diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json
index 9735fd732b4..8c94c2b0a88 100644
--- a/src/i18n/strings/nb_NO.json
+++ b/src/i18n/strings/nb_NO.json
@@ -32,5 +32,7 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s bruker avanserte nettleserfunksjoner som ikke støttes av din nåværende nettleser.",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Skrivebord (%(platformName)s)",
- "Open": "Åpne"
+ "Open": "Åpne",
+ "Use %(brand)s on mobile": "Bruk %(brand)s på mobil",
+ "Switch to space by number": "Bytt til plass etter nummer"
}
diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json
index c7250c046f7..ade8020f752 100644
--- a/src/i18n/strings/nl.json
+++ b/src/i18n/strings/nl.json
@@ -1,13 +1,13 @@
{
- "Dismiss": "Afwijzen",
+ "Dismiss": "Sluiten",
"powered by Matrix": "draait op Matrix",
"Unknown device": "Onbekend apparaat",
"You need to be using HTTPS to place a screen-sharing call.": "Oproepen met schermdelen vergen HTTPS.",
"Welcome to Element": "Welkom bij Element",
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Gedecentraliseerd en versleuteld chatten & samenwerken dankzij [matrix]",
- "Sign In": "Aanmelden",
- "Create Account": "Account aanmaken",
- "Explore rooms": "Gesprekken ontdekken",
+ "Sign In": "Inloggen",
+ "Create Account": "Registreren",
+ "Explore rooms": "Kamersgids",
"Unexpected error preparing the app. See console for details.": "Er is een onverwachte fout opgetreden bij het voorbereiden van de app. Zie de console voor details.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuratiefout: kan slechts één van default_server_config, default_server_name, of default_hs_url opgeven.",
"Invalid configuration: no default server specified.": "Configuratie ongeldig: geen standaardserver opgegeven.",
@@ -22,16 +22,17 @@
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Niet-ondersteunde browser",
"Please install Chrome, Firefox, or Safari for the best experience.": "Installeer Chrome, Firefox, of Safari voor de beste gebruikservaring.",
- "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Je kunt je huidige browser blijven gebruiken, maar sommige of alle functies zouden niet kunnen werken en de uitstraling van het programma kan verkeerd zijn.",
+ "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "U kunt uw huidige browser blijven gebruiken, maar sommige of alle functies zouden niet kunnen werken en de weergave van het programma kan verkeerd zijn.",
"I understand the risks and wish to continue": "Ik begrijp de risico's en wil verder gaan",
"Go to element.io": "Ga naar element.io",
"Failed to start": "Opstarten mislukt",
"Open": "Openen",
- "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Je Element configuratie bevat ongeldige JSON. Gelieve het probleem te corrigeren daarna de pagina te herladen.",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Uw Element configuratie bevat ongeldige JSON. Gelieve het probleem te corrigeren daarna de pagina te herladen.",
"Download Completed": "Download voltooid",
- "Your Element is misconfigured": "Je Element is verkeerd geconfigureerd",
- "Your browser can't run %(brand)s": "Je browser kan %(brand)s niet draaien",
- "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s gebruikt geavanceerde functies die niet ondersteund worden in je huidige browser.",
- "Powered by Matrix": "Gebruikt Matrix technologie",
- "Use %(brand)s on mobile": "Gebruik %(brand)s op uw mobiel"
+ "Your Element is misconfigured": "Uw Element is verkeerd geconfigureerd",
+ "Your browser can't run %(brand)s": "Uw browser kan %(brand)s niet starten",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s gebruikt geavanceerde functies die niet ondersteund worden in uw huidige browser.",
+ "Powered by Matrix": "Mogelijk gemaakt door Matrix",
+ "Use %(brand)s on mobile": "Gebruik %(brand)s op uw mobiel",
+ "Switch to space by number": "Wissel naar space per nummer"
}
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index 4c9329cf0ce..19f5e8e4554 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -32,5 +32,6 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s używa zaawansowanych funkcji przeglądarki, które nie są dostępne w twojej przeglądarce.",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfiguracja Elementa zawiera niepoprawny JSON. Popraw konfiguracje i odśwież stronę.",
"Your Element is misconfigured": "Element jest nieprawidłowo skonfigurowany",
- "Powered by Matrix": "Zasilane przez Matrix"
+ "Powered by Matrix": "Zasilane przez Matrix",
+ "Use %(brand)s on mobile": "Użyj %(brand)s w telefonie"
}
diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json
index 8f83d05c7cc..67dee8c0931 100644
--- a/src/i18n/strings/pt_BR.json
+++ b/src/i18n/strings/pt_BR.json
@@ -1,36 +1,38 @@
{
- "Dismiss": "Descartar",
+ "Dismiss": "Dispensar",
"powered by Matrix": "oferecido por Matrix",
- "Unknown device": "Aparelho desconhecido",
- "You need to be using HTTPS to place a screen-sharing call.": "Você precisa usar HTTPS para compartilhar a tela durante uma chamada.",
- "Welcome to Element": "Boas-vindas ao Element",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo construído com [matrix]",
- "Sign In": "Entrar",
+ "Unknown device": "Dispositivo desconhecido",
+ "You need to be using HTTPS to place a screen-sharing call.": "Você precisa estar usando HTTPS para começar uma chamada de compartilhamento de tela.",
+ "Welcome to Element": "Boas-vindas a Element",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat & colaboração descentralizados e encriptados powered by [matrix]",
+ "Sign In": "Fazer signin",
"Create Account": "Criar Conta",
"Explore rooms": "Explorar salas",
"The message from the parser is: %(message)s": "A mensagem do parser é: %(message)s",
"Invalid JSON": "JSON inválido",
- "Unexpected error preparing the app. See console for details.": "Erro inesperado preparando o aplicativo. Veja o console para mais detalhes.",
- "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuração inválida: você só pode especificar um valor dentre default_server_config, default_server_name, ou default_hs_url.",
- "Invalid configuration: no default server specified.": "Configuração inválida: servidor padrão não especificado.",
- "Unable to load config file: please refresh the page to try again.": "Não foi possível carregar o arquivo de configuração: por favor, atualize a página para tentar novamente.",
- "Download Completed": "Download concluído",
- "Open user settings": "Abrir configurações do usuário",
+ "Unexpected error preparing the app. See console for details.": "Erro inesperado preparando o app. Veja console para detalhes.",
+ "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuração inválida: só pode especificar um de default_server_config, default_server_name, ou default_hs_url.",
+ "Invalid configuration: no default server specified.": "Configuração inválida: nenhum servidor default especificado.",
+ "Unable to load config file: please refresh the page to try again.": "Incapaz de carregar arquivo de config: por favor atualize a página para tentar de novo.",
+ "Download Completed": "Download Completado",
+ "Open user settings": "Abrir configurações de usuária(o)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
- "Unsupported browser": "Navegador não suportado",
- "Please install Chrome, Firefox, or Safari for the best experience.": "Por favor, instale o Chrome, o Firefox ou o Safari para obter a melhor experiência de uso.",
- "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Você pode continuar usando o navegador atual, mas alguns dos recursos podem não funcionar e a aparência do aplicativo pode estar incorreta.",
- "I understand the risks and wish to continue": "Entendo os riscos e desejo continuar",
- "Go to element.io": "Vá para element.io",
- "Failed to start": "Falha ao iniciar",
- "Missing indexeddb worker script!": "O script indexeddb não foi encontrado!",
+ "Unsupported browser": "Browser insuportado",
+ "Please install Chrome, Firefox, or Safari for the best experience.": "Por favor instale Chrome, Firefox, ou Safari para a melhor experiência.",
+ "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Você pode continuar usando seu browser atual, mas alguma ou toda funcionalidade pode não funcionar e a aparência e sensação do aplicativo pode estar incorretas.",
+ "I understand the risks and wish to continue": "Eu entendo os riscos e desejo continuar",
+ "Go to element.io": "Ir para element.io",
+ "Failed to start": "Falha para iniciar",
+ "Missing indexeddb worker script!": "Worker script indexeddb faltando!",
"Open": "Abrir",
- "Previous/next recently visited room or community": "Anterior/Próxima sala ou comunidade visitada recentemente",
- "%(brand)s Desktop (%(platformName)s)": "%(brand)s para Computador (%(platformName)s)",
- "Go to your browser to complete Sign In": "Vá para o seu navegador para concluir o login",
- "Your Element is misconfigured": "Seu Element está desconfigurado",
- "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Sua configuração do Element contém JSON inválido. Por favor, corrija o problema e recarregue a página.",
- "Your browser can't run %(brand)s": "Seu navegador não consegue rodar o %(brand)s",
- "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa recursos avançados que não são suportados pelo seu navegador de internet atual.",
- "Powered by Matrix": "Construído com tecnologia Matrix"
+ "Previous/next recently visited room or community": "Anterior/próxima sala ou comunidade visitada recentemente",
+ "%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
+ "Go to your browser to complete Sign In": "Vá para seu browser para completar Sign In",
+ "Your Element is misconfigured": "Seu Element está malconfigurado",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Sua configuração de Element contém JSON inválido. Por favor corrija o problema e recarregue a página.",
+ "Your browser can't run %(brand)s": "Seu browser não consegue rodar %(brand)s",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funcionalidade de browser avançada que não é suportada por seu browser atual.",
+ "Powered by Matrix": "Powered by Matrix",
+ "Use %(brand)s on mobile": "Usar %(brand)s em celular",
+ "Switch to space by number": "Trocar para espaço por número"
}
diff --git a/src/i18n/strings/ro.json b/src/i18n/strings/ro.json
index 59571870a17..e64ff0dd0e9 100644
--- a/src/i18n/strings/ro.json
+++ b/src/i18n/strings/ro.json
@@ -6,7 +6,7 @@
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat decentralizat, criptat & colaborare propulsata de [matrix]",
"You need to be using HTTPS to place a screen-sharing call.": "Trebuie să folosești HTTPS pentru a plasa un apel de tip screen-sharing.",
"Sign In": "Autentificare",
- "Create Account": "Înregistare",
+ "Create Account": "Crează un cont",
"Explore rooms": "Explorează camerele",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuratie invalida: se poate specifica doar una dintre default_server_config, default_server_name, or default_hs_url.",
"Invalid JSON": "JSON invalid",
@@ -16,5 +16,23 @@
"Please install Chrome, Firefox, or Safari for the best experience.": "Instalati va rog Chrome, Firefox, or Safari pentru o experienta mai buna.",
"I understand the risks and wish to continue": "Inteleg riscul si doresc sa continui",
"Go to element.io": "Acceseaza element.io",
- "Failed to start": "Nu reuseste sa porneasca"
+ "Failed to start": "Nu reuseste sa porneasca",
+ "Your Element is misconfigured": "Element-ul tău este configurat necorespunzător",
+ "Missing indexeddb worker script!": "Scriptul de lucru indexddb lipsește!",
+ "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Poți continua să folosești browser-ul curent, însă aspectul și experiența câtorva sau tuturor funcțiilor poate fi incorectă.",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s folosește funcții avansate de browser ce nu sunt suportate de browser-ul dumneavoastră.",
+ "Your browser can't run %(brand)s": "Browserul tău nu poate rula %(brand)s",
+ "Use %(brand)s on mobile": "Folosește %(brand)s pe mobil",
+ "Powered by Matrix": "Bazat pe Matrix",
+ "Go to your browser to complete Sign In": "Du-te la browser pentru a finaliza Autentificarea",
+ "Previous/next recently visited room or community": "Precedenta/următoarea cameră sau comunitate vizitată recent",
+ "Open user settings": "Deschide setările de utilizator",
+ "Open": "Deschide",
+ "Download Completed": "Descărcare Completă",
+ "Unexpected error preparing the app. See console for details.": "Eroare neașteptată în aplicație. Vezi consola pentru detalii.",
+ "Unable to load config file: please refresh the page to try again.": "Nu se poate încărca fișierul de configurație: vă rugăm sa reîncărcați pagina și să încercați din nou.",
+ "The message from the parser is: %(message)s": "Mesajul de la parser este: %(message)s",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Configurația ta Element conține JSON invalid. Vă rugăm sa corectați problema și să reîncărcați pagina.",
+ "Invalid configuration: no default server specified.": "Configurație invalidă: niciun server implicit specificat.",
+ "Switch to space by number": "Comută spațiul folosind un număr"
}
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index 361cd53e9dd..b6fdd56ff7a 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -33,5 +33,6 @@
"Your browser can't run %(brand)s": "Ваш браузер не может запустить %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s использует расширенные возможности, которые не поддерживаются вашим браузером.",
"Powered by Matrix": "На технологии Matrix",
- "Use %(brand)s on mobile": "Воспользуйтесь %(brand)s на мобильном телефоне"
+ "Use %(brand)s on mobile": "Воспользуйтесь %(brand)s на мобильном телефоне",
+ "Switch to space by number": "Переключение на пространство по номеру"
}
diff --git a/src/i18n/strings/si.json b/src/i18n/strings/si.json
index 4ed8b51092d..e1062ecafcc 100644
--- a/src/i18n/strings/si.json
+++ b/src/i18n/strings/si.json
@@ -4,5 +4,15 @@
"Welcome to Element": "ඉලමන්ට් වෙත සාදරයෙන් පිළිගනිමු",
"Open": "විවෘත කරන්න",
"Powered by Matrix": "මැට්රික්ස් මඟින් බලගන්වා ඇත",
- "Sign In": "පිවිසෙන්න"
+ "Sign In": "පිවිසෙන්න",
+ "Dismiss": "ඉවතලන්න",
+ "Explore rooms": "කාමර බලන්න",
+ "Create Account": "ගිණුමක් සාදන්න",
+ "Failed to start": "ඇරඹීමට අපොහොසත් විය",
+ "Go to element.io": "element.io වෙත යන්න",
+ "Your browser can't run %(brand)s": "ඔබගේ අතිරික්සුවට %(brand)s ධාවනය කළ නොහැකිය",
+ "Unsupported browser": "සහය නොදක්වන අතිරික්සුව කි",
+ "Go to your browser to complete Sign In": "පිවිසීම සම්පූර්ණ කිරීමට ඔබගේ අතිරික්සුව වෙත යන්න",
+ "Download Completed": "බාගැනීම සම්පූර්ණයි",
+ "Open user settings": "පරිශීලක සැකසුම් විවෘත කරන්න"
}
diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json
index de1b035090d..6926859b999 100644
--- a/src/i18n/strings/sq.json
+++ b/src/i18n/strings/sq.json
@@ -33,5 +33,6 @@
"Your browser can't run %(brand)s": "Shfletuesi juaj s’mund të xhirojë %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s përdor veçori të thelluara të shfletuesit, të cilat shfletuesi juaj i tanishëm s’i mbulon.",
"Powered by Matrix": "Bazuar në Matrix",
- "Use %(brand)s on mobile": "Përdor %(brand)s në celular"
+ "Use %(brand)s on mobile": "Përdor %(brand)s në celular",
+ "Switch to space by number": "Kalo te hapësira me numrin"
}
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 3bb712a9f05..6c137bee40c 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -33,5 +33,6 @@
"Powered by Matrix": "Drivs av Matrix",
"Your browser can't run %(brand)s": "Din webbläsare kan inte köra %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s använder avancerade webbläsarfunktioner som inte stöds av din aktuella webbläsare.",
- "Use %(brand)s on mobile": "Använd %(brand)s på mobilen"
+ "Use %(brand)s on mobile": "Använd %(brand)s på mobilen",
+ "Switch to space by number": "Byt till utrymme med nummer"
}
diff --git a/src/i18n/strings/ta.json b/src/i18n/strings/ta.json
index 6e6f4725e04..3f250b0dd91 100644
--- a/src/i18n/strings/ta.json
+++ b/src/i18n/strings/ta.json
@@ -1,16 +1,37 @@
{
"Dismiss": "நீக்கு",
"powered by Matrix": "Matrix-ஆல் ஆனது",
- "Unknown device": "தெரியாத கருவி",
- "You need to be using HTTPS to place a screen-sharing call.": "நீங்கள் திரைபகிர்வு அழைப்பை மேற்க்கொள்ள HTTPS-ஐ பயன்படுத்த வேண்டும்.",
- "Welcome to Element": "Element -ற்க்கு வரவேற்க்கிறோம்",
+ "Unknown device": "அறியப்படாத சாதனம்",
+ "You need to be using HTTPS to place a screen-sharing call.": "நீங்கள் திரைபகிர்வு அழைப்பை மேற்க்கொள்ள HTTPS ஐ பயன்படுத்த வேண்டும்.",
+ "Welcome to Element": "எலிமெண்டிற்க்கு வரவேற்க்கிறோம்",
"The message from the parser is: %(message)s": "பாகுபடுத்தி அனுப்பிய செய்தி: %(message)s",
"Invalid JSON": "தவறான JSON",
- "Unexpected error preparing the app. See console for details.": "பயன்பாட்டைத் தயாரிப்பதில் எதிர்பாராத பிழை. விவரங்களுக்கு console ஐப் பார்க்கவும்.",
+ "Unexpected error preparing the app. See console for details.": "பயன்பாட்டைத் தயார் செய்வதில் எதிர்பாராத பிழை. விவரங்களுக்கு console ஐப் பார்க்கவும்.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "தவறான உள்ளமைவு: default_server_config, default_server_name அல்லது default_hs_url இல் ஒன்றை மட்டுமே குறிப்பிட முடியும்.",
"Invalid configuration: no default server specified.": "தவறான உள்ளமைவு: இயல்புநிலை சேவையகம் குறிப்பிடப்படவில்லை.",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "[matrix] ஆல் இயக்கப்படும் பரவலாக்கப்பட்ட, மறைகுறியாக்கப்பட்ட அரட்டை & ஒத்துழைப்பு",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "[matrix] மூலம் இயக்கப்படும் பரவலாக்கப்பட்ட, மறைகுறியாக்கப்பட்ட அரட்டை பயன்பாட்டு",
"Sign In": "உள்நுழைக",
"Create Account": "உங்கள் கணக்கை துவங்குங்கள்",
- "Explore rooms": "அறைகளை ஆராயுங்கள்"
+ "Explore rooms": "அறைகளை ஆராயுங்கள்",
+ "Missing indexeddb worker script!": "indexeddb வேலையாளி குறியீட்டை காணவில்லை!",
+ "Powered by Matrix": "மேட்ரிக்ஸ் மூலம் இயக்கப்படுகிறது",
+ "Previous/next recently visited room or community": "முந்தைய/அடுத்த சமீபத்தில் பார்வையிட்ட அறை அல்லது சமூகம்",
+ "Failed to start": "துவங்குவதில் தோல்வி",
+ "Go to element.io": "element.io க்குச் செல்லவும்",
+ "I understand the risks and wish to continue": "நான் அபாயங்களைப் புரிந்துகொண்டு தொடர விரும்புகிறேன்",
+ "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "உங்கள் தற்போதைய உலாவியை நீங்கள் தொடர்ந்து பயன்படுத்தலாம், ஆனால் சில அல்லது அனைத்து அம்சங்களும் செயல்படாமல் போகலாம் மற்றும் பயன்பாட்டின் தோற்றமும் உணர்வும் தவறாக இருக்கலாம்.",
+ "Please install Chrome, Firefox, or Safari for the best experience.": "சிறந்த அனுபவத்திற்காக Chrome, Firefox, அல்லது அதை Safari ஐ நிறுவவும்.",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s உங்கள் தற்போதைய உலாவியால் ஆதரிக்கப்படாத மேம்பட்ட உலாவி அம்சங்களைப் பயன்படுத்துகிறது.",
+ "Your browser can't run %(brand)s": "உங்கள் உலாவியில் %(brand)s ஐ இயக்க முடியாது",
+ "Unsupported browser": "ஆதரிக்கப்படாத உலாவி",
+ "Use %(brand)s on mobile": "%(brand)s ஐ திறன்பேசியில் பயன்படுத்தவும்",
+ "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
+ "Go to your browser to complete Sign In": "உள்நுழைவை முடிவுசெய்ய உங்கள் உலாவிக்குச் செல்லவும்",
+ "%(brand)s Desktop (%(platformName)s)": "%(brand)s திரைமுகப்பு (%(platformName)s)",
+ "Open user settings": "பயனர் அமைப்புகளைத் திறக்கவும்",
+ "Open": "திற",
+ "Download Completed": "பதிவிறக்கம் முடிவடைந்தது",
+ "Unable to load config file: please refresh the page to try again.": "கட்டமைப்பு கோப்பை ஏற்ற முடியவில்லை: மீண்டும் முயற்சிக்க பக்கத்தைப் புதுப்பிக்கவும்.",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "உங்கள் எலிமெண்ட் உள்ளமைவில் தவறான JSON உள்ளது. தயவுசெய்து இதை சரிசெய்து பக்கத்தை மீண்டும் ஏற்றவும்.",
+ "Your Element is misconfigured": "உங்கள் எலிமெண்ட் தவறாக உள்ளமைக்கப்பட்டுள்ளது"
}
diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json
index e0c1f9c56bb..b94cfb3c818 100644
--- a/src/i18n/strings/th.json
+++ b/src/i18n/strings/th.json
@@ -15,5 +15,16 @@
"Go to element.io": "ไปยัง element.io",
"Failed to start": "ไม่สามารถเริ่ม",
"Open": "เปิด",
- "Powered by Matrix": "ขับเคลื่อนโดย Matrix"
+ "Powered by Matrix": "ขับเคลื่อนโดย Matrix",
+ "Unexpected error preparing the app. See console for details.": "เกิดข้อผิดพลาดที่ไม่คาดคิดขณะการเตรียมพร้อมโปรแกรม. คุณสามารถดูรายละเอียดข้อผิดพลาดได้ที่หน้าคอนโซล.",
+ "Unable to load config file: please refresh the page to try again.": "ไม่สามารถโหลดการตั้งค่า: โปรดรีเฟรชหน้าเว็บเพื่อลองใหม่อีกครั้ง.",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "การตั้งค่าของ Element จะต้องอยู่ในรูปแบบ JSON. โปรดแก้ไขการตั้งค่าและโหลดหน้านี้ใหม่อีกครั้ง.",
+ "Your Element is misconfigured": "การตั้งค่าของคุณไม่ถูกต้อง",
+ "Invalid configuration: no default server specified.": "คุณยังไม่ได้ตั้งค่าเซิฟเวอร์หลักในการตั้งค่า.",
+ "I understand the risks and wish to continue": "ฉันเข้าใจความเสี่ยง และดำเนินการต่อ",
+ "Please install Chrome, Firefox, or Safari for the best experience.": "กรุณาติดตั้ง Chrome, Firefox, หรือ Safari เพื่อประสิทธิภาพการใช้งานที่ดีที่สุด.",
+ "Your browser can't run %(brand)s": "เบราว์เซอร์ของคุณไม่สามารถใช้งาน %(brand)s ได้",
+ "Unsupported browser": "เบราว์เซอร์ไม่รองรับ",
+ "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
+ "Previous/next recently visited room or community": "ห้อง/ชุมชน ที่เคยเยี่ยมชมไปก่อนหน้า"
}
diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json
index 6d4df384918..d45526ec899 100644
--- a/src/i18n/strings/tr.json
+++ b/src/i18n/strings/tr.json
@@ -8,9 +8,9 @@
"Sign In": "Giriş Yap",
"Create Account": "Hesap Oluştur",
"Explore rooms": "Odaları keşfet",
- "Invalid JSON": "Geçersiz JSON",
+ "Invalid JSON": "JSON geçersiz",
"Unexpected error preparing the app. See console for details.": "Uygulama hazırlanırken beklenmeyen bir hata oldu. Detaylar için konsola bakın.",
- "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Geçersiz yapılandırma: default_server_config, default_server_name, yada default_hs_url den sadece birisi seçilebilir.",
+ "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Hatalı ayarlar: default_server_config, default_server_name ve default_hs_url ayarlarından en fazla biri girilebilir.",
"Invalid configuration: no default server specified.": "Geçersiz yapılandırma: varsayılan sunucu seçilmemiş.",
"The message from the parser is: %(message)s": "Ayrıştırıcıdan gelen mesaj: %(message)s",
"Go to your browser to complete Sign In": "Oturum açmayı tamamlamak için tarayıcınıza gidin",
@@ -28,9 +28,11 @@
"Go to element.io": "element.io adresine git",
"Failed to start": "Başlatılamadı",
"Previous/next recently visited room or community": "Yakında ziyaret edilen önceki/sonraki oda veya topluluk",
- "Powered by Matrix": "Matrix tarafından güçlendirildi",
- "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
+ "Powered by Matrix": "Gücünü Matrix'ten alır",
+ "%(appName)s (%(browserName)s, %(osName)s)": "%(appName) (%(browserName), %(osName))",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Masaüstü (%(platformName)s)",
"Open": "Aç",
- "Missing indexeddb worker script!": "Indexeddb worker kodu eksik!"
+ "Missing indexeddb worker script!": "Indexeddb worker kodu eksik!",
+ "Use %(brand)s on mobile": "Mobilde %(brand)s kullan",
+ "Switch to space by number": "Sayı ile belirtilen alana geç"
}
diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json
index 1a77e28d403..f11da7c7abc 100644
--- a/src/i18n/strings/uk.json
+++ b/src/i18n/strings/uk.json
@@ -21,7 +21,7 @@
"Failed to start": "Запуск не вдався",
"Download Completed": "Завантаження завершено",
"Missing indexeddb worker script!": "Відсутній робочий сценарій IndexedDB!",
- "Your Element is misconfigured": "Ваш Element налаштовано невірно",
+ "Your Element is misconfigured": "Ваш Element налаштовано неправильно",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Ваша конфігурація Element містить хибний JSON. Виправте проблему та оновіть сторінку.",
"Unable to load config file: please refresh the page to try again.": "Неможливо завантажити файл конфігурації. Оновіть, будь ласка, сторінку, щоб спробувати знову.",
"Open": "Відкрити",
@@ -33,5 +33,6 @@
"Powered by Matrix": "Працює на Matrix",
"Your browser can't run %(brand)s": "Ваш переглядач неспроможний запустити %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s використовує передові властивості, які ваш браузер не підтримує.",
- "Use %(brand)s on mobile": "Користуйтеся %(brand)s на мобільному"
+ "Use %(brand)s on mobile": "Користуйтеся %(brand)s на мобільному",
+ "Switch to space by number": "Перейдіть до простору за номером"
}
diff --git a/src/i18n/strings/vi.json b/src/i18n/strings/vi.json
index 03581c75eab..6547c6f79fe 100644
--- a/src/i18n/strings/vi.json
+++ b/src/i18n/strings/vi.json
@@ -6,7 +6,7 @@
"Welcome to Element": "Chào mừng tới Element",
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat phân tán, mã hóa & giao tiếp được tài trợ bởi [matrix]",
"Unexpected error preparing the app. See console for details.": "Lỗi xảy ra trong lúc chuẩn bị app. Xem console log để biết chi tiết.",
- "The message from the parser is: %(message)s": "Nội dung tin là: %(message)s",
+ "The message from the parser is: %(message)s": "Thông báo của trình xử lý là: %(message)s",
"Invalid JSON": "JSON không hợp lệ",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Thiết lập không hợp lệ: chỉ có thể điền một trong số default_server_config, default_server_name, hoặc default_hs_url.",
"Invalid configuration: no default server specified.": "Cấu hình không hợp lệ: máy chủ mặc định không được thiết lập.",
@@ -23,8 +23,15 @@
"Unsupported browser": "Trình duyệt không được hỗ trợ",
"Go to your browser to complete Sign In": "Mở trình duyệt web để hoàn thành đăng nhập",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Máy tính để bàn (%(platformName)s)",
- "Previous/next recently visited room or community": "Phòng chat hoặc cộng đồng gần đây trước/tiếp theo",
+ "Previous/next recently visited room or community": "Phòng chat hoặc cộng đồng đã đi đến gần đây trước/tiếp theo",
"Open user settings": "Mở cài đặt người dùng",
"Open": "Mở",
- "Unable to load config file: please refresh the page to try again.": "Không thể tải tệp cấu hình: hãy làm mới trang để thử lại."
+ "Unable to load config file: please refresh the page to try again.": "Không thể tải tệp cấu hình: hãy làm mới trang để thử lại.",
+ "Failed to start": "Khởi động thất bại",
+ "Use %(brand)s on mobile": "Sử dụng %(brand)s trên di động",
+ "Powered by Matrix": "Được chạy bởi công nghệ Matrix",
+ "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
+ "Missing indexeddb worker script!": "Thiếu tệp lệnh làm việc của indexeddb!",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Thiết lập Element của bạn chứa JSON không hợp lệ. Vui lòng sửa vấn đề và tải lại trang.",
+ "Your Element is misconfigured": "Element của bạn bị thiết lập sai"
}
diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json
index a06537a4a9e..90e73ddef32 100644
--- a/src/i18n/strings/zh_Hans.json
+++ b/src/i18n/strings/zh_Hans.json
@@ -11,8 +11,8 @@
"The message from the parser is: %(message)s": "语法分析器的信息:%(message)s",
"Invalid JSON": "无效的 JSON",
"Unexpected error preparing the app. See console for details.": "软件准备时出错,详细信息请查看控制台。",
- "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "无效的配置:只能设置 default_server_config,default_server_name,或 default_hs_url 中的一个。",
- "Invalid configuration: no default server specified.": "无效的配置:没有设置默认服务器。",
+ "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "配置无效: 只能设置 default_server_config、default_server_name 或 default_hs_url。",
+ "Invalid configuration: no default server specified.": "配置无效:没有设置默认服务器。",
"Missing indexeddb worker script!": "缺少 IndexedDB 辅助脚本!",
"Unable to load config file: please refresh the page to try again.": "无法加载配置文件:请再次刷新页面。",
"Open user settings": "打开用户设置",
@@ -32,5 +32,7 @@
"Open": "打开",
"Your browser can't run %(brand)s": "浏览器无法运行 %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "当前浏览器不支持 %(brand)s 所需的高级浏览器特性。",
- "Powered by Matrix": "由 Matrix 驱动"
+ "Powered by Matrix": "由 Matrix 驱动",
+ "Use %(brand)s on mobile": "在移动设备上使用 %(brand)s",
+ "Switch to space by number": "按数字切换空间"
}
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 3cd81182049..57cf32a1c1b 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -30,8 +30,9 @@
"Open": "開啟",
"Your Element is misconfigured": "Element 配置錯誤",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Element 的配置中包含無效JSON,請更正錯誤並重新加載網頁。",
- "Your browser can't run %(brand)s": "當前瀏覽器無法運行%(brand)s",
- "%(brand)s uses advanced browser features which aren't supported by your current browser.": "當前瀏覽器不支持%(brand)s使用的高級特性。",
+ "Your browser can't run %(brand)s": "您的瀏覽器無法執行 %(brand)s",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s 使用了您目前的瀏覽器不支援的進階瀏覽器功能。",
"Powered by Matrix": "由 Matrix 提供",
- "Use %(brand)s on mobile": "在行動裝置上使用 %(brand)s"
+ "Use %(brand)s on mobile": "在行動裝置上使用 %(brand)s",
+ "Switch to space by number": "依數字切換至空間"
}
diff --git a/src/vector/app.tsx b/src/vector/app.tsx
index 1fc856c01be..35e20a08376 100644
--- a/src/vector/app.tsx
+++ b/src/vector/app.tsx
@@ -25,20 +25,21 @@ window.React = React;
import * as sdk from 'matrix-react-sdk';
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
-import {_td, newTranslatableError} from 'matrix-react-sdk/src/languageHandler';
+import { _td, newTranslatableError } from 'matrix-react-sdk/src/languageHandler';
import AutoDiscoveryUtils from 'matrix-react-sdk/src/utils/AutoDiscoveryUtils';
-import {AutoDiscovery} from "matrix-js-sdk/src/autodiscovery";
+import { AutoDiscovery } from "matrix-js-sdk/src/autodiscovery";
import * as Lifecycle from "matrix-react-sdk/src/Lifecycle";
import type MatrixChatType from "matrix-react-sdk/src/components/structures/MatrixChat";
-import {MatrixClientPeg} from 'matrix-react-sdk/src/MatrixClientPeg';
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
-import {parseQs, parseQsFromFragment} from './url_utils';
+import { parseQs, parseQsFromFragment } from './url_utils';
import VectorBasePlatform from "./platform/VectorBasePlatform";
-import {createClient} from "matrix-js-sdk/src/matrix";
+import { createClient } from "matrix-js-sdk/src/matrix";
let lastLocationHashSet: string = null;
+console.log(`Application is running in ${process.env.NODE_ENV} mode`);
+
// Parse the given window.location and return parameters that can be used when calling
// MatrixChat.showScreen(screen, params)
function getScreenFromLocation(location: Location) {
@@ -74,6 +75,14 @@ function onNewScreen(screen: string, replaceLast = false) {
const hash = '#/' + screen;
lastLocationHashSet = hash;
+ // if the new hash is a substring of the old one then we are stripping fields e.g `via` so replace history
+ if (screen.startsWith("room/") &&
+ window.location.hash.includes("/$") === hash.includes("/$") && // only if both did or didn't contain event link
+ window.location.hash.startsWith(hash)
+ ) {
+ replaceLast = true;
+ }
+
if (replaceLast) {
window.location.replace(hash);
} else {
@@ -129,18 +138,6 @@ function onTokenLoginCompleted() {
}
export async function loadApp(fragParams: {}) {
- // XXX: the way we pass the path to the worker script from webpack via html in body's dataset is a hack
- // but alternatives seem to require changing the interface to passing Workers to js-sdk
- const vectorIndexeddbWorkerScript = document.body.dataset.vectorIndexeddbWorkerScript;
- if (!vectorIndexeddbWorkerScript) {
- // If this is missing, something has probably gone wrong with
- // the bundling. The js-sdk will just fall back to accessing
- // indexeddb directly with no worker script, but we want to
- // make sure the indexeddb script is present, so fail hard.
- throw newTranslatableError(_td("Missing indexeddb worker script!"));
- }
- MatrixClientPeg.setIndexedDbWorkerScript(vectorIndexeddbWorkerScript);
-
window.addEventListener('hashchange', onHashChange);
const platform = PlatformPeg.get();
@@ -257,12 +254,12 @@ async function verifyServerConfig() {
validatedConfig = AutoDiscoveryUtils.buildValidatedConfigFromDiscovery(serverName, discoveryResult, true);
} catch (e) {
- const {hsUrl, isUrl, userId} = await Lifecycle.getStoredSessionVars();
+ const { hsUrl, isUrl, userId } = await Lifecycle.getStoredSessionVars();
if (hsUrl && userId) {
console.error(e);
console.warn("A session was found - suppressing config error and using the session's homeserver");
- console.log("Using pre-existing hsUrl and isUrl: ", {hsUrl, isUrl});
+ console.log("Using pre-existing hsUrl and isUrl: ", { hsUrl, isUrl });
validatedConfig = await AutoDiscoveryUtils.validateServerConfigWithStaticUrls(hsUrl, isUrl, true);
} else {
// the user is not logged in, so scream
@@ -277,7 +274,7 @@ async function verifyServerConfig() {
// Add the newly built config to the actual config for use by the app
console.log("Updating SdkConfig with validated discovery information");
- SdkConfig.add({"validated_server_config": validatedConfig});
+ SdkConfig.add({ "validated_server_config": validatedConfig });
return SdkConfig.get();
}
diff --git a/src/vector/devcss.ts b/src/vector/devcss.ts
new file mode 100644
index 00000000000..2f678033851
--- /dev/null
+++ b/src/vector/devcss.ts
@@ -0,0 +1,47 @@
+/*
+Copyright 2021 The Matrix.org Foundation C.I.C.
+
+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.
+*/
+
+/**
+ * This code is removed on production builds.
+ *
+ * Webpack's `string-replace-loader` searches for the `use theming` string
+ * in this specific file, and replaces it with CSS requires statements that
+ * are specific to the themes we have enabled.
+ *
+ * Without this workaround, webpack would import the CSS of all themes, which
+ * would defeat the purpose of hot-reloading since all themes would be compiled,
+ * which would result in compilation times on the order of 30s, even on a
+ * powerful machine.
+ *
+ * For more details, see webpack.config.js:184 (string-replace-loader)
+ */
+if (process.env.NODE_ENV === 'development') {
+ ("use theming");
+ /**
+ * Clean up old hot-module script injections as they hog up memory
+ * and anything other than the newest one is really not needed at all.
+ * We don't need to do it more frequently than every half a minute or so,
+ * but it's done to delay full page reload due to app slowness.
+ */
+ setInterval(() => {
+ const elements = Array.from(document.querySelectorAll("script[src*=hot-update]"));
+ if (elements.length > 1) {
+ const oldInjects = elements.slice(0, elements.length - 1);
+ oldInjects.forEach(e => e.remove());
+ }
+ }, 1000);
+}
+
diff --git a/src/vector/getconfig.ts b/src/vector/getconfig.ts
index f9ec5a19515..fe012102b34 100644
--- a/src/vector/getconfig.ts
+++ b/src/vector/getconfig.ts
@@ -55,7 +55,7 @@ function getConfig(configJsonFilename: string): Promise<{}> {
resolve({});
}
}
- reject({err: err, response: response});
+ reject({ err: err, response: response });
return;
}
@@ -65,7 +65,7 @@ function getConfig(configJsonFilename: string): Promise<{}> {
// loading from the filesystem (see above).
resolve(JSON.parse(body));
} catch (e) {
- reject({err: e});
+ reject({ err: e });
}
},
);
diff --git a/src/vector/index.html b/src/vector/index.html
index 061d249e5d5..b0a2425338d 100644
--- a/src/vector/index.html
+++ b/src/vector/index.html
@@ -35,7 +35,6 @@
worker-src 'self';
frame-src * blob: data:;
form-action 'self';
- object-src 'self';
manifest-src 'self';
">
<% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) {
@@ -44,7 +43,7 @@
if (match) {
var title = match[1].charAt(0).toUpperCase() + match[1].slice(1);
%>
-
+
<% } else { %>
<% }
@@ -59,13 +58,9 @@
} %>
- "
- data-vector-recorder-worklet-script="<%= htmlWebpackPlugin.files.js.find(entry => entry.includes("recorder-worklet.js")) %>"
- >
+
-
+
diff --git a/src/vector/index.ts b/src/vector/index.ts
index 948bc6a9ea1..de68bf0a436 100644
--- a/src/vector/index.ts
+++ b/src/vector/index.ts
@@ -25,8 +25,16 @@ require('gfm.css/gfm.css');
require('highlight.js/styles/github.css');
require('katex/dist/katex.css');
+/**
+ * This require is necessary only for purposes of CSS hot-reload, as otherwise
+ * webpack has some incredible problems figuring out which CSS files should be
+ * hot-reloaded, even with proper hints for the loader.
+ *
+ * On production build it's going to be an empty module, so don't worry about that.
+ */
+require('./devcss');
// These are things that can run before the skin loads - be careful not to reference the react-sdk though.
-import {parseQsFromFragment} from "./url_utils";
+import { parseQsFromFragment } from "./url_utils";
import './modernizr';
async function settled(...promises: Array>) {
@@ -51,6 +59,9 @@ function checkBrowserFeatures() {
// ES2018: http://262.ecma-international.org/9.0/#sec-promise.prototype.finally
window.Modernizr.addTest("promiseprototypefinally", () =>
typeof window.Promise?.prototype?.finally === "function");
+ // ES2020: http://262.ecma-international.org/#sec-promise.allsettled
+ window.Modernizr.addTest("promiseallsettled", () =>
+ typeof window.Promise?.allSettled === "function");
// ES2018: https://262.ecma-international.org/9.0/#sec-get-regexp.prototype.dotAll
window.Modernizr.addTest("regexpdotall", () => (
window.RegExp?.prototype &&
diff --git a/src/vector/indexeddb-worker.js b/src/vector/indexeddb-worker.ts
similarity index 77%
rename from src/vector/indexeddb-worker.js
rename to src/vector/indexeddb-worker.ts
index 3cb2cb9f4eb..e196cdfb350 100644
--- a/src/vector/indexeddb-worker.js
+++ b/src/vector/indexeddb-worker.ts
@@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import {IndexedDBStoreWorker} from 'matrix-js-sdk/src/indexeddb-worker.js';
+import { IndexedDBStoreWorker } from 'matrix-js-sdk/src/indexeddb-worker';
-const remoteWorker = new IndexedDBStoreWorker(postMessage);
+const remoteWorker = new IndexedDBStoreWorker(postMessage as InstanceType["postMessage"]);
global.onmessage = remoteWorker.onMessage;
diff --git a/src/vector/init.tsx b/src/vector/init.tsx
index 019cb352f81..66389df8aba 100644
--- a/src/vector/init.tsx
+++ b/src/vector/init.tsx
@@ -19,8 +19,8 @@ limitations under the License.
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
-import olmWasmPath from "olm/olm.wasm";
-import Olm from 'olm';
+import olmWasmPath from "@matrix-org/olm/olm.wasm";
+import Olm from '@matrix-org/olm';
import * as ReactDOM from "react-dom";
import * as React from "react";
@@ -31,10 +31,9 @@ import PWAPlatform from "./platform/PWAPlatform";
import WebPlatform from "./platform/WebPlatform";
import PlatformPeg from "matrix-react-sdk/src/PlatformPeg";
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
-import {setTheme} from "matrix-react-sdk/src/theme";
-
-import {initRageshake, initRageshakeStore} from "./rageshakesetup";
+import { setTheme } from "matrix-react-sdk/src/theme";
+import { initRageshake, initRageshakeStore } from "./rageshakesetup";
export const rageshakePromise = initRageshake();
diff --git a/src/vector/jitsi/index.ts b/src/vector/jitsi/index.ts
index e92470b7d62..c6385cc4783 100644
--- a/src/vector/jitsi/index.ts
+++ b/src/vector/jitsi/index.ts
@@ -17,8 +17,7 @@ limitations under the License.
// We have to trick webpack into loading our CSS for us.
require("./index.scss");
-import * as qs from 'querystring';
-import {KJUR} from 'jsrsasign';
+import { KJUR } from 'jsrsasign';
import {
IOpenIDCredentials,
IWidgetApiRequest,
@@ -52,15 +51,16 @@ let meetApi: any; // JitsiMeetExternalAPI
(async function() {
try {
- // The widget's options are encoded into the fragment to avoid leaking info to the server. The widget
- // spec on the other hand requires the widgetId and parentUrl to show up in the regular query string.
- const widgetQuery = qs.parse(window.location.hash.substring(1));
- const query = Object.assign({}, qs.parse(window.location.search.substring(1)), widgetQuery);
+ // The widget's options are encoded into the fragment to avoid leaking info to the server.
+ const widgetQuery = new URLSearchParams(window.location.hash.substring(1));
+ // The widget spec on the other hand requires the widgetId and parentUrl to show up in the regular query string.
+ const realQuery = new URLSearchParams(window.location.search.substring(1));
const qsParam = (name: string, optional = false): string => {
- if (!optional && (!query[name] || typeof (query[name]) !== 'string')) {
+ const vals = widgetQuery.has(name) ? widgetQuery.getAll(name) : realQuery.getAll(name);
+ if (!optional && vals.length !== 1) {
throw new Error(`Expected singular ${name} in query string`);
}
- return query[name];
+ return vals[0];
};
// If we have these params, expect a widget API to be available (ie. to be in an iframe
@@ -138,7 +138,7 @@ let meetApi: any; // JitsiMeetExternalAPI
});
widgetApi.transport.reply(ev.detail, {}); // ack
} else {
- widgetApi.transport.reply(ev.detail, {error: {message: "Conference not joined"}});
+ widgetApi.transport.reply(ev.detail, { error: { message: "Conference not joined" } });
}
},
);
@@ -168,7 +168,7 @@ function switchVisibleContainers() {
*/
function createJWTToken() {
// Header
- const header = {alg: 'HS256', typ: 'JWT'};
+ const header = { alg: 'HS256', typ: 'JWT' };
// Payload
const payload = {
// As per Jitsi token auth, `iss` needs to be set to something agreed between
diff --git a/src/vector/mobile_guide/index.html b/src/vector/mobile_guide/index.html
index 3960c43912d..7e3c8d7a988 100644
--- a/src/vector/mobile_guide/index.html
+++ b/src/vector/mobile_guide/index.html
@@ -326,7 +326,7 @@