Merge branch 'develop' into travis/widget-api
						commit
						b9b859dd28
					
				
							
								
								
									
										21
									
								
								docs/e2ee.md
								
								
								
								
							
							
						
						
									
										21
									
								
								docs/e2ee.md
								
								
								
								
							|  | @ -35,6 +35,27 @@ following on your homeserver's `/.well-known/matrix/client` config: | |||
| } | ||||
| ``` | ||||
| 
 | ||||
| ## Preferring setup methods | ||||
| 
 | ||||
| By default, Element offers users a choice of a random key or user-chosen | ||||
| passphrase when setting up Secure Backup. If a homeserver admin would like to | ||||
| only offer one of these, you can signal this via the | ||||
| `/.well-known/matrix/client` config, for example: | ||||
| 
 | ||||
| ```json | ||||
| { | ||||
|   "io.element.e2ee": { | ||||
|     "secure_backup_setup_methods": ["passphrase"] | ||||
|   } | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| The field `secure_backup_setup_methods` is an array listing the methods the | ||||
| client should display. Supported values currently include `key` and | ||||
| `passphrase`. If the `secure_backup_setup_methods` field is not present or | ||||
| exists but does not contain any supported methods, Element will fallback to the | ||||
| default value of: `["key", "passphrase"]`. | ||||
| 
 | ||||
| # Compatibility | ||||
| 
 | ||||
| The settings above were first proposed under a `im.vector.riot.e2ee` key, which | ||||
|  |  | |||
|  | @ -66,7 +66,7 @@ | |||
|     "prop-types": "^15.7.2", | ||||
|     "react": "^16.9.0", | ||||
|     "react-dom": "^16.9.0", | ||||
|     "sanitize-html": "^1.19.1", | ||||
|     "sanitize-html": "github:apostrophecms/sanitize-html#3c7f93f2058f696f5359e3e58d464161647226db", | ||||
|     "ua-parser-js": "^0.7.19", | ||||
|     "url": "^0.11.0" | ||||
|   }, | ||||
|  | @ -142,7 +142,8 @@ | |||
|     "typescript": "^3.7.3", | ||||
|     "webpack": "^4.41.2", | ||||
|     "webpack-cli": "^3.3.10", | ||||
|     "webpack-dev-server": "^3.9.0" | ||||
|     "webpack-dev-server": "^3.9.0", | ||||
|     "workbox-webpack-plugin": "^5.1.4" | ||||
|   }, | ||||
|   "jest": { | ||||
|     "testEnvironment": "jest-environment-jsdom-fourteen", | ||||
|  |  | |||
|  | @ -61,7 +61,6 @@ const INCLUDE_LANGS = [ | |||
| // "dest/b/...".
 | ||||
| const COPY_LIST = [ | ||||
|     ["res/manifest.json", "webapp"], | ||||
|     ["res/sw.js", "webapp"], | ||||
|     ["res/welcome.html", "webapp"], | ||||
|     ["res/welcome/**", "webapp/welcome"], | ||||
|     ["res/themes/**", "webapp/themes"], | ||||
|  |  | |||
|  | @ -1,35 +1,36 @@ | |||
| { | ||||
|     "Dismiss": "تجاهل", | ||||
|     "Dismiss": "أهمِل", | ||||
|     "Unknown device": "جهاز مجهول", | ||||
|     "You need to be using HTTPS to place a screen-sharing call.": "تحتاج الى استخدام الاتصال الآمن (HTTPS) للسماح بمشاركة الشاشة.", | ||||
|     "You need to be using HTTPS to place a screen-sharing call.": "عليك استعمال ميفاق HTTPS للاتصال بمشاركة الشاشة.", | ||||
|     "powered by Matrix": "مشغل بواسطة Matrix", | ||||
|     "Welcome to Element": "مرحبا بك في Element", | ||||
|     "Decentralised, encrypted chat & collaboration powered by [matrix]": "دردشة مشفرة غير مركزية  &تطبيق تعاوني مدعوم بواسطة [matrix]", | ||||
|     "Create Account": "انشاء حساب", | ||||
|     "Explore rooms": "استكشف غرف المحادثات", | ||||
|     "Sign In": "الدخول", | ||||
|     "Missing indexeddb worker script!": "منفذ السكريبت الخاص ب Indexeddb غير موجود!", | ||||
|     "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.": "اعدادات خاطئة: لم يتم تحديد السيرفر الافتراضي.", | ||||
|     "Your Element is misconfigured": "تطبيقك معد بطريقة خاطئة", | ||||
|     "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "اعداداتك تحتوى على بنية JSON غير صحيحة. يرجى تصحيح المشكلة واعادة تحديث الصفحة.", | ||||
|     "The message from the parser is: %(message)s": "الرسالة من المدقق هي:%(message)s", | ||||
|     "Invalid JSON": "JSON خاطئ", | ||||
|     "Unable to load config file: please refresh the page to try again.": "لم نستطع تحميل ملف الاعداد: يرجى تحديث الصفحة للمحاولة مرة اخرى.", | ||||
|     "Unexpected error preparing the app. See console for details.": "حدث خطأ غير متوقع عند تجهيز التطبيق. انظر الى منصة التحكم للمزيد من التفاصيل.", | ||||
|     "Download Completed": "تم اكتمال التحميل", | ||||
|     "Open": "فتح", | ||||
|     "Open user settings": "فتح اعدادات المستخدم", | ||||
|     "Previous/next recently visited room or community": "السابقة/اللاحقة الغرفة او المجتمع الذي تمت زيارته مؤخرا", | ||||
|     "%(brand)s Desktop (%(platformName)s)": "%(brand)s سطح المكتب (%(platformName)s)", | ||||
|     "Go to your browser to complete Sign In": "اذهب الى المتصفح لاكمال تسجيل الدخول", | ||||
|     "%(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 يستخدم مزايا المتصفح المتقدمة والتي لا يدعمها متصفحك الحالي.", | ||||
|     "Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "يرجى تثبيت <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> 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": "فشل الاقلاع" | ||||
|     "Welcome to Element": "مرحبًا بك في Element", | ||||
|     "Decentralised, encrypted chat & collaboration powered by [matrix]": "دردشة وتعاون غير مركزي معمّى، تدعمه [matrix]", | ||||
|     "Create Account": "أنشِئ حسابًا", | ||||
|     "Explore rooms": "استكشِف الغرف", | ||||
|     "Sign In": "لِج", | ||||
|     "Missing indexeddb worker script!": "سكربت عامل indexeddb ناقص!", | ||||
|     "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.": "الضبط غير صالح: لم تحدّد خادومًا مبدئيًا.", | ||||
|     "Your Element is misconfigured": "لم يُضبط تطبيق Element كما ينبغي", | ||||
|     "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "يحتوي ضبط تطبيق Element على تنسيق JSON غير صالح. من فضلك صحّح المشكلة وأعِد تحميل الصفحة.", | ||||
|     "The message from the parser is: %(message)s": "الرسالة القادمة من المحلّل: %(message)s", | ||||
|     "Invalid JSON": "تنسيق JSON غير صالح", | ||||
|     "Unable to load config file: please refresh the page to try again.": "تعذّر تحميل ملف الضبط: من فضلك أنعِش الصفحة لمعاودة المحاولة.", | ||||
|     "Unexpected error preparing the app. See console for details.": "حدث عُطل غير متوقع أثناء تجهيز التطبيق. طالِع المِعراض للتفاصيل.", | ||||
|     "Download Completed": "اكتمل التنزيل", | ||||
|     "Open": "افتح", | ||||
|     "Open user settings": "افتح إعدادات المستخدم", | ||||
|     "Previous/next recently visited room or community": "الغرفة أو المجتمع التالي/السابق الذي زرته حديثًا", | ||||
|     "%(brand)s Desktop (%(platformName)s)": "%(brand)s لسطح المكتب (%(platformName)s)", | ||||
|     "Go to your browser to complete Sign In": "افتح المتصفح لإكمال الولوج", | ||||
|     "%(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 ميزات متقدمة في المتصفحات لا يدعمها متصفحك الحالي.", | ||||
|     "Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "من فضلك ثبّت <chromeLink>كروم</chromeLink> أو <firefoxLink>فَيَرفُكس</firefoxLink> أو <safariLink>سفاري</safariLink> لأفضل تجربة.", | ||||
|     "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": "تدعمه «ماترِكس»" | ||||
| } | ||||
|  |  | |||
|  | @ -1 +1,35 @@ | |||
| {} | ||||
| { | ||||
|     "Missing indexeddb worker script!": "Nedostaje indexeddb radna skripta!", | ||||
|     "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Neispravna konfiguracija: navesti se samo može jedan od default_server_config, default_server_name ili default_hs_url.", | ||||
|     "Invalid configuration: no default server specified.": "Neispravna konfiguracija: nije naveden zadani server.", | ||||
|     "Your Element is misconfigured": "Vaš element je pogrešno konfiguriran", | ||||
|     "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfiguracija vašeg elementa sadrži nevažeći JSON. Ispravite problem i ponovo učitajte stranicu.", | ||||
|     "The message from the parser is: %(message)s": "Poruka parsera je: %(message)s", | ||||
|     "Invalid JSON": "Nevažeći JSON", | ||||
|     "Unable to load config file: please refresh the page to try again.": "Nije moguće učitati konfiguracijsku datoteku: osvježite stranicu i pokušajte ponovo.", | ||||
|     "Unexpected error preparing the app. See console for details.": "Neočekivana greška prilikom pripreme aplikacije. Pogledajte konzolu za detalje.", | ||||
|     "Download Completed": "Preuzimanje završeno", | ||||
|     "Open": "Otvori", | ||||
|     "Dismiss": "Odbaci", | ||||
|     "Open user settings": "Otvori korisničke postavke", | ||||
|     "Previous/next recently visited room or community": "Prethodna / sljedeća nedavno posjećena soba ili zajednica", | ||||
|     "%(brand)s Desktop (%(platformName)s)": "%(brand)s Radna povrsina (%(platformName)s)", | ||||
|     "Go to your browser to complete Sign In": "Idite na svoj pretraživač da biste dovršili prijavu", | ||||
|     "Unknown device": "Nepoznat uređaj", | ||||
|     "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)", | ||||
|     "You need to be using HTTPS to place a screen-sharing call.": "Morate koristiti HTTPS za upućivanje poziva za dijeljenje ekrana.", | ||||
|     "Powered by Matrix": "Pokretano uz Matrix", | ||||
|     "Unsupported browser": "Nepodržani pretraživač", | ||||
|     "Your browser can't run %(brand)s": "Vaš pretraživač ne može pokretati %(brand)s", | ||||
|     "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s koristi napredne funkcije pretraživača koje vaš trenutni pretraživač ne podržava.", | ||||
|     "Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Molimo instalirajte <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ili <safariLink>Safari</safariLink> za najbolje iskustvo.", | ||||
|     "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.": "Možete nastaviti koristiti svoj trenutni pretraživač, ali neke ili sve funkcije možda neće raditi, a izgled i dojam aplikacije mogu biti neispravani.", | ||||
|     "I understand the risks and wish to continue": "Razumijem rizike i želim nastaviti", | ||||
|     "Go to element.io": "Idite na element.io", | ||||
|     "Failed to start": "Pokretanje nije uspjelo", | ||||
|     "Welcome to Element": "Dobrodošli u Element", | ||||
|     "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizirani, šifrirani razgovor & suradnja pokrenuta [matrix]", | ||||
|     "Sign In": "Prijavite se", | ||||
|     "Create Account": "Otvori račun", | ||||
|     "Explore rooms": "Istražite sobe" | ||||
| } | ||||
|  |  | |||
|  | @ -10,7 +10,11 @@ | |||
|     "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: 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.": "Μη έγκυρη ρύθμιση παραμέτρων: δεν έχει οριστεί προκαθορισμένος διακομιστής.", | ||||
|     "Explore rooms": "Εξερευνήστε δωμάτια" | ||||
|     "Explore rooms": "Εξερευνήστε δωμάτια", | ||||
|     "Open": "Άνοιγμα", | ||||
|     "Go to your browser to complete Sign In": "Επισκεφτείτε τον browser σας για να ολοκληρωθεί η είσοδος", | ||||
|     "Powered by Matrix": "Παρέχεται από το Matrix", | ||||
|     "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> για καλύτερη εμπειρία χρήσης." | ||||
| } | ||||
|  |  | |||
|  | @ -29,7 +29,8 @@ | |||
|     "Download Completed": "Preberanie dokončené", | ||||
|     "Open": "Otvoriť", | ||||
|     "Your Element is misconfigured": "Váš Element je nesprávne nastavený", | ||||
|     "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Vaša konfigurácia Elementu obsahuje nesprávne JSON. Prosím, opravte chybu a obnovte stránku.", | ||||
|     "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Vaša konfigurácia Elementu obsahuje nesprávny údaj JSON. Prosím, opravte chybu a obnovte stránku.", | ||||
|     "Your browser can't run %(brand)s": "Váš prehliadač nerozbehne %(brand)s", | ||||
|     "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s používa pokročilé funkcie prehliadača, ktoré nie sú podporované vaším aktuálnym prehliadačom." | ||||
|     "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s používa pokročilé funkcie prehliadača, ktoré nie sú podporované vaším aktuálnym prehliadačom.", | ||||
|     "Powered by Matrix": "používa protokol Matrix" | ||||
| } | ||||
|  |  | |||
|  | @ -55,16 +55,6 @@ | |||
|     <section id="matrixchat" style="height: 100%; overflow: auto;" class="notranslate"></section> | ||||
|     <script src="<%= htmlWebpackPlugin.files.chunks['bundle'].entry %>"></script> | ||||
| 
 | ||||
|     <!-- Legacy supporting Prefetch images --> | ||||
|     <img src="<%= require('matrix-react-sdk/res/img/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> | ||||
|     <img src="<%= require('matrix-react-sdk/res/img/e2e/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> | ||||
|     <img src="<%= require('matrix-react-sdk/res/img/feather-customised/warning-triangle.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> | ||||
|     <img src="<%= require('matrix-react-sdk/res/img/format/bold.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> | ||||
|     <img src="<%= require('matrix-react-sdk/res/img/format/code.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> | ||||
|     <img src="<%= require('matrix-react-sdk/res/img/format/italics.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> | ||||
|     <img src="<%= require('matrix-react-sdk/res/img/format/quote.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> | ||||
|     <img src="<%= require('matrix-react-sdk/res/img/format/strikethrough.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> | ||||
| 
 | ||||
|     <audio id="messageAudio"> | ||||
|         <source src="media/message.ogg" type="audio/ogg" /> | ||||
|         <source src="media/message.mp3" type="audio/mpeg" /> | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ import './modernizr'; | |||
| 
 | ||||
| // load service worker if available on this platform
 | ||||
| if ('serviceWorker' in navigator) { | ||||
|     navigator.serviceWorker.register('sw.js'); | ||||
|     navigator.serviceWorker.register('service-worker.js'); | ||||
| } | ||||
| 
 | ||||
| async function settled(...promises: Array<Promise<any>>) { | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); | |||
| const MiniCssExtractPlugin = require('mini-css-extract-plugin'); | ||||
| const TerserPlugin = require('terser-webpack-plugin'); | ||||
| const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); | ||||
| const webpack = require("webpack"); | ||||
| const WorkboxPlugin = require('workbox-webpack-plugin'); | ||||
| 
 | ||||
