mirror of
https://github.com/element-hq/element-web.git
synced 2025-12-07 01:21:02 +00:00
Compare commits
108 Commits
v1.7.21-rc
...
travis/inl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6fd28421b3 | ||
|
|
e13cb66e32 | ||
|
|
ba28c6d57a | ||
|
|
36789fbd65 | ||
|
|
1c7828e7c2 | ||
|
|
597c18932b | ||
|
|
84b21576bd | ||
|
|
0c14e45d65 | ||
|
|
9789f411d0 | ||
|
|
127683e98a | ||
|
|
b7e9da9e40 | ||
|
|
8aba3cf437 | ||
|
|
bb10b7ad48 | ||
|
|
101e0592fe | ||
|
|
c10e8984e7 | ||
|
|
52e54b408f | ||
|
|
779a4912d5 | ||
|
|
cc81cc714c | ||
|
|
e2ce4239bd | ||
|
|
b8b13a6316 | ||
|
|
1c7cf8645e | ||
|
|
d9627cbe67 | ||
|
|
134618f4cd | ||
|
|
c191eb5462 | ||
|
|
dccbb79340 | ||
|
|
a67b2329ba | ||
|
|
4b092d49c6 | ||
|
|
49d103aab6 | ||
|
|
6afd289bcb | ||
|
|
4fc499b9e3 | ||
|
|
0469805eb1 | ||
|
|
df2654f94a | ||
|
|
3da0957859 | ||
|
|
5056e14060 | ||
|
|
655c7a9b29 | ||
|
|
bd60faec1f | ||
|
|
6b40714d80 | ||
|
|
f4e98baf16 | ||
|
|
53e8f5d3ff | ||
|
|
b910fcd38a | ||
|
|
4f0fccfe96 | ||
|
|
86d7652d93 | ||
|
|
c745991a9a | ||
|
|
0f7a42258c | ||
|
|
c7bb6b2272 | ||
|
|
b0bc4b2816 | ||
|
|
3586142d69 | ||
|
|
06798f3030 | ||
|
|
594c07b2d9 | ||
|
|
f94f97d83a | ||
|
|
799f60c0ee | ||
|
|
06af1f056f | ||
|
|
621e09ebbc | ||
|
|
8a0ed198e6 | ||
|
|
322cdb1bec | ||
|
|
8fadfb0a57 | ||
|
|
5417d70340 | ||
|
|
a9850008cf | ||
|
|
83f28d465b | ||
|
|
f0a8f166c9 | ||
|
|
f941169da3 | ||
|
|
4f13b707bb | ||
|
|
aff0c9823e | ||
|
|
c3c1a5da8d | ||
|
|
d35d6f253b | ||
|
|
29fb984062 | ||
|
|
6c3530d249 | ||
|
|
d63f5a2282 | ||
|
|
2b7dbb4fce | ||
|
|
aaecbab4b9 | ||
|
|
220ee62d38 | ||
|
|
8cf2ab436d | ||
|
|
4961037dbe | ||
|
|
5f15ee4ea5 | ||
|
|
9953bc3b22 | ||
|
|
29fd47d611 | ||
|
|
e18bf6be86 | ||
|
|
7562fd3703 | ||
|
|
57f0d5191d | ||
|
|
dd0e2e52f8 | ||
|
|
2e00314dc0 | ||
|
|
afb469ce42 | ||
|
|
31ec953a92 | ||
|
|
94a5cd3f83 | ||
|
|
c67951f254 | ||
|
|
aface37853 | ||
|
|
46af8ba17a | ||
|
|
beb922cbfa | ||
|
|
19a07bc4a2 | ||
|
|
438eef0acd | ||
|
|
e15d1c1501 | ||
|
|
92a5787528 | ||
|
|
af2da9d371 | ||
|
|
68c36ebb49 | ||
|
|
3e57378631 | ||
|
|
24cc106d90 | ||
|
|
ccc3038793 | ||
|
|
6844c8f92e | ||
|
|
1c9d25986a | ||
|
|
a8a422105b | ||
|
|
3419140bee | ||
|
|
13a5192995 | ||
|
|
7ae86af7df | ||
|
|
b06de25898 | ||
|
|
62a152b68a | ||
|
|
fe831dc8dd | ||
|
|
7ff2b598af | ||
|
|
1b8fe9e782 |
4
.github/ISSUE_TEMPLATE.md
vendored
4
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,3 +1,5 @@
|
||||
<!-- A picture's worth a thousand words: PLEASE INCLUDE A SCREENSHOT :P -->
|
||||
|
||||
<!-- Please report security issues by email to security@matrix.org -->
|
||||
|
||||
<!-- This is a bug report template. By following the instructions below and
|
||||
@@ -36,7 +38,7 @@ file a bug here too! -->
|
||||
|
||||
For the web app:
|
||||
|
||||
- **Browser**: Chrome, Safari, Firefox? which version?
|
||||
- **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?
|
||||
|
||||
|
||||
6
.github/ISSUE_TEMPLATE/bug_report.md
vendored
6
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -2,11 +2,13 @@
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug
|
||||
labels: T-Defect
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!-- A picture's worth a thousand words: PLEASE INCLUDE A SCREENSHOT :P -->
|
||||
|
||||
<!-- Please report security issues by email to security@matrix.org -->
|
||||
|
||||
<!-- This is a bug report template. By following the instructions below and
|
||||
@@ -46,7 +48,7 @@ Logs being sent: yes/no
|
||||
|
||||
For the web app:
|
||||
|
||||
- **Browser**: Chrome, Safari, Firefox? which version?
|
||||
- **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?
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name: Suggestion or Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: suggestion
|
||||
labels: T-Enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
---
|
||||
name: User Interface or Usability Bug report
|
||||
about: Please include screenshots in UI/UX bug reports
|
||||
title: ''
|
||||
labels: bug, ui/ux
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!-- A picture's worth a thousand words: PLEASE INCLUDE A SCREENSHOT :P -->
|
||||
|
||||
<!-- Please report security issues by email to security@matrix.org -->
|
||||
|
||||
<!-- This is a bug report template. By following the instructions below and
|
||||
filling out the sections with your information, you will help the us to get all
|
||||
the necessary data to fix your issue.
|
||||
|
||||
You can also preview your report before submitting it. You may remove sections
|
||||
that aren't relevant to your particular case.
|
||||
|
||||
Text between <!-- and --> marks will be invisible in the report.
|
||||
-->
|
||||
|
||||
### 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.
|
||||
|
||||
<!-- Please send us logs for your bug report. They're very important for bugs
|
||||
which are hard to reproduce. To do this, create this issue then go to your
|
||||
account settings and click 'Submit Debug Logs' from the Help & About tab -->
|
||||
Logs being sent: yes/no
|
||||
|
||||
<!-- Include screenshots if possible: you can drag and drop images below. -->
|
||||
|
||||
### Version information
|
||||
|
||||
<!-- IMPORTANT: please answer the following questions, to help us narrow down the problem -->
|
||||
|
||||
- **Platform**: web (in-browser) or desktop?
|
||||
|
||||
For the web app:
|
||||
|
||||
- **Browser**: Chrome, Safari, Firefox? 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 <!-- check the user settings panel if unsure -->
|
||||
75
CHANGELOG.md
75
CHANGELOG.md
@@ -1,3 +1,78 @@
|
||||
Changes in [1.7.23](https://github.com/vector-im/element-web/releases/tag/v1.7.23) (2021-03-15)
|
||||
===============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.23-rc.1...v1.7.23)
|
||||
|
||||
* Upgrade to React SDK 3.16.0 and JS SDK 9.9.0
|
||||
|
||||
Changes in [1.7.23-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.23-rc.1) (2021-03-10)
|
||||
=========================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.22...v1.7.23-rc.1)
|
||||
|
||||
* Upgrade to React SDK 3.16.0-rc.2 and JS SDK 9.9.0-rc.1
|
||||
* Translations update from Weblate
|
||||
[\#16655](https://github.com/vector-im/element-web/pull/16655)
|
||||
* Improve docs for customisations
|
||||
[\#16652](https://github.com/vector-im/element-web/pull/16652)
|
||||
* Update triage guide to match the new label scheme
|
||||
[\#16612](https://github.com/vector-im/element-web/pull/16612)
|
||||
* Remove a couple useless 'use strict' calls
|
||||
[\#16650](https://github.com/vector-im/element-web/pull/16650)
|
||||
* Remove old conferencing doc
|
||||
[\#16648](https://github.com/vector-im/element-web/pull/16648)
|
||||
* Bump elliptic from 6.5.3 to 6.5.4
|
||||
[\#16644](https://github.com/vector-im/element-web/pull/16644)
|
||||
* Add option for audio live streaming
|
||||
[\#16604](https://github.com/vector-im/element-web/pull/16604)
|
||||
* Update velocity-animate dependency
|
||||
[\#16605](https://github.com/vector-im/element-web/pull/16605)
|
||||
* Add Edge to the supported tier
|
||||
[\#16611](https://github.com/vector-im/element-web/pull/16611)
|
||||
* Add multi language spell check
|
||||
[\#15851](https://github.com/vector-im/element-web/pull/15851)
|
||||
* Document feature_spaces
|
||||
[\#16538](https://github.com/vector-im/element-web/pull/16538)
|
||||
|
||||
Changes in [1.7.22](https://github.com/vector-im/element-web/releases/tag/v1.7.22) (2021-03-01)
|
||||
===============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.22-rc.1...v1.7.22)
|
||||
|
||||
## Security notice
|
||||
|
||||
Element Web 1.7.22 fixes (by upgrading to matrix-react-sdk 3.15.0) a low
|
||||
severity issue (CVE-2021-21320) where the user content sandbox can be abused to
|
||||
trick users into opening unexpected documents. The content is opened with a
|
||||
`blob` origin that cannot access Matrix user data, so messages and secrets are
|
||||
not at risk. Thanks to @keerok for responsibly disclosing this via Matrix's
|
||||
Security Disclosure Policy.
|
||||
|
||||
## All changes
|
||||
|
||||
* Upgrade to React SDK 3.15.0 and JS SDK 9.8.0
|
||||
|
||||
Changes in [1.7.22-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.22-rc.1) (2021-02-24)
|
||||
=========================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.21...v1.7.22-rc.1)
|
||||
|
||||
* Upgrade to React SDK 3.15.0-rc.1 and JS SDK 9.8.0-rc.1
|
||||
* Translations update from Weblate
|
||||
[\#16529](https://github.com/vector-im/element-web/pull/16529)
|
||||
* Add hostSignup config for element.io clients
|
||||
[\#16515](https://github.com/vector-im/element-web/pull/16515)
|
||||
* VoIP virtual rooms, mkII
|
||||
[\#16442](https://github.com/vector-im/element-web/pull/16442)
|
||||
* Jitsi widget: Read room name from query parameters
|
||||
[\#16456](https://github.com/vector-im/element-web/pull/16456)
|
||||
* fix / sso: make sure to delete only loginToken after redirect
|
||||
[\#16415](https://github.com/vector-im/element-web/pull/16415)
|
||||
* Disable Countly
|
||||
[\#16433](https://github.com/vector-im/element-web/pull/16433)
|
||||
|
||||
Changes in [1.7.21](https://github.com/vector-im/element-web/releases/tag/v1.7.21) (2021-02-16)
|
||||
===============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.21-rc.1...v1.7.21)
|
||||
|
||||
* Upgrade to React SDK 3.14.0 and JS SDK 9.7.0
|
||||
|
||||
Changes in [1.7.21-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.21-rc.1) (2021-02-10)
|
||||
=========================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.20...v1.7.21-rc.1)
|
||||
|
||||
101
README.md
101
README.md
@@ -11,7 +11,7 @@ Element has several tiers of support for different environments:
|
||||
|
||||
* Supported
|
||||
* Definition: Issues **actively triaged**, regressions **block** the release
|
||||
* Last 2 major versions of Chrome, Firefox, and Safari on desktop OSes
|
||||
* Last 2 major versions of Chrome, Firefox, Safari, and Edge on desktop OSes
|
||||
* Latest release of official Element Desktop app on desktop OSes
|
||||
* Desktop OSes means macOS, Windows, and Linux versions for desktop devices
|
||||
that are actively supported by the OS vendor and receive security updates
|
||||
@@ -388,51 +388,76 @@ For a developer guide, see the [translating dev doc](docs/translating-dev.md).
|
||||
Triaging issues
|
||||
===============
|
||||
|
||||
Issues will be triaged by the core team using the below set of tags.
|
||||
We strive to completely cover all applicable issues with these core labels:
|
||||
|
||||
Tags are meant to be used in combination - e.g.:
|
||||
* P1 critical bug == really urgent stuff that should be next in the bugfixing todo list
|
||||
* "release blocker" == stuff which is blocking us from cutting the next release.
|
||||
* P1 feature type:voip == what VoIP features should we be working on next?
|
||||
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
|
||||
|
||||
priority: **compulsory**
|
||||
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
|
||||
|
||||
* P1: top priority - i.e. pool of stuff which we should be working on next
|
||||
* P2: still need to fix, but lower than P1
|
||||
* P3: non-urgent
|
||||
* P4: interesting idea - bluesky some day
|
||||
* P5: recorded for posterity/to avoid duplicates. No intention to resolves right now.
|
||||
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
|
||||
|
||||
bug or feature: **compulsory**
|
||||
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.
|
||||
|
||||
* bug
|
||||
* feature
|
||||
### Other common labels
|
||||
|
||||
bug severity: **compulsory, if bug**
|
||||
We have a handful of other labels which are added on an as-needed basis, and not expected to be exhaustive:
|
||||
|
||||
* critical - whole app doesn't work
|
||||
* major - entire feature doesn't work
|
||||
* minor - partially broken feature (but still usable)
|
||||
* cosmetic - feature works functionally but UI/UX is broken
|
||||
* __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
|
||||
|
||||
types
|
||||
* type:* - refers to a particular part of the app; used to filter bugs
|
||||
on a given topic - e.g. VOIP, signup, timeline, etc.
|
||||
* __[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
|
||||
|
||||
additional categories (self-explanatory):
|
||||
* __[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)
|
||||
|
||||
* release blocker
|
||||
* ui/ux (think of this as cosmetic)
|
||||
* network (specific to network conditions)
|
||||
* platform specific
|
||||
* accessibility
|
||||
* maintenance
|
||||
* performance
|
||||
* i18n
|
||||
* blocked - whether this issue currently can't be progressed due to outside factors
|
||||
* __[Sponsored](https://github.com/vector-im/element-web/labels/Sponsored)__ —
|
||||
Used internally by Element to denote issues with external funding
|
||||
|
||||
community engagement
|
||||
* easy
|
||||
* hacktoberfest
|
||||
* bounty? - proposal to be included in a bounty programme
|
||||
* bounty - included in Status Open Bounty
|
||||
### 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.
|
||||
|
||||
@@ -3,7 +3,10 @@ module.exports = {
|
||||
"presets": [
|
||||
["@babel/preset-env", {
|
||||
"targets": [
|
||||
"last 2 Chrome versions", "last 2 Firefox versions", "last 2 Safari versions"
|
||||
"last 2 Chrome versions",
|
||||
"last 2 Firefox versions",
|
||||
"last 2 Safari versions",
|
||||
"last 2 Edge versions",
|
||||
],
|
||||
}],
|
||||
"@babel/preset-typescript",
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
# VoIP Conferencing
|
||||
|
||||
This is a draft proposal for a naive voice/video conferencing implementation for
|
||||
Matrix clients. There are many possible conferencing architectures possible for
|
||||
Matrix (Multipoint Conferencing Unit (MCU); Stream Forwarding Unit (SFU); Peer-
|
||||
to-Peer mesh (P2P), etc; events shared in the group room; events shared 1:1;
|
||||
possibly even out-of-band signalling).
|
||||
|
||||
This is a starting point for a naive MCU implementation which could provide one
|
||||
possible Matrix-wide solution in future, which retains backwards compatibility
|
||||
with standard 1:1 calling.
|
||||
|
||||
* A client chooses to initiate a conference for a given room by starting a
|
||||
voice or video call with a 'conference focus' user. This is a virtual user
|
||||
(typically Application Service) which implements a conferencing bridge. It
|
||||
isn't defined how the client discovers or selects this user.
|
||||
|
||||
* The conference focus user MUST join the room in which the client has
|
||||
initiated the conference - this may require the client to invite the
|
||||
conference focus user to the room, depending on the room's `join_rules`. The
|
||||
conference focus user needs to be in the room to let the bridge eject users
|
||||
from the conference who have left the room in which it was initiated, and aid
|
||||
discovery of the conference by other users in the room. The bridge
|
||||
identifies the room to join based on the user ID by which it was invited.
|
||||
The format of this identifier is implementation dependent for now.
|
||||
|
||||
* If a client leaves the group chat room, they MUST be ejected from the
|
||||
conference. If a client leaves the 1:1 room with the conference focus user,
|
||||
they SHOULD be ejected from the conference.
|
||||
|
||||
* For now, rooms can contain multiple conference focus users - it's left to
|
||||
user or client implementation to select which to converge on. In future this
|
||||
could be mediated using a state event (e.g. `im.vector.call.mcu`), but we
|
||||
can't do that right now as by default normal users can't set arbitrary state
|
||||
events on a room.
|
||||
|
||||
* To participate in the conference, other clients initiates a standard 1:1
|
||||
voice or video call to the conference focus user.
|
||||
|
||||
* For best UX, clients SHOULD show the ongoing voice/video call in the UI
|
||||
context of the group room rather than 1:1 with the focus user. If a client
|
||||
recognises a conference user present in the room, it MAY chose to highlight
|
||||
this in the UI (e.g. with a "conference ongoing" notification, to aid
|
||||
discovery). Clients MAY hide the 1:1 room with the focus user (although in
|
||||
future this room could be used for floor control or other direct
|
||||
communication with the conference focus)
|
||||
|
||||
* When all users have left the conference, the 'conference focus' user SHOULD
|
||||
leave the room.
|
||||
|
||||
* If a conference focus user joins a room but does not receive a 1:1 voice or
|
||||
video call, it SHOULD time out after a period of time and leave the room.
|
||||
@@ -110,21 +110,12 @@ For a good example, see https://develop.element.io/config.json.
|
||||
1. `logo`: An HTTP URL to the avatar for the desktop build. Should be 24x24, ideally
|
||||
an SVG.
|
||||
1. `url`: An HTTP URL for where to send the user to download the desktop build.
|
||||
1. `voip_mxid_translate_pattern`: Used to route VoIP calls to different Matrix IDs.
|
||||
Any VoIP calls placed will instead be placed to the translated Matrix ID from the
|
||||
pattern string but still appear to be with the original Matrix ID. Correspondingly,
|
||||
incoming VoIP calls will be made to appear as if they came from a different Matrix ID.
|
||||
The value is a template string with substitution `$(mxid)` which is the complete
|
||||
URL-encoded native Matrix ID, using '=' instead of '%'. For example, a value of
|
||||
`@_myappservice_$(mxid):example.org` would cause any VoIP call to `@bob:foo.example`
|
||||
to be redirected to `@_myappservice_=40bob=3Afoo.example:example.org` and calls
|
||||
from the latter to appear as if they were from the former.
|
||||
This option is experimental and may be removed at any time without notice. It's
|
||||
also strongly advised not to set this option unless you're absolutly certain you
|
||||
know what you're doing.
|
||||
1. `mobileGuideToast`: Whether to show a toast a startup which nudges users on
|
||||
iOS and Android towards the native mobile apps. The toast redirects to the
|
||||
mobile guide if they accept. Defaults to false.
|
||||
1. `audioStreamUrl`: If supplied, show an option on Jitsi widgets to stream
|
||||
audio using Jitsi's live streaming feature. This option is experimental and
|
||||
may be removed at any time without notice.
|
||||
|
||||
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
|
||||
|
||||
@@ -17,11 +17,11 @@ the React SDK, you can still override it from the Element Web layer:
|
||||
2. Edit customisations points and make sure export the ones you actually want to
|
||||
activate
|
||||
3. Tweak the Element build process to use the customised module instead of the
|
||||
default by adding this to end of the `plugins` array in `webpack.config.js`:
|
||||
default by adding this to the `additionalPlugins` array in `webpack.config.js`:
|
||||
|
||||
```js
|
||||
new webpack.NormalModuleReplacementPlugin(
|
||||
/src\/customisations\/Security.ts/,
|
||||
/src[\/\\]customisations[\/\\]Security\.ts/,
|
||||
path.resolve(__dirname, 'src/customisations/YourNameSecurity.ts'),
|
||||
),
|
||||
```
|
||||
|
||||
15
docs/labs.md
15
docs/labs.md
@@ -7,6 +7,14 @@ 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.**
|
||||
|
||||
## 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).
|
||||
|
||||
Incompatible with (will disable) `feature_custom_tags`, `feature_communities_v2_prototypes` and stable Communities/Groups support.
|
||||
|
||||
Still in heavy development.
|
||||
|
||||
## Render LaTeX maths in messages (`feature_latex_maths`)
|
||||
|
||||
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).
|
||||
@@ -69,6 +77,13 @@ Ban lists are rooms within Matrix, proposed as [MSC2313](https://github.com/matr
|
||||
[Mjolnir](https://github.com/matrix-org/mjolnir) is a set of moderation tools which support
|
||||
ban lists.
|
||||
|
||||
## Inline widgets
|
||||
|
||||
`feature_inline_widgets` allows rendering and sending of inline widgets. Inline
|
||||
widgets are typically polls or rich embedded content in rooms.
|
||||
|
||||
[#riot-web:matrix.org]: https://matrix.to/#/#riot-web:matrix.org
|
||||
|
||||
## Verifications in DMs (`feature_dm_verification`)
|
||||
|
||||
An implementation of [MSC2241](https://github.com/matrix-org/matrix-doc/pull/2241). When enabled, verification might not work with devices which don't support MSC2241.
|
||||
|
||||
@@ -37,5 +37,15 @@
|
||||
"url": "https://element.io/cookie-policy",
|
||||
"text": "Cookie Policy"
|
||||
}
|
||||
]
|
||||
],
|
||||
"hostSignup": {
|
||||
"brand": "Element Home",
|
||||
"cookiePolicyUrl": "https://element.io/cookie-policy",
|
||||
"domains": [
|
||||
"matrix.org"
|
||||
],
|
||||
"privacyPolicyUrl": "https://element.io/privacy",
|
||||
"termsOfServiceUrl": "https://element.io/terms-of-service",
|
||||
"url": "https://ems.element.io/element-home/in-app-loader"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,10 +18,6 @@
|
||||
"siteId": 1,
|
||||
"policyUrl": "https://element.io/cookie-policy"
|
||||
},
|
||||
"countly": {
|
||||
"url": "https://try.count.ly",
|
||||
"appKey": "8abf1ee15646bc884556b82e5053857904264b66"
|
||||
},
|
||||
"roomDirectory": {
|
||||
"servers": [
|
||||
"matrix.org",
|
||||
@@ -41,5 +37,15 @@
|
||||
"url": "https://element.io/cookie-policy",
|
||||
"text": "Cookie Policy"
|
||||
}
|
||||
]
|
||||
],
|
||||
"hostSignup": {
|
||||
"brand": "Element Home",
|
||||
"cookiePolicyUrl": "https://element.io/cookie-policy",
|
||||
"domains": [
|
||||
"matrix.org"
|
||||
],
|
||||
"privacyPolicyUrl": "https://element.io/privacy",
|
||||
"termsOfServiceUrl": "https://element.io/terms-of-service",
|
||||
"url": "https://ems.element.io/element-home/in-app-loader"
|
||||
}
|
||||
}
|
||||
|
||||
10
package.json
10
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "element-web",
|
||||
"version": "1.7.21-rc.1",
|
||||
"version": "1.7.23",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "New Vector Ltd.",
|
||||
"repository": {
|
||||
@@ -58,16 +58,16 @@
|
||||
"highlight.js": "^10.5.0",
|
||||
"jsrsasign": "^10.1.5",
|
||||
"katex": "^0.12.0",
|
||||
"matrix-js-sdk": "9.7.0-rc.1",
|
||||
"matrix-react-sdk": "3.14.0-rc.1",
|
||||
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
|
||||
"matrix-react-sdk": "github:matrix-org/matrix-react-sdk#develop",
|
||||
"matrix-widget-api": "^0.1.0-beta.13",
|
||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz",
|
||||
"prop-types": "^15.7.2",
|
||||
"random-string": "^0.2.0",
|
||||
"react": "^16.14.0",
|
||||
"react-dom": "^16.14.0",
|
||||
"sanitize-html": "github:apostrophecms/sanitize-html#3c7f93f2058f696f5359e3e58d464161647226db",
|
||||
"ua-parser-js": "^0.7.23",
|
||||
"url": "^0.11.0"
|
||||
"ua-parser-js": "^0.7.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.10",
|
||||
|
||||
@@ -16,8 +16,6 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import EmbeddedPage from 'matrix-react-sdk/src/components/structures/EmbeddedPage';
|
||||
import sanitizeHtml from 'sanitize-html';
|
||||
import { _t } from 'matrix-react-sdk/src/languageHandler';
|
||||
|
||||
@@ -15,8 +15,6 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import SdkConfig from 'matrix-react-sdk/src/SdkConfig';
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
"Sign In": "Anmelden",
|
||||
"Create Account": "Account erstellen",
|
||||
"Explore rooms": "Räume erkunden",
|
||||
"Unexpected error preparing the app. See console for details.": "Unerwarteter Fehler bei der Vorbereitung der App. Siehe Konsole für Details.",
|
||||
"Unexpected error preparing the app. See console for details.": "Unerwarteter Fehler bei der Vorbereitung der App. Siehe in die Konsole für mehr Details.",
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ungültige Konfiguration: Es kann nur eine der Optionen default_server_config, default_server_name oder default_hs_url angegeben werden.",
|
||||
"Invalid configuration: no default server specified.": "Ungültige Konfiguration: Es wurde kein Standardserver angegeben.",
|
||||
"The message from the parser is: %(message)s": "Die Nachricht des Parsers ist: %(message)s",
|
||||
"Invalid JSON": "Ungültiges JSON",
|
||||
"Go to your browser to complete Sign In": "Gehe zu deinem Browser, um die Anmeldung abzuschließen",
|
||||
"Go to your browser to complete Sign In": "Gehe in deinen Browser, um die Anmeldung abzuschließen",
|
||||
"Open user settings": "Öffne Nutzer-Einstellungen",
|
||||
"Unable to load config file: please refresh the page to try again.": "Konfigurationsdatei kann nicht geladen werden: Bitte aktualisiere die Seite, um es erneut zu versuchen.",
|
||||
"Missing indexeddb worker script!": "Fehlendes indexeddb Worker-Skript!",
|
||||
@@ -24,9 +24,9 @@
|
||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Bitte installiere <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, oder <safariLink>Safari</safariLink> für das beste Erlebnis.",
|
||||
"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.": "Du kannst mit deinem aktuellen Browser weiterhin verwenden, aber es kann sein, dass einige oder alle Funktionen nicht funktionieren und das Aussehen und die Bedienung der Anwendung nicht korrekt ist.",
|
||||
"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.": "Du kannst deinen aktuellen Browser weiterhin verwenden, es kann aber sein, dass einige oder alle Funktionen nicht verfügbar stehen oder dass das Aussehen und die Bedienung der Anwendung nicht korrekt ist.",
|
||||
"I understand the risks and wish to continue": "Ich verstehe die Risiken und möchte fortfahren",
|
||||
"Your Element is misconfigured": "Dein Element ist fehlkonfiguriert",
|
||||
"Your Element is misconfigured": "Dein Element ist falsch konfiguriert",
|
||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Element Konfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.",
|
||||
"Download Completed": "Download fertiggestellt",
|
||||
"Open": "Öffnen",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"powered by Matrix": "con el poder de Matrix",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Debes usar HTTPS para hacer una llamada con pantalla compartida.",
|
||||
"Welcome to Element": "Te damos la bienvenida a Element",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas & colaboración impulsada por [matrix]",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas. Funciona con [matrix]",
|
||||
"Sign In": "Iniciar sesión",
|
||||
"Create Account": "Crear cuenta",
|
||||
"Explore rooms": "Explorar salas",
|
||||
@@ -15,7 +15,7 @@
|
||||
"Invalid JSON": "JSON inválido",
|
||||
"Open user settings": "Abrir opciones de usuario",
|
||||
"Go to your browser to complete Sign In": "Abre tu navegador web para completar el registro",
|
||||
"Missing indexeddb worker script!": "¡Falta el script de trabajo indexeddb!",
|
||||
"Missing indexeddb worker script!": "¡Falta el Worker script “indexeddb”!",
|
||||
"Unable to load config file: please refresh the page to try again.": "No se ha podido cargar el archivo de configuración. Recarga la página para intentarlo otra vez.",
|
||||
"Previous/next recently visited room or community": "Anterior/siguiente sala o comunidad visitada recientemente",
|
||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s de escritorio (%(platformName)s)",
|
||||
@@ -23,14 +23,14 @@
|
||||
"Unsupported browser": "Navegador no compatible",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Por favor, instale <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, o <safariLink>Safari</safariLink> para la mejor experiencia.",
|
||||
"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.": "Puedes seguir utilizando tu navegador actual, pero puede que algunas funcionalidades no estén disponibles o que algunas partes de la aplicación se muestren de forma incorrecta.",
|
||||
"I understand the risks and wish to continue": "Entiendo los riesgos y deseo continuar",
|
||||
"I understand the risks and wish to continue": "Entiendo los riesgos y quiero continuar",
|
||||
"Go to element.io": "Ir a element.io",
|
||||
"Failed to start": "Fallo al iniciar",
|
||||
"Your Element is misconfigured": "Element está mal configurado",
|
||||
"Your Element is misconfigured": "Tu aplicación Element está mal configurada",
|
||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Tu configuración de Element contiene JSON inválido. Por favor corrígelo e inténtelo de nuevo.",
|
||||
"Download Completed": "Descarga completada",
|
||||
"Open": "Abrir",
|
||||
"Your browser can't run %(brand)s": "Su navegador no es compatible con %(brand)s",
|
||||
"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"
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"Create Account": "Créer un compte",
|
||||
"Explore rooms": "Explorer les salons",
|
||||
"Unexpected error preparing the app. See console for details.": "Une erreur inattendue est survenue pendant la préparation de l’application. Consultez la console pour avoir des détails.",
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuration invalide : il ne faut spécifier qu’un des trois champs entre default_server_config, default_server_name et default_hs_url.",
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuration invalide : il ne faut spécifier qu’un des trois champs parmis default_server_config, default_server_name et default_hs_url.",
|
||||
"Invalid configuration: no default server specified.": "Configuration invalide : aucun serveur par défaut spécifié.",
|
||||
"The message from the parser is: %(message)s": "Le message de l’analyseur est : %(message)s",
|
||||
"Invalid JSON": "JSON non valide",
|
||||
@@ -21,7 +21,7 @@
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||
"Unsupported browser": "Navigateur non pris en charge",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Veuillez installer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ou <safariLink>Safari</safariLink> pour une expérience optimale.",
|
||||
"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.": "Vous pouvez continuer à utiliser votre navigateur actuel, mais vous risquez de trouver que certaines fonctionnalités et/ou l'apparence de l'application sont incorrectes.",
|
||||
"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.": "Vous pouvez continuer à utiliser votre navigateur actuel, mais vous risquez de trouver que certaines fonctionnalités et/ou l’apparence de l’application sont incorrectes.",
|
||||
"I understand the risks and wish to continue": "Je comprends les risques et souhaite continuer",
|
||||
"Go to element.io": "Aller vers element.io",
|
||||
"Failed to start": "Échec au démarrage",
|
||||
@@ -31,6 +31,6 @@
|
||||
"Your Element is misconfigured": "Votre Element est mal configuré",
|
||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "La configuration de votre Element contient du JSON invalide. Veuillez corriger le problème et recharger la page.",
|
||||
"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 supporte pas.",
|
||||
"%(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"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Dismiss": "שחרר",
|
||||
"Dismiss": "התעלם",
|
||||
"powered by Matrix": "מופעל ע\"י Matrix",
|
||||
"Unknown device": "מכשיר לא ידוע",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "עליך להשתמש ב HTTPS בכדי לבצע שיחת ווידאו משותפת.",
|
||||
@@ -8,13 +8,13 @@
|
||||
"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: no default server specified.": "תצורה שגויה: לא צוין שרת ברירת מחדל.",
|
||||
"Open user settings": "פתיחת הגדרות משתמש",
|
||||
"Open user settings": "פתח הגדרות משתמש",
|
||||
"Go to your browser to complete Sign In": "עבור לדפדפן להמשך ההתחברות",
|
||||
"Explore rooms": "שיטוט בחדרים",
|
||||
"Create Account": "יצירת חשבון",
|
||||
"Sign In": "כניסה",
|
||||
"Previous/next recently visited room or community": "הבא\\קודם חדרים וקהילות שביקרתם לאחרונה",
|
||||
"Open": "פתיחה",
|
||||
"Open": "פתח",
|
||||
"Download Completed": "ההורדה הושלמה",
|
||||
"Unexpected error preparing the app. See console for details.": "שגיאה לא צפויה במהלך הכנת האפליקציה. ראו קונסול לפרטים נוספים.",
|
||||
"Unable to load config file: please refresh the page to try again.": "לא יכול לקרוא את קובץ ההגדרות: אנא אתחלו את הדף לנסות שנית.",
|
||||
@@ -32,5 +32,5 @@
|
||||
"%(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!"
|
||||
"Missing indexeddb worker script!": "סקריפט indexeddb worker חסר!"
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"powered by Matrix": "keyrt með Matrix",
|
||||
"Welcome to Element": "Velkomin í Element",
|
||||
"Unknown device": "Óþekkt tæki",
|
||||
"Dismiss": "Hafna",
|
||||
"Dismiss": "Hunsa",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Þú verður að nota HTTPS til að hringja samtal með deilingu á skjá.",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Dulritað dreifvinnsluspjall & samstarfstól keyrt með [matrix]",
|
||||
"Open": "Opna",
|
||||
@@ -18,5 +18,19 @@
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "vinsamlegast setja upp <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eða <safariLink>Safari</safariLink> fyrir besta reynsluna.",
|
||||
"I understand the risks and wish to continue": "Ég skil áhættuna og óska að halda áfram",
|
||||
"Go to element.io": "farðu í element.io"
|
||||
"Go to element.io": "farðu í element.io",
|
||||
"Unexpected error preparing the app. See console for details.": "Óvænt villa við undirbúning appsins. Sjá nánar í textaskrá vafra.",
|
||||
"Failed to start": "Mistókst að ræsa",
|
||||
"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.": "Þú getur haldið áfram að nota núverandi vafra, en sumar eða allir eiginleikar virka ekki og útlit og tilfinning forritsins geta verið röng.",
|
||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s notar háþróaða vafraeiginleika sem eru ekki studdir af núverandi vafra þínum.",
|
||||
"Powered by Matrix": "Keyrt af Matrix",
|
||||
"Go to your browser to complete Sign In": "Farðu í vafrann þinn til að ljúka innskráningu",
|
||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Borðtölva (%(platformName)s)",
|
||||
"Previous/next recently visited room or community": "Fyrra/næsta nýlega heimsótt herbergi eða samfélag",
|
||||
"Open user settings": "Opna notandastillingar",
|
||||
"Unable to load config file: please refresh the page to try again.": "Ekki er hægt að hlaða stillingaskrána: endurnýjaðu síðuna til að reyna aftur.",
|
||||
"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."
|
||||
}
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "സ്ക്രീന് ഷെയറിങ്ങ് കോള് നടത്തണമെങ്കില് https ഉപയോഗിക്കണം.",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "വികേന്ദ്രീകൃത , എന്ക്രിപ്റ്റഡ് ചാറ്റ് & മാട്രിക്സ് നല്കുന്ന കൊളാബൊറേഷന്",
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s%(browserName)s%(osName)s",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "ദയവായി <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, അല്ലെങ്കിൽ <safariLink>Safari</safariLink> ഇൻസ്റ്റാൾ ചെയ്യുക",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "ദയവായി <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, അല്ലെങ്കിൽ <safariLink>Safari</safariLink> ഇൻസ്റ്റാൾ ചെയ്യുക.",
|
||||
"Your Element is misconfigured": "നിങ്ങളുടെ Element തെറ്റായിട്ടാണ് കോൺഫിഗർ ചെയ്തിരിക്കുന്നത്",
|
||||
"Invalid configuration: no default server specified.": "അസാധുവായ കോൺഫിഗറേഷൻ: സ്ഥിര സെർവരൊന്നും വ്യക്തമാക്കിയില്ല.",
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "അസാധുവായ കോൺഫിഗറേഷൻ: can only specify one of default_server_config, default_server_name, or default_hs_url.",
|
||||
"Missing indexeddb worker script!": "Missing indexeddb worker script!",
|
||||
"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, or default_hs_url-ൽ ഒരെണ്ണം മാത്രമേ വ്യക്തമാക്കാൻ കഴിയൂ.",
|
||||
"Missing indexeddb worker script!": "indexeddb worker സ്ക്രിപ്റ്റ് കണ്ടെത്താനായില്ല!",
|
||||
"Open user settings": "യൂസർ ക്രമീകരങ്ങൾ തുറക്കുക",
|
||||
"Download Completed": "ഡൗൺലോഡ് പൂർത്തിയായി",
|
||||
"Unsupported browser": "പിന്തുണയ്ക്കാത്ത ബ്രൗസർ",
|
||||
|
||||
@@ -22,15 +22,15 @@
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||
"Unsupported browser": "Niet-ondersteunde browser",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Installeer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, of <safariLink>Safari</safariLink> 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.": "U kunt uw 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.": "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.",
|
||||
"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.": "Uw 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.": "Je Element configuratie bevat ongeldige JSON. Gelieve het probleem te corrigeren daarna de pagina te herladen.",
|
||||
"Download Completed": "Download voltooid",
|
||||
"Your Element is misconfigured": "Uw Element is verkeerd geconfigureerd",
|
||||
"Your browser can't run %(brand)s": "Uw 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 uw huidige browser.",
|
||||
"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"
|
||||
}
|
||||
|
||||
@@ -18,5 +18,14 @@
|
||||
"Download Completed": "Transferência concluída",
|
||||
"Unable to load config file: please refresh the page to try again.": "Não foi possível carregar o ficheiro de configuração: atualize a página para tentar novamente.",
|
||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "A configuração do Element contém um JSON inválido. Corrija o problema e recarregue a página.",
|
||||
"Your Element is misconfigured": "O Element está configurado incorretamente"
|
||||
"Your Element is misconfigured": "O Element está configurado incorretamente",
|
||||
"Powered by Matrix": "Desenvolvido por Matrix",
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (2%(browserName)s, 3%(osName)s)",
|
||||
"Go to element.io": "Visite element.io",
|
||||
"I understand the risks and wish to continue": "Compreendo os riscos e pretendo continuar",
|
||||
"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.": "Podes continuar a utilizar teu browser atual, mas algumas funcionalidades podem não funcionar ou aparecerem de forma incorrecta.",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Por favor, instala <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, ou <safariLink>Safari</safariLink> para uma melhor experiência.",
|
||||
"Unsupported browser": "Browser não suportado",
|
||||
"Previous/next recently visited room or community": "Anterior/seguinte comunidade ou sala recentemente visitado",
|
||||
"Open user settings": "Abrir definições do utilizador"
|
||||
}
|
||||
|
||||
@@ -2,5 +2,7 @@
|
||||
"Unknown device": "නොදන්නා උපාංගයකි",
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||
"Welcome to Element": "ඉලමන්ට් වෙත සාදරයෙන් පිළිගනිමු",
|
||||
"Open": "විවෘත කරන්න"
|
||||
"Open": "විවෘත කරන්න",
|
||||
"Powered by Matrix": "මැට්රික්ස් මඟින් බලගන්වා ඇත",
|
||||
"Sign In": "පිවිසෙන්න"
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"Welcome to Element": "欢迎来到 Element",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化、加密聊天&与协作,由 [matrix] 驱动",
|
||||
"Sign In": "登入",
|
||||
"Create Account": "创建帐号",
|
||||
"Create Account": "创建账户",
|
||||
"Explore rooms": "探索聊天室",
|
||||
"The message from the parser is: %(message)s": "语法分析器的信息:%(message)s",
|
||||
"Invalid JSON": "无效的 JSON",
|
||||
|
||||
@@ -23,7 +23,6 @@ import React from 'react';
|
||||
// this incidentally means we can forget our React imports in JSX files without penalty.
|
||||
window.React = React;
|
||||
|
||||
import url from 'url';
|
||||
import * as sdk from 'matrix-react-sdk';
|
||||
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
|
||||
import {_td, newTranslatableError} from 'matrix-react-sdk/src/languageHandler';
|
||||
@@ -120,11 +119,12 @@ function onTokenLoginCompleted() {
|
||||
// if we did a token login, we're now left with the token, hs and is
|
||||
// url as query params in the url; a little nasty but let's redirect to
|
||||
// clear them.
|
||||
const parsedUrl = url.parse(window.location.href);
|
||||
parsedUrl.search = "";
|
||||
const formatted = url.format(parsedUrl);
|
||||
console.log(`Redirecting to ${formatted} to drop loginToken from queryparams`);
|
||||
window.history.replaceState(null, "", formatted);
|
||||
const url = new URL(window.location.href);
|
||||
|
||||
url.searchParams.delete("loginToken");
|
||||
|
||||
console.log(`Redirecting to ${url.href} to drop loginToken from queryparams`);
|
||||
window.history.replaceState(null, "", url.href);
|
||||
}
|
||||
|
||||
export async function loadApp(fragParams: {}) {
|
||||
|
||||
105
src/vector/inline_widget_wrapper/WidgetApi.js
Normal file
105
src/vector/inline_widget_wrapper/WidgetApi.js
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
Copyright 2019 New Vector Ltd.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import randomString from "random-string";
|
||||
|
||||
// Dev note: This is largely inspired by Dimension. Used with permission.
|
||||
// https://github.com/turt2live/matrix-dimension/blob/4f92d560266635e5a3c824606215b84e8c0b19f5/web/app/shared/services/scalar/scalar-widget.api.ts#L1
|
||||
export default class WidgetApi {
|
||||
|
||||
_origin;
|
||||
_widgetId;
|
||||
_capabilities;
|
||||
_inFlightRequests = {}; // { reqId => replyFn(payload) }
|
||||
|
||||
constructor(origin, widgetId, capabilities) {
|
||||
this._origin = new URL(origin).origin;
|
||||
this._widgetId = widgetId;
|
||||
this._capabilities = capabilities;
|
||||
|
||||
const toWidgetActions = {
|
||||
"capabilities": this._onCapabilitiesRequest.bind(this),
|
||||
};
|
||||
|
||||
window.addEventListener("message", event => {
|
||||
if (event.origin !== this._origin) return; // ignore due to invalid origin
|
||||
if (!event.data) return;
|
||||
if (event.data.widgetId !== this._widgetId) return;
|
||||
|
||||
const payload = event.data;
|
||||
if (payload.api === "toWidget" && payload.action) {
|
||||
console.log("[Inline Widget] Got toWidget: " + JSON.stringify(payload));
|
||||
const handler = toWidgetActions[payload.action];
|
||||
if (handler) handler(payload);
|
||||
}
|
||||
if (payload.api === "fromWidget" && this._inFlightRequests[payload.requestId]) {
|
||||
console.log("[Inline Widget] Got fromWidget reply: " + JSON.stringify(payload));
|
||||
const handler = this._inFlightRequests[payload.requestId];
|
||||
delete this._inFlightRequests[payload.requestId];
|
||||
handler(payload);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
sendText(text) {
|
||||
this.sendEvent("m.room.message", {msgtype: "m.text", body: text});
|
||||
}
|
||||
|
||||
sendNotice(text) {
|
||||
this.sendEvent("m.room.message", {msgtype: "m.notice", body: text});
|
||||
}
|
||||
|
||||
sendEvent(eventType, content) {
|
||||
this._callAction("send_event", {
|
||||
type: eventType,
|
||||
content: content,
|
||||
});
|
||||
}
|
||||
|
||||
_callAction(action, payload) {
|
||||
if (!window.parent) {
|
||||
return;
|
||||
}
|
||||
|
||||
const request = {
|
||||
api: "fromWidget",
|
||||
widgetId: this._widgetId,
|
||||
action: action,
|
||||
requestId: randomString({length: 16}),
|
||||
data: payload,
|
||||
};
|
||||
|
||||
this._inFlightRequests[request.requestId] = () => {};
|
||||
|
||||
console.log("[Inline Widget] Sending fromWidget: ", request);
|
||||
window.parent.postMessage(request, this._origin);
|
||||
}
|
||||
|
||||
_replyPayload(incPayload, payload) {
|
||||
if (!window.parent) {
|
||||
return;
|
||||
}
|
||||
|
||||
let request = JSON.parse(JSON.stringify(incPayload));
|
||||
request["response"] = payload;
|
||||
|
||||
window.parent.postMessage(request, this._origin);
|
||||
}
|
||||
|
||||
_onCapabilitiesRequest(payload) {
|
||||
this._replyPayload(payload, {capabilities: this._capabilities});
|
||||
}
|
||||
}
|
||||
5
src/vector/inline_widget_wrapper/index.html
Normal file
5
src/vector/inline_widget_wrapper/index.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<body>
|
||||
<div id="widgetHtml"></div>
|
||||
</body>
|
||||
|
||||
71
src/vector/inline_widget_wrapper/index.js
Normal file
71
src/vector/inline_widget_wrapper/index.js
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
Copyright 2019 New Vector Ltd.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
import queryString from "querystring";
|
||||
import WidgetApi from "./WidgetApi";
|
||||
|
||||
let widgetApi;
|
||||
try {
|
||||
const qs = queryString.parse(window.location.search.substring(1));
|
||||
if (!qs["widgetId"]) {
|
||||
// noinspection ExceptionCaughtLocallyJS
|
||||
throw new Error("Missing widgetId in query string");
|
||||
}
|
||||
if (!qs["parentUrl"]) {
|
||||
// noinspection ExceptionCaughtLocallyJS
|
||||
throw new Error("Missing parentUrl in query string");
|
||||
}
|
||||
|
||||
const widgetOpts = JSON.parse(atob(window.location.hash
|
||||
.substring(1)
|
||||
.replace(/-/g, '+')
|
||||
.replace(/_/g, '/')));
|
||||
|
||||
// This widget wrapper is always on the same origin as the client itself
|
||||
widgetApi = new WidgetApi(qs["parentUrl"], qs["widgetId"], widgetOpts["capabilities"]);
|
||||
|
||||
document.getElementById("widgetHtml").innerHTML = widgetOpts['html'];
|
||||
bindButtons();
|
||||
} catch (e) {
|
||||
console.error("[Inline Widget Wrapper] Error loading widget from URL: ", e);
|
||||
document.getElementById("widgetHtml").innerText = "Failed to load widget";
|
||||
}
|
||||
|
||||
function bindButtons() {
|
||||
const buttons = document.getElementsByTagName("button");
|
||||
if (!buttons) return;
|
||||
for (const button of buttons) {
|
||||
button.addEventListener("click", onClick);
|
||||
}
|
||||
}
|
||||
|
||||
function onClick(event) {
|
||||
if (!event.target) return;
|
||||
|
||||
const action = event.target.getAttribute("data-mx-action");
|
||||
if (!action) return; // TODO: Submit form or something?
|
||||
|
||||
const value = event.target.getAttribute("data-mx-value");
|
||||
if (!value) return; // ignore - no value
|
||||
|
||||
if (action === "m.send_text") {
|
||||
widgetApi.sendText(value);
|
||||
} else if (action === "m.send_notice") {
|
||||
widgetApi.sendNotice(value);
|
||||
} else if (action === "m.send_hidden") {
|
||||
widgetApi.sendEvent("m.room.hidden", {body: value});
|
||||
} // else ignore
|
||||
}
|
||||
// TODO: Binding of forms, etc
|
||||
@@ -45,6 +45,7 @@ let userId: string;
|
||||
let jitsiAuth: string;
|
||||
let roomId: string;
|
||||
let openIdToken: IOpenIDCredentials;
|
||||
let roomName: string;
|
||||
|
||||
let widgetApi: WidgetApi;
|
||||
let meetApi: any; // JitsiMeetExternalAPI
|
||||
@@ -104,6 +105,7 @@ let meetApi: any; // JitsiMeetExternalAPI
|
||||
userId = qsParam('userId');
|
||||
jitsiAuth = qsParam('auth', true);
|
||||
roomId = qsParam('roomId', true);
|
||||
roomName = qsParam('roomName', true);
|
||||
|
||||
if (widgetApi) {
|
||||
await readyPromise;
|
||||
@@ -124,6 +126,22 @@ let meetApi: any; // JitsiMeetExternalAPI
|
||||
widgetApi.transport.reply(ev.detail, {}); // ack
|
||||
},
|
||||
);
|
||||
widgetApi.on(`action:${ElementWidgetActions.StartLiveStream}`,
|
||||
(ev: CustomEvent<IWidgetApiRequest>) => {
|
||||
if (meetApi) {
|
||||
meetApi.executeCommand('startRecording', {
|
||||
mode: 'stream',
|
||||
// this looks like it should be rtmpStreamKey but we may be on too old
|
||||
// a version of jitsi meet
|
||||
//rtmpStreamKey: ev.detail.data.rtmpStreamKey,
|
||||
youtubeStreamKey: ev.detail.data.rtmpStreamKey,
|
||||
});
|
||||
widgetApi.transport.reply(ev.detail, {}); // ack
|
||||
} else {
|
||||
widgetApi.transport.reply(ev.detail, {error: {message: "Conference not joined"}});
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
enableJoinButton(); // always enable the button
|
||||
@@ -226,6 +244,7 @@ function joinConference() { // event handler bound in HTML
|
||||
if (displayName) meetApi.executeCommand("displayName", displayName);
|
||||
if (avatarUrl) meetApi.executeCommand("avatarUrl", avatarUrl);
|
||||
if (userId) meetApi.executeCommand("email", userId);
|
||||
if (roomName) meetApi.executeCommand("subject", roomName);
|
||||
|
||||
meetApi.on("readyToClose", () => {
|
||||
switchVisibleContainers();
|
||||
|
||||
@@ -323,6 +323,16 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
||||
return 'Electron Platform'; // no translation required: only used for analytics
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if platform supports multi-language
|
||||
* spell-checking, otherwise false.
|
||||
*/
|
||||
supportsMultiLanguageSpellCheck(): boolean {
|
||||
// Electron uses OS spell checking on macOS, so no need for in-app options
|
||||
if (isMac) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
setNotificationCount(count: number) {
|
||||
if (this.notificationCount === count) return;
|
||||
super.setNotificationCount(count);
|
||||
@@ -488,13 +498,21 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
||||
return this.eventIndexManager;
|
||||
}
|
||||
|
||||
setLanguage(preferredLangs: string[]) {
|
||||
this._ipcCall('setLanguage', preferredLangs).catch(error => {
|
||||
console.log("Failed to send setLanguage IPC to Electron");
|
||||
setSpellCheckLanguages(preferredLangs: string[]) {
|
||||
this._ipcCall('setSpellCheckLanguages', preferredLangs).catch(error => {
|
||||
console.log("Failed to send setSpellCheckLanguages IPC to Electron");
|
||||
console.error(error);
|
||||
});
|
||||
}
|
||||
|
||||
async getSpellCheckLanguages(): Promise<string[]> {
|
||||
return this._ipcCall('getSpellCheckLanguages');
|
||||
}
|
||||
|
||||
async getAvailableSpellCheckLanguages(): Promise<string[]> {
|
||||
return this._ipcCall('getAvailableSpellCheckLanguages');
|
||||
}
|
||||
|
||||
getSSOCallbackUrl(fragmentAfterLogin: string): URL {
|
||||
const url = super.getSSOCallbackUrl(fragmentAfterLogin);
|
||||
url.protocol = "element";
|
||||
|
||||
@@ -26,7 +26,6 @@ import {hideToast as hideUpdateToast, showToast as showUpdateToast} from "matrix
|
||||
import {Action} from "matrix-react-sdk/src/dispatcher/actions";
|
||||
import { CheckUpdatesPayload } from 'matrix-react-sdk/src/dispatcher/payloads/CheckUpdatesPayload';
|
||||
|
||||
import url from 'url';
|
||||
import UAParser from 'ua-parser-js';
|
||||
|
||||
const POKE_RATE_MS = 10 * 60 * 1000; // 10 min
|
||||
@@ -184,17 +183,13 @@ export default class WebPlatform extends VectorBasePlatform {
|
||||
|
||||
getDefaultDeviceDisplayName(): string {
|
||||
// strip query-string and fragment from uri
|
||||
const u = url.parse(window.location.href);
|
||||
u.protocol = "";
|
||||
u.search = "";
|
||||
u.hash = "";
|
||||
// Remove trailing slash if present
|
||||
u.pathname = u.pathname.replace(/\/$/, "");
|
||||
const url = new URL(window.location.href);
|
||||
|
||||
let appName = u.format();
|
||||
// Remove leading slashes if present
|
||||
appName = appName.replace(/^\/\//, "");
|
||||
// `appName` is now in the format `develop.element.io`.
|
||||
// `appName` in the format `develop.element.io/abc/xyz`
|
||||
const appName = [
|
||||
url.host,
|
||||
url.pathname.replace(/\/$/, ""), // Remove trailing slash if present
|
||||
].join("");
|
||||
|
||||
const ua = new UAParser();
|
||||
const browserName = ua.getBrowser().name || "unknown browser";
|
||||
|
||||
@@ -8,6 +8,10 @@ const webpack = require("webpack");
|
||||
let og_image_url = process.env.RIOT_OG_IMAGE_URL;
|
||||
if (!og_image_url) og_image_url = 'https://app.element.io/themes/element/img/logos/opengraph.png';
|
||||
|
||||
const additionalPlugins = [
|
||||
// This is where you can put your customisation replacements.
|
||||
];
|
||||
|
||||
module.exports = (env, argv) => {
|
||||
if (process.env.CI_PACKAGE) {
|
||||
// Don't run minification for CI builds (this is only set for runs on develop)
|
||||
@@ -40,6 +44,7 @@ module.exports = (env, argv) => {
|
||||
"mobileguide": "./src/vector/mobile_guide/index.js",
|
||||
"jitsi": "./src/vector/jitsi/index.ts",
|
||||
"usercontent": "./node_modules/matrix-react-sdk/src/usercontent/index.js",
|
||||
"inline-widget-wrapper": "./src/vector/inline_widget_wrapper/index.js",
|
||||
|
||||
// CSS themes
|
||||
"theme-legacy": "./node_modules/matrix-react-sdk/res/themes/legacy-light/css/legacy-light.scss",
|
||||
@@ -313,7 +318,7 @@ module.exports = (env, argv) => {
|
||||
// HtmlWebpackPlugin will screw up our formatting like the names
|
||||
// of the themes and which chunks we actually care about.
|
||||
inject: false,
|
||||
excludeChunks: ['mobileguide', 'usercontent', 'jitsi'],
|
||||
excludeChunks: ['mobileguide', 'usercontent', 'inline-widget-wrapper', 'jitsi'],
|
||||
minify: argv.mode === 'production',
|
||||
vars: {
|
||||
og_image_url: og_image_url,
|
||||
@@ -350,6 +355,13 @@ module.exports = (env, argv) => {
|
||||
chunks: [],
|
||||
}),
|
||||
|
||||
// This is an inline widget wrapper, similar to usercontent
|
||||
new HtmlWebpackPlugin({
|
||||
template: './src/vector/inline_widget_wrapper/index.html',
|
||||
filename: 'inline_widget_wrapper/index.html',
|
||||
chunks: ['inline-widget-wrapper'],
|
||||
}),
|
||||
|
||||
// This is the usercontent sandbox's entry point (separate for iframing)
|
||||
new HtmlWebpackPlugin({
|
||||
template: './node_modules/matrix-react-sdk/src/usercontent/index.html',
|
||||
@@ -357,6 +369,8 @@ module.exports = (env, argv) => {
|
||||
minify: argv.mode === 'production',
|
||||
chunks: ['usercontent'],
|
||||
}),
|
||||
|
||||
...additionalPlugins,
|
||||
],
|
||||
|
||||
output: {
|
||||
|
||||
77
yarn.lock
77
yarn.lock
@@ -2307,10 +2307,10 @@ blueimp-canvas-to-blob@^3.28.0:
|
||||
resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.28.0.tgz#c8ab4dc6bb08774a7f273798cdf94b0776adf6c8"
|
||||
integrity sha512-5q+YHzgGsuHQ01iouGgJaPJXod2AzTxJXmVv90PpGrRxU7G7IqgPqWXz+PBmt3520jKKi6irWbNV87DicEa7wg==
|
||||
|
||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0:
|
||||
version "4.11.9"
|
||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
|
||||
integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
|
||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
|
||||
version "4.12.0"
|
||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
|
||||
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
|
||||
|
||||
bn.js@^5.0.0, bn.js@^5.1.1:
|
||||
version "5.1.3"
|
||||
@@ -2390,7 +2390,7 @@ braces@^3.0.1, braces@~3.0.2:
|
||||
dependencies:
|
||||
fill-range "^7.0.1"
|
||||
|
||||
brorand@^1.0.1:
|
||||
brorand@^1.0.1, brorand@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
|
||||
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
|
||||
@@ -3049,11 +3049,6 @@ commander@^2.19.0, commander@^2.20.0:
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||
|
||||
commander@^6.1.0:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
|
||||
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
|
||||
|
||||
commander@~2.19.0:
|
||||
version "2.19.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
||||
@@ -4001,17 +3996,17 @@ electron-to-chromium@^1.3.634:
|
||||
integrity sha512-T7mYop3aDpRHIQaUYcmzmh6j9MAe560n6ukqjJMbVC6bVTau7dSpvB18bcsBPPtOSe10cKxhJFtlbEzLa0LL1g==
|
||||
|
||||
elliptic@^6.5.3:
|
||||
version "6.5.3"
|
||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6"
|
||||
integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==
|
||||
version "6.5.4"
|
||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
|
||||
integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
|
||||
dependencies:
|
||||
bn.js "^4.4.0"
|
||||
brorand "^1.0.1"
|
||||
bn.js "^4.11.9"
|
||||
brorand "^1.1.0"
|
||||
hash.js "^1.0.0"
|
||||
hmac-drbg "^1.0.0"
|
||||
inherits "^2.0.1"
|
||||
minimalistic-assert "^1.0.0"
|
||||
minimalistic-crypto-utils "^1.0.0"
|
||||
hmac-drbg "^1.0.1"
|
||||
inherits "^2.0.4"
|
||||
minimalistic-assert "^1.0.1"
|
||||
minimalistic-crypto-utils "^1.0.1"
|
||||
|
||||
emittery@^0.7.1:
|
||||
version "0.7.2"
|
||||
@@ -5596,7 +5591,7 @@ highlight.js@^10.5.0:
|
||||
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.5.0.tgz#3f09fede6a865757378f2d9ebdcbc15ba268f98f"
|
||||
integrity sha512-xTmvd9HiIHR6L53TMC7TKolEj65zG1XU+Onr8oi86mYa+nLcIbxTTWkpW7CsEwv/vK7u1zb8alZIMLDqqN6KTw==
|
||||
|
||||
hmac-drbg@^1.0.0:
|
||||
hmac-drbg@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
||||
integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
|
||||
@@ -7511,10 +7506,9 @@ mathml-tag-names@^2.1.3:
|
||||
resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
|
||||
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
|
||||
|
||||
matrix-js-sdk@9.7.0-rc.1:
|
||||
version "9.7.0-rc.1"
|
||||
resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.7.0-rc.1.tgz#30cabda3f2b416d09c95afc4fe138bba44534c76"
|
||||
integrity sha512-y6D2bXYKQqGrtf1PLHjjHf6wW67DIhdrwQ77nKOhEd/rfaEqcMf99wqSvF/nzFexbG1Y7PG4IdM4YTdOQ9UD+g==
|
||||
"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop":
|
||||
version "9.9.0"
|
||||
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/cd38fb9b4c349eb31feac14e806e710bf6431b72"
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
another-json "^0.2.0"
|
||||
@@ -7534,10 +7528,9 @@ matrix-mock-request@^1.2.3:
|
||||
bluebird "^3.5.0"
|
||||
expect "^1.20.2"
|
||||
|
||||
matrix-react-sdk@3.14.0-rc.1:
|
||||
version "3.14.0-rc.1"
|
||||
resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-3.14.0-rc.1.tgz#a6a6891ca6ca32b581e3921b6293e49800141e2f"
|
||||
integrity sha512-19tASw75pUDaUHAxCimEKquaOvG/eRcvc38wPTIWnfcx5Nm4a4gioOy6spu5moV9hd/2JDRJHRrU5dbsvVW8Gg==
|
||||
"matrix-react-sdk@github:matrix-org/matrix-react-sdk#develop":
|
||||
version "3.16.0"
|
||||
resolved "https://codeload.github.com/matrix-org/matrix-react-sdk/tar.gz/3154dd6cd441b7710a525e75512e1665adf60746"
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
await-lock "^2.1.0"
|
||||
@@ -7565,13 +7558,12 @@ matrix-react-sdk@3.14.0-rc.1:
|
||||
katex "^0.12.0"
|
||||
linkifyjs "^2.1.9"
|
||||
lodash "^4.17.20"
|
||||
matrix-js-sdk "9.7.0-rc.1"
|
||||
matrix-js-sdk "github:matrix-org/matrix-js-sdk#develop"
|
||||
matrix-widget-api "^0.1.0-beta.13"
|
||||
minimist "^1.2.5"
|
||||
pako "^2.0.3"
|
||||
parse5 "^6.0.1"
|
||||
png-chunks-extract "^1.0.0"
|
||||
project-name-generator "^2.1.9"
|
||||
prop-types "^15.7.2"
|
||||
qrcode "^1.4.4"
|
||||
qs "^6.9.6"
|
||||
@@ -7587,7 +7579,7 @@ matrix-react-sdk@3.14.0-rc.1:
|
||||
tar-js "^0.3.0"
|
||||
text-encoding-utf-8 "^1.0.2"
|
||||
url "^0.11.0"
|
||||
velocity-animate "^1.5.2"
|
||||
velocity-animate "^2.0.6"
|
||||
what-input "^5.2.10"
|
||||
zxcvbn "^4.4.2"
|
||||
|
||||
@@ -7834,7 +7826,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
||||
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
|
||||
|
||||
minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
|
||||
minimalistic-crypto-utils@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
||||
@@ -9702,14 +9694,6 @@ progress@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
|
||||
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
|
||||
|
||||
project-name-generator@^2.1.9:
|
||||
version "2.1.9"
|
||||
resolved "https://registry.yarnpkg.com/project-name-generator/-/project-name-generator-2.1.9.tgz#959177f1feb2355d74fa98745d72a65a5f75b674"
|
||||
integrity sha512-QmLHqz2C4VHmAyDEAFlVfnuWAHr4vwZhK2bbm4IrwuHNzNKOdG9b4U+NmQbsm1uOoV4kGWv7+FVLsu7Bb/ieYQ==
|
||||
dependencies:
|
||||
commander "^6.1.0"
|
||||
lodash "^4.17.20"
|
||||
|
||||
promise-inflight@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
|
||||
@@ -9882,6 +9866,11 @@ raf@^3.1.0:
|
||||
dependencies:
|
||||
performance-now "^2.1.0"
|
||||
|
||||
random-string@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/random-string/-/random-string-0.2.0.tgz#a46e4375352beda9a0d7b0d19ed6d321ecd1d82d"
|
||||
integrity sha1-pG5DdTUr7amg17DRntbTIezR2C0=
|
||||
|
||||
randomatic@^3.0.0:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed"
|
||||
@@ -12111,10 +12100,10 @@ vary@~1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
||||
|
||||
velocity-animate@^1.5.2:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.2.tgz#5a351d75fca2a92756f5c3867548b873f6c32105"
|
||||
integrity sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg==
|
||||
velocity-animate@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-2.0.6.tgz#1811ca14df7fbbef05740256f6cec0fd1b76575f"
|
||||
integrity sha512-tU+/UtSo3GkIjEfk2KM4e24DvpgX0+FzfLr7XqNwm9BCvZUtbCHPq/AFutx/Mkp2bXlUS9EcX8yxu8XmzAv2Kw==
|
||||
|
||||
vendors@^1.0.0:
|
||||
version "1.0.4"
|
||||
|
||||
Reference in New Issue
Block a user