| 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'; | ||||
|  | @ -248,9 +248,9 @@ module.exports = (env, argv) => { | |||
|                     }, | ||||
|                 }, | ||||
|                 { | ||||
|                     // cache-bust languages.json file placed in
 | ||||
|                     // cache-bust i18n .json files placed in
 | ||||
|                     // riot-web/webapp/i18n during build by copy-res.js
 | ||||
|                     test: /\.*languages.json$/, | ||||
|                     test: /i18n\/.*\.json$/, | ||||
|                     type: "javascript/auto", | ||||
|                     loader: 'file-loader', | ||||
|                     options: { | ||||
|  | @ -356,6 +356,20 @@ module.exports = (env, argv) => { | |||
|                 minify: argv.mode === 'production', | ||||
|                 chunks: ['usercontent'], | ||||
|             }), | ||||
| 
 | ||||
|             new WorkboxPlugin.GenerateSW({ | ||||
|                 runtimeCaching: [{ | ||||
|                     urlPattern: /i18n\/.*\.json$/, | ||||
|                     handler: 'CacheFirst', | ||||
| 
 | ||||
|                     options: { | ||||
|                         cacheName: 'i18n', | ||||
|                         expiration: { | ||||
|                             maxEntries: 2, | ||||
|                         }, | ||||
|                     }, | ||||
|                 }], | ||||
|             }), | ||||
|         ], | ||||
| 
 | ||||
|         output: { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Travis Ralston
						Travis Ralston